$(document).ready(function(){ 	
	errorsToClear = new Array();
	
	function doAjax(p_sTab, p_sQueryString, p_sDiv){
		$.ajax({
			   	type:       'POST',
				url:        '/promotions/acma/request/',
				data:       'a='+p_sTab+p_sQueryString,
				dataType: 	'html',
				success:    function(p_sMsg) {
					$('.acma-inner-box').hide();
					$( p_sDiv ).show();		
					$( p_sDiv ).html(p_sMsg);													
				}
		});
		
		return false;
	}
	function doTabClick(p_sTab){
		$('.acma-inner-box').hide();
		
		switch(p_sTab){
			case 'music':
				$('.music-background').toggle();		
				$('#acma-footer-area-spacer').removeClass();
			break;
			
			case 'prizes':
				$('.prizes-background').toggle();	
				$('#acma-footer-area-spacer').removeClass();
				$('#acma-footer-area-spacer').addClass("medium");							
			break;
			
			default:
				$('.signin-background').toggle();
		        $('#acma-footer-area-spacer').removeClass();
		}
	}
	//<!--@FYI .live('click') responds to both left and right clicks, whereas .click() only responds to left clicks-->
	//<!--@FYI $(selector).live(...) only works if the selector is on the page when it loads-->
	$('#register-button').live('click', function (){
		qs = 'a=registration';
		
		doAjax('registration', '',  '.registration-background');
		
		$('#acma-footer-area-spacer').removeClass();		
		$('#acma-footer-area-spacer').addClass("tall");
		
		callSiteCatalyst('registration');
	});
			
	$('#sweepstakes-tab').click(function (){
		qs = 'a=sweepstakes';
		$('#tabs').removeClass();		
		$('#tabs').addClass('sweepstakes');		
			
		doAjax('sweepstakes', '',  '.signin-background');
		$('#acma-footer-area-spacer').removeClass();	
		
		callSiteCatalyst('sweepstakes entry tab');
	});
						   
	$('#music-tab').click(function (){
		$('#tabs').removeClass();											
		$('#tabs').addClass('music');
		
		tab = 'music';
		doTabClick(tab);
		callSiteCatalyst('music tab');
	});
						   
	$('#prizes-tab').click(function (){
		$('#tabs').removeClass();											
		$('#tabs').addClass('prizes');
		
		tab = 'prizes';
		doTabClick(tab);
		callSiteCatalyst('grand prize tab');
	});	

   $('#register-submit').live('click' , function (){	
		if(errorsToClear.length > 0)
		{
			correctFields(errorsToClear);
		}
		errors = validateCreation();
		if(errors.length > 0)	{
			lertUser(printErrors(errors));
			return false;
		}
		f = document.getElementById('register-form');
		qs = '';
		qs += '&firstName='+escape(f.elements['firstName'].value);		
		qs += '&lastName='+escape(f.elements['lastName'].value);	
		qs += '&address1='+escape(f.elements['address1'].value);
		qs += '&address2='+escape(f.elements['address2'].value);
		qs += '&birthDay='+escape(f.elements['birthDay'].value);
		qs += '&birthMonth='+escape(f.elements['birthMonth'].value);
		qs += '&birthYear='+escape(f.elements['birthYear'].value);
		qs += '&city='+escape(f.elements['city'].value);
		qs += '&email='+escape(f.elements['email'].value); 
		qs += '&firstName='+escape(f.elements['firstName'].value);	
		qs += '&gender='+escape($("input[@name='gender']:checked").val());
		qs += '&phone='+escape(f.elements['phone'].value);	
		qs += '&lastName='+escape(f.elements['lastName'].value);		
		qs += '&optIn='+escape(f.elements['optIn'].checked?"on":"");				
		qs += '&password='+escape(f.elements['password'].value);	
		qs += '&password2='+escape(f.elements['password2'].value); 
		qs += '&state='+escape(f.elements['state'].value);	
		qs += '&zip='+escape(f.elements['zip'].value);		
		doAjax('register', qs, '.registration-background');
		
	});
   
	$('#signin-submit').live('click', function (){	
		errors = validateLogination();
		if(errors.length > 0)	{
			lertUser(printErrors(errors));
			return false;
		}		
		f = document.getElementById('signin-form');
		qs = '';
		qs += '&email='+f.elements['signin-email'].value;
		qs += '&password='+escape(f.elements['signin-password'].value);
		doAjax('signin', qs, '.signin-background');
    });
	
	$('#forgot-submit').click(function (){	
		errors = validateForgotPassword();
		if(errors.length > 0)	{
			lertUser(printErrors(errors));
			return false;
		}		

    });	
	
	$('#tellfriend-submit').click(function (){
		errors = validateTellFriend();
		if(errors.length > 0)	{
			lertUser(printErrors(errors));
			return false;
		}		

    });	
	
	$('#edit-submit').click(function (){											
		if(errorsToClear.length > 0)
		{
			correctFields(errorsToClear);
		}
		errors = validateEditation();
		if(errors.length > 0)	{
			lertUser(printErrors(errors));
			return false;
		}
		return true;
	});

	//only you can prevent unncessary javascript errors
	if(typeof alertErrors == 'function') {alertErrors(); }	
  	
});
// ----------------------- Validation Functions ------------------------------	
	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($("input[@name='gender']:checked").val() == null){
			r_asErrors.push("Please choose a gender.");	
			validate_errorFields.push(p_aValues.elements['gender']);			
		}
		
		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(/^[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(/^[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('acma_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('acma_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();

	}
	
	function callSiteCatalyst(p_sProp28){
		s.prop5=s.prop9=s.eVar9="Dr Pepper";
		s.prop8=s.eVar8="South West";
		s.prop10=s.eVar10="CSDs";
		s.prop11=s.eVar14="NonFlash";
		s.channel=s.eVar13=s.prop30=s.eVar35="acma";
		s.prop28=p_sProp28;
		s.pageName=s.eVar12= s.channel + ": " + s.prop28 + " - Dr Pepper";
		s.events="event12";
		s.t();
	}	