Figment.Import( 'Figment.EventHandler','./_framework/' );
Figment.Import( 'Figment.DOM','./_framework/' );

function getObject(id) {
   if (document.getElementById(id)) {
     return document.getElementById(id);
   } else {
     return window.document[id];
   }
}

function showChildAge(){
	var objChildNumber = getObject('partyMix_childNumber');
	var objPartyMixOptionalSection = getObject('partyMix_optionalSection');
	var twoPxSpace = getObject('twoPxSpace');

	if (objChildNumber.value > 0 ){
		objPartyMixOptionalSection.style.display = "block";
	} else{
		objPartyMixOptionalSection.style.display = "none"
	}

	for (i = 1; i <= 7; i++) {
		var objChildAgeDiv = getObject('partyMix_Child' + i + '_Section');

		if (i <= objChildNumber.value){
			objChildAgeDiv.style.display = "block";
		} else {
			objChildAgeDiv.style.display = "none";
		}
	}
	fixColumns();
}

function fixColumns(){
	try
	{
		var h1 = document.getElementById("columnLeft").offsetHeight;
		var h2 = document.getElementById("columnCenter").offsetHeight;
		var h3 = document.getElementById("columnRight").offsetHeight;
	}
	catch(err)
	{
		// one column page
	}

//	document.getElementById("columnLeft").style.height = h2 + "px";
//	document.getElementById("columnRight").style.height = h2 - 120 + "px";
}


Figment.Namespace('Disney.DLR.IBC.ColumnHeight.Events');

Disney.DLR.IBC.ColumnHeight.Events = {

	main: function(evt){
		fixColumns();
	}
}

Figment.EntryPoint.add(Disney.DLR.IBC.ColumnHeight.Events);


Figment.Namespace('Disney.DLR.IBC.ColumnHeights.Events');

Disney.DLR.IBC.ColumnHeights.Events = {
	main: function(evt){
		initDateDropDowns();
	}
}

Figment.EntryPoint.add( Disney.DLR.IBC.ColumnHeights.Events );


Figment.Namespace('Disney.DLR.IBC.GetStartedButton.Events');

Disney.DLR.IBC.GetStartedButton.Events = {
	SUBMIT_BUTTON: null,

	main: function( evt )
	{
		objLink = getObject( "LPageSubmitButton");
		if( objLink !== null )
		{
			Figment.EventHandler.addEvent( objLink,'click',Disney.DLR.IBC.GetStartedButton.Events.EVENT_button_onClick );
		}

	},

	EVENT_button_onClick: function(evt){
		var objWindowEvent = Figment.EventHandler.getEvent( evt );
		var objElement = objWindowEvent.element;
		var objState = null;

		Disney.DLR.IBC.GetStartedButton.SUBMIT_BUTTON = objElement;
		objWindowEvent.preventDefault();
		objWindowEvent.stopEvents();

		delete objWindowEvent.targetElement;
		delete objWindowEvent.element;
		delete objWindowEvent;
		delete objElement;
		delete objState;

		validate();
		return false;

	}

}
// Attach the events to the button on window load
Figment.EntryPoint.add( Disney.DLR.IBC.GetStartedButton.Events );

// *****************************************************************************
// *****************************************************************************

