$(function () {
// IE6 Warning----------------------------------------------------------------------------------------------------------
	if ( $('#rootIE6').length ) {						
		$('body').append('<div id="IEwarning"><p>You are using an outdated browser. For the best experience using this site, please upgrade to a modern web browser.</p></div>');
		
		$('#IEwarning').css({
			border: "1px solid #f7941d",
			borderTop: "none",
			background: "#feefda",
			textAlign: "center",
			position: "absolute",
			top: 0,
			left: 0,
			zIndex: 100,
			display: "none",
			font: "bold 12px arial, sans-serif",
			padding: "3px",
			width: $('body').width()
		}).slideDown("slow");
	}
		


// Error messages used in form validation-------------------------------------------------------------------------------
	var validationErrorMessage = {};
		validationErrorMessage['email'] = 'Invalid email address';	
		validationErrorMessage['phone'] = 'XXX-XXX-XXXX';
		validationErrorMessage['phone2'] = 'XXX-XXX-XXXX';
		validationErrorMessage['postal_code'] = 'Invalid postal code';



// IE select width fix--------------------------------------------------------------------------------------------------
	function ieSelectWidthFix() {
		if (jQuery.browser.msie) {
			$('select').each(function () { $(this).data("originalWidth", $(this).css('width')); });
			
			$('select').mouseenter(function () {
				$(this).css('width', "auto");
				$(this).data("resizedWidth", $(this).attr('offsetWidth'));
			
				if ( parseInt($(this).data("resizedWidth")) < parseInt($(this).data("originalWidth").replace(/px/, "")) ) { 
					$(this).css('width', $(this).data("originalWidth")); 
				} else { 
					$(this).addClass('expanded'); 
				}
			});
			
			$('select').change(function () {
				$(this).css('width', $(this).data("originalWidth"));
				$(this).removeClass('expanded');
			});
			
			$(':input').focus(function () {
				if ( $(this).attr('class') != 'expanded' ) {
					$('.expanded').each(function () {
						$(this).css('width', $(this).data("originalWidth"));
						$(this).removeClass('expanded');
					});
				}
			});
		}
	}	



// Validation checks--------------------------------------------------------------------------------------------------------  
	function isRequired(formField) {
		switch ( $(formField).attr('type') ) {
			case 'text':
			case 'textarea':
			case 'select-one':
				if ($(formField).val()) { return true; }
			return false;
		}
	}
	
	function isPattern(formField, pattern) {
		var regExp = new RegExp("^" + pattern + "$");
		var correct = regExp.test($(formField).val());
	
		return correct;
	}
	
	function isValidEmail(formField) { return isPattern(formField, "[a-zA-Z0-9._+%-]+@([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$"); }
	
	function isValidPhone(formField) { return isPattern(formField, "^[0-9]{3}-[0-9]{3}-[0-9]{4}$"); }
	
	function isValidZip(formField) { return isPattern(formField, "^[0-9]{5}(-[0-9]{4})?$"); }
	
	function isValidPostalCode(formField) { return isPattern(formField, "^[ABCEGHJKLMNPRSTVXYabceghjklmnprstvxy]{1}[0-9]{1}[A-Za-z]{1} *[0-9]{1}[A-Za-z]{1}[0-9]{1}$"); }
	
	function radioCheck(groupName) {
		var isChecked = false;
	
		for (var i=0; i<document.lead_data [groupName].length; i++) {
			if (document.lead_data [groupName][i].checked) { isChecked = true; }
		}
	
		return isChecked;
	}
	
	function validateCheckBox() {
		var program_selected = false;
		
		var program_code = $('input[name="program_code[]"]:checked').length;
		
		if ( program_code != 0 ) { program_selected = true; } 
	
		return program_selected;
	}



// Form validation---------------------------------------------------------------------------------------------------------
	function removeError() {
		if ( !$(this).data('errorMessage') ) return;
	
		$(this).removeClass('errorMessage');	
		$(this).parent().find('label.errorMessage').remove();
		$(this).removeData('errorMessage');
	}
	
	function validate (step) {
		var validForm = true;
	
		if ( step == "stepOne" ) {
			var formFields = $('#stepOne :input');
		} else {
			var formFields = $(':input');	
		}
	
		for ( var i = 0; i < formFields.length; i++ ) {
			var validation = $(formFields[i]).attr('validation');
			var fieldID = $(formFields[i]).attr('id');
			var OK, requiredFirst = true;
	
			if ( !validation ) {
				switch ( fieldID ) {
					case "phone":
					case "phone2":
					case "email":
						if ( $(formFields[i]).val() == "" ) continue;
					break;
											
					case "program_PP":
					case "program_AMT":
					case "program_AT":
					case "program_QCNT":
					case "program_BSAMT":
						OK = validateCheckBox();
						if ( OK ) { continue; }
					break;
					
					default:
						continue;
					break;
				}
			}
	
			switch ( fieldID ) {
				case "postal_code":
					OK = isRequired(formFields[i]);
					
					if ( OK ) { 
						if ( $('#country').length ) {
							switch ( $('#country').val() ) {
								case "Canada":
									OK = isValidPostalCode(formFields[i]);
								break;
	
								case "USA":
									OK = isValidZip(formFields[i]);
								break;
							}
						} else {
							OK = isValidZip(formFields[i]);	
						}
	
						requiredFirst = false;					
					}
				break;
	
				case "email":
					OK = isRequired(formFields[i]);
					
					if ( OK ) { 
						OK = isValidEmail(formFields[i]);
						requiredFirst = false;
					}
				break;
	
				case "phone":
				case "phone2":
					OK = isRequired(formFields[i]);
					
					if ( OK ) { 
						OK = isValidPhone(formFields[i]);
						requiredFirst = false;
					}
				break;
	
				default:
					OK = isRequired(formFields[i]);
				break;
			};
	
			if ( !OK ) {
				var errorMessage = "Required"; 
			
				if ( !requiredFirst ) { errorMessage =  validationErrorMessage[fieldID] || ""; }
			
				writeError(formFields[i], errorMessage);
			
				validForm = false;
			}
		}
	
		return validForm;
	}
	
	function writeError(formField, message) {
		var fieldID = $(formField).attr('id');
		var fieldWidth = $(formField).attr('offsetWidth');
		var fieldHeight = $(formField).attr('offsetHeight');
		
		switch ( fieldID ) {
			case "program_PP":
			case "program_AMT":
			case "program_AT":
			case "program_QCNT":
			case "program_BSAMT":
				fieldWidth = 100;
				fieldHeight = 20;
				message = "Select a program.";
			break;
		}
		
		$(formField).addClass('errorMessage');
		$(formField).parent().addClass('errorMessage');
		
		$(formField).focus(removeError);
		
		if ( $(formField).data('errorMessage') ) return;
		
		$(formField).parent().append('<label style="width:'+fieldWidth+'px; height: '+fieldHeight+'px;" class="errorMessage" for="'+fieldID+'">'+message+'</label>');
		
		$(formField).data('errorMessage', message);
	}



// Page setup-------------------------------------------------------------------------------------------------------------	



// Form setup-------------------------------------------------------------------------------------------------------------
	$('#btn_Submit').replaceWith('<img id="btn_Submit" src="image/btn_Submit.gif" alt="Finish" />');
	$('#stepTwo').append($('#btn_Submit'));
	
	$('#stepOne').append('<img id="btn_Next" src="image/btn_Next.gif" alt="Next" />');
	
	$('#stepTwo').hide();
	
	$('#btn_Next').click(function () {
		var validStepOne = validate('stepOne');
	
		if ( validStepOne ) {
			$('#stepOne').hide();
			$('#formIntro').hide();
			$('#formHeader').css({
				background: 'url("image/text_YouAreClear.png") no-repeat',
				height: 49,
				width: 180
			});
			$('#stepTwo').show();
		}
	});
			
	$('#btn_Submit').click(function () {
		var validForm = validate();
	
		if ( validForm ) { $('#spartan').submit(); }								 
	});
	
	ieSelectWidthFix();	
});