//function which handles checking the entire res form for errors before submitting
function validateResrv(formData) 
{
var validity=true;
if (!isBrowserSupp()) 
        {       
        return validity;
        }
if (!IsNgOut(formData.nights))
        {       
        return false;
        }
ChkInNg(document.resvForm)
//var outMIdx = parseMonth(formData.outmonth.options[formData.outmonth.options.selectedIndex].text, formData.outmonth);
//var outDIdx = parseDay(formData.outday.options[formData.outday.options.selectedIndex].text, formData.outday);
var inMIdx = parseMonth(formData.monthin.options[formData.monthin.options.selectedIndex].text, formData.monthin);
var inDIdx = parseDay(formData.dayin.options[formData.dayin.options.selectedIndex].text, formData.dayin);
var inYrIdx = formData.yearin.options.selectedIndex;
//var outYrIdx = formData.outyear.options.selectedIndex;

inYrUTC = ((parseInt(formData.yearin.options[inYrIdx].text)) );
//outYrUTC = ((parseInt(formData.outyear.options[outYrIdx].text)) );
inMUTC = (inMIdx - 1);
//outMUTC = (outMIdx - 1);
inDUTC = inDIdx + 1;
//outDUTC =outDIdx + 1;

inDate = new Date (Date.UTC(inYrUTC, inMUTC, inDUTC, 0, 0, 0));
//outDate = new Date (Date.UTC(outYrUTC, outMUTC, outDUTC, 0, 0, 0 ));

var inDtVal = inDate.getTime();
//var outDtVal = outDate.getTime();

//block booking for less than 2 days before arrival
okd = new Date ();
var ng = 3 + okd.getUTCDate();
okd.setUTCDate(ng);
var okdate = okd.getTime();

//if (inDtVal <= okdate)
//{
//alert("Your requested check-in date is upcoming. Please contact our live agent to help you book a room.");
//window.location="http://www.yahoo.com";
//window.location="http://hc2.humanclick.com/hc/88551098/?cmd=file&file=visitorWantsToChat&site=88551098&byhref=1";
//return false;
//}
//end block booking

today = new Date ();
var cdate = today.getTime();

if (inDtVal <= cdate)
{
alert("Invalid Arrival date selected");
validity=false;
}
else
{
var num = Math.round((inDtVal-cdate)/(1000*60*60*24));

if (num<0)
{
alert("Cannot make reservation in the past");
validity=false;
}
else
{
//if (inDtVal >= outDtVal) 
//		{
//        //alert("Invalid Departure date selected " + inDate + "/" + outDate);
//        alert("Invalid Departure date selected");
//        validity= false;
//        }
}
}
if (validity)
{
if (inMIdx == 4 || inMIdx == 6 || inMIdx == 9 || inMIdx == 11)
	{ if (inDIdx == 31)
		{ alert("Invalid Arrival date selected");
		  validity = false; }
	}
else
	{ if (inMIdx == 2)
		{ if ((inYrUTC%4) == 0)
			{ if (inDIdx > 29)
				{ alert("Invalid Arrival date selected");
				  validity = false; }
			}
		  else
			{ if (inDIdx > 28)
				{ alert("Invalid Arrival date selected");
				  validity = false;}
			}
		}
	}
}


return validity;
}

//converts month string from form into number for use later     
function getMonthNumber(input)
{
if (input == "January")
        {return "1"}
if (input == "February")
        {return "2"}
if (input  == "March")
        {return "3"}
if (input  == "April")
        {return "4"}
if (input  == "May")
        {return "5"}
if (input  == "June")
        {return "6"}
if (input == "July")
        {return "7"}
if (input  == "August")
        {return "8"}
if (input  == "September")
        {return "9"}
if (input  == "October")
        {return "10"}
if (input == "November")
        {return "11"}
if (input  == "December")
        {return "12"}
}


//checks if browser is Netscape 2.0 since the options array properties don't work with Netscape 2.0x
function isBrowserSupp() 
{
if (((navigator.appVersion.indexOf("2.0")) != -1) && (navigator.appName.indexOf("Netscape") != -1))
        {
        return false;
        }
else 
        {
        return true;
        }
}