var ARRIVAL_YEAR_ID 		= 'partyMix_arrivalYear';
var ARRIVAL_MONTH_ID 		= 'partyMix_arrivalMonth';
var ARRIVAL_DAY_ID 		= 'partyMix_arrivalDay';
var DEPARTURE_YEAR_ID		= 'partyMix_departureYear';
var DEPARTURE_MONTH_ID		= 'partyMix_departureMonth';
var DEPARTURE_DAY_ID		= 'partyMix_departureDay';
var FORM_NAME			= 'columnCenter_Form';
var ARRIVAL_LABEL_ID 		= 'LP_ArrivalLabel';
var DEPARTURE_LABEL_ID 		= 'LP_DepartureLabel';
var ARRIVAL_LABEL_ERRICON_ID 	= 'LP_ArrivalLabelErrIcon';
var DEPARTURE_LABEL_ERRICON_ID 	= 'LP_DepartureLabelErrIcon';
var DEFAULT_RADIO_SELECTION	= 'productSelection_Guest_STD_AHT_OrderType_ProductSelectBtn'; // product radio that is selected by default
var ARRIVAL_INPUT_ID		= 'partyMix_arrival';
var DEPARTURE_INPUT_ID		= 'partyMix_departure';
var CHILD_NUM_SELECT_ID		= 'partyMix_childNumber';
var ADULT_NUM_SELECT_ID		= 'partyMix_adultNumber';
var CHILD_AGE_SELECT_ID		= 'partyMix_Child';

// Begin validation for arrival and departure dates
// Package
//var ARRIVAL_MIN_OFFSET		= 3; // add to today's date for min arrival date.
var MIN_ROOM_ARRIVAL_OFFSET	= 1; // arrival must be tomorrow or later...
var MIN_LOS_PKG			= 2; // minimum LOS (length of stay in days) for package, subtract from end of product date for max arrival date.

// Room Only
var ARRIVAL_ROOM_MIN_OFFSET	= 1; // arrival date must be tomorrow or later.
var MIN_LOS_ROOM_ONLY		= 1; // minimum LOS (length of stay) for hotel product
var END_OF_PROD_DATE		= new Date(2008,0,01); // end of product date - year, month, day - per biz rules
var MAX_ROOM_PARTY_NUM		= 5; // max number of people staying in room only
var MAX_PKG_PARTY_NUM		= 8; // max number of people for vacation package

var MIN_PKG_STAY		= 2;  // min number of days that are required for package
var MIN_ROOM_STAY		= 1;  // min number of days that are required for room-only
//var MAX_PKG_STAY		= 30; // customer not allowed to stay longer than this number of days
var MAX_ROOM_STAY		= 30; // customer not allowed to stay longer than this number of days
var ERROR_ID			= 'LPErrorMsg';// element that displays the error message at top of page
var ERROR_HEADER_ID		= 'LPErrorMsgHeader';
var ERROR_HEADER_TEXT		= 'Let\'s try that again...';
var DEFAULT_LABEL_COLOR		= '#343a88';
var ERROR_LABEL_COLOR		= '#FF0000';

var BASE_YEAR=2006;
var ONE_DAY = 1000*60*60*24; // one day in millisecs
var NOW = new Date();
var TODAYS_DATE = new Date(NOW.getFullYear(), NOW.getMonth(), NOW.getDate());

var errMessageText = "";
var ErrCodeArrivalBeforeDeparture 	= 'DomainCode_Error_V000001_en_US';//Your departure date must be after your arrival date. Please change your arrival or departure date so that your departure is after your arrival.
var ErrCodeArrivalDateBeforeToday 	= 'DomainCode_Error_V000002_en_US';//Your arrival date cannot be before today.

var ErrCodeRoomMinArrivalDate		= 'DomainCode_Error_V001000_en_US';//The resort requires your arrival to be at least 1 day out. Please change your arrival date to be further out.
var ErrCodeRoomMaxArrivalDate		= 'DomainCode_Error_V001001_en_US';//Your arrival date should be before 12/31/2007.
var ErrCodeRoomMinDepartureDate		= 'DomainCode_Error_V001002_en_US';//You must book a stay of at least 1 night. Please change your arrival or departure date so that your stay is longer.
var ErrCodeRoomMaxDepartureDate		= 'DomainCode_Error_V001003_en_US';//To book your room online, your departure date must be before 12/31/2006. Please call us if you require a departure date after that.
var ErrCodeRoomMaxStayDepartureDate     = 'DomainCode_Error_V001004_en_US';//You must book a stay less than 30 nights. Please change your arrival or departure date so that your stay is shorter.
var ErrCodeRoomMaxPartyNumber    	= 'DomainCode_Error_V001005_en_US';//Your party cannot have more than 5 guests in a room when selecting the Room Packages path.


