
var dtCh= "/";
var minYear=1890;
var maxYear=2012;
var months=Number;
var weeksIndex=Number;
var monthsIndex=Number;
var countryzone;
var insLimit=Number;
window.onload = addInit;

function valChange()
{
	if(insLimit.value!="nothing" && document.formQuoteRequestAdd.WorldZones.value!="nothing" && document.formQuoteRequestAdd.addDepartureDate.value!="mm/dd/yyyy" && document.formQuoteRequestAdd.addReturnDate.value!="mm/dd/yyyy")
	{
		document.formQuoteRequestAdd.GetAQuoteBtn.value="Update Quote";
	}
}

function CountryListing()
{
	YYY = document.getElementById("WorldZones");
	countryzone = YYY.options[YYY.selectedIndex];
	var countryTextValue = document.getElementById('WorldZones')[document.getElementById('WorldZones').selectedIndex].innerHTML;
	document.formQuoteRequestAdd.DestinationTextValue.value=countryTextValue;
}

function LimitListing()
{
	XXX = document.getElementById("InsuranceLimit");
	insLimit = XXX.options[XXX.selectedIndex].value;
}

function calcDays()
{
    var daysArray = new Array(1, 7, 14, 30, 37, 44, 51, 60, 67, 74, 81, 90, 97, 104, 111, 120, 127, 134, 141, 150, 157, 164, 171, 180, 187, 194, 201, 210, 217, 224, 231, 240, 247, 254, 261, 270, 277, 284, 291, 300, 307, 314, 321, 330, 337, 344, 351, 365, 1000);
   
	var date1 = document.formQuoteRequestAdd.addDepartureDate.value;
	var date2 = document.formQuoteRequestAdd.addReturnDate.value;
	date1 = date1.split("/");
	date2 = date2.split("/");
	var sDate = new Date(date1[0]+"/"+date1[1]+"/"+date1[2]);
	var eDate = new Date(date2[0]+"/"+date2[1]+"/"+date2[2]);
    var tDate = new Date();
    var daysApart = Math.abs(Math.round((sDate-eDate)/86400000)) + 1;
    var daysToDepart = Math.abs(Math.round((sDate-tDate)/86400000));

	if( sDate > eDate )
	{
		document.formQuoteRequestAdd.warningVal.value="Departure date must be prior than Return!";
		document.formQuoteRequestAdd.total.value="";
		hideDiv.style.display = "none";
	}

	if( ( tDate.getDate() == sDate.getDate() ) && 
                            ( tDate.getMonth() == sDate.getMonth() ) &&
                                ( tDate.getFullYear() == sDate.getFullYear() ) )
	{
		document.formQuoteRequestAdd.warningVal.value="Can't be purchased the day of departure!";
		document.formQuoteRequestAdd.total.value="";
		hideDiv.style.display = "none";
	}

    if( ( tDate.getDate() > sDate.getDate() ) && 
                            ( tDate.getMonth() >= sDate.getMonth() ) &&
                                ( tDate.getFullYear() >= sDate.getFullYear() ) )
	{
		document.formQuoteRequestAdd.warningVal.value="Departure date must be later than today!";
		document.formQuoteRequestAdd.total.value="";
		hideDiv.style.display = "none";
	}
    
    if( daysToDepart > 395 )
	{
		document.formQuoteRequestAdd.warningVal.value="Days to departure must be under 395!";
		document.formQuoteRequestAdd.total.value="";
		hideDiv.style.display = "none";
	}

	if( daysApart > 365 )
	{
		document.formQuoteRequestAdd.warningVal.value="Trip time can not be longer than 365 days!";
		document.formQuoteRequestAdd.total.value="";
		hideDiv.style.display = "none";
	}

	if(daysApart<=365)
	{
        if( daysApart < 30 )
        {
            months = 1;
        }
        else if( daysApart > 360 )
        {
            months = 12;
        }
        else
        {
            months = Math.ceil(daysApart/30);
        }
        
        monthsIndex = months - 1;

        for (i=0;i<=daysArray.length;i++)
        {
            if ( ( daysApart > daysArray[i] ) &&
                                            ( daysApart <= daysArray[i + 1] ) )
            {
                weeksIndex = i + 1;
            }
        }
        document.formQuoteRequestAdd.warningVal.value="";
    }
}