function isLeapYear(yrStr)
{
var leapYear=false;
if ((parseInt(yrStr, 10)%4) == 0)
        {
        leapYear=true;
        }
return leapYear;
}


function getDaysmonthin(mthIdx, YrStr)
{
var maxDays=31
if (mthIdx==2) 
        {
        if (isLeapYear(YrStr))
                {
                maxDays=29;
                }
        else 
                {
                maxDays=28;
                }
        }
if (mthIdx==4 || mthIdx==6 || mthIdx==9 || mthIdx==11)
        {
        maxDays=30;
        }
return maxDays;
}


//the function which does some magic to the date fields
function adjustDate(mthIdx, Dt, Yr) 
{
var value=0;            
var numDays=getDaysmonthin(mthIdx, Yr.options[Yr.options.selectedIndex].text);

if (mthIdx==2) 
        {
        if (Dt.options.selectedIndex < numDays)
                {
                return 0;
                }
        else 
                {
                //check for leap year
                Dt.options.selectedIndex=numDays;
                if (numDays==29)
                        {
                        return 99;
                        }
                else 
                        {
                        return 1;
                        }
                }
        }
if (Dt.options.selectedIndex < numDays)
        {
        value=0;
        }
else 
        {
        if (Dt.options.selectedIndex > numDays)
                {
                Dt.options.selectedIndex--;
                value=3;
                }
        else 
                {
                //index is 31 or 30
                value=2;
                }
        }
return value;
}


function parseMonth(mth, inM)
{
var i=1;
var retval =1;
for (i=1;i<=12;i++)
        {
        if (mth == inM.options[i].text)
                {
                retval=i;       
                break;
                }       
        }
        return retval;
}

function parseDay(day, inD)
{
var i=1;
var retval =1;
for (i=1;i<=31;i++)
        {
        if (day == inD.options[i].text)
                {
                retval=i;       
                break;
                }       
        }
return retval;
}

function parseYear(year, inY)
{
var retval=0;
var i=0;
     for (i=0; i<=1; i++)
     {
   
        if (year == inY.options[i].text)
                {
                retval=i;       
                break;
                }       
     }
return retval;
}