var ErrCodePkgMinArrivalDate		= 'DomainCode_Error_V001010_en_US';//The resort requires your arrival to be at least 3 days out. Please change your arrival date to be further out.
var ErrCodePkgMaxArrivalDate		= 'DomainCode_Error_V001011_en_US';//Your arrival date should be before 12/31/2007.
var ErrCodePkgMinDepartureDate		= 'DomainCode_Error_V001012_en_US';//You must book a stay of at least 2 nights. Please change your arrival or departure date so that your stay is longer.
var ErrCodePkgMaxDepartureDate		= 'DomainCode_Error_V001013_en_US';//To book your package online, your departure date must be before 12/31/2006. Please call us if you require a departure date after that.
var ErrCodePkgMaxStayDepartureDate     	= 'DomainCode_Error_V001014_en_US';//You must book a stay less than 30 nights. Please change your arrival or departure date so that your stay is shorter.
var ErrCodePkgMaxPartyNumber    	= 'DomainCode_Error_V001015_en_US';//Your party cannot have more than 8 guests in a room when selecting the Vacation Packages path.

var ErrCodeChildAgesProvided		= 'DomainCode_Error_V001016_en_US';//Please provide ages for all children.
var ErrCodeAdultChildRatio		= 'DomainCode_Error_V001017_en_US';//You must have at least one adult in your party for each infant in your party.


function validateRO(selectedArrivalDate,selectedDepartureDate)
{
	if(valRoomMinArrivalDate(selectedArrivalDate) &&
		valRoomMaxArrivalDate(selectedArrivalDate)) {

		// check departure
		if(valRoomMinDepartureDate(selectedArrivalDate, selectedDepartureDate) &&
		valRoomMaxDepartureDate(selectedArrivalDate, selectedDepartureDate)){
			// check party number
			if (valRoomMaxPartyNumber()) {

			} else {

				showPartyMixErr();
				return false;
			}

		} else { // departure error

			showDepartureErr();
			return false; // stop form submit

		}

	} else { // arrival error

		showArrivalErr();
		return false; // stop form submit
	}
	
	return true;
}

function validatePKG(selectedArrivalDate,selectedDepartureDate)
{
	if(valPkgMinArrivalDate(selectedArrivalDate) &&
		valPkgMaxArrivalDate(selectedArrivalDate)){

		// check departure
		if(valPkgMinDepartureDate(selectedArrivalDate, selectedDepartureDate) &&
			valPkgMaxDepartureDate(selectedArrivalDate, selectedDepartureDate)){
			// check party number
			if (valPkgMaxPartyNumber()) {

			} else {

				showPartyMixErr();
				return false;
			}

		} else {

			showDepartureErr();
			return false;
		}

	} else {

		showArrivalErr();
		return false;
	}

	return true;
}

