
function validateFirstHalf() {
	var program = document.getElementById("program");
	var education_level = document.getElementById("education_level_code");
	
	var form1 = document.getElementById("step1");
	var form2 = document.getElementById("step2");
	var step2 = document.getElementById("select_boxes");
	
	var opt = document.getElementById("program").options[document.getElementById("program").selectedIndex];
	var edu = document.getElementById("education_level_code").options[document.getElementById("education_level_code").selectedIndex];
	
	if (opt.parentNode.nodeName == "OPTGROUP") // Is contained in an optgroup
	{
		//To inquire for a Master's-level degree, must have a Bachelor's degree or higher
		if ((opt.parentNode.label.search(/Master/i) >= 0 || opt.parentNode.label.search(/M.S./i) >= 0) && (opt.parentNode.label.search(/M.S. degree program in Nursing/i) < 0 && opt.parentNode.label.search(/RN Track/i) < 0) && (edu.value == "HS" || edu.value == "NURS" || edu.value == "SOMECOL" || edu.value == "ASSOC"))
		{
			alert("We're sorry, but your level of education does not qualify you for this program.");
			return false;
		}
		//To inquire for TPP and Sp.Ed. Endorsement, must have a Bachelor's degree or higher
		else if ((opt.parentNode.label.search(/Special Education/i) >= 0 || opt.parentNode.label.search(/Teacher Preparation/i) >= 0) && (edu.value == "HS" || edu.value == "NURS" || edu.value == "SOMECOL" || edu.value == "ASSOC"))
		{
			alert("We're sorry, but your level of education does not qualify you for this program.");
			return false;
		}
		//To inquire for a Post-Doctoral Certificate, must have a PhD degree or higher
		else if (opt.parentNode.label.search(/Post-Doctoral/i) >= 0 && (edu.value == "HS" || edu.value == "NURS" || edu.value == "SOMECOL" || edu.value == "ASSOC" || edu.value == "BACH" || edu.value == "MAST"))
		{
			alert("We're sorry, but your level of education does not qualify you for this program.");
			return false;
		}
		//To inquire for a Post-Masters Certificate, must have a Masters degree or higher
		else if (opt.parentNode.label.search(/Post-Masters/i) >= 0 && (edu.value == "HS" || edu.value == "NURS" || edu.value == "SOMECOL" || edu.value == "ASSOC" || edu.value == "BACH"))
		{
			alert("We're sorry, but your level of education does not qualify you for this program.");
			return false;
		}
		//To inquire for a EdD or PhD program, must have a Master's degree or higher
		else if ((opt.parentNode.label.search(/Ph.D/i) >= 0 || opt.parentNode.label.search(/Ed.D/i) >= 0) && (opt.parentNode.label.search(/Ph.D. in Psychology/i) < 0) && (edu.value == "HS" || edu.value == "NURS" || edu.value == "SOMECOL" || edu.value == "ASSOC" || edu.value == "BACH"))
		{
			alert("We're sorry, but your level of education does not qualify you for this program.");
			return false;
		}
		// validate exceptions
		//M.S. degree in Nursing (RN Track) allows entrance with Nursing Diploma, Some College or an AA/AS degree (or higher)
		else if (opt.parentNode.label.search(/M.S. degree program in Nursing/i) >= 0 && opt.parentNode.label.search(/RN Track/i) >= 0 && (edu.value == "HS"))
		{
			alert("We're sorry, but your level of education does not qualify you for this program.");
			return false;
		}
		//The Ph.D. in Psychology allows entrance with a B.S. in Psychology. Allow Bachelors or higher to inquire
		else if (opt.parentNode.label.search(/Ph.D. in Psychology/i) >= 0 && (edu.value == "HS" || edu.value == "NURS" || edu.value == "SOMECOL" || edu.value == "ASSOC"))
		{
			alert("We're sorry, but your level of education does not qualify you for this program.");
			return false;
		}
		else if (education_level.selectedIndex == 0)
		{
			alert("Please select an education level.");
			return false;
		}
		//Program and Education Level validation passed
		else
		{
			//Show step2 - aka select_boxes
			form1.style.display = "none";
			step2.style.display = "block";
			var age = document.getElementById("age_question");
			var nursing = document.getElementById("nursing_question");
			var teaching = document.getElementById("teaching_question");
			var engineering = document.getElementById("engineering_questions");
			age.style.display = "none";
			nursing.style.display = "none";
			teaching.style.display = "none";
			engineering.style.display = "none";	
			//Only show Bachelors questions if any of the Bachelor programs are selected
			if(opt.parentNode.label.search(/Bachelor/i) >= 0 || opt.parentNode.label.search(/B.S./i) >= 0)
			{
				age.style.display = "block";
			}
			//Only show RN question if the nursing programs are selected.
			if(opt.parentNode.label.search(/Nursing/i) >= 0)
			{
				nursing.style.display = "block";
			}
			//Only show teaching cert question if MS Education or EdD are selected
			if(opt.parentNode.label.search(/Ed.D/i) >= 0 || (opt.parentNode.label.search(/Education/i) >= 0 && (opt.parentNode.label.search(/Master/i) >= 0 || opt.parentNode.label.search(/M.S./i) >= 0)))
			{
				teaching.style.display = "block";
			}
			//Only show qualifying question if Engineering is selected
			if(opt.parentNode.label.search(/Engineer/i) >= 0)
			{
				engineering.style.display = "block";
			}
		}
	}
	else if (program.selectedIndex == 0)
	{
		alert("Please select a program of interest.");
		return false;
	}
	else if (education_level.selectedIndex == 0)
	{
		alert("Please select an education level.");
		return false;
	}
	else
	{
		//Show all questions since the program is not in a category - this should not happen
		age.style.display = "block";
		nursing.style.display = "block";
		teaching.style.display = "block";
		engineering.style.display = "block";
		form1.style.display = "none";
		step2.style.display = "block";
	}
}

