function validateResrv(formData) 
{
var validity=true;

var arrMonthField = formData.inmonth;
var arrDayField   = formData.inday;
var arrYearField  = formData.inyear;
var depMonthField = formData.outmonth;
var depDayField   = formData.outday;
var depYearField  = formData.outyear;

if (!isBrowserSupp()) 
	{	
	return validity;
	}
var inMIdx   = arrMonthField.options.selectedIndex;
var outMIdx  = depMonthField.options.selectedIndex;
var inDIdx   = arrDayField.options.selectedIndex;
var outDIdx  = depDayField.options.selectedIndex;
var inYrIdx  = arrYearField.options.selectedIndex;
var outYrIdx = depYearField.options.selectedIndex;

inDate = new Date (parseInt(arrYearField.options[inYrIdx].text), inMIdx, inDIdx + 1);
outDate = new Date (parseInt(depYearField.options[outYrIdx].text), outMIdx, outDIdx + 1);

var inDtVal = inDate.getTime();
var outDtVal = outDate.getTime();

var currentTime = new Date();
var curDate = ( new Date( currentTime.getYear(), currentTime.getMonth(), currentTime.getDate() ) ).getTime();
if (inDtVal > outDtVal) {

	alert("The Departure date selected is invalid." );
	validity= false;

} else if ( ( inDtVal < curDate ) && ( outDtVal < curDate ) ) { 

	alert( "The arrival and departure dates are invalid." );
	validity= false;

} else if ( inDtVal < curDate ) { 

	alert( "The Arrival date selected is invalid." );
	validity= false;

} else if ( outDtVal < curDate ) { 

	alert( "The Departure date selected is invalid." );
	validity= false;

} else {
	var numDays = Math.round((outDtVal-inDtVal)/(1000*60*60*24));
	if (numDays > 21)
		{
		alert("We are sorry.  You cannot make reservations for more than 21 days.\nPlease adjust your arrival and departure dates and resubmit your request.");
		validity= false;
		}
	}
return validity;
}

function isBrowserSupp() {
    version =  parseFloat( navigator.appVersion );

    if ( ( version >= 2.0 ) && ( version < 2.1 ) && ( navigator.appName.indexOf( "Netscape" ) != -1 ) ) {
        return false;
    }
    else {
	return true;
    }
}

function isLeapYear(yrStr)
{
var leapYear=false;
var year = parseInt(yrStr, 10);
if (year%4 == 0)
	{
	leapYear=true;
	if (year%100 == 0)
		{
		leapYear=false;
		if (year%400 == 0)
			{
			leapYear=true;
			}
		}
	}
return leapYear;
}

function getDaysInMonth(mthIdx, YrStr)
{
var maxDays=31
if (mthIdx==1) 
	{
	if (isLeapYear(YrStr))
		{
		maxDays=29;
		}
	else 
		{
		maxDays=28;
		}
	}
if (mthIdx==3 || mthIdx==5 || mthIdx==8 || mthIdx==10)
	{
	maxDays=30;
	}
return maxDays;
}

function adjustDate(mthIdx, Dt, Yr) 
{
var value=0; 		
var numDays=getDaysInMonth(mthIdx, Yr.options[Yr.options.selectedIndex].text);

if (mthIdx==1) 
	{
	if (Dt.options.selectedIndex + 1 < numDays)
		{
		return 0;
		}
	else 
		{
		Dt.options.selectedIndex=numDays - 1;
		if (numDays==29)
			{
			return 99;
			}
		else 
			{
			return 1;
			}
		}
	}
if (Dt.options.selectedIndex + 1 < numDays)
	{
	value=0;
	}
else 
	{
	if (Dt.options.selectedIndex + 1 > numDays)
		{
		Dt.options.selectedIndex--;
		value=3;
		}
	else 
		{
		value=2;
		}
	}
return value;
}

function getIndex (val, field) {
	var i;
	for (i = 0; i < field.length; i++) {
		if (val == field.options[i].text) {
			return i;
		}
	}
	return -1;
}

function inMonthChange( inM, outM, inD, outD, inY, outY ) {

	if ( !isBrowserSupp() ) {

		return;
	}

	var res = adjustDate(inM.options.selectedIndex, inD,inY);

	if ( res != 0 ) {
		outD.options.selectedIndex=0;
		outM.options.selectedIndex = inM.options.selectedIndex + 1;
	} else {
		outM.options.selectedIndex = inM.options.selectedIndex;
		outD.options.selectedIndex = inD.options.selectedIndex + 1;
	}

	outY.options.selectedIndex = inY.options.selectedIndex;

	var currentMonth = ( new Date() ).getMonth();
	if ( ( inM.options.selectedIndex == 11 ) && ( inD.options.selectedIndex == 30 ) ) {
		outM.options.selectedIndex=0;
		outY.options.selectedIndex++;
	}
	if ( ( inM.options.selectedIndex < currentMonth ) && (inY.options.selectedIndex == 0 ) ) {
		if ( inY.selectedIndex < ( inY.options.length - 1 ) )
			inY.options.selectedIndex++;
			outY.options.selectedIndex = inY.options.selectedIndex;		
	}

	return;
}

