
function resetForm() {
	$inputs = $('#contact').find(":input").filter(":not(:submit)");
	$inputs.each(function(i){
						this.value = "";
						this.removeClass("invalid");
						this.removeClass("valid");
					});
}
function clear_form_elements(ele) {

    $(ele).find(':input').filter(":not(:submit)").each(function() {
        switch(this.type) {
            case 'password':
            case 'select-multiple':
            case 'select-one':
            case 'text':
            case 'textarea':
                $(this).val('');
				$(this).removeClass("valid");
				$(this).removeClass("invalid");
                break;
            case 'checkbox':
            case 'radio':
                this.checked = false;
        }
    });

}
var defaultTXT = new Array();

jQuery.iFormValidate = {
	
	build : function(options)
	{
		var defaults = {
			phpFile:"send.php",
			ajax: true
		};
		var options = $.extend(defaults, options); 
		
		return $(this).each(
			function() {
			$inputs = $(this).find(":input").filter(":not(:submit)");
			
			$(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
					});
					clear_form_elements($('#contact'));
					$('#message').load(options.phpFile, data, function(){
						$(this).fadeIn(400);
						setTimeout(function(){
							$('#message').fadeOut(1500);
						}, 3000);
						
					});
					
					
					/*
					$(this).parent('div').fadeOut("slow");
					$(this).parent('div').load(options.phpFile, data, function(){
						$(this).fadeIn("slow");
					});
					*/
					return false;
				} else {
					return true;
				}
			});
			$inputs.each(function(){
				defaultTXT[this.name] = this.value;
			});
			$inputs.filter(".is_required").bind("keyup", jQuery.iFormValidate.validate);
			$inputs.bind("focus", jQuery.iFormValidate.inputFocus);
			$inputs.bind("blur", jQuery.iFormValidate.inputBlur);
			$inputs.filter(".is_required").filter("select").bind("change", jQuery.iFormValidate.validate);
		});
	},
	
	inputFocus : function($inputs)
	{
		//alert(defaultTXT[this.name]);
		if (this.value == defaultTXT[this.name]) {
			this.value = "";
		}
		
	},
	
	inputBlur : function($inputs)
	{
		if (this.value == "") {
			this.value = defaultTXT[this.name]
		}
	},
	
	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 = $(this).val();
		var isValid = true;
		//Regex for DATE
		if($(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($(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($(this).hasClass('vphone')){
			var Regex =/^([0-9a-zA-Z]+([_+.-]?[0-9a-zA-Z]+)*@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$/;
			//var Regex = /^\(?[2-9]\d{2}[ \-\)] ?\d{3}[\- ]?\d{4}$/;
			if(!Regex.test($val)){isValid = false;}
		//Check for empty
		}else if($val.length == 0){
			isValid = false;
		}
		
		if(isValid){
			$(this).removeClass("invalid");
			if ($(this).val() != defaultTXT[this.name]) {
				$(this).addClass("valid");
			} else {
				$(this).addClass("invalid");
			}
		}else{
			$(this).removeClass("valid");
			$(this).addClass("invalid");
		}
		return isValid;
	}	
}
jQuery.fn.FormValidate = jQuery.iFormValidate.build;