function validateSecondStep() {
	//Get questions
	var age = document.getElementById("age_question");
	var nursing = document.getElementById("nursing_question");
	var teaching = document.getElementById("teaching_question");
	var engineering = document.getElementById("engineering_questions");
	
	//Which questions were asked
	var age_asked = (age.style.display == "block") ? true:false;
	var nursing_asked = (nursing.style.display == "block") ? true:false;
	var teaching_asked = (teaching.style.display == "block") ? true:false;
	var engineering_asked = (engineering.style.display == "block") ? true:false;

	//Answers
	var age_requirement = document.getElementById("age_requirement");
	var rn_license = document.getElementById("rn_license");
	var teaching_certificate = document.getElementById("teaching_certificate");
	var required_courses = document.getElementById("required_courses");
	var undergrad_degree = document.getElementById("undergrad_degree");
	var start_date = document.getElementById("start_date");
	
	var form1 = document.getElementById("step1");
	var form2 = document.getElementById("step2");
	var step2 = document.getElementById("select_boxes");
	
	var passed = true;
	var disqualified = false;

	if (age_asked)
	{
		if (age_requirement.selectedIndex == 0) 
		{
			alert("Please select if you are at least 24 years of age.");
			passed = false;
		}
		else if (age_requirement.selectedIndex != 1)
		{
			passed = false;
			disqualified = true;
		}
	}
	if (nursing_asked)
	{
		if (rn_license.selectedIndex == 0) 
		{
			alert("Please select if you have a current nursing liscense.");
			passed = false;
		}
		else if (rn_license.selectedIndex != 1)
		{
			passed = false;
			disqualified = true;
		}
	}
	if (teaching_asked)
	{
		if (teaching_certificate.selectedIndex == 0) 
		{
			alert("Please select if you hold a current teaching certficate.");
			passed = false;
		}
		else if (teaching_certificate.selectedIndex != 1)
		{
			passed = false;
			disqualified = true;
		}
	}
	if (engineering_asked)
	{
		if (required_courses.selectedIndex == 0 && undergrad_degree.selectedIndex == 0) 
		{
			alert("Please select if you have an undergrad degree in Electrical/Computer Engineering or Computer Science.");
			alert("Please select if you successfully completed one year of college-level calculus and a college course in differential equations and linear algebra.");
			passed = false;
		}
		else if (required_courses.selectedIndex != 1 && undergrad_degree.selectedIndex != 1)
		{
			passed = false;
			disqualified = true;
		}
	}
	if (start_date.selectedIndex == 0) 
	{
		alert("Please select when you plan on enrolling in Walden.");
		passed = false;
	}
	if (passed && !disqualified)
	{
		form1.style.display = "none";
		step2.style.display = "none";
		age.style.display = "none";
		nursing.style.display = "none";
		teaching.style.display = "none";
		engineering.style.display = "none";
		form2.style.display = "block";
	}
	else if (disqualified)
	{
		alert("We're sorry, but you do not meet the qualifications for this program.");
	}
}

