﻿String.prototype.trim = function() {
 // skip leading and trailing whitespace
 // and return everything in between
	var trimmedString = this;
	trimmedString = trimmedString.replace(/^\s+/,"");
	trimmedString = trimmedString.replace(/\s+$/,"");
	return trimmedString;
}

function validateEmail(email){
	var ptrn = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/; 
	return ptrn.test(email);
}

function checkStage0(thisForm) {
	if (thisForm.txtFName.value.trim() == "") {
		alert("Please fill in your First Name");
		thisForm.txtFName.focus();
		return false;
	}
	if (thisForm.txtLName.value.trim() == "") {
		alert("Please fill in your Last Name");
		thisForm.txtLName.focus();
		return false;
	}
	if (!validateEmail(thisForm.txtEmail.value)) {
		alert("The Email Address appears to be invalid");
		thisForm.txtEmail.focus();
		return false;
	}
	if (thisForm.txtTel.value.trim() == "") {
		alert("Please fill in your Telephone number\nincluding Country and Area code");
		thisForm.txtTel.focus();
		return false;
	}
	if (totalCost == 0) {
		alert("You need to tell us when you will be arriving\nand how many Cabana Suites you require.");
		return false;
	}
	if (eval(thisForm.drpGuestCount[thisForm.drpGuestCount.selectedIndex].value) / (eval(thisForm.drpCabanaTwins[thisForm.drpCabanaTwins.selectedIndex].value) + eval(thisForm.drpCabanaQueens[thisForm.drpCabanaQueens.selectedIndex].value) + eval(thisForm.drpCabanaFamily[thisForm.drpCabanaFamily.selectedIndex].value)) > 2) {
		alert("The Number of Guests is greater than the capacity\nof the number of Cabana Suites you have selected\n(2 Guests per Cabana)");
		return false;
	}
	if (thisForm.txtCCFirstName.value.trim() == "" && thisForm.txtCCLastName.value.trim() == "") {
		thisForm.txtCCFirstName.value		= thisForm.txtFName.value.trim();
		thisForm.txtCCLastName.value		= thisForm.txtLName.value.trim();
		thisForm.txtCCEmail.value			= thisForm.txtEmail.value.trim();
		thisForm.txtCCTelCountry.value	= thisForm.txtTelCountry.value.trim();
		thisForm.txtCCTelArea.value		= thisForm.txtTelArea.value.trim();
		thisForm.txtCCTel.value				= thisForm.txtTel.value.trim();
	}
	
	document.getElementById("displayFlightArrivalDate").innerHTML = basicDatePicker.getSelectedDateFormatted("obPopupCalendar");
	document.getElementById("displayFlightDepartDate").innerHTML = document.getElementById("departureDate").innerHTML;
	return true;
}

function checkStage1(thisForm) {
	if (thisForm.drpBookFlight[thisForm.drpBookFlight.selectedIndex].value=="True") {
		/*
		if (basicDatePicker.getSelectedDate("obPopupCalendar2") == null || ( eval(thisForm.drpDepartureHour[thisForm.drpDepartureHour.selectedIndex].value)==0 && eval(thisForm.drpDepartureMinute[thisForm.drpDepartureMinute.selectedIndex].value)==0 && eval(thisForm.drpArrivalHour[thisForm.drpArrivalHour.selectedIndex].value)==0 && eval(thisForm.drpArrivalMinute[thisForm.drpArrivalMinute.selectedIndex].value)==0 )) {
			alert("You have requested an inland flight reservation but have not specified your arrival time in Belize City.\n\nPlease select No if you do not wish to make an inland flight reservation at this time.");
			return false;
		}
		*/
	}
	return true;
}