function calculateTotal(inputItem)
{
	with (inputItem.form)
	{
		if (inputItem.type == "radio")
		{
			calculatedTotal.value = eval(calculatedTotal.value) - eval(previouslySelectedRadioButton.value);
			previouslySelectedRadioButton.value = eval(inputItem.value);
			calculatedTotal.value = eval(calculatedTotal.value) + eval(inputItem.value);
		}
		else
		{
			if (inputItem.checked == false)
			{	
				calculatedTotal.value = eval(calculatedTotal.value) - eval(inputItem.value);
			}
			else
			{	
				calculatedTotal.value = eval(calculatedTotal.value) + eval(inputItem.value);
			}
		}

		if (calculatedTotal.value < 0)
		{
			InitForm();
		}
	return( formatCurrency(calculatedTotal.value) );
	}
}

function formatCurrency(num)
{
	num = num.toString().replace(/\$|\,/g,'');

		if(isNaN(num))
		num = "0";
		sign = (num == (num = Math.abs(num)));
		num = Math.floor(num*100+0.50000000001);
		cents = num%100;
		num = Math.floor(num/100).toString();

		if(cents<10)
		cents = "0" + cents;

		for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+','+
		num.substring(num.length-(4*i+3));

	return (((sign)?'':'-') + '$' + num + '.' + cents);
}

function InitForm()
{
	document.formQuoteRequestAdd.total.value='$0';
	document.formQuoteRequestAdd.calculatedTotal.value=0;
	document.formQuoteRequestAdd.previouslySelectedRadioButton.value=0;

	for (i=0; i < document.formQuoteRequestAdd.elements.length; i++)
	{
		if (document.formQuoteRequestAdd.elements[i].type == 'checkbox' | document.formQuoteRequestAdd.elements[i].type == 'radio')
		{
			document.formQuoteRequestAdd.elements[i].checked = false;
		}
	}
}

function addInit()
{
    init();

	document.formQuoteRequestAdd.UpdateAQuoteBtn.style.visibility="hidden";
	document.formQuoteRequestAdd.limit.value="nothing";
	document.formQuoteRequestAdd.WorldZones.value="nothing";
	document.formQuoteRequestAdd.addDepartureDate.value="";
	document.formQuoteRequestAdd.addReturnDate.value="";
	document.formQuoteRequestAdd.WarCov.checked=false;
	document.formQuoteRequestAdd.MedCov.checked=false;
	document.formQuoteRequestAdd.SpoCov.checked=false;
	document.formQuoteRequestAdd.warzone3.value="";
	document.formQuoteRequestAdd.warningVal.value="";
	document.getElementById("checkForJavascript").style.display = 'none';
	document.getElementById("QuoteForm").style.display = 'block';
	document.formQuoteRequestAdd.addDepartureDate.value="mm/dd/yyyy";
	document.formQuoteRequestAdd.addReturnDate.value="mm/dd/yyyy";
	document.formQuoteRequestAdd.SpoCov.disabled=true;
}