function inDayChange(inD, outD, inM, outM, inY, outY) 
{
if (!isBrowserSupp())
	{
 	return;
	}			
var Inmth = inM.options.selectedIndex;

var res =adjustDate(Inmth, inD, inY)
if (res != 0)
	{
	outD.options.selectedIndex=0;
	outM.options.selectedIndex=inM.options.selectedIndex + 1;
	}
else
	{
	outM.options.selectedIndex = inM.options.selectedIndex;
	outD.options.selectedIndex = inD.options.selectedIndex+1;
	}
outY.options.selectedIndex = inY.options.selectedIndex;
if ((inM.options.selectedIndex == 11) && (inD.options.selectedIndex == 30))
	{
	outM.options.selectedIndex=0;
	outY.options.selectedIndex++;
	}
return;
}

function inYearChange(inY, outY, inM, outM, inD, outD) 
{
if (!isBrowserSupp()) 
	{
	return;			
	}

outY.options.selectedIndex = inY.options.selectedIndex;
adjustDate(inM.options.selectedIndex, inD,inY);
return;
}	

function outMonthChange(outM, outD, outY) {

	if ( !isBrowserSupp() ) {
		return;			
	}

	adjustDate( outM.options.selectedIndex, outD, outY );	

	return;	
}


function outDayChange(outD, outM, outY) 
{
if (!isBrowserSupp())
	{
	return;			
	}

adjustDate(outM.options.selectedIndex,outD,outY);		
return;	
}


function outYearChange(outY, outM, outD) 
{
if (!isBrowserSupp())
	{
	return;			
	}

adjustDate(outM.options.selectedIndex,outD,outY);		
return;	
}

function nextMonth(month) 
{
if (month==11)
	{
	return 0;
	}
else
	{
	return (month+1);
	}
}


function prevMonth(month) 
{
var prevMonth = (month-1)
if (month==0)
	{
	prevMonth = 11;
	}
return prevMonth
}

function changeYear(direction,month,year)
{
var theYear = year
if (direction=="next")
	{
	if (month == 11)
		{
		theYear = (year+1)
		}
	}
if (direction=="prev")
	{
	if (month == 0)
		{
		theYear = (year-1)
		}
	}
return theYear
}

function createCalendar(month,year,io) {

if (!isBrowserSupp()) {

	alert("Your browser appears to be outdated and does not support this feature.")
 	return;
	}
if (navigator.appVersion.indexOf("Mac",0) != -1)  {calendarWindow=window.open("","Calendar","width=230,height=265,resizable=yes,scrollbars=no"); 
	}
	else  {calendarWindow=window.open("","Calendar","width=230,height=345,resizable=yes,scrollbars=no");
  	}
var mthIdx = month.options.selectedIndex
var yearVal = year.options[year.options.selectedIndex].text
generateCalendar(calendarWindow,mthIdx,yearVal,io)
}