function validateForm(f) {
	if (f.required == undefined) {
		alert("'Required' field missing on form. For the validation script to function properly, you must have a hidden field named 'required' with a comma separated list of fields in the format 'HTML Field Name|Field Label'");
		return false;
	}
	var input;
	var errors = '';
	var required = f.required.value.split(",");
	for (i=0; i<required.length; i++) {
		input = eval("f." + required[i].split("|")[0]);
		if (input == undefined) { // If input doesn't exist, alert and return false
			alert('Error! ' + required[i].split("|")[1] + ' is not a valid field on your form.');
			return false;
		}
		if (input.type == "select-one") { // Select box
			if (input.length > 1 && input.selectedIndex < 1) errors += "- Please select a value for " + required[i].split("|")[1] + "\n";
		} else if (input.type == "select-multiple") { // Multiple select box
			var selected = false;
			for (j=0; j<input.options.length; j++) {
				if (input.options[j].selected) {
					selected = true;
					j = input.options.length;
				}
			}
			if (!selected) errors += "- Please select a value for " + required[i].split("|")[1] + "\n";
		} else if (input.length) { // Radio button
			var checked = false;
			for (j=0; j<input.length; j++) {
				if (input[j].checked) {
					checked = true;
					j = input.length;
				}
			}
			if (!checked) errors += "- Please select a value for " + required[i].split("|")[1] + " \n";
		} else if (input.type == "text") { // Text box
			if (required[i].split("|")[0].indexOf("phone") > -1) errors += phoneIsValid(input,required[i].split("|")[1]);
			else if (required[i].split("|")[0] == "confirmemail" && input.value != f.email.value) errors += "- Confirm e-mail address does not match\n";
			else if (required[i].split("|")[0] == "email" && (input.value.length < 1 || input.value.indexOf("@") < 1 || input.value.indexOf(".") == -1)) errors += '- ' + required[i].split("|")[1] + " is missing or not valid\n";
			else if (!input.value.length) errors += '- ' + required[i].split("|")[1] + " is missing\n";
		} else if (input.type == "textarea" || input.type == "password") { // Text area or password
			if (!input.value.length) errors += '- ' + required[i].split("|")[1] + " is missing\n";
		} else if (input.type == "checkbox") { // Checkbox
			if (!input.checked) errors += "- " + required[i].split("|")[1] + " must be checked.\n";
		}
	}
	if (errors.length) { // If there's an error, alert the user and return false
		errors = "The following errors were found:\n\n" + errors;
		alert(errors);
		return false;
	} else return true;
}

function phoneIsValid(Obj,sLabel) {
	var sPhone = '';
	var sPhoneTemp = Obj.value;
	var sNumbers = '1234567890';
	for (var i=0;i<sPhoneTemp.length;i++) {
		if (sNumbers.indexOf(sPhoneTemp.charAt(i)) > -1) sPhone += sPhoneTemp.charAt(i);
	}
	if (sPhone.charAt(0) == '1' || sPhone.charAt(0) == 1) sPhone = sPhone.substring(1,(sPhone.length));
	if (sPhone.length != 10) return '- ' + sLabel + ' must be a 10-digit number\n';
	else Obj.value = sPhone;
	var sAreaCode = sPhone.substring(0,3);
	var sPrefix = sPhone.substring(3,6);
	var sNumber = sPhone.substring(6,10);
	ary7NotAllowed = new Array('1234567','4567890','0000000','1111111','2222222','3333333','4444444','5555555','6666666','7777777','8888888','9999999','3456789','4567890')
	ary3NotAllowed = new Array('000','911','555','012','123');
	for (var i=0;i<ary7NotAllowed.length;i++) {
		if (sPrefix.toString() + sNumber.toString() == ary7NotAllowed[i]) return '- ' + sLabel + ' must be a valid phone number\n';
	}
	for (var i=0;i<ary3NotAllowed.length;i++) {
		if (sPrefix.toString() == ary3NotAllowed[i].toString()) return '- ' + sLabel + ' must be a valid phone number\n';
	}
	return '';
}