function checkStage2(thisForm) {
	if (thisForm.drpCreditCard.selectedIndex == 0) {
		alert("Please choose a Credit Card.");
		setMenu(2);
		thisForm.drpCreditCard.focus();
		return false;
	}
	if (!checkCC(thisForm.txtCardNumber.value)) {
		alert("Please check that you have entered your Credit Card Number correctly.\n\nThe number you have entered does not appear to be valid.");
		setMenu(2);
		thisForm.txtCardNumber.focus();
		return false;
	}
	if (thisForm.drpCCMonth.selectedIndex == 0 || thisForm.drpCCYear.selectedIndex == 0 ) {
		alert("Please provide an expiry date.");
		setMenu(2);
		thisForm.drpCCMonth.focus();
		return false;
	}
	if (thisForm.drpCreditCard[thisForm.drpCreditCard.selectedIndex].value == "2" && thisForm.txtSecurityCode.value == "") {
		alert("Please provide the Security Code for your Discover credit card.\n\n(The security code is the final 3-digit number\nfound near the signature area\non the back of the credit card)");
		setMenu(2);
		thisForm.txtSecurityCode.focus();
		return false;
	}
	if (thisForm.txtCCFirstName.value.trim() == "") {
		alert("Please provide a First Name for the credit card holder.");
		setMenu(2);
		thisForm.txtCCFirstName.focus();
		return false;
	}
	if (thisForm.txtCCLastName.value.trim() == "") {
		alert("Please provide a Family Name for the credit card holder.");
		setMenu(2);
		thisForm.txtCCLastName.focus();
		return false;
	}
	/*
	if (thisForm.txtCCAddress.value.trim() == "") {
		alert("Please provide an Address for the credit card.");
		setMenu(2);
		thisForm.txtCCAddress.focus();
		return false;
	}
	*/
	if (thisForm.txtCCCity.value.trim() == "") {
		alert("Please provide a City for the credit card.");
		setMenu(2);
		thisForm.txtCCCity.focus();
		return false;
	}
	if (thisForm.txtCCZip.value.trim() == "") {
		alert("Please provide a ZIP or postal code for the credit card.");
		setMenu(2);
		thisForm.txtCCZip.focus();
		return false;
	}
	if (thisForm.txtCCCountry.value.trim() == "") {
		alert("Please provide a Country for the credit card.");
		setMenu(2);
		thisForm.txtCCCountry.focus();
		return false;
	}

	var expDate	= new Date(thisForm.drpCCYear[thisForm.drpCCYear.selectedIndex].value,eval(thisForm.drpCCMonth[thisForm.drpCCMonth.selectedIndex].value - 1));
	expDate		= expDate.addMonths(1).addDays(-1);
	if (eval(expDate.getTime() - currentDate.getTime()) < 0) {
		alert ("According to the Credit Card Expiry Date you have chosen\n\nyour credit card seems to have expired.");
		setMenu(2);
		thisForm.drpCCMonth.focus();
		return false;
	}

	return true;
}

