var errorMessage;
var validated;

function validate() {
	setAllFields();
	
	if (document.Appointment.LastName.value=="")
		setErrorField("text", "LastName", "Patient's Last Name is required");
	if (document.Appointment.FirstName.value=="")
		setErrorField("text", "FirstName", "Patient's First Name is required");
	if (document.Appointment.DOB.value=="")
		setErrorField("text", "DOB", "Patient's Date of Birth is required");
	if (!isValidPhone("HomePhone", true))
		setErrorField("phone", "HomePhone", "Patient's Home Phone is not a valid phone number");
	if (isNaN(document.Appointment.HeightFeet.value))
		setErrorField("text", "HeightFeet", "Height-Feet is not a number");
	if (isNaN(document.Appointment.HeightInches.value))
		setErrorField("text", "HeightInches", "Height-Inches is not a number");
	if (isNaN(document.Appointment.Weight.value))
		setErrorField("text", "Weight", "Weight is not a number");
	if (document.Appointment.ReferringPhysician.value=="")
		setErrorField("text", "ReferringPhysician", "Referring Physician is required");
	if (!isValidPhone("PhysicianPhone", true))
		setErrorField("phone", "PhysicianPhone", "Physician's Phone is not a valid phone number");
	if (document.Appointment.Region1.selectedIndex<=0)
		setErrorField("select", "Region1", "Service 1 Region is required");
	if (document.Appointment.Modality1.selectedIndex<=0)
		setErrorField("select", "Modality1", "Service 1 Modality is required");
	if (document.Appointment.Carrier.selectedIndex<=0)
		setErrorField("select", "Carrier", "Carrier is required");
	if (document.Appointment.Carrier.value=="0" && document.Appointment.CarrierName.value=="")
		setErrorField("select", "CarrierName", "Carrier Name is required");
	if (document.Appointment.ClaimNumber.value=="")
		setErrorField("select", "ClaimNumber", "Claim Number is required");
	if (!isRadioSelected(document.Appointment.ClaimType))
		setErrorField("radio", "ClaimType", "Claim Type is required");
	if (document.Appointment.CaseManagerName.value=="")
		setErrorField("text", "CaseManagerName", "Case Manager Name is required");
	if (!isValidPhone("CaseManagerPhone", true))
		setErrorField("phone", "CaseManagerPhone", "Case Manager Phone is not a valid phone number");
	if (document.Appointment.Email.value=="")
		setErrorField("text", "Email", "Your Email Address is required");
	if (!isValidEmail("Email"))
		setErrorField("text", "Email", "Your Email Address is invalid");
		
	if (!validated) {
		writeErrorMessage(errorMessage);
		scroll(0,0);
	}
		
	return validated;
}

function writeErrorMessage(err) {
	err = err.substring(0, err.length-1);
	var arr = err.split("|");
	var obj = document.getElementById("error");
	obj.innerHTML = "The page cannot be submitted because of the following errors:<ul>";
	
	for (var i=0; i<arr.length; i++)
		obj.innerHTML += "<li>" + arr[i] + ".</li>";
		
	obj.innerHTML += "</ul>";
}

function setAllFields() {
	errorMessage = "";
	validated = true;
	
	for (var i=0; i<document.Appointment.elements.length; i++) {
		if (document.Appointment.elements[i].className=="errorfield")
			document.Appointment.elements[i].className = "requiredfield";
	}
}

function setErrorField(type, field, msg) {
	if (type=="text" || type=="select") {
		var obj = document.getElementById(field);
		obj.className = "errorfield";
	}
	else if (type=="phone") {
		var obj1 = document.getElementById(field + "1");
		var obj2 = document.getElementById(field + "2");
		var obj3 = document.getElementById(field + "3");
		
		obj1.className = "errorfield";
		obj2.className = "errorfield";
		obj3.className = "errorfield";
	}
	else if (type=="radio") {
		
	}
	
	errorMessage += msg + "|";
	validated = false;
}

function isValidPhone(field, required) {
	var obj1 = document.getElementById(field + "1");
	var obj2 = document.getElementById(field + "2");
	var obj3 = document.getElementById(field + "3");
	
	if (obj1.value.length<3 || isNaN(obj1.value))
		return false;
	if (obj2.value.length<3 || isNaN(obj2.value))
		return false;
	if (obj3.value.length<4 || isNaN(obj3.value))
		return false;
		
	return true;
}

function isValidEmail(field) {
	var obj = document.getElementById(field);
	var reg = /(\w*)[@](\w*)[.][com|net|edu|org]/;
	if (reg.test(obj.value))
		return true;
	else
		return false;
}

function isRadioSelected(obj) {
	for (var i=0; i<obj.length; i++) {
		if (obj[i].checked)
			return true;
	}
	return false;
}

function setCarrierNameRequired() {
	if (document.Appointment.Carrier.value=="0") {
		document.Appointment.CarrierName.style.visibility = "visible";
		document.Appointment.CarrierName.focus();
	}
	else {
		document.Appointment.CarrierName.value = "";
		document.Appointment.CarrierName.style.visibility = "hidden";
	}
}

function changeFocus(obj) {
	var thisIndex = 0;
	for (var i=0; i<document.Appointment.elements.length; i++) {
		if (document.Appointment.elements[i].name==obj.name) {
			thisIndex = i;
			break;
		}
	}
	thisIndex++;
	if (obj.value.length==obj.maxLength) {
		document.Appointment.elements[thisIndex].select();
		document.Appointment.elements[thisIndex].focus();
	}
}