function calcPrice()
{
	if(insLimit.value!="nothing" && document.formQuoteRequestAdd.WorldZones.value!="nothing" && document.formQuoteRequestAdd.addDepartureDate.value!="mm/dd/yyyy" && document.formQuoteRequestAdd.addReturnDate.value!="mm/dd/yyyy")
	{
		document.formQuoteRequestAdd.UpdateAQuoteBtn.style.visibility="hidden";
		var hideDiv = document.getElementById('extra');

		if(hideDiv.style.display == "none")
		{
			hideDiv.style.display = "block";
		}

		if( countryzone.value == 1 )
		{
			var zone1Array =    [
                                [ 10 ],
             	  			  	[ 21 ],
                                [ 35 ],
             	  		      	[ 70 ]
                                ];

			quoteResultZone1 = zone1Array[insLimit][0] * months;
            document.formQuoteRequestAdd.WarCov.disabled=false;
			document.formQuoteRequestAdd.warzone3.value="";
			document.formQuoteRequestAdd.total.value=formatCurrency(quoteResultZone1);
			document.formQuoteRequestAdd.calculatedTotal.value=quoteResultZone1;
		}

		if(countryzone.value==2)
		{
			var zone2Array =    [
                                [ 10 ],
             	  			  	[ 21 ],
                                [ 35 ],
             	  		      	[ 70 ]
                                ];

            quoteResultZone2 = zone2Array[insLimit][0] * months;
			document.formQuoteRequestAdd.WarCov.disabled=false;
			document.formQuoteRequestAdd.warzone3.style.color="blue";
			document.formQuoteRequestAdd.warzone3.value="Recommended for your destination!";
			document.formQuoteRequestAdd.total.value=formatCurrency(quoteResultZone2);
			document.formQuoteRequestAdd.calculatedTotal.value=quoteResultZone2;
		}

		if(countryzone.value==3)
		{
			var zone3Array =    [
             	  			  	[150, 150, 150, 150, 185, 220, 255, 300, 335, 370, 405, 450, 485, 520, 555, 600, 635, 670, 705, 750, 785, 820, 855, 900, 935, 970, 1005, 1050, 1085, 1120, 1155, 1200, 1235, 1270, 1305, 1350, 1385, 1420, 1455, 1500, 1535, 1570, 1605, 1650, 1685, 1720, 1755, 1825],
                                [450, 450, 450, 450, 555, 660, 765, 900, 1005, 1110, 1215, 1350, 1455, 1560, 1665, 1800, 1905, 2010, 2115, 2250, 2355, 2460, 2565, 2700, 2805, 2910, 3015, 3150, 3255, 3360, 3465, 3600, 3705, 3810, 3915, 4050, 4155, 4260, 4365, 4500, 4605, 4710, 4815, 4950, 5055, 5160, 5265, 5475],
                                [750, 750, 750, 750,  925, 1100, 1275, 1500, 1675, 1850, 2025, 2250, 2425, 2600, 2775, 3000, 3175, 3350, 3525, 3750, 3925, 4100, 4275, 4500, 4675, 4850, 5025, 5250, 5425, 5600, 5775, 6000, 6175, 6350, 6525, 6750, 6925, 7100, 7275, 7500, 7675, 7850, 8025, 8250, 8425, 8600, 8775, 9125],
                                [1500, 1500, 1500, 1500, 1850, 2200, 2550, 3000, 3350, 3700, 4050, 4500, 4850, 5200, 5550, 6000, 6350, 6700, 7050, 7500, 7850, 8200, 8550, 9000, 9350, 9700, 10050, 10500, 10850, 11200, 11550, 12000, 12350, 12700, 13050, 13500, 13850, 14200, 14550, 15000, 15350, 15700, 16050, 16500, 16850, 17200, 17550, 18250]
                                ];

			quoteResultZone = zone3Array[insLimit][weeksIndex];
		    document.formQuoteRequestAdd.WarCov.readonly=true;
			document.formQuoteRequestAdd.WarCov.checked=true;
			document.formQuoteRequestAdd.warzone3.style.color="red";
			document.formQuoteRequestAdd.warzone3.value="Required for your destination!";
			document.formQuoteRequestAdd.total.value=formatCurrency(quoteResultZone);
			document.formQuoteRequestAdd.calculatedTotal.value=quoteResultZone;
		}

		if(countryzone.value==0 )
		{
			document.formQuoteRequestAdd.warningVal.value="No Plans Available for destination Cuba!";
		}
	}

	else if(document.formQuoteRequestAdd.InsuranceLimit.value=="nothing")
    {
        document.formQuoteRequestAdd.warningVal.value="Insurance limit is required!";
	}
	else if(document.formQuoteRequestAdd.WorldZones.value=="nothing")
    {
        document.formQuoteRequestAdd.warningVal.value="Destination is required!";
	}
	else if(document.formQuoteRequestAdd.addDepartureDate.value=="mm/dd/yyyy" )
    {
        document.formQuoteRequestAdd.warningVal.value="Valid Departure date required!";
	}
	else if(document.formQuoteRequestAdd.addReturnDate.value=="mm/dd/yyyy")
    {
        document.formQuoteRequestAdd.warningVal.value="Valid Return date required!";
	}
}