function showConfirmSection () {

	// Fill all the fields
	document.getElementById("confirmDaysToArrival").innerHTML		= parseInt((basicDatePicker.getSelectedDate("obPopupCalendar").getTime() - new Date().getTime()) / 1000 / 60 / 60 / 24);

	// #confirmGuestInfo section
	document.getElementById("confirmFname").innerHTML					= document.forms[0].txtFName.value;
	document.getElementById("confirmLname").innerHTML					= document.forms[0].txtLName.value;
	document.getElementById("confirmEmail").innerHTML					= document.forms[0].txtEmail.value;
	document.getElementById("confirmTelCountry").innerHTML			= document.forms[0].txtTelCountry.value == "" ? "&nbsp;" : document.forms[0].txtTelCountry.value;
	document.getElementById("confirmTelArea").innerHTML				= document.forms[0].txtTelArea.value == "" ? "&nbsp;" : document.forms[0].txtTelArea.value;
	document.getElementById("confirmTel").innerHTML						= document.forms[0].txtTel.value;
	document.getElementById("confirmFaxCountry").innerHTML			= document.forms[0].txtFaxCountry.value == "" ? "&nbsp;" : document.forms[0].txtFaxCountry.value;
	document.getElementById("confirmFaxArea").innerHTML				= document.forms[0].txtFaxArea.value == "" ? "&nbsp;" : document.forms[0].txtFaxArea.value;
	document.getElementById("confirmFax").innerHTML						= document.forms[0].txtFax.value == "" ? "&nbsp;" : document.forms[0].txtFax.value;
	document.getElementById("confirmArrivalDate").innerHTML			= basicDatePicker.getSelectedDateFormatted("obPopupCalendar");
	document.getElementById("confirmNightCount").innerHTML			= document.forms[0].drpNightCount[document.forms[0].drpNightCount.selectedIndex].value;
	document.getElementById("confirmDepartureDate").innerHTML		= document.getElementById("departureDate").innerHTML;
	document.getElementById("confirmGuestCount").innerHTML			= document.forms[0].drpGuestCount[document.forms[0].drpGuestCount.selectedIndex].value;
	document.getElementById("confirmCabanaQueens").innerHTML			= document.forms[0].drpCabanaQueens[document.forms[0].drpCabanaQueens.selectedIndex].value;
	document.getElementById("confirmCabanaTwins").innerHTML			= document.forms[0].drpCabanaTwins[document.forms[0].drpCabanaTwins.selectedIndex].value;
	document.getElementById("confirmCabanaFamily").innerHTML			= document.forms[0].drpCabanaFamily[document.forms[0].drpCabanaFamily.selectedIndex].value;
	document.getElementById("confirmSubtotalStandard").innerHTML	= document.getElementById("subtotalStandard").innerHTML;
	document.getElementById("confirmSubtotalSpecial").innerHTML		= document.getElementById("subtotalSpecial").innerHTML;
	document.getElementById("confirmTotalCost").innerHTML				= document.getElementById("totalCost").innerHTML;
	document.getElementById("confirmDeposit").innerHTML				= document.forms[0].txtDeposit.value;
	document.getElementById("confirmBalance").innerHTML				= document.getElementById("balance").innerHTML;
	
	// #confirmFlightInfo section
	if (document.forms[0].drpBookFlight.selectedIndex==0) {
		document.getElementById("confirmBookFlight").innerHTML	= "<br class='printShow'>No";
		document.getElementById("confirmBookFlight2").innerHTML	= "Don't make an inland flight reservation for us.";
		document.getElementById("confirmFlightArrivalDate").innerHTML = "&nbsp;";
		document.getElementById("confirmArrivalHour").innerHTML = "&nbsp;";
		document.getElementById("confirmArrivalMinute").innerHTML = "&nbsp;";
		document.getElementById("confirmFlightDepartureDate").innerHTML = "&nbsp;";
		document.getElementById("confirmDepartureHour").innerHTML = "&nbsp;";
		document.getElementById("confirmDepartureMinute").innerHTML = "&nbsp;";
	} else {
		document.getElementById("confirmBookFlight").innerHTML	= "<br class='printShow'>Yes";
		document.getElementById("confirmBookFlight2").innerHTML	= "Please make an inland flight reservation for us.";
		document.getElementById("confirmFlightArrivalDate").innerHTML = basicDatePicker.getSelectedDateFormatted("obPopupCalendar");
		document.getElementById("confirmArrivalHour").innerHTML			= document.forms[0].drpArrivalHour[document.forms[0].drpArrivalHour.selectedIndex].text;
		document.getElementById("confirmArrivalMinute").innerHTML		= document.forms[0].drpArrivalMinute[document.forms[0].drpArrivalMinute.selectedIndex].text;
		document.getElementById("confirmFlightDepartureDate").innerHTML = document.getElementById("departureDate").innerHTML;
		document.getElementById("confirmDepartureHour").innerHTML		= document.forms[0].drpDepartureHour[document.forms[0].drpDepartureHour.selectedIndex].text;
		document.getElementById("confirmDepartureMinute").innerHTML		= document.forms[0].drpDepartureMinute[document.forms[0].drpDepartureMinute.selectedIndex].text;
	}
//document.getElementById("confirmAirline").innerHTML				= document.forms[0].txtAirline.value == "" ? "&nbsp;" : document.forms[0].txtAirline.value;
//document.getElementById("confirmFlightNumber").innerHTML			= document.forms[0].txtFlightNumber.value == "" ? "&nbsp;" : document.forms[0].txtFlightNumber.value;
//document.getElementById("confirmFlightDepartCity").innerHTML	= document.forms[0].txtFlightDepartCity.value == "" ? "&nbsp;" : document.forms[0].txtFlightDepartCity.value;
	document.getElementById("confirmComments").innerHTML				= document.forms[0].txtComments.value == "" ? "&nbsp;" : document.forms[0].txtComments.value.replace(/\n/g,"<br>");
	
	// #confirmBillingInfo section
	document.getElementById("confirmCreditCard").innerHTML	= document.forms[0].drpCreditCard[document.forms[0].drpCreditCard.selectedIndex].text;
	document.getElementById("confirmCardNumber").innerHTML	= document.forms[0].txtCardNumber.value;
	document.getElementById("confirmCCMonth").innerHTML		= document.forms[0].drpCCMonth[document.forms[0].drpCCMonth.selectedIndex].text;
	document.getElementById("confirmCCYear").innerHTML			= document.forms[0].drpCCYear[document.forms[0].drpCCYear.selectedIndex].text;
	document.getElementById("confirmSecurityCode").innerHTML	= document.forms[0].txtSecurityCode.value == "" ? "&nbsp;" : document.forms[0].txtSecurityCode.value;
	document.getElementById("confirmCCFname").innerHTML		= document.forms[0].txtCCFirstName.value;
	document.getElementById("confirmCCLname").innerHTML		= document.forms[0].txtCCLastName.value;
	document.getElementById("confirmCCEmail").innerHTML		= document.forms[0].txtCCEmail.value == "" ? "&nbsp;" : document.forms[0].txtCCEmail.value;
	document.getElementById("confirmCCTelCountry").innerHTML	= document.forms[0].txtCCTelCountry.value == "" ? "&nbsp;" : document.forms[0].txtCCTelCountry.value;
	document.getElementById("confirmCCTelArea").innerHTML		= document.forms[0].txtCCTelArea.value == "" ? "&nbsp;" : document.forms[0].txtCCTelArea.value;
	document.getElementById("confirmCCTel").innerHTML			= document.forms[0].txtCCTel.value == "" ? "&nbsp;" : document.forms[0].txtCCTel.value;
	document.getElementById("confirmCCAddress").innerHTML		= document.forms[0].txtCCAddress.value;
	document.getElementById("confirmCCCity").innerHTML			= document.forms[0].txtCCCity.value;
	document.getElementById("confirmCCState").innerHTML		= document.forms[0].txtCCState.value == "" ? "&nbsp;" : document.forms[0].txtCCState.value;
	document.getElementById("confirmCCZip").innerHTML			= document.forms[0].txtCCZip.value;
	document.getElementById("confirmCCCountry").innerHTML		= document.forms[0].txtCCCountry.value;

	document.getElementById("inputSection").style.display		= "none";
	document.getElementById("confirmSection").style.display	= "block";
}