function validate() {
  var selArrivalYear = getObject(ARRIVAL_YEAR_ID).value;
  var selArrivalMonth = getObject(ARRIVAL_MONTH_ID).value;
  var selArrivalDay = getObject(ARRIVAL_DAY_ID).value;
  var selectedArrivalDate = new Date(selArrivalYear, selArrivalMonth-1, selArrivalDay);
  var selectedArrivalTime = selectedArrivalDate.getTime();

  var selDepartureYear = getObject(DEPARTURE_YEAR_ID).value;
  var selDepartureMonth = getObject(DEPARTURE_MONTH_ID).value;
  var selDepartureDay = getObject(DEPARTURE_DAY_ID).value;
  var selectedDepartureDate = new Date(selDepartureYear, selDepartureMonth-1, selDepartureDay);
  var selectedDepartureTime = selectedDepartureDate.getTime();

  // generic date validation
  if(validateDates(selectedArrivalDate, selectedDepartureDate)) {
	//check if there are multiple radio buttons
	if (getObject(FORM_NAME).productSelection[0] != null) {
		// package validation
		if(getObject(FORM_NAME).productSelection[0].checked==true) {
			//check arrival
			if (!validatePKG(selectedArrivalDate,selectedDepartureDate))
				return false;


		// room only validation
		} else if(getObject(FORM_NAME).productSelection[1].checked==true){
			if (!validateRO(selectedArrivalDate,selectedDepartureDate))
				return false;			
		} 
	} else {
		var type = getObject(FORM_NAME).productSelection.value;
		
		if (type.indexOf("_RO_") >= 0)
		{
			if (!validateRO(selectedArrivalDate,selectedDepartureDate))
				return false;		
		}
		else
		{
			if (!validatePKG(selectedArrivalDate,selectedDepartureDate))
				return false;
		}
		
	}
	if(valChildAgesProvided()) {

		if(valAdultChildRatio()) {

		} else {

			showPartyMixErr();
			return false; // stop form submit
		}

	} else{ // party error

		showPartyMixErr();
		return false; // stop form submit
	}


  } // end generic date validation
   else {

	getObject(ERROR_HEADER_ID).innerHTML=ERROR_HEADER_TEXT;
	return false;
  }

	getObject(FORM_NAME).submit();  // if all validation is ok, submit the form...
}
function showPartyMixErr() {
		// show error header
		getObject(ERROR_HEADER_ID).innerHTML=ERROR_HEADER_TEXT;

}

function showArrivalErr() {

		// show error header
		getObject(ERROR_HEADER_ID).innerHTML=ERROR_HEADER_TEXT;
		// show arrival error elements
		getObject(ARRIVAL_LABEL_ID).style.color=ERROR_LABEL_COLOR;
		getObject(ARRIVAL_LABEL_ERRICON_ID).style.visibility="visible";
		// hide departure error elements
		getObject(DEPARTURE_LABEL_ID).style.color=DEFAULT_LABEL_COLOR;
		getObject(DEPARTURE_LABEL_ERRICON_ID).style.visibility="hidden";

}
function showDepartureErr() {
		// show error header
		getObject(ERROR_HEADER_ID).innerHTML=ERROR_HEADER_TEXT;
		// show departure error elements
		getObject(DEPARTURE_LABEL_ID).style.color=ERROR_LABEL_COLOR;
		getObject(DEPARTURE_LABEL_ERRICON_ID).style.visibility="visible";
		// hide arrival error elements
		getObject(ARRIVAL_LABEL_ID).style.color=DEFAULT_LABEL_COLOR;
		getObject(ARRIVAL_LABEL_ERRICON_ID).style.visibility="hidden";

}
// *****************************************************************************

//Helper function - Returns true if parameter date is before todays date.
function isDateBeforeToday(Date)
{
	var DateYear,DateMonth,DateDay;
	var TodayYear,TodayMonth,TodayDay;
	var DateCompareString,TodayCompareString

	// Initialiaze variables

	DateYear = Date.getFullYear();
	DateMonth = Date.getMonth();
	if(DateMonth.toString().length == 1)
	{
		DateMonth = "0" + DateMonth.toString();
	}
	DateDay = Date.getDate();
	if(DateDay.toString().length == 1)
	{

		DateDay = "0"+ DateDay.toString();
	}

	TodayYear = TODAYS_DATE.getFullYear();
	TodayMonth = TODAYS_DATE.getMonth();
	TodayDay = TODAYS_DATE.getDate();

	if(TodayMonth.toString().length == 1)
	{
		TodayMonth = "0" + TodayMonth.toString();
	}
	if(TodayDay.toString().length == 1)
	{

		TodayDay = "0"+ TodayDay.toString();
	}

	//Concatinate dates so that string is in the following format YYYYMMDD
	DateCompareString = DateYear.toString() + DateMonth.toString() + DateDay.toString();
	TodayCompareString = TodayYear.toString() + TodayMonth.toString() + TodayDay.toString();
	//Cast string to number for comparaison
	var DateCompareNumber = DateCompareString * 1;
	var TodayCompareNumber = TodayCompareString * 1;
	//alert("Debugging :-) date = "+ DateCompareNumber + " Today " + TodayCompareNumber);
	if(DateCompareNumber < TodayCompareNumber)
	{
		//Parameter date is in the past
		return true;
	}
	//Parameter date equals today's date or is a future date
	return false;


}


