$(document).ready(function() {	
	errorsToClear = [];

	$('#signin-submit').click(function(e) {
		var l_asErrorMsgs = validateLogin();

		if (l_asErrorMsgs.length > 0) {
			showErrorMsgs(l_asErrorMsgs);
			return false;
		}
		return true;
	});

	$('#register-submit').click(function() {
		if (errorsToClear.length > 0) {
			correctFields(errorsToClear);
		}

		var l_asErrorMsgs = validateRegistration();
		if (l_asErrorMsgs.length > 0) {
			showErrorMsgs(l_asErrorMsgs);
			return false;
		}
		return true;
	});
});

CaptureIntegration.editProfileListenerPromo = function() {
	jQuery.fancybox.close();
	window.parent.location.href = '/promotions/acma/thankyou/';
};

// ----------------------- Validation Functions ------------------------------	
	function validateLogin() {
		var l_asInvalidFieldIds = [];
		var r_asErrorMsgs = [];
		if (/[_a-zaA-Z0-9-]+([.+_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+([.a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4})/.test($('#email').val()) == false || 
		   (/[a-zA-Z0-9]{6,16}/.test($('#password').val()) == false)) {
			r_asErrorMsgs.push("Email or Password Invalid.");
			l_asInvalidFieldIds.push('email', 'password');
			highlightFields(l_asInvalidFieldIds);
		}

		return r_asErrorMsgs;
	}

	function validateRegistration() {
		var l_asInvalidFieldIds = [];
		var r_asErrorMsgs = [];
		
		// Name
		if ((/^[a-zA-Z]{1}[-\'a-zA-Z ]{0,28}[a-zA-Z]{1}$/.test($('#firstName').val()) == false)) {
			r_asErrorMsgs.push("First Name must be between 3 and 30 characters a-z.");		
			l_asInvalidFieldIds.push('firstName');
		}
		if ((/^[a-zA-Z]{1}[-\'a-zA-Z ]{0,27}[a-zA-Z]{1}$/.test($('#lastName').val()) == false)) {
			r_asErrorMsgs.push("Last Name must be between 2 and 30 characters a-z.");
			l_asInvalidFieldIds.push('lastName');
		}

		// Email
		if ((/^[_a-zA-Z0-9-]+([.+_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+([.a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4})$/.test($('#email').val()) == false)) {
			r_asErrorMsgs.push("Email Address is in an invalid format.");
			l_asInvalidFieldIds.push('email');
		}

		// Password
		if (/^[a-zA-Z0-9]{6,16}$/.test($('#password').val()) == false) {
			r_asErrorMsgs.push("Password must be between 6 and 16 alphanumeric characters.");	
			l_asInvalidFieldIds.push('password', 'password2');
		}
		if ($('#password').val() != $('#password2').val()) {
			r_asErrorMsgs.push("Password and Confirmation must match.");	
			l_asInvalidFieldIds.push('password2');
		}		

		// Birthday
		if ($('#birthMonth').val() == "" || $('#birthDay').val() == "" || $('#birthYear').val() == "") {
			r_asErrorMsgs.push("Please choose a birth Month, Day, and Year.");
			l_asInvalidFieldIds.push('year-field', 'month-field', 'day-field');
		}

		// Gender
		if (!$('#gender-m').attr('checked') && !$('#gender-f').attr('checked')) {
			r_asErrorMsgs.push("Please choose a gender."); 
			l_asInvalidFieldIds.push('gender-field');		
		}

		// Address
		if ($('#address1').val().length == 0) {
			r_asErrorMsgs.push("Please enter your address.");	
			l_asInvalidFieldIds.push('address1');			
		}

		if ($('#address1').val().length > 0 && (/[a-zA-Z]+/.test($('#address1').val()) == false || /[0-9]+/.test($('#address1').val()) == false || $('#address1').val().length > 50)) {
			r_asErrorMsgs.push("Address must contain 2 to 50 letters and numbers.");
			l_asInvalidFieldIds.push('address1');
		}

		// City
		if ($('#city').val().length == 0) {
			r_asErrorMsgs.push("Please enter your city."); 
			l_asInvalidFieldIds.push('city');			
		}
		if ($('#city').val().length > 0 && (/^[a-zA-Z]{1}[-\'a-zA-Z ]{0,28}[a-zA-Z]{1}$/.test($('#city').val().value) == false)) {
			r_asErrorMsgs.push("Please enter your city."); 
			l_asInvalidFieldIds.push('city');
		}
		
		// State
		if ($('#state_input').val() == 'Select') {
			r_asErrorMsgs.push("Please choose a state.");	
			l_asInvalidFieldIds.push('state-field');			
		}
		
		// Zip Code
		if ((/^[0-9]{5}$/.test($('#zip').val()) == false)) {
			r_asErrorMsgs.push("Zip code must be 5 numbers."); 
			l_asInvalidFieldIds.push('zip');
		}
		
		// Phone Number
		if ($('#phone').val().length == 0){
			r_asErrorMsgs.push("Please enter your phone number.");	
			l_asInvalidFieldIds.push('phone');			
		}
		if ($('#phone').val().length > 0 && (/^[1-9]{1}[0-9]{9}$/.test($('#phone').val()) == false)) {
			r_asErrorMsgs.push("Phone number must be 10 digits no dashes, no spaces.");
			l_asInvalidFieldIds.push('phone');
		} 
		
		highlightFields(l_asInvalidFieldIds);
	
		return r_asErrorMsgs;
	}
	

	function showErrorMsgs(p_asErrorMsgs) {
		if (p_asErrorMsgs.length == 0) return;
		var $_xErrorsList;
		
		if ($('#errors').length) {
			$_xErrorsList = $('#errors').empty();
		}
		else {
			$_xErrorsList = $('<ul id="errors">').appendTo($('#errors-container'));
		}

		for (var i=0; i < p_asErrorMsgs.length; i++) {
			$_xErrorsList.append('<li class="error">'+ p_asErrorMsgs[i] + '</li>');
		};
	}

	
	function correctFields(cFields) {
		var i;
		for (i = 0; i < cFields.length; i++) {
			fieldId = cFields[i].id;
			$('#'+fieldId).removeClass('invalid');
			
		}
		errorsToClear = [];
	}
	
	function highlightFields(p_asInvalidFieldIds) {
		var i;
		for(i = 0; i < p_asInvalidFieldIds.length; i++) {   
			$('#'+p_asInvalidFieldIds[i]).addClass('invalid');
			errorsToClear.push(p_asInvalidFieldIds[i]);
		}
	}