function hideConfirmSection() {
	document.getElementById("inputSection").style.display		= "";
	document.getElementById("confirmSection").style.display	= "none";
	setMenu(2);
}

var currentMenuId = -1;
function setMenu (menuId) {
	document.body.style.backgroundColor = "#FFF";
/*
*/
	if (currentMenuId == 0 && menuId != 0) {
		if (!checkStage0(document.forms[0])) {
			return;
		}
	}

	if (currentMenuId == 1) {
		if (!checkStage1(document.forms[0])) {
			return;
		}
	}
	if (menuId == 3) {
/*
*/
		if (!checkStage2(document.forms[0])) {
			return;
		}
		showConfirmSection();
		document.getElementById("stage2Nav").style.display = "none";
		document.body.style.backgroundColor = "#F5E1AE";
		window.scrollTo(0,0);
		return;
	}

	for (var i = 0;i < 3;i++)	{
		document.getElementById("menuButton" + i).style.visibility = "hidden";
		document.getElementById("stage" + i).style.display = "none";
	}
	document.getElementById("menuButton" + menuId).style.visibility = "visible";
	document.getElementById("stage" + menuId).style.display = "block";
	currentMenuId = menuId;
	if (menuId == 2) {
		document.getElementById("stage2Nav").style.display = "block";
	} else {
		document.getElementById("stage2Nav").style.display = "none";
	}
	window.scrollTo(0,0);
}

