
// dropdown are skipped because they always have a default

var radioArray = new Array("sex", "measure", "active", "stress", "elevatedCholesterol", "parentCardio", "siblingCardio", "trafficViolation", "education", "familyIncome", "safetybelt");

var errMessage = new Object();
errMessage["sex"] = "Please specify your gender."
errMessage["parentCardio"] = "Please indicate if you parents had cardiovascular problems.";
errMessage["siblingCardio"] = "Please indicate if your siblings had cardiovascular problems.";
errMessage["elevatedCholesterol"] = "Please indicate if you have elevated cholesterol.";
errMessage["active"] = "Please select your activity level.";
errMessage["stress"] = "Please select your stress level.";
errMessage["trafficViolation"] = "Please specify whether you've have a traffic violation.";
errMessage["education"] = "Please specify if you've had post-secondary education.";
errMessage["familyIncome"] = "Please specify your family income.";
errMessage["safetybelt"] = "Please specify whether you wear a safety belt.";
errMessage["measure"] = "Please specify the units of measure for your weight.";
		
function checkForm() {

	var flag = true;
	var ipt;
	
	// check age
	
	ipt = document.getElementById("age").value;
	if (ipt == "") {
		document.getElementById("ageErr").innerHTML = "Please specify your age.";
		document.location.hash = "ageQ";
		return false;
	}
	
	else {
		if (!ipt.match(/^\d{1,3}$/) || ipt == 0 || ipt > 102) {
			document.getElementById("ageErr").innerHTML = "Enter an age between 1 and 101.";
			document.location.hash = "ageQ";
			return false;
		}
		
		else {
			document.getElementById("ageErr").innerHTML = "";
		}
	}
	
	
	// check gender
	
	if (!validateItem(0)) {
		return false;
	}
	
	// check height
	
	var ft = document.getElementById("heightFeet").value;
	var inch = document.getElementById("heightInches").value;
	var cm = document.getElementById("heightCM").value;
	
	if ( (ft == "" && inch == "" && cm == "") || 
		(ft != "" && (!ft.match(/^\d$/) || ft > 8)) ||
		(inch != "" && (!inch.match(/^\d{1,2}$/) || inch > 11)) ||
		(cm != "" && (!cm.match(/^\d{2,3}$/) || cm > 275)) ||
		(ft == 0 && inch == 0 && cm == 0) ||
		((ft > 0 || inch > 0) && cm > 0)) {
			document.getElementById("heightErr").innerHTML = "Please specify a valid height.";
			document.location.hash = "heightQ";
			return false;
	}
	
	else {
		document.getElementById("heightErr").innerHTML = "";
	}
	
	
	
	// check weight
	
	ipt = document.getElementById("weight").value;
	if (ipt == "") {
		document.getElementById("weightErr").innerHTML = "Please specify your weight.";
		document.location.hash = "weightQ";
		return false;
	}
	
	else {
		if (!ipt.match(/^\d{1,3}$/) || ipt == 0 || ipt > 900) {
			document.getElementById("weightErr").innerHTML = "Please specify a valid weight.";
			document.location.hash = "weightQ";
			return false;
		}
		
		else {
			document.getElementById("weightErr").innerHTML = "";
		}
	}
	
	if (!validateItem(1)) {
		return false;
	}
	
	
	// check activity and stress levels and cholesterol radios
	
	for (var i = 2; i < 5; i++) {
		if (!validateItem(i)) {
			return false;
		}
	}
	
	
	
	ipt = document.getElementsByName("bloodPressure");
	if (!ipt[0].checked && !ipt[1].checked) {
		document.getElementById("bloodPressureErr").innerHTML = "Please indicate if you have high blood pressure.";
		document.location.hash = "bloodPressureQ";
		return false;
	}
	
	else {
	
		document.getElementById("bloodPressureErr").innerHTML = "";
		
		if (ipt[1].checked) {
		
			// check that control questions have been answered
			
			ipt = document.getElementsByName("hbpControl");
			if (!ipt[0].checked && !ipt[1].checked) {
				document.getElementById("hbpControlErr").innerHTML = "Please indicate if you take measures to control your blood pressure.";
				document.location.hash = "hbpControlQ";
				return false;
			}
			
			else {
				document.getElementById("hbpControlErr").innerHTML = "";
			}
			
			ipt = document.getElementsByName("hbpNotControl");
			if (!ipt[0].checked && !ipt[1].checked) {
				document.getElementById("hbpNotControlErr").innerHTML = "Please indicate if you don't take measures to control your blood pressure.";
				document.location.hash = "hbpNotControlQ";
				return false;
			}
			
			else {
				document.getElementById("hbpNotControlErr").innerHTML = "";
			}
		
		}
	
	}
	
	
	// check remaining radios
	
	for (var i = 5; i < radioArray.length; i++) {
		if (!validateItem(i)) {
			return false;
		}
	}
	
	return true;

}


function validateItem(i) {

	var errID = radioArray[i] == "measure" ? "weight" : radioArray[i];
	
	ipt = document.getElementsByName(radioArray[i]);
	
	if (!ipt[0].checked && !ipt[1].checked) {
	
		if (ipt[2] == null || !ipt[2].checked) {
			document.getElementById(errID + "Err").innerHTML = errMessage[radioArray[i]];
			document.location.hash = errID+"Q";
			return false;
		}
		
		else {
			document.getElementById(errID+"Err").innerHTML = "";
		}
		
	}
	
	else {
 			document.getElementById(errID+"Err").innerHTML = "";
	}
	
	return true;

}

