function ValidateFamilyGrid(covTypeId, includeAge, includeDob, includeHeightAndWeight, isMedicare, theForm)
{
	ClearPageElements();

	if(covTypeId == "EE")
	{
		AddSubscriberElement(includeAge, includeDob, includeHeightAndWeight, isMedicare);
	}
	if(covTypeId == "ES")
	{
		AddSubscriberElement(includeAge, includeDob, includeHeightAndWeight, isMedicare);
		AddSpouseElement(includeAge, includeDob, includeHeightAndWeight, isMedicare);
	}
	else if(covTypeId == "EF")
	{
		AddSubscriberElement(includeAge, includeDob, includeHeightAndWeight, isMedicare);
		AddSpouseElement(includeAge, includeDob, includeHeightAndWeight, isMedicare);
		AddChildElements(includeAge, includeDob, includeHeightAndWeight, 5, false);
	}
	else if(covTypeId == "C")
	{
		AddChildElements(includeAge, includeDob, includeHeightAndWeight, 5, true);
	}
	InitDomObjectsAndDependencies();
	return ValidateAge(includeAge, includeDob, covTypeId) && validateForm(theForm);
}

//ensures that an age is entered for a correct combination of people
function ValidateAge(ageIncluded, dobIncluded, covTypeId)
{
	var theForm = document.forms[0];
	var childFound = false;
	var spouseFound = false;
	var applicantFound = false;

	//ensure one age found
	//ensure ages match dob

	if(ageIncluded || dobIncluded)
	{
		for(var i = 0; i < theForm.elements.length; ++i)
		{
			if(theForm.elements[i].name.indexOf("Age") != -1)
			{
				if(theForm.elements[i].value != "")
				{

					if(theForm.elements[i].name == "sAge")
						applicantFound = true;
					if(theForm.elements[i].name == "spAge")
						spouseFound = true;

					for(var j = 1; j <= 5; ++j)
					{
						if(theForm.elements[i].name == "c" + j + "Age")
							childFound = true;
					}
				}
			}
		}

		for(var i = 0; i < theForm.elements.length; ++i)
		{
			if(theForm.elements[i].name.indexOf("DateOfBirth") != -1)
			{
				if(theForm.elements[i].value != "")
				{

					if(theForm.elements[i].name == "sDateOfBirth")
						applicantFound = true;
					if(theForm.elements[i].name == "spDateOfBirth")
						spouseFound = true;

					for(var j = 1; j <= 5; ++j)
					{
						if(theForm.elements[i].name == "c" + j + "DateOfBirth")
							childFound = true;
					}
				}
			}
		}
	}

	if(!applicantFound && covTypeId != "C")
	{
		if(ageIncluded)
		{
			if (dobIncluded) {
				alert("Please enter an age or date of birth for the primary applicant.");
			}
		} else {
			alert("Please enter date of birth for the primary applicant.");
		}
		return false;
	}

	if(covTypeId == "C" && !childFound)
	{
		if(ageIncluded)		
		{
			if (dobIncluded) {
				alert("Please enter an age or date of birth for Child #1.");
			}
		} else {
			alert("Please enter date of birth for  for Child #1.");
		}
		return false;
	}

	if(!applicantFound && spouseFound)
	{
		alert("You must enter an applicant before entering a spouse.");
		return false;
	}

/*
	if(ageIncluded || dobIncluded)
	{
		if(!CheckAgeDateOfBirthMatch("Applicant", document.forms[0].sAge, document.forms[0].sDateOfBirth)) return false;
		if(!CheckAgeDateOfBirthMatch("Spouse", document.forms[0].spAge, document.forms[0].spDateOfBirth)) return false;
		if(!CheckAgeDateOfBirthMatch("Child 1", document.forms[0].c1Age, document.forms[0].c1DateOfBirth)) return false;
		if(!CheckAgeDateOfBirthMatch("Child 2", document.forms[0].c2Age, document.forms[0].c2DateOfBirth)) return false;
		if(!CheckAgeDateOfBirthMatch("Child 3", document.forms[0].c3Age, document.forms[0].c3DateOfBirth)) return false;
		if(!CheckAgeDateOfBirthMatch("Child 4", document.forms[0].c4Age, document.forms[0].c4DateOfBirth)) return false;
		if(!CheckAgeDateOfBirthMatch("Child 5", document.forms[0].c5Age, document.forms[0].c5DateOfBirth)) return false;
	}
*/
	return true;
}
function SetAge(ageFieldName, dobFieldName, ageOrdobFieldName)
{


	var ageField = document.getElementById(ageFieldName);
	var dobField = document.getElementById(dobFieldName);
	var ageOrdobField = document.getElementById(ageOrdobFieldName);
	
	if (ageOrdobField.value.length==0) {
		dobField.value = "";
		ageField.value = "";
		return
	}
	var datePattern = getDatePattern(ageOrdobField.value);
	var ageOrdobFieldIsDate = (datePattern != 99);
	if (ageOrdobFieldIsDate) 
	{
		dobField.value = formatDate(ageOrdobField.value, ageOrdobField, datePattern);
		ageField.value = getAge(dobField.value, baseDateForValidationOfFuture);
		ageOrdobField.value = dobField.value;		
	} else {
		dobField.value = "";
		if(isNaN(ageOrdobField.value) || ageOrdobField.value.length > 3)
		{
			alert("Please enter an age or a date in one of following formats:\n\n 1) mm/dd/yyyy\n\n 2) mm-dd-yyyy\n\n 3) mm.dd.yyyy\n\n 4) yyyy-mm-dd\n\n 5) mmddyyyy\n\n 6) yyyymmdd");
			ageOrdobField.focus();
		} else {	
			if (parseInt(ageOrdobField.value) > 125) {
				alert("Please enter an age less than 125.");
				ageOrdobField.focus();
			}
			ageField.value = Math.abs(ageOrdobField.value);
			ageOrdobField.value = ageField.value;
		}

	}
}
function SetAgeOrDOB(ageFieldName, dobFieldName, ageOrdobFieldName, ageLabel)
{
	var ageField = document.getElementById(ageFieldName);
	var dobField = document.getElementById(dobFieldName);
	var ageOrdobField = document.getElementById(ageOrdobFieldName);
	ageField.value = "";
	dobField.value = ageLabel=="Date Of Birth" ? ageOrdobField.value : "";
	
	if (ageLabel != "Date Of Birth" && ageOrdobField.value.toLowerCase() == "mm/dd/yyyy") {
		ageOrdobField.value = "";
	}
	if (ageOrdobField.value == "") {
		return;
	}
	var datePattern = getDatePattern(ageOrdobField.value);
	var ageOrdobFieldIsDate = (datePattern != 99);
	
	if (!(ageOrdobFieldIsDate) && ageLabel=="Date Of Birth") {
		alert("Please enter a date in one of following formats:\n\n 1) mm/dd/yyyy\n\n 2) mm-dd-yyyy\n\n 3) mm.dd.yyyy\n\n 4) yyyy-mm-dd\n\n 5) mmddyyyy\n\n 6) yyyymmdd");
		ageOrdobField.focus();
		setTimeout(function(){ageOrdobField.focus()}, 10);//For FireFox
		return;
	}
	
	if (ageOrdobFieldIsDate) 
	{
		dobField.value = formatDate(ageOrdobField.value, ageOrdobField, datePattern);
		ageField.value = getAge(dobField.value, baseDateForValidationOfFuture);
		ageOrdobField.value = dobField.value;		
	} else {
		dobField.value = "";
		if(isNaN(ageOrdobField.value) || ageOrdobField.value.length > 3)
		{
			alert("Please enter an age or a date in one of following formats:\n\n 1) mm/dd/yyyy\n\n 2) mm-dd-yyyy\n\n 3) mm.dd.yyyy\n\n 4) yyyy-mm-dd\n\n 5) mmddyyyy\n\n 6) yyyymmdd");
			ageOrdobField.focus();
			setTimeout(function(){ageOrdobField.focus()}, 10);//For FireFox
		} else {				
			ageField.value = Math.abs(ageOrdobField.value);
			ageOrdobField.value = ageField.value;
		}
	}
}