function setDepartureDate() {
	if (basicDatePicker.getSelectedDate("obPopupCalendar") != null) {
		var departureDate = basicDatePicker.getSelectedDate("obPopupCalendar");
		departureDate.setHours(12,0,0,0);
		departureDate = departureDate.addDays(document.forms[0].drpNightCount[document.forms[0].drpNightCount.selectedIndex].value);
		document.getElementById("departureDate").innerHTML = basicDatePickerCulture_en_US.dayNamesAbbr[departureDate.getDay()] + " " + departureDate.getDate() + "-" + basicDatePickerCulture_en_US.monthNamesAbbr[departureDate.getMonth()] + "-" + departureDate.getFullYear();
		calculateCharges();
	} else {
		alert ("Please click the calendar button to select an Arrival Date");
	}
}
/*
function setFlightArrivalDate() { // activated by mousedown on the BDP control
	if (basicDatePicker.getSelectedDate("obPopupCalendar2") == null) {
		basicDatePicker.setSelectedDate(basicDatePicker.getSelectedDate("obPopupCalendar"), "obPopupCalendar2");
	}
}
*/
var Rates = new Array;
function loadRates(
						 highSeasonStartYear,
						 highSeasonStartMonth,
						 highSeasonStartDay,
						 highSeasonEndYear,
						 highSeasonEndMonth,
						 highSeasonEndDay,
						 holSeasonStartYear,
						 holSeasonStartMonth,
						 holSeasonStartDay,
						 holSeasonEndYear,
						 holSeasonEndMonth,
						 holSeasonEndDay,
						 daysBeforeToPayBalance,
						 minDeposit,
						 lowRate,
						 highRate,
						 holidayRate,
						 isSpecialRate,
						 specialGlobal,
						 hotelTax
						 ) {

	Rates[0]		= new Array(); // High Season
	Rates[0][0]	= new Date(highSeasonStartYear, highSeasonStartMonth, highSeasonStartDay);
	Rates[0][1]	= new Date(highSeasonEndYear, highSeasonEndMonth, highSeasonEndDay);
   Rates[0][0].setHours(0,0);
   Rates[0][1].setHours(0,0);

	Rates[1]		= new Array(); // Holiday Season
	Rates[1][0]	= new Date(holSeasonStartYear, holSeasonStartMonth, holSeasonStartDay);
	Rates[1][1]	= new Date(holSeasonEndYear, holSeasonEndMonth, holSeasonEndDay);
   Rates[1][0].setHours(0,0);
   Rates[1][1].setHours(0,0);

	Rates[2]		= new Array(); // Thanksgiving

	Rates[3]		= daysBeforeToPayBalance;	// Days Before To Pay Balance
	Rates[4]		= minDeposit;					// Minimum Deposit
	Rates[5]		= lowRate;						// Low Rate
	Rates[6]		= highRate;						// High Rate
	Rates[7]		= holidayRate;					// Holiday Rate
	Rates[8]		= isSpecialRate;				// Flag that determines if Special Rate is active
	Rates[9]		= specialGlobal;				// Special Global Rate
	Rates[10]	= hotelTax;						// Hotel Tax
}