function calculateWarZone()
{
	if (document.formQuoteRequestAdd.WarCov.checked == true)
	{
		if(countryzone.value==1)
		{
			var zone11Array =   [
                                [19.50, 39.00, 58.50, 78.00, 97.50, 117.00, 136.50, 156.00, 175.50, 195.00, 214.50, 237.25 ],
                                [45.00, 90.00, 135.00, 180.00, 225.00, 270.00, 315.00, 360.00, 405.00, 450.00, 495.00, 547.50 ],
                                [75.00, 150.00, 225.00, 300.00, 375.00, 450.00, 525.00, 600.00, 675.00, 750.00, 825.00, 912.50 ],
                                [150.00, 300.00, 450.00, 600.00, 750.00, 900.00, 1050.00, 1200.00, 1350.00, 1500.00, 1650.00, 1825.00 ]
                                ];

			quoteResultZone11 = zone11Array[insLimit][monthsIndex];
			document.formQuoteRequestAdd.WarCov.disabled=false;
			document.formQuoteRequestAdd.WarCov.checked=true;
			document.formQuoteRequestAdd.warzone3.value="";
			document.formQuoteRequestAdd.warzone3.style.color="green";
			document.formQuoteRequestAdd.warzone3.value="Optional for your destination!";
			document.formQuoteRequestAdd.total.value = formatCurrency(eval(document.formQuoteRequestAdd.calculatedTotal.value) - eval(quoteResultZone1) + eval(quoteResultZone11));
			document.formQuoteRequestAdd.calculatedTotal.value = eval(document.formQuoteRequestAdd.calculatedTotal.value) - eval(quoteResultZone1) + eval(quoteResultZone11);
		}

		if(countryzone.value==2)
		{
			var zone22Array =   [
                                [60, 60, 60, 60, 74, 88, 102, 120, 134, 148, 162, 180, 194, 208, 222, 240, 254, 268, 282, 300, 314, 328, 342, 360, 374, 388, 402, 420, 434, 448, 462, 480, 494, 508, 522, 540, 554, 568, 582, 600, 614, 628, 642, 660, 674, 688, 702, 730],
                                [180, 180, 180, 180, 222, 264, 306, 360, 402, 444, 486, 540, 582, 624, 666, 720, 762, 804, 846, 900, 942, 984, 1026, 1080, 1122, 1164, 1206, 1260, 1302, 1344, 1386, 1440, 1482, 1524, 1566, 1620, 1662, 1704, 1746, 1800, 1842, 1884, 1926, 1980, 2022, 2064, 2106, 2190],
                                [300, 300, 300, 300, 370, 440, 510, 600, 670, 740, 810, 900, 970, 1040, 1110, 1200, 1270, 1340, 1410, 1500, 1570, 1640, 1710, 1800, 1870, 1940, 2010, 2100, 2170, 2240, 2310, 2400, 2470, 2540, 2610, 2700, 2770, 2840, 2910, 3000, 3070, 3140, 3210, 3300, 3370, 3440, 3510, 3650],
                                [600, 600, 600, 600, 740, 880, 1020, 1200, 1340, 1480, 1620, 1800, 1940, 2080, 2220, 2400, 2540, 2680, 2820, 3000, 3140, 3280, 3420, 3600, 3740, 3880, 4020, 4200, 4340, 4480, 4620, 4800, 4940, 5080, 5220, 5400, 5540, 5680, 5820, 6000, 6140, 6280, 6420, 6600, 6740, 6880, 7020, 7300]
                                ];

			quoteResultZone22 = zone22Array[insLimit][weeksIndex];
			document.formQuoteRequestAdd.WarCov.disabled=false;
			document.formQuoteRequestAdd.WarCov.checked=true;
			document.formQuoteRequestAdd.warzone3.style.color="blue";
			document.formQuoteRequestAdd.warzone3.style.color="blue";
			document.formQuoteRequestAdd.warzone3.value="Recommended for your destination!";
			document.formQuoteRequestAdd.total.value = formatCurrency(eval(document.formQuoteRequestAdd.calculatedTotal.value) - eval(quoteResultZone2) + eval(quoteResultZone22));
			document.formQuoteRequestAdd.calculatedTotal.value = eval(document.formQuoteRequestAdd.calculatedTotal.value) - eval(quoteResultZone2) + eval(quoteResultZone22);
		}
	}
}