function generateCalendar(target,mthIdx,year,io) 
{
if (!isBrowserSupp())
	{
 	return;
	}	
var monthName = new Array ("January","February","March","April","May","June","July","August","September","October","November","December")
target.document.open()
calendar = "<html><head><title>calendar</title></head><body bgcolor=FFFFFF link=000000 vlink=ff6633 alink=000000>"
calendar +="<table border=0 cellspacing=0 cellpadding=4 width=200>"
calendar +="<tr valign=top>"
var endday = getDaysInMonth(mthIdx, year)
calendar +="<td colspan=7 align=center bgcolor=#FFD7AE>"
calendar +="<b><font face='Georgia,Times New Roman,Times,serif' color='black'>" + monthName[mthIdx] + " " + year + "</font></b></td></tr>"
calendar +="</tr><tr align=center>"
calendar +="<td width=10><font face='Helvetica,Arial,Futura' color='#FF0000'>&nbsp;<b>S</b></font></td>"
calendar +="<td width=10><font face='Helvetica,Arial,Futura'>&nbsp;<b>M</b></font></td>"
calendar +="<td width=10><font face='Helvetica,Arial,Futura'>&nbsp;<b>T</b></font></td>"
calendar +="<td width=10><font face='Helvetica,Arial,Futura'>&nbsp;<b>W</b></font></td>"
calendar +="<td width=10><font face='Helvetica,Arial,Futura'>&nbsp;<b>T</b></font></td>"
calendar +="<td width=10><font face='Helvetica,Arial,Futura'>&nbsp;<b>F</b></font></td>"
calendar +="<td width=10><font face='Helvetica,Arial,Futura' color='#FF0000'>&nbsp;<b>S</b></font></td>"
calendar +="</tr>"
thedate = new Date (year, mthIdx, 1);
firstDay = thedate.getDay()

selectedmonth = mthIdx;
var today = new Date();
var thisyear = today.getYear() + 1900;

selectedyear = year

var lastDay = (endday + firstDay+1)

calendar +="<tr>"
for (var i = 1; i < lastDay; i++)
	{
	if (i <= firstDay)
		{
		calendar +="<td><font face='Georgia,Times New Roman,Times,serif'>&nbsp;</font></td>"
		}
	else 
		{
		calendar +="<td align=center><font face='Georgia,Times New Roman,Times,serif'><a href='JavaScript:self.close();opener.closeCalendar"+io+"("+(i-firstDay) + ")'> "+(i-firstDay)+"</a></font></td>"
		}
	if (i % 7 == 0 &&  i != lastDay)
		{
		calendar +="</tr><tr>"
		}
	}
calendar +="</tr>"
calendar +="<tr><td colspan=7 align=center width=200><hr noshade></td></tr>"
var goPrevMonth = prevMonth(mthIdx)
var goNextMonth = nextMonth(mthIdx)
var nextYear = changeYear("next",mthIdx,parseInt(year))
var prevYear = changeYear("prev",mthIdx,parseInt(year))

if(navigator.userAgent.indexOf('MSIE',0) != -1)
	{
	calendar +="<tr><td align=left colspan=3><font face='Georgia,Times New Roman,Times,serif'><a href='javascript:opener.generateCalendar(self,"+goPrevMonth+","+prevYear+",&quot;"+io+"&quot;)'>prev</a></font></td>"
	calendar +="<td align=center colspan=1>&nbsp;</td>"
	calendar +="<td align=right colspan=3><font face='Georgia,Times New Roman,Times,serif'><a href='javascript:opener.generateCalendar(self,"+goNextMonth+","+nextYear+",&quot;"+io+"&quot;)'>next</a></font></td></tr>"
	calendar +="</table></body></html>"
	target.document.close()
	}
else
	{
	calendar +="<form><tr><td align=left colspan=3><input type=button value=' < '"+"onClick='document.clear();opener.generateCalendar(opener.calendarWindow,\"+goPrevMonth+\",\"+prevYear+\",&quot;\"+io+\"&quot;)'></td>"
	calendar +="<td align=center colspan=1>&nbsp;</td>"
	calendar +="<td align=right colspan=3><input type=button value=' > '"+"onClick='document.clear();opener.generateCalendar(opener.calendarWindow,\"+goNextMonth+\",\"+nextYear+\",&quot;\"+io+\"&quot;)'></td></tr></form>"
	calendar +="</table></body></html>"
	}
target.document.write(calendar);
target.document.close()	
}
function closeCalendarIn(day)
{
var arrMonthField = document.resrvForm.inmonth;
var arrDayField   = document.resrvForm.inday;
var arrYearField  = document.resrvForm.inyear;
var depMonthField = document.resrvForm.outmonth;
var depDayField   = document.resrvForm.outday;
var depYearField  = document.resrvForm.outyear;

var yrIdx = getIndex (selectedyear,arrYearField );

arrMonthField.options.selectedIndex=selectedmonth;
arrYearField.options.selectedIndex= yrIdx;
arrDayField.options.selectedIndex=parseInt(day) - 1;
var res = adjustDate(selectedmonth, arrDayField, arrYearField); 
if (res != 0)
	{
	depDayField.options.selectedIndex=0;
	depMonthField.options.selectedIndex = arrMonthField.options.selectedIndex+1;
	}
else 
	{
	depMonthField.options.selectedIndex = arrMonthField.options.selectedIndex;
	depDayField.options.selectedIndex = arrDayField.options.selectedIndex+1;
	}
depYearField.options.selectedIndex = arrYearField.options.selectedIndex;
if ((arrMonthField.options.selectedIndex == 11) && (arrDayField.options.selectedIndex == 30))
	{
	depMonthField.options.selectedIndex=0;
	depYearField.options.selectedIndex++;
	}
return;
}

function closeCalendarOut(day)
{
var depMonthField = document.resrvForm.outmonth;
var depDayField   = document.resrvForm.outday;
var depYearField  = document.resrvForm.outyear;

var yrIdx = getIndex (selectedyear,depYearField );
depMonthField.options.selectedIndex=selectedmonth;
depYearField.options.selectedIndex=yrIdx;
depDayField.options.selectedIndex=parseInt(day) - 1;
var res = adjustDate(selectedmonth, depDayField, depYearField); 
}