//changes departure month when arrival month is changed
function monthinChange(inM, outM, inD, outD, inY, outY) 
{
if (!isBrowserSupp())
        {
        return;
        }
inM.options.selectedIndex = parseMonth(inM.options[inM.options.selectedIndex].text, inM);
inD.options.selectedIndex = parseDay(inD.options[inD.options.selectedIndex].text, inD);
var res = adjustDate(inM.options.selectedIndex, inD,inY);
if (res != 0)
        {
//        outD.options.selectedIndex=1;
//        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 == 12) && (inD.options.selectedIndex == 31))
        {
//        outM.options.selectedIndex=1;
//        outY.options.selectedIndex++;
        }
if (document.resvForm.calflg.value == "")
	{
//	ChkInNg(document.resvForm);
	}	
return;
}
        

//changes departure day when arrival day is changed
function dayinChange(inD, outD, inM, outM, inY, outY) 
{
if (!isBrowserSupp())
        {
        return;
        }                       
var Inmth = inM.options.selectedIndex;
inM.options.selectedIndex = parseMonth(inM.options[Inmth].text, inM);
inD.options.selectedIndex = parseDay(inD.options[inD.options.selectedIndex].text, inD);

var res =adjustDate(Inmth, inD, inY)
if (res != 0)
        {
//        outD.options.selectedIndex=1;
//        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 == 12) && (inD.options.selectedIndex == 31))
        {
//        outM.options.selectedIndex=1;
//        outY.options.selectedIndex++;
        }
if (document.resvForm.calflg.value == "")
	{
//	ChkInNg(document.resvForm);
	}		
return;
}
        

//changes departure year when arrival year is changed
function yearinChange(inY, outY, inM, outM, inD, outD) 
{
if (!isBrowserSupp()) 
        {
        return;                 
        }
inM.options.selectedIndex = parseMonth(inM.options[inM.options.selectedIndex].text, inM);
//outY.options.selectedIndex = inY.options.selectedIndex;
adjustDate(inM.options.selectedIndex, inD,inY);
if (document.resvForm.calflg.value == "")
	{
//	ChkInNg(document.resvForm);
	}
return;
}       



//Calendar Section

//calculation functions
function nextMonth(month) 
{
if (month==12)
        {
        return 1;
        }
else
        {
        return (month+1);
        }
}


function prevMonth(month) 
{
var prevMonth = (month-1)
if (month==1)
        {
        prevMonth = 12;
        }
return prevMonth
}

//increments or decrements month when it goes past Jan or Dec
function changeYear(direction,month,year)
{
var theYear = year
if (direction=="next")
        {
        if (month == 12)
                {
                theYear = (year+1)
                }
        }
if (direction=="prev")
        {
        if (month == 1)
                {
                theYear = (year-1)
                }
        }
return theYear
}


//opens a new window for the calendar
function createCalendar(month,year,io) 
{
document.resvForm.calflg.value = "";
if (!isBrowserSupp())
        {
        alert("Your browser is outdated and does not support this feature")
        return;
        }
if (navigator.appVersion.indexOf("Mac",0) != -1) 
        {
        calendarWindow = window.open("","Calendar","width=240,height=265,resizable=yes,scrollbars=no");
        } 
else 
        {
        calendarWindow = window.open("","Calendar","width=240,height=300,resizable=yes,scrollbars=no");
        }
var mthIdx = month.options.selectedIndex
var mthVal = getMonthNumber(month.options[mthIdx].text)
var yearVal = year.options[year.options.selectedIndex].text
//call the function to populate the window
generateCalendar(calendarWindow,mthVal,yearVal,io)
document.resvForm.calflg.value = "cal";
}


//generates the meat of the calendar
function generateCalendar(target,month,year,io) 
{
if (!isBrowserSupp())
        {
        return;
        }       
var monthName = new Array ("January","February","March","April","May","June","July","August","September","October","November","December")

//begin table for calendar
target.document.open()
calendar = "<html><head><title>calendar</title></head><body bgcolor=#FFFFFF >"
calendar += "<TABLE BORDER=05 CELLSPACING=0 CELLPADDING=0 WIDTH=20%>"
calendar += "<TR><TD>"
calendar +="<table border=0 cellspacing=0 cellpadding=4 width=200 BGCOLOR=#FFFFCC>"
calendar +="<tr valign=top>"

var mthIdx = parseInt(month);
var endday = getDaysmonthin(mthIdx, year)

//month header
calendar +="<td colspan=7 align=center bgcolor=#000099>"
var index = (mthIdx-1)
calendar +="<b><font face='Helvetica,Arial,Futura' color='#FFFF00' >" + monthName[index] + " " + year + "</font></b></td></tr>"

//writes in the day of the week labels
calendar +="<tr align=center BGCOLOR=#000099 >"
calendar +="<td width=10><font face='Helvetica,Arial,Futura' color='#FFFF00' size=1>&nbsp;<b>S</b></font></td>"
calendar +="<td width=10><font face='Helvetica,Arial,Futura' COLOR=#FFFF00 size=1>&nbsp;<b>M</b></font></td>"
calendar +="<td width=10><font face='Helvetica,Arial,Futura' COLOR=#FFFF00 size=1>&nbsp;<b>T</b></font></td>"
calendar +="<td width=10><font face='Helvetica,Arial,Futura' COLOR=#FFFF00 size=1>&nbsp;<b>W</b></font></td>"
calendar +="<td width=10><font face='Helvetica,Arial,Futura' COLOR=#FFFF00 size=1>&nbsp;<b>T</b></font></td>"
calendar +="<td width=10><font face='Helvetica,Arial,Futura' COLOR=#FFFF00 size=1>&nbsp;<b>F</b></font></td>"
calendar +="<td width=10><font face='Helvetica,Arial,Futura' color='#FFFF00' size=1>&nbsp;<b>S</b></font></td>"
calendar +="</tr>"

wholeDate = month + "/01/" + year
thedate = new Date(wholeDate)
firstDay = thedate.getDay()

selectedmonth = mthIdx;
var today = new Date();
var thisyear = today.getYear() + 1900;
//adb selectedyear = document.resvForm.yearin.options.selectedIndex
selectedyear = year

var lastDay = (endday + firstDay+1)
var col = 0;
calendar +="<tr>"
for (var i = 1; i < lastDay; i++)
        {
        if (i <= firstDay)
                {
                // 'empty' boxes prior to first day
                calendar +="<td>&nbsp;</td>"
                }
        else 
                {
                // enter date number
                calendar +="<td align=center><a href='JavaScript:self.close();opener.closeCalendar"+io+"("+(i-firstDay) + ")'> "+(i-firstDay)+"</a></td>"
                }
		col++;
        //must start new row after each week
        if (i % 7 == 0 &&  i != lastDay)
                {
                calendar +="</tr><tr>";
				col = 0;
                }
        }
if (col > 0)
	{
	for (i = col + 1; i < 8; i++)
		{
		calendar +="<td>&nbsp;</td>"
		}
		
	}		
calendar +="</tr>"

//separator line
//calendar +="<tr><td colspan=7 align=center width=200><hr noshade></td></tr>"

//next month and previous month buttons
var goPrevMonth = prevMonth(mthIdx)
var goNextMonth = nextMonth(mthIdx)
var nextYear = changeYear("next",parseInt(month),parseInt(year))
var prevYear = changeYear("prev",parseInt(month),parseInt(year))

if(navigator.userAgent.indexOf('MSIE',0) != -1)
        {
        calendar +="<tr><td align=left colspan=3 bgcolor=#CCFFFF><a href='javascript:opener.generateCalendar(self,"+goPrevMonth+","+prevYear+",\""+io+"\")'>prev</a></td>"
        calendar +="<td align=center colspan=1 bgcolor=#CCFFFF>&nbsp;</td>"
        calendar +="<td align=right colspan=3 bgcolor=#CCFFFF><a href='javascript:opener.generateCalendar(self,"+goNextMonth+","+nextYear+",\""+io+"\")'>next</a></td></tr>"
        calendar +="</table></td></tr></table></body></html>"
        target.document.close()
        }
else
        {
        calendar +="<form><tr><td align=left colspan=3 bgcolor=#A7CCDC><input type=button value=' < '"+
"onClick='document.clear();opener.generateCalendar(opener.calendarWindow,"+goPrevMonth+","+prevYear+",\""+io+"\")'></td>"
        calendar +="<td align=center colspan=1 bgcolor=#A7CCDC>&nbsp;</td>"
        calendar +="<td align=right colspan=3 bgcolor=#A7CCDC><input type=button value=' > '"+
"onClick='document.clear();opener.generateCalendar(opener.calendarWindow,"+goNextMonth+","+nextYear+",\""+io+"\")'></td></tr></form>"
        calendar +="</table></td></tr></table></body></html>"
        }
target.document.write(calendar);
target.document.close() 
}

//changes date when a date is clicked
function closeCalendarIn(day)
{
var yrIdx = parseYear(selectedyear,document.resvForm.yearin );

document.resvForm.monthin.options.selectedIndex=selectedmonth;
//adb document.resvForm.yearin.options.selectedIndex= selectedyear;
document.resvForm.yearin.options.selectedIndex= yrIdx;
document.resvForm.dayin.options.selectedIndex=parseInt(day);
var res = adjustDate(selectedmonth, document.resvForm.dayin, document.resvForm.yearin); 
if (res != 0)
        {
//        document.resvForm.outday.options.selectedIndex=1;
//        document.resvForm.outmonth.options.selectedIndex =      	     	document.resvForm.monthin.options.selectedIndex+1;
        }
else 
        {
//        document.resvForm.outmonth.options.selectedIndex = document.resvForm.monthin.options.selectedIndex;
//        document.resvForm.outday.options.selectedIndex = document.resvForm.dayin.options.selectedIndex+1;
        }
//document.resvForm.outyear.options.selectedIndex = document.resvForm.yearin.options.selectedIndex;
if ((document.resvForm.monthin.options.selectedIndex == 12) && (document.resvForm.dayin.options.selectedIndex == 31))
        {
//        document.resvForm.outmonth.options.selectedIndex=1;
//        document.resvForm.outyear.options.selectedIndex+1;
        }
//ChkInNg(document.resvForm);		
document.resvForm.calflg.value = "";
return;
}

function ChkInNg(formData)
{
//var outMIdx = parseMonth(formData.outmonth.options[formData.outmonth.options.selectedIndex].text, formData.outmonth);
//var outDIdx = parseDay(formData.outday.options[formData.outday.options.selectedIndex].text, formData.outday);
var inMIdx = parseMonth(formData.monthin.options[formData.monthin.options.selectedIndex].text, formData.monthin);
var inDIdx = parseDay(formData.dayin.options[formData.dayin.options.selectedIndex].text, formData.dayin);
var inYrIdx = formData.yearin.options.selectedIndex;
//var outYrIdx = formData.outyear.options.selectedIndex;

inYrUTC = ((parseInt(formData.yearin.options[inYrIdx].text)) );
//outYrUTC = ((parseInt(formData.outyear.options[outYrIdx].text)) );
inMUTC = (inMIdx - 1);
//outMUTC = (outMIdx - 1);
inDUTC = inDIdx + 1;
//outDUTC =outDIdx + 1;

inDate = new Date (Date.UTC(inYrUTC, inMUTC, inDUTC, 0, 0, 0));
outDate = new Date (Date.UTC(inYrUTC, inMUTC, inDUTC, 0, 0, 0));
IsNg(formData.nights);
var ng = (parseInt(formData.nights.value) - 1) + inDate.getUTCDate();
outDate.setUTCDate(ng);

var monthName = new Array ("January","February","March","April","May","June","July","August","September","October","November","December")

outDIdx = outDate.getUTCDate();
formData.outday.value = outDIdx;
outMIdx = outDate.getUTCMonth() + 1;
formData.outmonth.value = monthName[outMIdx - 1];
outYrIdx = outDate.getFullYear();
formData.outyear.value = outYrIdx;

//outDIdx = outDate.getUTCDate() - 1;
//formData.outday.options.selectedIndex = outDIdx;
//outMIdx = outDate.getUTCMonth() + 1;
//formData.outmonth.options.selectedIndex = outMIdx;
//outYrIdx = 1 + (outDate.getYear() - parseInt(formData.outyear.options[1].text));
//formData.outyear.options.selectedIndex = outYrIdx;
//return;
}

function IsNg(pobj) 
   {
   var str = pobj.value;
   // Return false if number field is blank.
   if (str == "")
         {
		 pobj.value = "1";
//		 return true;
//         alert("\nThe NUMBER of NIGHTS field is blank.\n\nPlease enter a number.");
//         pobj.focus();
//         return false;
         }
   // Return false if characters are not '0-9'. 
   for (var i = 0; i < str.length; i++) 
      {
      var ch = str.substring(i, i + 1);
      if ((ch < "0" || "9" < ch) && ch != ' ') 
         {
		 pobj.value = "1";
//		 return true;
//         alert("\nThe NUMBER of NIGHTS field accepts only numbers. \n\nPlease re-enter a number.");
//         pobj.select();
//         pobj.focus();
//         return false;
         }
      }
   if ((parseInt(str) > 28) || (parseInt(str) <= 0))
   {
   		pobj.value = "1";
   }
   
   return;
   }

function IsNgOut(pobj) 
   {
   var str = pobj.value;
   // Return false if number field is blank.
   if (str == "")
         {
         alert("\nThe NUMBER of NIGHTS field is blank.\n\nPlease enter a number.");
         pobj.focus();
         return false;
         }
   // Return false if characters are not '0-9'. 
   for (var i = 0; i < str.length; i++) 
      {
      var ch = str.substring(i, i + 1);
      if ((ch < "0" || "9" < ch) && ch != ' ') 
         {
         alert("\nThe NUMBER of NIGHTS field accepts only numbers. \n\nPlease re-enter a number.");
         pobj.select();
         pobj.focus();
         return false;
         }
      }
   if ((parseInt(str) > 28) || (parseInt(str) <= 0))
   {
         alert("\nInvalid the NUMBER of NIGHTS.\n\nPlease enter a number.");
         pobj.focus();
         return false;
   }
   
   return true;
   }

function SubmitResv()
{
	if (validateResrv(document.resvForm)) {
		document.resvForm.method = "post";
		document.resvForm.action = "checkrate.asp";
		document.resvForm.submit();
	}
	
}
      
// -->