function CheckAgeDateOfBirthMatch(label, ageField, dateOfBirthField)
{

	if(ageField && dateOfBirthField)
	{
		if(ageField.value != "" && dateOfBirthField.value != "")
		{
			var now = new Date();
			var currYear = now.getFullYear();
			var dob = new Date(dateOfBirthField.value);
			var birthYear = dob.getFullYear();
		
			if (birthYear > currYear) {
				alertError("Please enter a valid birth YEAR for " + label + ".");
				return false;
			}
			
			var calcAge = getAge(dateOfBirthField.value);			

			if( calcAge != ageField.value)
			{
				alert(label + "'s age will be recalculated based on date of birth.");
				ageField.focus();
				ageField.select();
				ageField.value = calcAge;
			}
		}
	}
	return true;
}

function ClearAgesAndDatesOfBirth(theForm)
{
	var currElement;
	var length = theForm.elements.length;
	var currName;
	for(var i = 0; i < length; ++i)
	{
		currElement = theForm.elements[i];
		currName = currElement.name;
		if(currName.indexOf("Age") != -1 || currName.indexOf("DateOfBirth") != -1)
		{
			currElement.value = "";
		}
	}
}

function GetCurrentCovTypeId(theForm)
{
	var covTypeId = getSelectedRadioValue(theForm.covTypeID);

	if(covTypeId == "")
	{
		covTypeId = theForm.covTypeID.value;
	}
	return covTypeId;
}

