newDate=new Date();
newDate = dateAdd("d",3,newDate);
thisYear=newDate.getFullYear();
thisMonth=newDate.getMonth();
thisDate=newDate.getDate();
months = 13;

var arrival = new CalendarPopup();
arrival.setReturnFunction("CalendarPickReturn");

var depart = new CalendarPopup();
depart.setReturnFunction("CalendarPickReturn");

PresetDateSelectors(months); // Preset Calendar Selection options on form

function CalendarPick(argsThis,calendar) {
	// Called from input image with same name as select fields, ie arrival_ would yield arrival_Day and arrival_Month
	var calForm = argsThis.form;
	dateFld = calForm[argsThis.name+'Day'];
	monthFld = calForm[argsThis.name+'Month'];
	workFld = calForm[argsThis.name+'Date'];
	var month = monthFld.value.substring(0,2);
	var year = monthFld.value.substring(3,7);
	var day = dateFld.value;
	var defdate = month+'/'+day+'/'+year;
	var today = new Date;
	var yesterday = dateAdd("d",-1,today);
	calendar.select(workFld,argsThis.name,'MM/dd/yyyy',defdate);
	calendar.setYearSelectStartOffset(0); //this year forward
	calendar.addDisabledDates(null,formatDate(yesterday,"yyyy-MM-dd")); // Disable dates prior to today
	calendar.showCalendar(argsThis.name);
}

function CalendarPickReturn(y,m,d) {
	var selmonth = m-1-thisMonth; // calendar month # minus 1 minus first month number
	var years = y-thisYear; // multiple years?
	selmonth = selmonth + (years * 12); // add 12 months for each year difference
	if(selmonth < 0) selmonth = 0;
	if(selmonth > months) selmonth = 0;
	monthFld.selectedIndex=selmonth;
	dateFld.selectedIndex=d-1;
	checkDates(monthFld);
}