// Generic - Check that departure date is after arrival date.
function validateDates(selArrivalDate, selDepartureDate){


	if(selDepartureDate.getTime() < selArrivalDate.getTime()) {
		errMessageText=getObject(ErrCodeArrivalBeforeDeparture).value;
		getObject(ERROR_ID).innerHTML = errMessageText; // display err message in div
		return false;
	}
	return true;
}

// Arrival Date Validation
// Package - check that the arrival date is xx days out and check that arrival date is not in the past.
function valPkgMinArrivalDate(selArrivalDate) {

	if(isDateBeforeToday(selArrivalDate)){
			errMessageText=getObject(ErrCodeArrivalDateBeforeToday).value;
			getObject(ERROR_ID).innerHTML = errMessageText; // display err message in div
			return false;
		}

	// add 3 days to today's date
	var todayDate = new Date(TODAYS_DATE.getFullYear(), TODAYS_DATE.getMonth(), TODAYS_DATE.getDate());
	var offsetDays = (selArrivalDate.getTime() - todayDate.getTime())/ONE_DAY; // in days
    offsetDays = Math.ceil(offsetDays);
	if( offsetDays < ARRIVAL_MIN_OFFSET) { //selected date should not be prior to min arrival date
		errMessageText=getObject(ErrCodePkgMinArrivalDate).value;
		getObject(ERROR_ID).innerHTML = errMessageText; // display err message in div
		return false;
	}
	return true;
}

// Package - check that the arrival date is not after max date.
function valPkgMaxArrivalDate(selArrivalDate) {
	// end date of product - min los for package
	if(getObject("MAX_ARR_DATE") != null)
		{
			var strDate = getObject("MAX_ARR_DATE").value;
			var month = strDate.substring(0,2);
			month = month * 1;
			month = month - 1;
			var day = strDate.substring(3,5);
			day = day * 1;
			var year = strDate.substring(6,10);
			year = year * 1;
			maxDate = new Date();
			//maxDate.setMonth(month);
			//maxDate.setDate(day);
			maxDate = new Date(year,month,day);
			END_OF_PROD_DATE = maxDate;
			//alert(END_OF_PROD_DATE);
	}
	var maxArrivalTime = END_OF_PROD_DATE.getTime();// - (MIN_LOS_PKG * ONE_DAY); // in millisecs
	var maxArrivalDate = new Date(maxArrivalTime);
	if( selArrivalDate.getTime() >= maxArrivalTime) { //selected date should not be after max arrival date
		errMessageText=getObject(ErrCodePkgMaxArrivalDate).value;
		getObject(ERROR_ID).innerHTML = errMessageText; // display err message in div
		return false;
	}
	return true;
}

// RoomOnly - check that the arrival date is xx days out and check that arrival date is not in the past.
function valRoomMinArrivalDate(selArrivalDate) {

	if(isDateBeforeToday(selArrivalDate)){
			errMessageText=getObject(ErrCodeArrivalDateBeforeToday).value;
			getObject(ERROR_ID).innerHTML = errMessageText; // display err message in div
			return false;
		}

	// add 1 day to today's date
	var tomorrowsDate = new Date(TODAYS_DATE.getFullYear(), TODAYS_DATE.getMonth(), TODAYS_DATE.getDate()+ MIN_ROOM_ARRIVAL_OFFSET);

	if( selArrivalDate.getTime() < tomorrowsDate.getTime()) { //selected date should be tomorrow or later
		errMessageText=getObject(ErrCodeRoomMinArrivalDate).value;
		getObject(ERROR_ID).innerHTML = errMessageText; // display err message in div
		return false;
	}
	return true;
}

