$(document).ready(function(){ 	
	errorsToClear = new Array();
	
	$('#register_submit').click(function (){		
		if(errorsToClear.length > 0)
		{
			correctFields(errorsToClear);
		}
		errors = validateCreation();
		if(errors.length > 0)	{
			//alert(printErrors(errors));
			lertUser(printErrors(errors));
			return false;
		}
		return true;
    });
	
	$('#update_submit').click(function (){		
		if(errorsToClear.length > 0)
		{
			correctFields(errorsToClear);
		}
		errors = validateUpdation();
		if(errors.length > 0)	{
			//alert(printErrors(errors));
			lertUser(printErrors(errors));
			return false;
		}
		return true;
    });
	
	$('#login_submit').click(function (){	
		errors = validateLogination();
		if(errors.length > 0)	{
			lertUser(printErrors(errors));
			return false;
		}		
		return true;
    });	
	
	$('#forgotpw_submit').click(function (){	
		errors = validateEmail();
		if(errors.length > 0)	{
			lertUser(printErrors(errors));
			return false;
		}		
		return true;
    });	
	
	$('.next_submit').click(function (){	  
		errors = validateMobile();
		if(errors.length > 0){
			lertUser(printErrors(errors));
			return false;
		}										  
		return true;
	});
	
	$('#btn-register').click(function (){		
		if(errorsToClear.length > 0)
		{
			correctFields(errorsToClear);
		}
		errors = validateShortCreation();
		if(errors.length > 0)	{
			//alert(printErrors(errors));
			lertUser(printErrors(errors));
			return false;
		}
		return true;
    });
	
	
	
	
});
// ----------------------- Validation Functions ------------------------------		

	function validateMobile(){
		p_aValues = document.getElementById('step2_form');	
		step2_errorFields = new Array();
		r_asErrors = new Array();
		if(p_aValues.elements['OptionalQuestionsWirelessCheckbox'].checked == true){
			if((/^[1-9]{1}[0-9]{9}$/.test(p_aValues.elements['mobile'].value)== false)){
				r_asErrors.push("Please enter a valid Mobile Number, 10 digits no dashes, no spaces.");
				step2_errorFields.push(p_aValues.elements['mobile']);
			} 
			hilightFields(step2_errorFields);
		}	
		return  r_asErrors;
	}	
		
	function validateEmail(){
		p_aValues = document.getElementById('forgotpw_form');
		login_errorFields = new Array();
		r_asErrors = new Array();					
		
		if(/[_a-zaA-Z0-9-]+([.+_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+([.a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4})/.test(p_aValues.elements['email'].value) == false){
			r_asErrors.push("Email address is invalid.");		
			login_errorFields.push(p_aValues.elements['email']);
			hilightFields(login_errorFields);			
		}
		return  r_asErrors;
	}

	function validateLogination(){
		p_aValues = document.getElementById('login_form');
		login_errorFields = new Array();
		r_asErrors = new Array();					
		if(/[_a-zaA-Z0-9-]+([.+_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+([.a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4})/.test(p_aValues.elements['email'].value) == false || 
		  (/[a-zA-Z0-9]{6,16}/.test(p_aValues.elements['password'].value) == false)){
			r_asErrors.push("Email or Password Invalid.");		
			login_errorFields.push(p_aValues.elements['password'],p_aValues.elements['email']);
			hilightFields(login_errorFields);			
		}
		return  r_asErrors;
	}
	
	function validateCreation(){
		l_aValues = document.getElementById('register_form');
		return validate(l_aValues);			
	}
	
	function validateShortCreation(){
		l_aValues = document.getElementById('shortregister_form');
		return validateShort(l_aValues);			
	}
		
	function validateUpdation(){
		l_aValues = document.getElementById('update_form');		
		return validate(l_aValues);
	}
	
	function validate(p_aValues){
		validate_errorFields = new Array();	
		r_asErrors = new Array();
		if((/^[_a-zA-Z0-9-]+([.+_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+([.a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4})$/.test(p_aValues.elements['email'].value) == false))
		{
			r_asErrors.push("Email Address is in an invalid format.");
			validate_errorFields.push(p_aValues.elements['email']);
		}	    
		if(/^[a-zA-Z0-9]{6,16}$/.test(p_aValues.elements['password'].value) == false)
		{
			r_asErrors.push("Password must be between 6 and 16 alphanumeric characters.");	
			validate_errorFields.push(p_aValues.elements['password'],p_aValues.elements['password2']);
		}
		if(p_aValues.elements['password'].value != p_aValues.elements['password2'].value)
		{
			r_asErrors.push("Password and Confirmation must match.");	
			validate_errorFields.push(p_aValues.elements['password2']);
		}		
		if((/^[a-zA-Z]{1}[-\'a-zA-Z ]{0,28}[a-zA-Z]{1}$/.test(p_aValues.elements['firstName'].value) == false))
		{
			r_asErrors.push("First Name must be between 3 and 30 characters a-z.");		
			validate_errorFields.push(p_aValues.elements['firstName']);
		}	
		if((/^[a-zA-Z]{1}[-\'a-zA-Z ]{0,27}[a-zA-Z]{1}$/.test(p_aValues.elements['lastName'].value) == false))
		{
			r_asErrors.push("Last Name must be between 2 and 30 characters a-z.");
			validate_errorFields.push(p_aValues.elements['lastName']);
		}	
		if( p_aValues.elements['birthYear'].value == "" || 
			p_aValues.elements['birthDay'].value == "" || 
			p_aValues.elements['birthMonth'].value == "")
		{
			r_asErrors.push("Please choose a birth Month, Day, and Year.");
			validate_errorFields.push(p_aValues.elements['birthYear']);
			validate_errorFields.push(p_aValues.elements['birthDay']);
			validate_errorFields.push(p_aValues.elements['birthMonth']);
		}
		if(p_aValues.elements['address1'].value && (
		   /[a-zA-Z]+/.test(p_aValues.elements['address1'].value) == false || 
			/[0-9]+/.test(p_aValues.elements['address1'].value) == false || 
			p_aValues.elements['address1'].value.length > 50)){
			r_asErrors.push("Address must contain 2 to 50 letters and numbers.");
			validate_errorFields.push(p_aValues.elements['address1']);
		}
		if(p_aValues.elements['city'].value && (/^[a-zA-Z]{1}[-\'a-zA-Z ]{0,28}[a-zA-Z]{1}$/.test(p_aValues.elements['city'].value) == false))
		{
			r_asErrors.push("Please enter your city.");	
			validate_errorFields.push(p_aValues.elements['city']);
		}	
		/*
		if(p_aValues.elements['state'].value == ''){
			r_asErrors.push("Please choose a state.");	
			validate_errorFields.push(p_aValues.elements['state']);			
		}
		*/
		if((/^[0-9]{5}$/.test(p_aValues.elements['zip'].value) == false))
		{
			r_asErrors.push("Zip code must be 5 numbers.");	
			validate_errorFields.push(p_aValues.elements['zip']);
		}
		if(p_aValues.elements['phone'].value && (/^[1-9]{1}[0-9]{9}$/.test(p_aValues.elements['phone'].value)== false))
		{
			r_asErrors.push("Home Phone must be 10 digits no dashes, no spaces.");
			validate_errorFields.push(p_aValues.elements['phone']);
		} 
		if(p_aValues.elements['gender'].value == ''){
			r_asErrors.push("Please choose a gender.");	
			validate_errorFields.push(p_aValues.elements['gender']);			
		}
		hilightFields(validate_errorFields);
		return r_asErrors;
	}
	
	
	function validateShort(p_aValues){
		validate_errorFields = new Array();	
		r_asErrors = new Array();
		if((/^[_a-zA-Z0-9-]+([.+_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+([.a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4})$/.test(p_aValues.elements['register-email'].value) == false))
		{
			r_asErrors.push("Email Address is in an invalid format.");
			validate_errorFields.push(p_aValues.elements['register-email']);
		}	    
		if(/^[a-zA-Z0-9]{6,16}$/.test(p_aValues.elements['register-password'].value) == false)
		{
			r_asErrors.push("Password must be between 6 and 16 alphanumeric characters.");	
			validate_errorFields.push(p_aValues.elements['register-password'],p_aValues.elements['register-confirm-password']);
		}
		if(p_aValues.elements['register-confirm-password'].value != p_aValues.elements['register-confirm-password'].value)
		{
			r_asErrors.push("Password and Confirmation must match.");	
			validate_errorFields.push(p_aValues.elements['register-confirm-password']);
		}		
		if((/^[a-zA-Z]{1}[-\'a-zA-Z ]{0,28}[a-zA-Z]{1}$/.test(p_aValues.elements['register-first-name'].value) == false))
		{
			r_asErrors.push("First Name must be between 3 and 30 characters a-z.");		
			validate_errorFields.push(p_aValues.elements['register-first-name']);
		}	
		if((/^[a-zA-Z]{1}[-\'a-zA-Z ]{0,27}[a-zA-Z]{1}$/.test(p_aValues.elements['register-last-name'].value) == false))
		{
			r_asErrors.push("Last Name must be between 2 and 30 characters a-z.");
			validate_errorFields.push(p_aValues.elements['register-last-name']);
		}	
		if( p_aValues.elements['register-birthday-year'].value == "" || 
			p_aValues.elements['register-birthday-day'].value == "" || 
			p_aValues.elements['register-birthday-month'].value == "")
		{
			r_asErrors.push("Please choose a birth Month, Day, and Year.");
			validate_errorFields.push(p_aValues.elements['register-birthday-year']);
			validate_errorFields.push(p_aValues.elements['register-birthday-day']);
			validate_errorFields.push(p_aValues.elements['register-birthday-month']);
		}
			
		if((/^[0-9]{5}$/.test(p_aValues.elements['register-zip-code'].value) == false))
		{
			r_asErrors.push("Zip code must be 5 numbers.");	
			validate_errorFields.push(p_aValues.elements['register-zip-code']);
		}
		
		if(p_aValues.elements['register-gender'].value == ''){
			r_asErrors.push("Please choose a gender.");	
			validate_errorFields.push(p_aValues.elements['register-gender']);			
		}
		hilightFields(validate_errorFields);
		return r_asErrors;
	}
	
	function printErrors(p_asErrors){
		r_sError = "";
		for(var i=0; i < p_asErrors.length; i++){			
			r_sError += p_asErrors[i]+"<br />";			
		}		
		return r_sError;
	}	
	
	function correctFields(cFields)
	{
		for(h = 0; h < cFields.length; h++)
		{
			cFields[h].setAttribute('class', 'input_correct');
		}
		errorsToClear = [];
	}
	
	function hilightFields(fields)
	{		
		for(i = 0; i < fields.length; i++)
		{
			fields[i].setAttribute('class', 'input_error');
			errorsToClear.push(fields[i]);
		}
	}
		
	function lertUser(pErrors)
	{
		var yes = new LertButton('Close Window', function() {
			//do nothing
		});

		var message = pErrors;
		var errorLert = new Lert(
			message,
			[yes],
			{
				defaultButton:yes
			});

		errorLert.display();

	}