$('html').attr("id", "jsReady");

$(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"); 
	}



// IE select width fix--------------------------------------------------------------------------------------------------
	function ieSelectWidthFix() {
		if ( $('#rootIE').length ) {
			$('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');
					});
				}
			});
		}
	}



// 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';



// 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;
	}



// 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;
	
					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')-1;
		var fieldHeight = $(formField).attr('offsetHeight');
		
		if ( $('#rootIE').length ) { fieldHeight++; }
		
		$(formField).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-------------------------------------------------------------------------------------------------------------	
	$('#program_list a').click(function () {
		var selection = $(this).attr('href');
					
		$('#content div').hide();
		$(selection).show();
		
		return false;									 
	});
	
	if ( $.url.param("selection") ) {
		var selection = "#"+$.url.param("selection");
		
		$('#content div').hide();
		$(selection).show();
	}
	
	if ( window.location.hash ) {
		var selection = window.location.hash;
					
		$('#content div').hide();
		$(selection).show();
	}
	
	$('#programs').hover(
		function () {
			$('#subnav').fadeIn();
		}, 
		function () {
			$('#subnav').fadeOut();
		}
	);

	if ( window.location.href.match(/programs\.php/) ) {
		$('#subnav a').click(function () {
			var selection = $(this).attr('href');
				selection = selection.replace(/programs\.php/, "");
			
			$('#content div').hide();
			$(selection).show();
			
			$('#subnav').fadeOut();
			
			return false;									 
		});
	}


// Form setup-------------------------------------------------------------------------------------------------------------
	$('#btn_Submit').replaceWith('<img id="btn_Submit" src="_presentation/images/btn_Submit.gif" alt="Submit &raquo;" />');
	$('#btn_Submit').css({bottom: 60});
	$('#stepTwo').append($('#btn_Submit'));
	$('#stepTwo').append('<img id="btn_Back" src="_presentation/images/btn_Back.gif" alt="&laquo; Back" />');
	
	$('#requestForm').prepend('<h2 id="step">Step 1 of 2</h2>');
	
	$('#stepOne').append('<img id="btn_Next" src="_presentation/images/btn_Next.gif" alt="Next &raquo;" />');
			
	$('#program_code').removeAttr('validation').attr('disabled', 'disabled');
	$('#program_code option:first').text('Select a campus');
		
	$('#campus_code').change(function () {
		if ( $(this).val() == "" ) {
			$('#program_code').removeAttr('validation').attr('disabled', 'disabled'); 
			$('#program_code option:first').text('Select a campus');
		} else {
			$('#program_code option:first').html('Loading&hellip;');
			
			$('#program_code').removeClass('errorMessage');	
			$('#program_code').next().remove();
			$('#program_code').removeData('errorMessage');
	
			$('#program_code').attr('validation', 'required'); 
			
			$.getJSON('/global/cdm-server.php?path=http://ulm.datamark.com/cdm/campuses/' + $(this).val() + '/programs?order_asc=ProgramName', function (json) {
				$('#program_code').find('option').remove().end();
				$('#program_code').append('<option value="">Select One</option>');
	
				for (var i=0; i<json.body.length; i++) { $('#program_code').append('<option value="'+json.body[i].ProgramCode+'">'+json.body[i].DefaultName+'</option>'); }
	
				$('#program_code').removeAttr('disabled');
			});							   
		}
	});
	
	$('#btn_Next').click(function () {
		var validStepOne = validate('stepOne');
	
		if ( validStepOne ) {
			$('#step').text('Step 2 of 2');
			
			$('#stepOne').hide();
			$('#stepTwo').show();
			
			$('#requestForm').css({paddingBottom: 100});
		}
	});
	
	$('#btn_Back').click(function () {
		$('#step').text('Step 1 of 2');
			
		$('#stepTwo').hide();
		$('#stepOne').show();
				
		$('#requestForm').css({paddingBottom: 50});
	});
	
	$('#btn_Submit').click(function () {
		var validForm = validate();
	
		if ( validForm ) { $('#requestForm').submit(); }								 
	});	
		
	ieSelectWidthFix();
});