function calculateMedical()
{
	if(document.formQuoteRequestAdd.MedCov.checked==true)
	{
	document.formQuoteRequestAdd.SpoCov.disabled=false;

		if(document.formQuoteRequestAdd.WarCov.checked==false)
		{
		var medicalArray1 = new Array(17, 34, 51, 68, 85, 102, 119, 136, 153, 170, 187, 204)
		medicalCov = medicalArray1[monthsIndex];
		}

		if(document.formQuoteRequestAdd.WarCov.checked==true)
		{
		var medicalArray2 = new Array(22, 44, 66, 88, 110, 132, 154, 176, 198, 220, 242, 264)
		medicalCov = medicalArray2[monthsIndex];
		}

	document.formQuoteRequestAdd.total.value = formatCurrency(eval(document.formQuoteRequestAdd.calculatedTotal.value) + eval(medicalCov));
	document.formQuoteRequestAdd.calculatedTotal.value = eval(document.formQuoteRequestAdd.calculatedTotal.value) + eval(medicalCov);
	}
}

function SportCondition()
{
	if(document.formQuoteRequestAdd.MedCov.checked==true)
	{
		document.formQuoteRequestAdd.SpoCov.disabled=false;
	}
	else
	{
		document.formQuoteRequestAdd.SpoCov.disabled=true;
		document.formQuoteRequestAdd.SpoCov.checked=false;
	}
}

function calculateTotalSport()
{
	if(document.formQuoteRequestAdd.SpoCov.checked == true)
	{
		sportOpt = 0.25*eval(document.formQuoteRequestAdd.calculatedTotal.value);
		document.formQuoteRequestAdd.total.value = formatCurrency(eval(document.formQuoteRequestAdd.calculatedTotal.value) + eval(sportOpt));
		document.formQuoteRequestAdd.calculatedTotal.value = eval(document.formQuoteRequestAdd.calculatedTotal.value) + eval(sportOpt);
	}
}

function SendForm()
{
	if(formDiv.style.display == "none")
	{
		formDiv.style.display = "block";
		document.formQuoteRequestAdd.SendQuoteBtn.style.visibility="hidden";
	}
}

function validate_required(field,alerttxt)
{
	with (field)
	{
		if (value==null||value=="")
  		{
			document.formQuoteRequestAdd.warningSendForm.value=alerttxt;
			return false;
		}
		else
		{
			return true
		}
	}
}
function checkEmail(eml) {
			if (eml.value == 0) {
				document.formQuoteRequestAdd.warningSendForm.value="Email Address is required!";
				eml.focus();
				return false;
			} else {
				var re=/^[\w\.\_\+-]*@[\w\_\+-]+(\.[\w\_\+-]+)*\.[\w\+-]+$/;
				if (eml.value.search(re)==-1) {
					document.formQuoteRequestAdd.warningSendForm.value="Valid Email Address is required!";
					eml.focus();
					return false;
				}
				return true;
			}
		}

