var allstates = new Array();
allstates[0] = "AK-9950099929-0-0-0";
allstates[1] = "AL-3500036999-0-0-0";
allstates[2] = "AR-7160072999-7550275505-0-0";
allstates[3] = "AZ-8500086599-0-0-0";
allstates[4] = "CA-9000096199-0-0-0";
allstates[5] = "CO-8000081699-0-0-0";
allstates[6] = "CT-0600006999-0-0-0";
allstates[7] = "DC-2000020099-2020020599-0-0";
allstates[8] = "DE-1970019999-0-0-0";
allstates[9] = "FL-3200033999-3410034999-0-0";
allstates[10] = "GA-3000031999-0-0-0";
allstates[11] = "HI-9670096798-9680096899-0-0";
allstates[12] = "IA-5000052999-0-0-0";
allstates[13] = "ID-8320083899-0-0-0";
allstates[14] = "IL-6000062999-0-0-0";
allstates[15] = "IN-4600047999-0-0-0";
allstates[16] = "KS-6600067999-0-0-0";
allstates[17] = "KY-4000042799-4527545275-0-0";
allstates[18] = "LA-7000071499-7174971749-0-0";
allstates[19] = "MA-0100002799-0-0-0";
allstates[20] = "MD-2033120331-2060021999-0-0";
allstates[21] = "ME-0380103801-0380403804-0390004999-0";
allstates[22] = "MI-4800049999-0-0-0";
allstates[23] = "MN-5500056799-0-0-0";
allstates[24] = "MO-6300065899-0-0-0";
allstates[25] = "MS-3860039799-0-0-0";
allstates[26] = "MT-5900059999-0-0-0";
allstates[27] = "NC-2700028999-0-0-0";
allstates[28] = "ND-5800058899-0-0-0";
allstates[29] = "NE-6800069399-0-0-0";
allstates[30] = "NH-0300003803-0380903899-0-0";
allstates[31] = "NJ-0700008999-0-0-0";
allstates[32] = "NM-8700088499-0-0-0";
allstates[33] = "NV-8900089899-0-0-0";
allstates[34] = "NY-0040000599-0639006390-0900014999-0";
allstates[35] = "OH-4300045999-0-0-0";
allstates[36] = "OK-7300073199-7340074999-0-0";
allstates[37] = "OR-9700097999-0-0-0";
allstates[38] = "PA-1500019699-0-0-0";
allstates[39] = "RI-0280002999-0637906379-0-0";
allstates[40] = "SC-2900029999-0-0-0";
allstates[41] = "SD-5700057799-0-0-0";
allstates[42] = "TN-3700038599-7239572395-0-0";
allstates[43] = "TX-7330073399-7394973949-7500079999-8850188599";
allstates[44] = "UT-8400084799-0-0-0";
allstates[45] = "VA-2010520199-2030120301-2037020370-2200024699";
allstates[46] = "VT-0500005999-0-0-0";
allstates[47] = "WA-9800099499-0-0-0";
allstates[48] = "WI-4993649936-5300054999-0-0";
allstates[49] = "WV-2470026899-0-0-0";
allstates[50] = "WY-8200083199-0-0-0";

// if you use a drop down list for state selection, ensuring valid data,
// isset is not needed.  (Warnings can not be turned off with: @foreach...)
function getStateForZip(zip5)
{
	var index, elem, elemArray;
	var retVal = "";

	for (index in allstates)
	{
		elem = allstates[index];
		elemArray = elem.split("-");
		if ((elemArray[1] !="0" && zip5 >= elemArray[1].substring(0, 5) && zip5 <= elemArray[1].substring(5)) || 
			(elemArray[2] !="0" && zip5 >= elemArray[2].substring(0, 5) && zip5 <= elemArray[2].substring(5)) ||
			(elemArray[3] !="0" && zip5 >= elemArray[3].substring(0, 5) && zip5 <= elemArray[3].substring(5)) ||
			(elemArray[4] !="0" && zip5 >= elemArray[4].substring(0, 5) && zip5 <= elemArray[4].substring(5)))
		{
			if (retVal=="")
				retVal =elemArray[0];
			else
				retVal = retVal+"-"+elemArray[0];
		}
					
	}
	return retVal;
}