// RoomOnly - check that the arrival date is not after max date.
function valRoomMaxArrivalDate(selArrivalDate) {
	// end date of product - min los for room only
	if(getObject("MAX_ARR_DATE") != null)
	{
		var strDate = getObject("MAX_ARR_DATE").value;
		var month = strDate.substring(0,2);
		month = month * 1;
		month = month - 1;
		var day = strDate.substring(3,5);
		day = day * 1;
		var year = strDate.substring(6,10);
		year = year * 1;
		maxDate = new Date();
		//maxDate.setMonth(month);
		//maxDate.setDate(day);
		maxDate = new Date(year,month,day);
		END_OF_PROD_DATE = maxDate;
		//alert(END_OF_PROD_DATE);
	}

	var maxArrivalTime = END_OF_PROD_DATE.getTime();// - (MIN_LOS_ROOM_ONLY * ONE_DAY); // in millisecs
	var maxArrivalDate = new Date(maxArrivalTime);
	if( selArrivalDate.getTime() >= maxArrivalTime) { //selected date should not be after max arrival date
		errMessageText=getObject(ErrCodeRoomMaxArrivalDate).value;
		getObject(ERROR_ID).innerHTML = errMessageText; // display err message in div
		return false;
	}
	return true;
}

// *****************************************************************************
// Departure Date Validation
// Package - check that the departure date is xx days out.
function valPkgMinDepartureDate(selArrivalDate, selDepartureDate) {

	var durationOfStay = (selDepartureDate.getTime() - selArrivalDate.getTime())/ONE_DAY; // in days
	durationOfStay = Math.ceil(durationOfStay);
	//arrival time - departure time < 2 days
	durationOfStay = Math.ceil(durationOfStay);
	//alert(durationOfStay);
	if( durationOfStay < MIN_PKG_STAY) { //departure - arrival should be more than xx nights
		errMessageText=getObject(ErrCodePkgMinDepartureDate).value;
		getObject(ERROR_ID).innerHTML = errMessageText; // display err message in div
		return false;
	}

	return true;
}

// Package - check that the departure date is not after max date (over 30 day stay or until end of product).
function valPkgMaxDepartureDate(selArrivalDate, selDepartureDate) {

	var durationOfStay = (selDepartureDate.getTime() - selArrivalDate.getTime())/ONE_DAY; // in days
	durationOfStay = Math.ceil(durationOfStay);
	// end date of product - min los for room only
	var maxDepartureTime = END_OF_PROD_DATE.getTime() - (MIN_LOS_ROOM_ONLY * ONE_DAY); // in millisecs
	var maxDepartureDate = new Date(maxDepartureTime);
	
	if( selDepartureDate.getTime() > maxDepartureDate.getTime() ) {
		errMessageText=getObject(ErrCodePkgMaxDepartureDate).value;
		getObject(ERROR_ID).innerHTML = errMessageText; // display err message in div
		return false;

	} else
	
	if(durationOfStay > MAX_PKG_STAY) {
		errMessageText=getObject(ErrCodePkgMaxStayDepartureDate).value;
		getObject(ERROR_ID).innerHTML = errMessageText; // display err message in div
		return false;
	}

	return true;
}

// RoomOnly - check that the departure date is xx days out.
function valRoomMinDepartureDate(selArrivalDate, selDepartureDate) {
	var durationOfStay = (selDepartureDate.getTime() - selArrivalDate.getTime())/ONE_DAY; // in days
	durationOfStay = Math.ceil(durationOfStay);
	//arrival time - departure time < 2 days
	if( durationOfStay < MIN_ROOM_STAY) { //departure - arrival should be more than xx nights
		errMessageText=getObject(ErrCodeRoomMinDepartureDate).value;
		getObject(ERROR_ID).innerHTML = errMessageText; // display err message in div
		return false;
	}
	return true;
}

