jQuery.iFormValidate = {
	build : function(options)
	{
		var defaults = {
			phpFile:"/",
			ajax: true
		};
		var options = jQuery.extend(defaults, options); 
		return jQuery(this).each(
			function() {
			$inputs = jQuery(this).find(":input").filter(":not(:submit)");
			$inputs = jQuery(this).find(":input").filter(":not(:checkbox)");
			
			jQuery(this).submit(function(){
				var isValid = jQuery.iFormValidate.validateForm($inputs);
				if(!isValid){
					return false;
				};
				if(options.ajax){
					var data = {};
					$inputs.each(function(){
						data[this.name] = this.value
					});
					$inputs.each(function(){
						data[this.name] = this.value
					});
					jQuery(this).fadeOut("slow");
					jQuery(this).load(options.phpFile, data, function(){
						jQuery(this).fadeIn("slow");
					jQuery("#ErrorExplanation").hide();
					});
					return false;
				}else{
					return true;
				}
			});
			
			$inputs.bind("change", jQuery.iFormValidate.validate);
			$inputs.filter("select").bind("change", jQuery.iFormValidate.validate);
		});
	},
	validateForm : function($inputs)
	{
		var isValid = true; //benifit of the doubt?
		$inputs.filter(".is_required").each(jQuery.iFormValidate.validate);
		if($inputs.filter(".is_required").hasClass("invalid")){isValid=false;}
		return isValid;
	},
		
	validate : function(){
		var $val = jQuery(this).val();
		var isValid = true;
		//Regex for DATE
if(jQuery(this).hasClass('vdate')){
			var Regex = /^([\d]|1[0,1,2]|0[1-9])(\-|\/|\.)([0-9]|[0,1,2][0-9]|3[0,1])(\-|\/|\.)\d{4}$/;
			isValid = Regex.test($val);
		//Regex for Email
		}else if(jQuery(this).hasClass('vemail')){
			var Regex =/^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
			if(!Regex.test($val)){isValid = false;};
		
		//Regex for Phone
		}else if(jQuery(this).hasClass('vphone')){
			var Regex =/^([0-9\-\.+\s]+)+$/;
			//var Regex = /^\(?[2-9]\d{2}[ \-\)] ?\d{3}[\- ]?\d{4}$/;
			if(!Regex.test($val)){isValid = false;}
		//Check for empty
		}
		else if(jQuery(this).hasClass('numeric')){
			var Regex =/^(\d)+$/;
			//var Regex = /^\(?[2-9]\d{2}[ \-\)] ?\d{3}[\- ]?\d{4}$/;
			if(!Regex.test($val)){isValid = false;}
		//Check for empty
		}
		else if($val.length == 0){
			if(jQuery(this).hasClass('not_required'))
			{
				isValid = true;
				
				}
			else{
			isValid = false;
			}
		}
			
		if(isValid){
			jQuery(this).removeClass("invalid");
			jQuery(this).addClass("valid");
			
		}else{
			jQuery(this).removeClass("valid");
			jQuery(this).addClass("invalid");
				
				jQuery.jGrowl("Поля, которые выделены красным либо не заполнены, либо имеют неверный формат.", { 
						 life: 3000, 
						 header: 'Ошибка',
						 theme: 'error',
						 beforeOpen: function(e,m,o) {	jQuery('.jGrowl-notification').hide();	}
						 });
		}
		
		return isValid;
	}	

}
jQuery.fn.FormValidate = jQuery.iFormValidate.build;