function iniForm()
{

		 resetform();
		temp.setFullYear(stref.getFullYear(),stref.getMonth()+1,stref.getDate()-1);

		if (stref.getMonth()== 1)
		{
			var newtemp;
			if (daysInMon(stref.getFullYear(), 1) == 28)
				newtemp = addDays(2,temp);
			else
				newtemp = addDays(1,temp);                       
			 setDates(stref,newtemp,1);	
		}
		else
			 setDates(stref,temp,1);
		document.form1.NumberOfChildren.value = 0;
		hidetextbox();

		if (document.form1.paymentType.value !='2'  && document.form1.paymentType.value !='3')
		{
			if(document.form1.monthsOfCoverage.value !='' && document.form1.daysOfCoverage.value != '' && document.form1.ReturnDay.value =='' && document.form1.ReturnMonth.value == '' && document.form1.ReturnYear.value=='')
					
			setdropDowns(document.form1.monthsOfCoverage.value,document.form1.daysOfCoverage.value);
			if (document.form1.monthsOfCoverage.value!='' ) {document.form1.monthsOfCoverage.value = 1};
			if (document.form1.daysOfCoverage.value !='')  {document.form1.daysOfCoverage.value = 0};
			setperiods();
		}
		else
			questiondisplay4(document.form1.paymentType.value);
		
	
}

function resetform()
{

	document.form1.Age.value = "";
	document.form1.spouseAge.value=""
	document.form1.NumberOfChildren.value=0;
	document.form1.Deductible.selectedIndex = 3;
        document.form1.paymentType.selectedIndex = 0;
        document.form1.coinsurance.selectedIndex = 1;
document.form1.residence.selectedIndex = 0;

	//document.form1.reset();
	temp.setFullYear(stref.getFullYear(),stref.getMonth()+1,stref.getDate()-1);
	setDates(stref,temp,1);
	hidetextbox();

questiondisplay4(1);	

}


function showtextbox(n)
{
	hidetextbox();
	for(var i=0; i < n; i++)
	{
		document.getElementById("dtc"+i).innerHTML='<div style="font-size:7px; font-family:Arial, Helvetica, sans-serif; color:#000000" >Age Child '+(i+1)+'</div><input size="2" name="dependant'+i+'" id="dependant'+i+'" onKeyPress="return numbersonly(event);" maxlength="2">';
	}
	restorevalues(n)
}

function restorevalues(d)
{
	//for(var i=0; i<d; i++)
		//document.getElementById("dependant"+i).value = hidden[i+18]!=""?hidden[i+18]:"";
}

function hidetextbox()
{
	for(var i=0; i <= 5; i++)
		document.getElementById("dtc"+i).innerHTML='';
}



function setdropDowns(MM,DD)
{
	if(getDates()==true)
	{
		endd.setFullYear(start.getFullYear(),start.getMonth()+parseInt(MM,10),start.getDate()+parseInt(DD,10)-1);
		setDates(start,endd,0);	//	!! Surprised !! 0 for non-initialization
		setperiods();
	}
}