function validate_dateob(field,alerttxt)
{
	with (field)
	{
		var dob=document.formQuoteRequestAdd.DateOfBirth
			if (isDate(dob.value)==false)
			{
				dob.focus()
				{
					document.formQuoteRequestAdd.warningSendForm.value=alerttxt;
					return false;
				}
			return false
			}
		return true
	}
}

function validate_form(thisform)
{
	with (thisform)
	{
		if (validate_required(FirstName,"First Name is required!")==false)
		{
			FirstName.focus();
			return false;
		}

		if (validate_required(LastName,"Last Name is required!")==false)
		{
			LastName.focus();
			return false;
		}

		if (validate_required(DateOfBirth,"Date Of Birth is required!")==false)
		{
			DateOfBirth.focus();
			return false;
		}

		if (validate_required(Address,"Address is required!")==false)
		{
			Address.focus();
			return false;
		}

		if (validate_required(City,"City is required!")==false)
		{
			City.focus();
			return false;
		}

		if (validate_required(ZIP,"ZIP or Postal code is required!")==false)
		{
			ZIP.focus();
			return false;
		}

		if (validate_required(Residence,"State/Province Residence is required!")==false)
		{
			Residence.focus();
			return false;
		}

		if (validate_required(Country,"Country is required!")==false)
		{
			Country.focus();
			return false;
		}

		if (validate_required(Phone,"Valid Phone Number is required!")==false)
		{
			Phone.focus();
			return false;
		}

		var mf = document.formQuoteRequestAdd;

		if (!checkEmail(mf.Email))
		{
			return false;
		}

		if (validate_required(Beneficiary,"Beneficiary name(s) is required!")==false)
		{
			Beneficiary.focus();
			return false;
		}

        if (validate_dateob(DateOfBirth,"Valid Date required in mm/dd/yyyy format!")==false)
		{
			DateOfBirth.focus();
			return false;
		}
	}
}

function ValidateDates()
{
	var dt=document.formQuoteRequestAdd.addDepartureDate
	var rt=document.formQuoteRequestAdd.addReturnDate

	if(document.formQuoteRequestAdd.InsuranceLimit.value=="nothing")
    {
        document.formQuoteRequestAdd.warningVal.value="Insurance limit is required!";
        document.formQuoteRequestAdd.InsuranceLimit.focus();
        return false
	}

	if(document.formQuoteRequestAdd.WorldZones.value=="nothing" )
    {
        document.formQuoteRequestAdd.warningVal.value="Destination is required!";
        document.formQuoteRequestAdd.WorldZones.focus()
        return false
	}

	if (isDate(dt.value)==false)
    {
    	dt.focus()
		return false
	}

	if (isDate(rt.value)==false)
    {
		rt.focus()
		return false
	}

    return true
}

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    for (i = 0; i < s.length; i++){
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year)
{
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function DaysArray(n)
{
	for (var i = 1; i <= n; i++)
    {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   }
   return this
}

function isDate(dtStr)
{
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear

    if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)

    if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	
    for (var i = 1; i <= 3; i++)
    {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}

	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)

	if (pos1==-1 || pos2==-1)
    {
		document.formQuoteRequestAdd.warningVal.value="Date format should be:mm/dd/yyyy";
		return false
	}

	if (strMonth.length<1 || month<1 || month>12)
    {
		document.formQuoteRequestAdd.warningVal.value="Please enter a valid month";
		return false
	}

	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month])
    {
		document.formQuoteRequestAdd.warningVal.value="Please enter a valid day";
		return false
	}

	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear)
    {
		document.formQuoteRequestAdd.warningVal.value="Please enter a valid 4 digit year";
		return false
	}

	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false)
    {
		return false
	}

    return true
}