var totalCost = 0;
function calculateCharges () {
	if (basicDatePicker.getSelectedDate("obPopupCalendar") != null) {
		if (document.forms[0].drpCabanaTwins[document.forms[0].drpCabanaTwins.selectedIndex].value==0 && document.forms[0].drpCabanaQueens[document.forms[0].drpCabanaQueens.selectedIndex].value==0) {
			document.getElementById("subtotalStandard").innerHTML	= "0";
			document.getElementById("subtotalSpecial").innerHTML	= "0";
			document.getElementById("totalCost").innerHTML			= "0";
			document.forms[0].txtDeposit.value							= "0";
			document.forms[0].hdnDeposit.value							= "0";
			document.getElementById("balance").innerHTML				= "0";
			if (document.forms[0].drpCabanaFamily.selectedIndex > 0) {
				alert("You have selected Cabanas at the family discount rate.\n\nIt is only possible to receive the family discount on a second Cabana");
				document.forms[0].drpCabanaFamily.selectedIndex			= 0;
			}
			totalCost = 0;
		} else {
			var subtotalStandard = 0;
			var numberOfNights	= document.forms[0].drpNightCount[document.forms[0].drpNightCount.selectedIndex].value;

			var numberOfCabanas	= eval(document.forms[0].drpCabanaTwins[document.forms[0].drpCabanaTwins.selectedIndex].value) + eval(document.forms[0].drpCabanaQueens[document.forms[0].drpCabanaQueens.selectedIndex].value);
			if (eval(document.forms[0].drpCabanaFamily[document.forms[0].drpCabanaFamily.selectedIndex].value) > numberOfCabanas) {
				alert ("You have selected too many Cabanas at the family discount rate.\n\nIt is only possible to receive the family discount on a second Cabana");
				document.forms[0].drpCabanaFamily.selectedIndex = numberOfCabanas;
			}
			numberOfCabanas	+= eval(document.forms[0].drpCabanaFamily[document.forms[0].drpCabanaFamily.selectedIndex].value);

			var arrivalDate		= basicDatePicker.getSelectedDate("obPopupCalendar");
			arrivalDate.setHours(12,0,0,0);
			var subtotalSpecial	= Rates[9] * numberOfNights * numberOfCabanas;
			for (var i = 0;i < numberOfNights;i++) {
				var today = arrivalDate.addDays(i);
				var todaysRate = Rates[5]; // Low Rate

				// Set current year
				Rates[0][0].setFullYear(today.addYears(-1).getFullYear());	// High season start
				Rates[0][1].setFullYear(today.getFullYear());					// High season end
				Rates[1][0].setFullYear(today.addYears(-1).getFullYear());	// Holiday season start
				Rates[1][1].setFullYear(today.getFullYear());					// Holiday season end
				setThanksgivingWeekend(today.getFullYear());						// Thankgiving weekend

				if (today.getTime() > Rates[0][0].getTime() && today.getTime() < Rates[0][1].addDays(1).getTime() ) { // High season current year
					todaysRate = Rates[6]; // High rate
				}
				if (today.getTime() > Rates[0][0].addYears(1).getTime() && today.getTime() < Rates[0][1].addYears(1).addDays(1).getTime() ) { // High season next year
					todaysRate = Rates[6]; // High rate
				}
				if (today.getTime() > Rates[1][0].getTime() && today.getTime() < Rates[1][1].addDays(1).getTime() ) { // Holiday period current year
					todaysRate = Rates[7]; // Holiday rate
				}
				if (today.getTime() > Rates[1][0].addYears(1).getTime() && today.getTime() < Rates[1][1].addYears(1).addDays(1).getTime() ) { // Holiday period next year
					todaysRate = Rates[7]; // Holiday rate
				}
				if (today.getTime() > Rates[2][0].getTime() && today.getTime() < Rates[2][1].addDays(1).getTime() ) { // Thanksgiving period current year
					todaysRate = Rates[7]; // Holiday rate
				}
				subtotalStandard += todaysRate * numberOfCabanas;
			}

			// 10% reduction on second Cabana at family rate
			if (eval(document.forms[0].drpCabanaFamily[document.forms[0].drpCabanaFamily.selectedIndex].value) > 0) {
				var singleCabanaCost		= subtotalStandard/numberOfCabanas;
				var discountedCabanas	= document.forms[0].drpCabanaFamily[document.forms[0].drpCabanaFamily.selectedIndex].value;
				subtotalStandard			= subtotalStandard - ((singleCabanaCost * (discountedCabanas/100)) * 10);
				singleCabanaCost			= subtotalSpecial/numberOfCabanas;
				subtotalSpecial			= subtotalSpecial - ((singleCabanaCost * (discountedCabanas/100)) * 10);
			}
			
			document.getElementById("subtotalStandard").innerHTML	= "$" + eval(subtotalStandard.toFixed(2)).toLocaleString();
			document.getElementById("subtotalSpecial").innerHTML	= "$" + eval(subtotalSpecial.toFixed(2)).toLocaleString();

			totalCost = subtotalStandard + ((subtotalStandard/100)*Rates[10]);
			if (Rates[8]) { // If the special global rate is in effect
				totalCost = subtotalSpecial + ((subtotalSpecial/100)*Rates[10]);	
			}
			document.getElementById("totalCost").innerHTML	= "$" + eval(totalCost.toFixed(2)).toLocaleString();
			document.forms[0].hdnTotal.value = eval(totalCost.toFixed(2));

			if (arrivalDate.addDays(-days_before_to_pay_balance).getTime() < dateToday.getTime() ) { // Less than days_before_to_pay_balance days
				var balance = eval(totalCost);
				if (document.forms[0].hdnDeposit.value != "0") {
					alert("A deposit can only be accepted if your order is placed more than " + days_before_to_pay_balance + " days before arrival.");
				}
				document.forms[0].txtDeposit.value = "0";
				document.forms[0].hdnDeposit.value = "0"
			} else {																			// More than days_before_to_pay_balance days
				if (eval(document.forms[0].hdnDeposit.value) > totalCost) {
					document.forms[0].hdnDeposit.value = totalCost;
					document.forms[0].txtDeposit.value = "$" + eval(totalCost.toFixed(2)).toLocaleString();
				}
				if (eval(document.forms[0].hdnDeposit.value) < Rates[4]) {
					document.forms[0].hdnDeposit.value = Rates[4];
					document.forms[0].txtDeposit.value = "$" + eval(Rates[4].toFixed(2)).toLocaleString();
				}
				var balance = eval(totalCost) - eval(document.forms[0].hdnDeposit.value);
			}

			if (balance > 0) {
				document.getElementById("balance").innerHTML	= "$" + eval(balance.toFixed(2)).toLocaleString();
			} else {
				document.getElementById("balance").innerHTML	= "0";
			}
		}
	} else {
		alert ("Please click the calendar button to select an Arrival Date");
		document.forms[0].txtDeposit.value							= "0";
		document.forms[0].hdnDeposit.value							= "0";
		setMenu(0);
	}
}

