$(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 zip';

// 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;
	}
	
	// validate a checkbox?

// 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;
	
				// Setup radio button cases here
				
				// Setup checkbox cases here
				
				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');
		
		$(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-------------------------------------------------------------------------------------------------------------	
	function rotateCampus () {
		$('#campus_photo').fadeOut(500, function () {
			current_campus++;
			if (current_campus >= campus_thumbs.length) {
				current_campus = 0;
			}
			$('#campus_photo').attr('src', campus_thumbs[current_campus]);
			$('#campus_photo').fadeIn(500);
		});

		setTimeout(rotateCampus, 5000);
	}
	
	function rotateTestimonial () {
		$('#testimonial').fadeOut(500, function () {
			current_testimonial++;
			if (current_testimonial >= testimonials.length) {
				current_testimonial = 0;
			}
			$('#testimonial').attr('src', testimonials[current_testimonial]);
			$('#testimonial').fadeIn(500);
		});

		setTimeout(rotateTestimonial, 8750);
	}
	
	setTimeout(rotateCampus, 5000);
	
	setTimeout(rotateTestimonial, 8750);
	
// Form setup-------------------------------------------------------------------------------------------------------------
	$('#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').removeClass('errorMessage');	
			$('#program_code').next().remove();
			$('#program_code').removeData('errorMessage');
			
			$('#program_code option:first').text('loading. . .');	
			
			$('#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--</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');
			});	

		   $('#program_code').parent().append('<br class="clear" />');
		}
	});
	
	if ( !$('#rootIE6').length ) {
		$('#requestForm').submit(function () { return false; });
		
		$('#stepOne').append('<input id="btn_Next" type="image" src="_presentation/images/btn_Next.gif" alt="Next &raquo;"  height="18" width="94" />');
		
		$('#requestForm').prepend('<p id="step">Step 1 of 2</p>');
		
		$('#stepTwo').append('<img id="btn_Back" src="_presentation/images/btn_Back.png" alt="&laquo;"  height="12" width="64" />');
		
		$('#stepTwo').append($('#btn_Submit'));
		$('#stepTwo').hide();
		
		$('#content').css({height: 705});
		
		$('#btn_Next').click(function () {
			var validStepOne = validate('stepOne');
		
			if ( validStepOne ) {
				$('#stepOne').hide();
				$('#stepTwo').show();
				
				$('#step').text('Step 2 of 2')
			}
		});
		
		$('#btn_Back').click(function () {
			$('#stepTwo').hide();
			$('#stepOne').show();
				
			$('#step').text('Step 1 of 2')
		});
		
		$('#btn_Submit').click(function () {
			var validForm = validate();
			
			if ( validForm ) { 
				$('#requestForm').unbind('submit');
				
				$('#requestForm').submit(); 
			}								 
		});
	}
	
	ieSelectWidthFix();
});