
var Validation = function ()
{
	
	var obligatoryFields = {};
	 
	var isValidEmail = function ( val )
	{
		var re = /^ *([a-z0-9_-]+\.)*[a-z0-9_-]+@(([a-z0-9-]+\.)+(com|net|org|mil|edu|gov|arpa|info|biz|inc|name|[a-z]{2})|[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}) *$/;
		return (re.test(val.toLowerCase()));
	}
	
	var isEmpty = function ( val )
	{
		if ( val != '' ) return false;
		return true;
	}
	
	var isObligatoryField = function ( obj )
	{
		if ( obj == null || !obj.className ) return false;
		var re = /^.*? obl*$/;
		return (re.test(obj.className.toLowerCase()));
	}
	
	var setFocus = function (element)
	{
		if ( (!element.disabled) && (!element.length) )
		{
			if (element.type != 'hidden')
			{
				try{element.focus();}catch(e){}
			}
			if ( !element.options ) element.select();
		}
	}
	
	var showAlert = function ( type, fieldName )
	{
		switch ( type )
		{
			case 'email':
			alert('Please, enter email in field "'+fieldName+'"');
			break;
			
			default:
			alert('Please, enter value in field "'+fieldName+'"');
		}
	}
	
	var getFieldTitle = function ( elementName )
	{
		var labels = document.getElementsByTagName('label');
		for ( var k in labels )
		{
			var label_obj = labels[k];
			for ( var ind in label_obj )
			{
				if ( label_obj.htmlFor == elementName )
				{
					return label_obj.innerHTML;
				}
			}
		}
		return false;
	}
	
	for ( var el in this.elements )
	{
		if ( isObligatoryField(this.elements[el]) )
		{
			switch ( this.elements[el].name )
			{
				case 'form_email':
				if ( !isValidEmail (this.elements[el].value) )
				{
					showAlert('email', getFieldTitle(this.elements[el].name) );
					setFocus(this.elements[el]);
					return false;
				}
				break;
				
				default:
				if ( isEmpty (this.elements[el].value) ) 
				{
					showAlert('field', getFieldTitle(this.elements[el].name) );
					setFocus(this.elements[el]);
					return false;
				}
			}	
		}        		
	}
	return true; 
}