function SwitchCovTypeId(covTypeId, theForm, clearForm)
{
	if(!theForm)
	{
		theForm = document.forms[0];
	}

	covTypeId = covTypeId.toUpperCase();

	var currentCovTypeId = GetCurrentCovTypeId(theForm).toUpperCase();
	var applicantRow = document.getElementById("applicantRow");
	var spouseRow = document.getElementById("spouseRow");
	var child1Row = document.getElementById("child1Row");
	var child2Row = document.getElementById("child2Row");
	var child3Row = document.getElementById("child3Row");
	var child4Row = document.getElementById("child4Row");
	var child5Row = document.getElementById("child5Row");

	if(!(applicantRow && spouseRow && child1Row && child2Row && child3Row && child4Row && child5Row))
	{
		return;
	}

	if(clearForm)
	{
		ClearAgesAndDatesOfBirth(theForm);
	}

	if(covTypeId == "EE")
	{
		applicantRow.style.display = "";
		spouseRow.style.display = "none";
		child1Row.style.display = "none";
		child2Row.style.display = "none";
		child3Row.style.display = "none";
		child4Row.style.display = "none";
		child5Row.style.display = "none";
	}
	
	if(covTypeId == "EF")
	{
		applicantRow.style.display = "";
		spouseRow.style.display = "";
		child1Row.style.display = "";
		child2Row.style.display = "";
		child3Row.style.display = "";
		child4Row.style.display = "";
		child5Row.style.display = "";
	}
	else if(covTypeId == "ES")
	{
		applicantRow.style.display = "";
		spouseRow.style.display = "";
		child1Row.style.display = "none";
		child2Row.style.display = "none";
		child3Row.style.display = "none";
		child4Row.style.display = "none";
		child5Row.style.display = "none";
	}
	else if(covTypeId == "EC")
	{
		applicantRow.style.display = "";
		spouseRow.style.display = "none";
		child1Row.style.display = "";
		child2Row.style.display = "none";
		child3Row.style.display = "none";
		child4Row.style.display = "none";
		child5Row.style.display = "none";
	}
	else if(covTypeId == "ECH")
	{
		applicantRow.style.display = "";
		spouseRow.style.display = "none";
		child1Row.style.display = "";
		child2Row.style.display = "";
		child3Row.style.display = "";
		child4Row.style.display = "";
		child5Row.style.display = "";
	}
	else if(covTypeId == "C")
	{
		applicantRow.style.display = "none";
		spouseRow.style.display = "none";
		child1Row.style.display = "";
		child2Row.style.display = "";
		child3Row.style.display = "";
		child4Row.style.display = "";
		child5Row.style.display = "";
	}
}
function onFocusTextField(txtField)
{
	if (isNaN(txtField.value)) {
		txtField.value='';
	}
	txtField.style.color='black';
}
function onBlurTextField(txtField, fieldLabel, hiddenFieldName)
{
	var hiddenField = document.getElementById(hiddenFieldName);
	
	if (txtField.value=='') 
	{
		txtField.value=fieldLabel;
		txtField.style.color='silver';
		hiddenField.value = '';
	} else {
		hiddenField.value = txtField.value;
	}
}
function onLoadTextField()
{
	var persons = ['s', 'sp', 'c1', 'c2', 'c3', 'c4', 'c5'];
	var fields = ['HeightFeetDisplay', 'HeightInchesDisplay', 'WeightDisplay'];
	var field;
	for (var i=0; i<persons.length; i++) {
		for (var j=0; j<fields.length; j++) {
			if (!isNaN((field = document.getElementsByName(persons[i]+fields[j])[0] || {}).value))
				field.style.color = 'black';
		}
	}
}

if (window.attachEvent) {
	window.attachEvent("onload", onLoadTextField);
}
else if (window.addEventListener) {
	window.addEventListener("load", onLoadTextField, false);
}
else {
	window.onload = onLoadTextField;
}