//Preset Date Selection//////////////////////////////////////////////////////////
function PresetDateSelectors(months){
	// Expects thisYear, thisMonth, thisDate to be global with current date.
	var myform=document.aspnetForm;//reference
	var MonthArray = new Array("Empty","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	//var MonthArray = new Array("Empty","Jan","February","March","April","May","June","July","August","September","October","November","December");
	var realmonthindex_array = new Array(01,02,03,04,05,06,07,08,09,10,11,12);
	var monval = '';
	var ctrMonth = thisMonth; // start counting from current month
	var ctrYear = thisYear; // start counting from current year
	//alert(thisDate);
	myform.hotelReservation_inDay.selectedIndex = thisDate-1; // default arrival date
	
	//checkDates(myform.hotelReservation_inMonth);
	myform.hotelReservation_inMonth.options.length = null; // clear all select options
	myform.hotelReservation_outMonth.options.length = null; // clear all select options
	
	// build the associative array for the month drop downs
	for(i=0;i < months;i++){
		monval = ctrMonth+1;
		if(monval < 10) monval = "0"+monval; // string for select value
		if(ctrYear == thisYear ) {
			// Set month without using year in text, ie January
			var newOption = new Option(MonthArray[ctrMonth+1],monval + "_" + ctrYear);
			var newOption2 = new Option(MonthArray[ctrMonth+1],monval + "_" + ctrYear);
		}
		else {
			// Set month using year in text, ie January 2005
			var newOption = new Option(MonthArray[ctrMonth+1]+" " + ctrYear,monval + "_" + ctrYear);
			var newOption2 = new Option(MonthArray[ctrMonth+1]+" " + ctrYear,monval + "_" + ctrYear);
		}
		myform.hotelReservation_inMonth.options[i] = newOption;
		myform.hotelReservation_outMonth.options[i] = newOption2;
		if(ctrMonth == thisMonth & ctrYear == thisYear) myform.hotelReservation_inMonth.selectedIndex = i;
		ctrMonth++;
		if( ctrMonth > 11) {
			ctrMonth = 0; // reset month
			ctrYear++; // move to next year
		}
	}
	checkDates(myform.hotelReservation_inMonth);
} // End PresetDateSelectors()

function determineyear(month,day){
	thisDate=new Date();
	thisYear=thisDate.getFullYear();
	thisMonth=thisDate.getMonth();
	thisDay=thisDate.getDate();
	if(month<thisMonth){year=thisYear+1;}
		else {if(month==thisMonth){
		if(day>=thisDay){year=thisYear;}
		else{year=thisYear+1;}
	}else{year=thisYear;}}
		return year;
    }

//leap year calculation////////////////////////////////////////////////////////////////
function isLeapYear(year){
	if((year%4==0 && year%100!=0)||year%400==0)return true; else return false;
}
       
//max day of the month/////////////////////////////////////////////////////////////////
function maxDay(month,year){
	if(isLeapYear(year)){
		maxDayMonth=new Array(31,29,31,30,31,30,31,31,30,31,30,31);
	}else{
		maxDayMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	}
	return maxDayMonth[month];
}

//calculate dates/nights based on user change/////////////////////////////////////////
function checkDates(argsThis,argsPrefix){
	var calForm = argsThis.form;
	//inMonthFld = calForm[argsPrefix+'_inMonth'];
	//inDayFld = calForm[argsPrefix+'_inDay'];
	//outMonthFld = calForm[argsPrefix+'_outMonth'];
	//outDayFld = calForm[argsPrefix+'_outDay'];
	//nightsFld = calForm[argsPrefix+'_nights'];
	var nights;
	var inDate,inDay,inMonth,inYear;
	var outDate,outDay,outMonth,outYear;
	//form=document.th_start;//reference
	ms=86400000; //ms in 24 hours
	
	// build the associative array for the month drop downs
	var month_array = new Array();
	for(i=0;i < calForm.hotelReservation_inMonth.options.length;i++){
		month_array[calForm.hotelReservation_inMonth.options[i].value] = i;
	}
	
	// build the associative array to take zero based months and create the actual month
	var realmonthindex_array = new Array(01,02,03,04,05,06,07,08,09,10,11,12);
	inDay=calForm.hotelReservation_inDay.selectedIndex+1;
	inMonthYear = calForm.hotelReservation_inMonth.options[calForm.hotelReservation_inMonth.selectedIndex].value;
	splitInStr = inMonthYear.split("_");
	inMonth = splitInStr[0]-1;
	inYear = splitInStr[1];
	
	outDay=calForm.hotelReservation_outDay.selectedIndex+1;
	outMonthYear = calForm.hotelReservation_outMonth.options[calForm.hotelReservation_outMonth.selectedIndex].value;
	splitOutStr = outMonthYear.split("_");
	outMonth = splitOutStr[0]-1;
	outYear = splitOutStr[1];

	//check maximum day, set inDay, outDay
	if(inDay>maxDay(inMonth,inYear)){ inDay=maxDay(inMonth,inYear);}
	if(outDay>maxDay(outMonth,outYear)){ outDay=maxDay(outMonth,outYear);}

	//create date objects
	inDate=new Date(inYear,inMonth,inDay);
	outDate=new Date(outYear,outMonth,outDay);

	//modify boxes depending on what box changed
	if(argsThis.name=='nights'){
		nights=calForm.nights.selectedIndex+1;
		outDate.setTime(inDate.getTime()+nights*ms);
	}else if(argsThis.name=='hotelReservation_inDay' || argsThis.name=='hotelReservation_inMonth'){
		nights=calForm.nights.selectedIndex+1;
		outDate.setTime(inDate.getTime()+nights*ms);
	}else if(argsThis.name=='hotelReservation_outDay' || argsThis.name=='hotelReservation_outMonth'){
		nights=(outDate-inDate)/ms;
	}
	// build the new month values
	inMonthNew = realmonthindex_array[inDate.getMonth()] + "_" + inDate.getFullYear();
	if( inMonthNew.length == 6 ) inMonthNew = "0" + inMonthNew;
	outMonthNew = realmonthindex_array[outDate.getMonth()] + "_" + outDate.getFullYear();
	if( outMonthNew.length == 6 ) outMonthNew = "0" + outMonthNew;

	calForm.hotelReservation_inMonth.selectedIndex=month_array[inMonthNew];
	calForm.hotelReservation_inDay.selectedIndex=inDate.getDate()-1;
	calForm.hotelReservation_outMonth.selectedIndex=month_array[outMonthNew];
	calForm.hotelReservation_outDay.selectedIndex=outDate.getDate()-1;
	calForm.nights.selectedIndex=nights-1;
}

function dateAdd(argPart,number,argDate){
	var date = argDate; //parseDate(argDate);
	var dateObj = new Object();
	dateObj["yyyy"] = date.getFullYear();
	dateObj["m"] = date.getMonth();
	dateObj["d"] = date.getDate();
	dateObj["h"] = date.getHours();
	dateObj["n"] = date.getMinutes();
	dateObj["s"] = date.getSeconds();		
	dateObj["w"] = 0;//won't use. just here to keep from breaking.
	dateObj["q"] = 0;
	dateObj["ww"] = 0;
	dateObj["y"] = date.getDate();
	dateObj[argPart] = dateObj[argPart] + number;
	
	return new Date(dateObj["yyyy"],dateObj["m"],dateObj["d"],dateObj["h"],dateObj["n"],dateObj["s"]);
}