// RoomOnly - check that the departure date is not after max date (over 30 day stay or until end of product).
function valRoomMaxDepartureDate(selArrivalDate, selDepartureDate) {

	var durationOfStay = (selDepartureDate.getTime() - selArrivalDate.getTime())/ONE_DAY; // in days
	durationOfStay = Math.ceil(durationOfStay);
	/*
	// end date of product - min los for room only
	var maxDepartureTime = END_OF_PROD_DATE.getTime() - (MIN_LOS_ROOM_ONLY * ONE_DAY); // in millisecs
	var maxDepartureDate = new Date(maxDepartureTime);
	if( selDepartureDate.getTime() > maxDepartureTime) { //selected date should not be after max arrival date
		errMessageText=getObject(ErrCodeRoomMaxDepartureDate).value;
		getObject(ERROR_ID).innerHTML = errMessageText; // display err message in div
		return false;
	}
	*/
	if( durationOfStay > MAX_ROOM_STAY) {
		errMessageText=getObject(ErrCodeRoomMaxStayDepartureDate).value;
		getObject(ERROR_ID).innerHTML = errMessageText; // display err message in div
		return false;
	}

	return true;
}
// RoomOnly - check that number in party does not exceed maximum.
function valRoomMaxPartyNumber() {
	var numInParty =parseInt(getObject(ADULT_NUM_SELECT_ID).value) + parseInt(getObject(CHILD_NUM_SELECT_ID).value); // add number of adults and children

	if( numInParty > MAX_ROOM_PARTY_NUM) {
		errMessageText=getObject(ErrCodeRoomMaxPartyNumber).value;
		getObject(ERROR_ID).innerHTML = errMessageText; // display err message in div
		return false;
	}
	return true;
}
// Package - check that number in party does not exceed maximum.
function valPkgMaxPartyNumber() {
	var numInParty =parseInt(getObject(ADULT_NUM_SELECT_ID).value) + parseInt(getObject(CHILD_NUM_SELECT_ID).value); // add number of adults and children

	if( numInParty > MAX_PKG_PARTY_NUM) {
		errMessageText=getObject(ErrCodePkgMaxPartyNumber).value;
		getObject(ERROR_ID).innerHTML = errMessageText; // display err message in div
		return false;
	}
	return true;
}
// check that an age was selected for each child
function valChildAgesProvided() {

	for(i=1;i < getObject(CHILD_NUM_SELECT_ID).options.selectedIndex+1;i++) {

		var str = CHILD_AGE_SELECT_ID + i; // age dropdown

		// check all age dropdowns
		// if any of the age dropdowns has nothing selected, then return an error
		/*
		if(getObject(str).options.selectedIndex==0) {
			errMessageText=getObject(ErrCodeChildAgesProvided).value;
			getObject(ERROR_ID).innerHTML = errMessageText; // display err message in div
			return false;
		}
		*/

	}

	return true;
}

// check that there is one adult for every infant
function valAdultChildRatio(){
	var adultCount=Number(getObject(ADULT_NUM_SELECT_ID).options.selectedIndex+1);
	var infantCount=0;

	for(i=1;i < getObject(CHILD_NUM_SELECT_ID).options.selectedIndex+1;i++) {
		if(getObject(CHILD_AGE_SELECT_ID + i).value < 2) {
			++infantCount; // infant is a child under 2 years old
		}
	}

	if(adultCount < infantCount) {
		errMessageText=getObject(ErrCodeAdultChildRatio).value;
		getObject(ERROR_ID).innerHTML = errMessageText; // display err message in div
		return false;
	}
	return true;
}
// *****************************************************************************
// *****************************************************************************

// Populate arrival and departure dropdowns on Landing Page with default dates
function initDateDropDowns() {
	initSelectDates(ARRIVAL_INPUT_ID);
	initSelectDates(DEPARTURE_INPUT_ID);
	if(getObject(DEFAULT_RADIO_SELECTION) != null)
	{
		getObject(DEFAULT_RADIO_SELECTION).checked=true;
	}
}

