jQuery.iFormValidate = {
	build : function(user_options)
	{
		var defaults = {
			ajax: true,
			validCheck: true,
			phpFile:"process.php"
		};
		return $(this).each(
			function() {
			var options = $.extend(defaults, user_options); 
			if(options.validCheck){
				$inputs = $(this).find(":input").filter(":not(:submit)").filter(":not(:checkbox)").filter(":not(.novalid)");
			}else{
				$inputs = $(this).find(":input").filter(":not(:submit)").filter(":not(:checkbox)");
			}
			
			
			//catch the submit
			$(this).submit(function(){
        
        		//we need to do a seperate analysis for checboxes
				$checkboxes = $(this).find(":checkbox");
				//we test all our inputs
				var isValid = jQuery.iFormValidate.validateForm($inputs);
				//if any of them come back false we quit
				if(!isValid){
					
					return false;
				} else 
              
                
                //remove all the class add the messagebox classes and start fading
                $("#msgbox").removeClass().addClass('messagebox').text('Validating....').fadeIn(1000);
                //check the username exists or not from ajax
                 $.post(options.phpFile,{ username:$('#username').val(),password:$('#password').val(),rand:Math.random() } ,function(data)
                 {
                    //alert(jQuery.trim(data));
                      if(jQuery.trim(data)=='yes') //if correct login detail
                     {
                        $("#msgbox").fadeTo(200,0.1,function()  //start fading the messagebox
                     {
                       //add message and change the class of the box and start fading
                       $(this).html('Logging in.....').addClass('messageboxok').fadeTo(900,1,
                      function()
                     {
                     //redirect to secure page
                     document.location='aicc-members.php';
                     });
                  });
                }
                else

                   
                $("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox
                {
             
                 jQuery.iFormValidate.clearForm($inputs);//add message and change the class of the box and start fading
                  $(this).html(jQuery.trim(data)).addClass('messageboxerror').fadeTo(900,1);
                });
          
       });

      return false;//not to post the  form physically
       });
		
             $inputs.bind("keyup", 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;
	},
	clearForm : function($inputs)
	{
		$inputs.filter(".is_required").removeClass("valid");
		$inputs.filter(".is_required").addClass("invalid");

		$('form')[0].reset();

		return isValid=false;
	},
	
	
	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 = /^\(?[2-9]\d{2}[ \-\)] ?\d{3}[\- ]?\d{4}$/;
			if(!Regex.test($val)){isValid = false;}
		//Check for U.S. 5 digit zip code
		}else if($(this).hasClass('vzip')){
			var Regex = /^\d{5}$/;
			if(!Regex.test($val)){isValid = false;}
		//Check for state
		}else if($(this).hasClass('vstate')){
			var Regex = /^[a-zA-Z]{2}$/;
			if(!Regex.test($val)){isValid = false;}
		//Check for name	
		}else if($(this).hasClass('vname')){
			var Regex = /^[a-zA-Z\ ']*$/;
			if(!Regex.test($val)){isValid = false;}
            if($val.length === 0){isValid = false;}
		
		}else if($val.length === 0){
			isValid = false;
		}
		
		if(isValid){
			$(this).removeClass("invalid");
			$(this).addClass("valid");
		}else{
			$(this).removeClass("valid");
			$(this).addClass("invalid");
		}
	}	
}
jQuery.fn.FormValidate = jQuery.iFormValidate.build;