function setshortperiods()
{
	var pt,d,m,y;
	pt=parseInt(document.form1.paymentType.value, 10);
	//if (pt == 1 || pt ==4)
	if (pt == 1)
		setperiods();
	else
	{
		d=document.form1.DepartureDay[document.form1.DepartureDay.selectedIndex].value;
		m=document.form1.DepartureMonth[document.form1.DepartureMonth.selectedIndex].value-1;
		y=document.form1.DepartureYear[document.form1.DepartureYear.selectedIndex].value;
		validdate(d,m,y);
	}
	
}
function validate()
{	
	var flag,a,s,zf,pt;
	var d, m, y;
	a=document.form1.Age.value;
	s=document.form1.spouseAge.value;
	zf=document.form1.zipcode.value;
	pt=parseInt(document.form1.paymentType.value, 10);
                st= document.form1.residence.value;



	flag=true;
	
	if(document.form1.Age.value=='' || isNaN(document.form1.Age.value)|| document.form1.Age.value<1 || document.form1.Age.value>64)
	{
		alert("Applicant's Age is mandatory and it should be in numeric format in the range 1-64.");
		document.form1.Age.focus();
		return false;
	}

	if(s!='' && (isNaN(s) || s<18 || s>64) )
	{	
		alert('Spouse Age should be in numeric format in the range 18-64.');
		document.form1.spouseAge.focus();
		flag=false; 
		return false;
	}
	if(zf!=''&&(isNaN(zf)||zf<0||zf>99999))
	{	
		alert('Please enter a valid Zip Code');
		document.form1.zipcode.focus();
		flag=false; 
		return false;
	}
	if (!validDepChildrenAge()) return false;

	if (pt == 1 )
	{	
		if(getDates()==false || start < stref )
		{
			flag=false; 
			alert('Start Date should be valid and more than tommorrow\'s date.'); 
			document.form1.DepartureDay.focus(); 
			return;
		}

		if(getDates()==false|| endd < start )
		{
			flag=false; 
			alert('End Date should be valid and more than Start Date as well as tommorrow\'s date.'); 
			document.form1.ReturnDay.focus();
			return;
		}
		if(document.form1.monthsOfCoverage.value=='' || document.form1.monthsOfCoverage.value>12 || document.form1.monthsOfCoverage.value==12 && document.form1.daysOfCoverage.value>0 || document.form1.monthsOfCoverage.value==11 && document.form1.daysOfCoverage.value>30)
		{
			alert('Coverage period cannot be more than one year(12 months).'); 
			document.form1.ReturnDay.focus(); 
			return;
		}

		if (document.form1.DepartureMonth.value == 2 && document.form1.monthsOfCoverage.value==1 && document.form1.daysOfCoverage.value == 0 )
		{
			alert('Minimum coverage period for all policies except UnitedHealthOne is 30 days.\nUnitedHealthOne policies can bought for 1 month in February (less than 30 days).\nPlease call - 877.593.5403 or Select the coverage period to be greater than 30 days'); 
			document.form1.ReturnDay.focus(); 
			return;
		}
		else if (document.form1.monthsOfCoverage.value==0  && document.form1.daysOfCoverage.value<30)
		{
			alert('Coverage period cannot be less than 30 days.'); 
			document.form1.ReturnDay.focus(); 
			return;
		}
	}
	else
	{
		d=document.form1.DepartureDay[document.form1.DepartureDay.selectedIndex].value;
		m=document.form1.DepartureMonth[document.form1.DepartureMonth.selectedIndex].value-1;
		y=document.form1.DepartureYear[document.form1.DepartureYear.selectedIndex].value;
		if(validdate(d,m,y)==false)
		{
			flag = false;
			return;
		}
	}

/*
	if(document.form1.paymentType.value==4 && document.form1.monthsOfCoverage.value <6)
	{
		alert('If coverage period is less than 6 months, please specify that you would pay your premium as "Single payment (No of days up to 180)"'); 
		document.form1.paymentType.focus(); 
		flag=false; 
		return false;
	}*/
	/*if(document.form1.paymentType.value==1 && (document.form1.monthsOfCoverage.value >6 || (document.form1.monthsOfCoverage.value ==6 && document.form1.daysOfCoverage.value >0)))
	{
		alert('If coverage period is greater than 6 months, please specify that you would pay your premium as "Single payment (No of days > 180 - Up to 12 Months)"'); 
		document.form1.paymentType.focus(); 
		flag=false; 
		return false;
	}*/
	// Not sure of the origin of these conditions
	/*if((document.form1.coinsurance.value==100 && document.form1.Deductible.value==5000) || (document.form1.paymentType.value==3 && document.form1.Deductible.value==250) || (document.form1.paymentType.value!=3 && document.form1.Deductible.value==5000))
	{
		alert('For the following combination of deductible, coinsurance and payment options \nno plans are available:\n\n(i)  $5000 deductible, 100% coinsurance\n(ii) $250 deductible for 12 month payment option\n(iii) $5000 deductible, single or 6 month payment option.'); document.form1.Deductible.focus(); 
		flag=false; 
		return false;
	}
	*/
	if(document.form1.residence.value=='')
	{
		alert('Please select a valid state.');
		document.form1.residence.focus(); 
		flag=false; 
		return false;
	}

	if(document.form1.zipcode && (document.form1.zipcode.value=='' || isNaN(document.form1.zipcode.value) || (document.form1.zipcode.value).length!=5) )
	{
		alert('Please enter five digit numeric zip code for the valid state.'); 
		document.form1.zipcode.focus(); 
		return false;
	}
	if (!validatestate()) 
	{
		alert('The zip code does not match the state entered. Please correct');
		document.form1.zipcode.focus();
		return false;
	}
	if(flag==true)	
	{
		document.form1.quote.disabled=true;
		document.form1.resetquote.disabled=true;
		document.form1.submit();
              }	
}
// This function is to disable the end date if monthly option is chosen
function questiondisplay4(s)
{
	var strRetDate, strMonsDays, dtStart;
	
	if(s=='2' || s=='3')
	{
		document.getElementById('frmEndDate').innerHTML = '';
		document.getElementById('frmReturnDate').innerHTML = '';
		document.getElementById('frmMonsDays').innerHTML = '';
	}
	else
	{
		document.getElementById('frmEndDate').innerHTML = 'End Date:&nbsp;&nbsp;';
		strRetDate = '<select onchange="setperiods();" size="1" name="ReturnMonth">';
		strRetDate += getMonthHTML();
		strRetDate += '</select>&nbsp;<select onchange="setperiods();" size="1" name="ReturnDay">';
		strRetDate += getDayHTML();
		strRetDate += '</select>&nbsp;<select onchange="setperiods();" size="1" name="ReturnYear">';
		strRetDate += getYearHTML();
		strRetDate += '                 </select>&nbsp;&nbsp; ';
		strMonsDays = '<input name="monthsOfCoverage" readonly="true" size="1" value="" maxlength="2">months ';
		strMonsDays += '<input name="daysOfCoverage" readonly="true" size="1" value="" maxlength="2"> days';
		document.getElementById('frmReturnDate').innerHTML =  strRetDate;
		document.getElementById('frmMonsDays').innerHTML = strMonsDays;
		setDates(stref,temp,1);		
		setperiods();
	}
}
function FixGender(g,w)
{
	if(w=='p')
	{document.form1.sgender.value=g=="F"?"M":"F";}
	if(w=='s')
	{document.form1.pgender.value=g=="F"?"M":"F";}
}
function validatestate()
{
	var state,zipcode, result, arrstate,x, found;
	state=document.form1.residence.value;
	zip = document.form1.zipcode.value;
	result=getStateForZip(zip);
	found = false;

	if (result !="")
	{
		arrstate=result.split("-");
		for (x in arrstate)
			if (arrstate[x].toLowerCase()== state.toLowerCase())
				found = true;
	}
	return found;
}
function setZip(v)
		{var found=false;
		var v3=v.substr(0,3);
			if(document.form1.ziprange){
				for(var i=0; i<document.form1.ziprange.length;i++)
					if(v3==document.form1.ziprange[i].value){document.form1.ziprange.value=v3;	found=true; break;}
				if(found==false)document.form1.ziprange.value="";}
		}
		var zipArray=["AL-350-351","AL-353-353","AR-716-729","AR-755-755","AZ-850-865","CA-900-928","CA-939-947","CA-956-958","CO-800-816","DC-200-200","DC-202-205","FL-320-344","FL-346-349","GA-300-319","GA-398-399","HI-967-968","IA-500-516","IA-520-528","IL-600-629","IN-460-479","KS-660-662","KS-664-679","KY-400-427","KY-452-452","LA-700-701","LA-703-708","LA-710-714","MD-206-219","MI-480-499","MO-630-641","MO-644-658","NC-270-289","ND-580-588","NE-680-681","NE-683-693","NM-870-884","NV-889-891","NV-893-898","OH-430-459","OK-730-731","OK-734-741","OK-743-749","OR-970-979","PA-150-196","SC-290-299","TN-370-385","TX-750-799","TX-885-885","UT-840-847","VA-201-201","VA-220-246","WI-530-549","WV-247-253","WV-255-268"];
function fillfivedigit(v)
		{var fivedigit=[["GA","03"],["IL","06"],["KS","02"],["OH","11"]];
		 var found=false;
		 if(v.length==2)document.form1.zipcode.value="0"+v+"01";
		 else
		 {for(var f=0;f<fivedigit.length;f++){if(fivedigit[f][0]==document.form1.residence[document.form1.residence.selectedIndex].value){document.form1.zipcode.value=v+fivedigit[f][1];found=true;}}
		 if(found==false)document.form1.zipcode.value=v+"01";
		 }
		}