function setDepositField (depositField) {
	document.getElementById("updateButton").style.visibility	= "hidden";
	if (depositField.value > totalCost) {
		depositField.value = totalCost;
	}
	if (depositField.value < Rates[4]) {
		depositField.value = Rates[4];
	}
	document.forms[0].hdnDeposit.value = depositField.value;
	depositField.value = "$" + eval(depositField.value).toLocaleString();
	calculateCharges();
}

function setTxtDepositField (depositField) {
	depositField.value = "$" + eval(document.forms[0].hdnDeposit.value).toLocaleString();
	calculateCharges();
}

function checkDepositField (depositField) {
	document.getElementById("updateButton").style.visibility	= "visible";
	if (depositField.value.search(/\D/) > -1) {
		depositField.value = depositField.value.substring(0, depositField.value.length-1);
		checkDepositField (depositField);
	}
}

function setThanksgivingWeekend(thisYear){
	var dtThanksgiving = new Date();
   dtThanksgiving.setHours(0,0);
	dtThanksgiving.setFullYear(thisYear);
   dtThanksgiving.setMonth(10);  // November
   dtThanksgiving.setDate(1);
   // Find first Thursday.
   while( dtThanksgiving.getDay() != 4){
      dtThanksgiving.setDate( dtThanksgiving.getDate() + 1 ) ;
   }
   // Add 3 weeks.
   dtThanksgiving.setDate( dtThanksgiving.getDate() + 21 );
   // Set start and end of Thanksgiving weekend
	Rates[2][0]	= new Date(dtThanksgiving.getFullYear(), dtThanksgiving.getMonth(), dtThanksgiving.getDate());
	Rates[2][1]	= new Date(dtThanksgiving.addDays(3).getFullYear(), dtThanksgiving.addDays(3).getMonth(), dtThanksgiving.addDays(3).getDate());
}

function setSubmitButtons (disable) {
	if (disable) {
		document.getElementById("btnHolder1").style.display = "none";
		document.getElementById("btnHolder2").style.display = "none";
		document.getElementById("printForFaxButton").style.display = "none";
	} else {
		document.getElementById("btnHolder1").style.display = "block";
		document.getElementById("btnHolder2").style.display = "block";
		document.getElementById("printForFaxButton").style.display = "block";
	}
}

/*
Check credit card validity
==============================
******************************
==============================
This function was taken from here:
http://www.brainjar.com/js/validation/default2.asp
Copyright 2000 by Mike Hall
*/

function checkCC(s) {
  var i, n, c, r, t;

  // First, reverse the string and remove any non-numeric characters.
  r = "";
  for (i = 0; i < s.length; i++) {
    c = parseInt(s.charAt(i), 10);
    if (c >= 0 && c <= 9)
      r = c + r;
  }

  // Check for a bad string.
  if (r.length <= 1)
    return false;

  // Now run through each single digit to create a new string. Even digits
  // are multiplied by two, odd digits are left alone.
  t = "";
  for (i = 0; i < r.length; i++) {
    c = parseInt(r.charAt(i), 10);
    if (i % 2 != 0)
      c *= 2;
    t = t + c;
  }

  // Finally, add up all the single digits in this string.
  n = 0;
  for (i = 0; i < t.length; i++) {
    c = parseInt(t.charAt(i), 10);
    n = n + c;
  }

  // If the resulting sum is an even multiple of ten (but not zero), the
  // card number is good.
  if (n != 0 && n % 10 == 0)
    return true;
  else
    return false;
}

/*
==============================
******************************
==============================
*/
