$(document).ready(function(){ 	
	errorsToClear = new Array();

	//only you can prevent unncessary javascript errors
	//if(typeof jQuery.SelectBox == 'function') { $('#month_box, #day_box, #year_box, #gender, #state').selectbox();	}

    $('#register-submit').click(function (){
		if(errorsToClear.length > 0)
		{
			correctFields(errorsToClear);
		}
		errors = validateCreation();
		if(errors.length > 0)	{
			lertUser(printErrors(errors));
			return false;
		}
		return true;
	});
	
	$('#signin-submit').click(function (){	
		errors = validateLogination();
		if(errors.length > 0)	{
			lertUser(printErrors(errors));
			return false;
		}		
		return true;
    });
	
		
	$('#forgot-submit').click(function (){	
		errors = validateForgotPassword();
		if(errors.length > 0)	{
			lertUser(printErrors(errors));
			return false;
		}		
		return true;
    });	
	
	$('#tellfriend-submit').click(function (){
		errors = validateTellFriend();
		if(errors.length > 0)	{
			lertUser(printErrors(errors));
			return false;
		}		
		return true;
    });	
	
	$('#edit-submit').click(function (){											
		if(errorsToClear.length > 0)
		{
			correctFields(errorsToClear);
		}
		errors = validateEditation();
		if(errors.length > 0)	{
			lertUser(printErrors(errors));
			return false;
		}
		return true;
	});
	
	$('#code-submit').click(function (){
		errors = validateCode();
		if(errors.length > 0)	{
			lertUser(printErrors(errors));
			return false;
		}		
		return true;
    });
	
	$('#sweeps-submit').click(function (){										
		if($('#sweeps-agree').attr("checked") == false) {
			errors = new Array();
			errors.push('You must confirm that you are eligble and agree to the conditions of the official rules.');
			lertUser(printErrors(errors));
			return false;
		 }			 
		 return true;
	});

	//only you can prevent unncessary javascript errors
	if(typeof alertErrors == 'function') {alertErrors(); }	
  	
});
// ----------------------- Validation Functions ------------------------------	
	function validateCode(){
		l_aValues = document.getElementById('code-form');	
		r_asErrors = new Array();		
		if(l_aValues.elements['code'].value.length == 0)
			r_asErrors.push("Please Enter a Code.");		
		if(l_aValues.elements['flavor'].value == 0)
			r_asErrors.push("Please Choose a Flavor.");				
		if(l_aValues.elements['size'].value == 0)
			r_asErrors.push("Please Choose a Size.");				
		if(l_aValues.elements['retailer'].value == 0)
			r_asErrors.push("Please Choose a Retailer.");		
		
		return r_asErrors;		
	}
	
	function validateEditation(){
		l_aValues = document.getElementById('edit-form');
		return validate(l_aValues);			
	}
	
	function validateCreation(){
		l_aValues = document.getElementById('register-form');
		return validate(l_aValues);			
	}

	function validateLogination(){
		p_aValues = document.getElementById('signin-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['signin-email'].value) == false || 
		  (/[a-zA-Z0-9]{6,16}/.test(p_aValues.elements['signin-password'].value) == false)){
			r_asErrors.push("Email or Password Invalid.");		
			login_errorFields.push(p_aValues.elements['signin-password'],p_aValues.elements['signin-email']);
			hilightFields(login_errorFields);
		}
		return  r_asErrors;
	}
		
	function validate(p_aValues){
		validate_errorFields = new Array();	
		r_asErrors = new Array();
		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((/^[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-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( 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['birthMonth']);
			validate_errorFields.push(p_aValues.elements['birthDay']);
		}
		
		if(p_aValues.elements['address1'].value.length == 0){
			r_asErrors.push("Please enter your address.");	
			validate_errorFields.push(p_aValues.elements['address1']);			
		}
		
		if(p_aValues.elements['address1'].value.length > 0 && (
		   	/[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['address']);
		}
		
		if(p_aValues.elements['city'].value.length == 0){
			r_asErrors.push("Please enter your city.");	
			validate_errorFields.push(p_aValues.elements['city']);			
		}
		
		
		if(p_aValues.elements['city'].value.length > 0 && (/^[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.length == 0){
			r_asErrors.push("Please enter phone number.");	
			validate_errorFields.push(p_aValues.elements['phone']);			
		}
		
		
		if(p_aValues.elements['phone'].value.length > 0 && (/^[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']);
		} 
		
	
		hilightFields(validate_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 validateForgotPassword() {
		p_aValues = document.getElementById('_forgot_form');
		forgotpass_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.");
			forgotpass_errorFields.push(p_aValues.elements['email']);
			hilightFields(forgotpass_errorFields);			
		}
		return  r_asErrors;
	
	}
	
	function validateTellFriend(){
		p_aValues = document.getElementById('tellafriend-form');
		validateTellFriend_errorFields = new Array();
		r_asErrors = new Array();	
		l_nNullCount = 0;
		//this set of code may need to be refactored 
		for(i=1;i<6;i++){
		   if($('#user-email-'+i).val() == ""){
		       l_nNullCount++;
		   }
		}
		
		if(l_nNullCount == 5){
			r_asErrors.push("You need to enter at least one email address");
			return r_asErrors
		}
	    
		for(i= 1; i< 6; i++){			
			if(/[_a-zaA-Z0-9-]+([.+_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+([.a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4})/.test($('#user-email-'+i).val()) == false && $('#user-email-'+i).val() != ""){
				r_asErrors.push("Email address "+$('#user-email-'+i).val()+" is invalid." );	
				validateTellFriend_errorFields.push($('#user-email-'+i));
				$('#user-email-'+i).addClass('football_input_error');
			}
			else{
				$('#user-email-'+i).removeClass('football_input_error');
			}
			if ($('#name'+i).val() == "" && $('#user-email-'+i).val() != ""){
				r_asErrors.push("Please enter a name for email address "+ $('#user-email-'+i).val());	
				validateTellFriend_errorFields.push($('#name'+i));
				$('#name'+i).addClass('football_input_error');				
			}			
		}
		
		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++)
		{
			//jquery
			fieldId = cFields[h].id;
			$('#'+fieldId).removeClass('football_input_error');
			
		}
		errorsToClear = [];
	}
	
	function hilightFields(fields)
	{
		for(i = 0; i < fields.length; i++)
		{   
			fieldId = fields[i].id;
			showErrorHighlight('#'+fieldId);
			errorsToClear.push(fields[i]);
		}
	} 

	function showErrorHighlight(p_xDomElement)
	{
		$(p_xDomElement).addClass('football_input_error');
	}
		
	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();

	}
