
// global variables - these are only declared once - when the page is included
var weekend = [0,6];
var weekendColor = "#6699ff";
var fontface = "Verdana";
var fontsize = 1;
var state_CurrentYear; // This variable retains the year as state, after it has already been selected from the picker.

// global date object - hold present date
var gNow = new Date();
// global date object to hold last possible date chosen as a departure day -> yesterday + 1year + 30 days (max booking length)
var gLastDate = new Date();
gLastDate.setDate(gLastDate.getDate() + 30);
gLastDate.setFullYear(gLastDate.getFullYear() +1);

// global handle to calendar pop-up window
var ggWinCal;

// browser test - not used
isNav = (navigator.appName.indexOf("Netscape") != -1) ? true : false;
isIE = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;

// months of calendar localised
Calendar.Months = ["January", "February", "March",
"April", "May", "June","July", "August", "September",
"October", "November", "December"];

// Non-Leap year Month days..
Calendar.DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
// Leap year Month days..
Calendar.lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

// sets up the calendar to point to a window, as sets the values of the variables required to build the calendar such as the montha nd year displayed
function Calendar(p_item, p_item1, p_WinCal, p_month, p_year) {
 if ((p_month == null) && (p_year == null)) return;
 if (p_WinCal == null){
  this.gWinCal = ggWinCal;
 } else { 
  this.gWinCal = p_WinCal;
 }
 
 this.gMonthName = Calendar.get_month(p_month);
 this.gMonth = new Number(p_month);
 this.gYear = p_year;
 this.gBGColor = "white";
 this.gFGColor = "black";
 this.gTextColor = "black";
 this.gHeaderColor = "black";
 this.gReturnItem = p_item;
 this.gReturnItem1 = p_item1;
}

// allows the following global functions to be called as functions of the calendar object
Calendar.get_month = Calendar_get_month;
Calendar.get_daysofmonth = Calendar_get_daysofmonth;
Calendar.calc_month_year = Calendar_calc_month_year;

// returns localised string with name of month
function Calendar_get_month(monthNo) {
 return Calendar.Months[monthNo];
}

// takes year and month as parameter and 
function Calendar_get_daysofmonth(monthNo, p_year) {
 /* 
 Check for leap year ..
 1.Years evenly divisible by four are normally leap years, except for... 
 2.Years also evenly divisible by 100 are not leap years, except for... 
 3.Years also evenly divisible by 400 are leap years. 
 */
 if ((p_year % 4) == 0) {
  if ((p_year % 100) == 0 && (p_year % 400) != 0) {
   return Calendar.DOMonth[monthNo];
  }
  return Calendar.lDOMonth[monthNo];
 } else {
  return Calendar.DOMonth[monthNo];
 }
}


// used to calculate the months and years used in the calendar forward and backward links
function Calendar_calc_month_year(p_Month, p_Year, incr) {
 /* 
 Will return an 1-D array with 1st element being the calculated month 
 and second being the calculated year 
 after applying the month increment/decrement as specified by 'incr' parameter.
 'incr' will normally have 1/-1 to navigate thru the months.
 */
 var ret_arr = new Array();
 
  if (incr == -1) 
 {
  // B A C K W A R D
  if (p_Month == 0) {
   ret_arr[0] = 11;
   ret_arr[1] = parseInt(p_Year) - 1;
  } else {
		ret_arr[0] = parseInt(p_Month) - 1;
		// no negative booking, should the user scroll back then the year will automatically default to next year.
		if ( ( ( parseInt( p_Month ) <= parseInt( gNow.getMonth() ) ) ) && ( parseInt( p_Year  ) == parseInt( gNow.getFullYear().toString() ) ) ) {
			ret_arr[1] = parseInt(p_Year) + 1;
		} 
		else { 
			ret_arr[1] = parseInt(p_Year); 
		}
  }
 } 
 else if (incr == 1) {
  // F O R W A R D
  if (p_Month == 11) {
   ret_arr[0] = 0;
   ret_arr[1] = parseInt(p_Year) + 1;
  } 
  else {
   ret_arr[0] = parseInt(p_Month) + 1;
   ret_arr[1] = parseInt(p_Year);
  }
 }
 
 // store the year for the next time the user selects the calendar picker
 // If you leave the picker on december and open and close it a few times
 // without this the year's will keep incrementing. But with this they dont.
 if (p_Month == 11) {
	state_CurrentYear = parseInt(ret_arr[1]) - 1; 
 }
 else {
	state_CurrentYear = ret_arr[1];
 }
 return ret_arr;
}

// This is for compatibility with Navigator 3, we have to create and discard one object before the prototype object exists.
new Calendar();

// retures as html stream the a table with the required month and each required day
Calendar.prototype.getMonthlyCalendarCode = function() {
 var vCode = "";
 var vHeader_Code = "";
 var vData_Code = "";
 
 // Begin Table Drawing code here..
 vCode = vCode + "<div align='Center'><TABLE BORDER=1 BGCOLOR=\"" + this.gBGColor + "\">";
 
 vHeader_Code = this.cal_header();
 vData_Code = this.cal_data();
 vCode = vCode + vHeader_Code + vData_Code;
 
 vCode = vCode + "</TABLE></div>";
 
 return vCode;
}

// funcion builds html stream and writes it to the document
Calendar.prototype.show = function() {
 var vCode = "";
 
 this.gWinCal.document.open();
 
 // Setup the page...
 this.wwrite("<html>");
 this.wwrite("<head><title>Calendar</title>");
 this.wwrite("</head>");

 this.wwrite("<body " + 
  "link=\"" + this.gLinkColor + "\" " + 
  "vlink=\"" + this.gLinkColor + "\" " +
  "alink=\"" + this.gLinkColor + "\" " +
  "text=\"" + this.gTextColor + "\">");

 // calculate the required months and years used in the forwarsd and backward links
 var prevMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, -1);
 var prevMM = prevMMYYYY[0];
 var prevYYYY = prevMMYYYY[1];

 var nextMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, 1);
 var nextMM = nextMMYYYY[0];
 var nextYYYY = nextMMYYYY[1];
 
 this.wwrite("<TABLE WIDTH='100%' BORDER=0 CELLSPACING=0 CELLPADDING=0><TR><TD WIDTH='10%' ALIGN=center bgcolor='#6699ff'>");
 
// show backward link
// if this month and this year - then dont show back link - no negative bookings
 if (this.gMonth == gNow.getMonth() && this.gYear == gNow.getFullYear()) {
	this.wwrite("<Font size='1'>&nbsp;</Font>");
 } else {
	this.wwrite("<Font size='1'><A HREF=\"" +
	"javascript:window.opener.Build(" + 
	"'" + this.gReturnItem + "', '" + this.gReturnItem1 + "', '" + prevMM + "', '" + prevYYYY + "'" + ");" +
	"\"><<\/A></Font>");
 }

// show month and year on top of calendar
 this.wwrite("</TD><TD ALIGN='center' bgcolor='" + this.gHeaderColor + "'>");
 this.wwriteA("<FONT FACE='" + fontface + "' Color='white' SIZE=1><B>");
 this.wwriteA(this.gMonthName + " " + this.gYear  );
 this.wwriteA("</B></TD><TD WIDTH='10%' ALIGN=center bgcolor='#6699ff'>");
 
// show forward link
// if choosing arrival dates
//	- do not show link for more than one year after today
// if choosing departure dates
//  - do not show link for more than 30 days after the last arrival date
 if ((this.gMonth == gNow.getMonth() && this.gYear == gNow.getFullYear()+1 && this.gReturnItem == 'frm_Search.ad') || (this.gMonth == gLastDate.getMonth() && this.gYear == gLastDate.getFullYear() && this.gReturnItem == 'frm_Search.dd')) {
	this.wwrite("<Font size='1'>&nbsp;</Font>");
 } else {
	this.wwrite("<Font size='1'><A HREF=\"" +
	"javascript:window.opener.Build(" + 
	"'" + this.gReturnItem + "', '" + this.gReturnItem1 + "', '" + nextMM + "', '" + nextYYYY + "'" + ");" +
	"\">><\/A></Font>");
 }
 this.wwrite("</TD></TR></TABLE><BR>");

 // get html stream for complete month and write to document
 vCode = this.getMonthlyCalendarCode();
 this.wwrite(vCode);

 this.wwrite("</font></body></html>");
 this.gWinCal.document.close();
}

// writes html string to calendar followed by carrige return
Calendar.prototype.wwrite = function(wtext) {
 this.gWinCal.document.writeln(wtext);
}

// writes html string to calendar
Calendar.prototype.wwriteA = function(wtext) {
 this.gWinCal.document.write(wtext);
}

// function returns a html stream with the header for the page
// it display the starting leters of each weekday - localised
Calendar.prototype.cal_header = function() {
 var vCode = "";
 
 vCode = vCode + "<TR bgcolor='" + this.gHeaderColor + "'>";
 vCode = vCode + "<TD WIDTH='14%' align='center' ><FONT SIZE='1' FACE='" + fontface + "' COLOR='white'><B>S</B></FONT></TD>";
 vCode = vCode + "<TD WIDTH='14%' align='center'><FONT SIZE='1' FACE='" + fontface + "' COLOR='white'><B>M</B></FONT></TD>";
 vCode = vCode + "<TD WIDTH='14%' align='center'><FONT SIZE='1' FACE='" + fontface + "' COLOR='white'><B>T</B></FONT></TD>";
 vCode = vCode + "<TD WIDTH='14%' align='center'><FONT SIZE='1' FACE='" + fontface + "' COLOR='white'><B>W</B></FONT></TD>";
 vCode = vCode + "<TD WIDTH='14%' align='center'><FONT SIZE='1' FACE='" + fontface + "' COLOR='white'><B>T</B></FONT></TD>";
 vCode = vCode + "<TD WIDTH='14%' align='center'><FONT SIZE='1' FACE='" + fontface + "' COLOR='white'><B>F</B></FONT></TD>";
 vCode = vCode + "<TD WIDTH='16%' align='center'><FONT SIZE='1' FACE='" + fontface + "' COLOR='white'><B>S</B></FONT></TD>";
 vCode = vCode + "</TR>";
 
 return vCode;
}


// function returns a html stream with the days of the calendar, and links to change the dates on the bookingform if clicked - likre this
//<TD WIDTH='14%'><FONT SIZE='1' FACE='Verdana'><A HREF='#' onClick="self.opener.document.frm_Search.ad.selectedIndex='6';self.opener.document.frm_Search.am.selectedIndex=5;self.opener.amadChange(self.opener.document.frm_Search.am,self.opener.document.frm_Search.ad,self.opener.document.frm_Search.dm,self.opener.document.frm_Search.dd);window.close();">7</A></FONT></TD>
Calendar.prototype.cal_data = function() {
 var vDate = new Date();
 vDate.setDate(1);
 vDate.setMonth(this.gMonth);
 vDate.setFullYear(this.gYear);

 var vFirstDay=vDate.getDay();
 var vDay=1;
 var vLastDay=Calendar.get_daysofmonth(this.gMonth, this.gYear);
 var vOnLastDay=0;
 var vCode = "";

 /*
 Get day for the 1st of the requested month/year..
 Place as many blank cells before the 1st day of the month as necessary. 
 */	

 vCode = vCode + "<TR>";
 for (i=0; i<vFirstDay; i++) {
  vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(i) + "><FONT SIZE='1' FACE='" + fontface + "'> </FONT></TD>";
 }

 // Write rest of the 1st week
 for (j=vFirstDay; j<7; j++) {
  vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j);

  // if this month and this year, write blank spaces until today - we can only book from today on
  if ( (this.gMonth == gNow.getMonth() && this.gYear == gNow.getFullYear() && vDay < gNow.getDate() && this.gReturnItem == 'frm_Search.ad') || (this.gMonth == gNow.getMonth() && this.gYear == gNow.getFullYear() && vDay <= gNow.getDate() && this.gReturnItem == 'frm_Search.dd') || (this.gMonth == gNow.getMonth() && this.gYear == gNow.getFullYear()+1 && vDay >= gNow.getDate() && this.gReturnItem == 'frm_Search.ad') || (vDay >= gLastDate.getDate() && this.gMonth == gLastDate.getMonth() && this.gYear == gLastDate.getFullYear() && this.gReturnItem == 'frm_Search.dd') ) {
	vCode += "><FONT SIZE='1' FACE='" + fontface + "' COLOR='gray'>" + this.format_day(vDay);
  } else {
   vCode += "><FONT SIZE='1' FACE='" + fontface + "'>";
   vCode = vCode + "<A HREF='#' " + 
    "onClick=\"self.opener.document." + this.gReturnItem + ".selectedIndex='" + 
     (vDay - 1) + 
     "';self.opener.document." + this.gReturnItem1  + ".selectedIndex=" + this.gMonth + ";" 
     if (this.gReturnItem == 'frm_Search.ad' || this.gReturnItem == 'frm_Search.nad') {
      if (this.gReturnItem == 'frm_Search.ad') {
       vCode = vCode + "self.opener.amadChange(self.opener.document.frm_Search.am,self.opener.document.frm_Search.ad,self.opener.document.frm_Search.dm,self.opener.document.frm_Search.dd);";
      } else {
       vCode = vCode + "self.opener.amadChange(self.opener.document.frm_Search.nam,self.opener.document.frm_Search.nad,self.opener.document.frm_Search.ndm,self.opener.document.frm_Search.ndd);";
      }
     } else {
      if (this.gReturnItem == 'frm_Search.dd') {


       vCode = vCode + "self.opener.dmddChange(self.opener.document.frm_Search.dm,self.opener.document.frm_Search.dd,self.opener.document.frm_Search.am,self.opener.document.frm_Search.ad);";
      } else {
       vCode = vCode + "self.opener.dmddChange(self.opener.document.frm_Search.ndm,self.opener.document.frm_Search.ndd,self.opener.document.frm_Search.nam,self.opener.document.frm_Search.nad);";
      }
     }
     vCode = vCode + "window.close();\">" + 
     this.format_day(vDay) +
   "</A>";
  }

   vCode = vCode + "</FONT></TD>";
  vDay=vDay + 1;
 }
 vCode = vCode + "</TR>";
 
 // Write the rest of the weeks
 for (k=2; k<7; k++) {
  vCode = vCode + "<TR>";

  for (j=0; j<7; j++) {
   vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j);

  // if this month and this year, write blank spaces until tomorrow - we can only book from tomorrow on
  if ( (this.gMonth == gNow.getMonth() && this.gYear == gNow.getFullYear() && vDay < gNow.getDate() && this.gReturnItem == 'frm_Search.ad') || (this.gMonth == gNow.getMonth() && this.gYear == gNow.getFullYear() && vDay <= gNow.getDate() && this.gReturnItem == 'frm_Search.dd') || (this.gMonth == gNow.getMonth() && this.gYear == gNow.getFullYear()+1 && vDay >= gNow.getDate() && this.gReturnItem == 'frm_Search.ad') || (vDay >= gLastDate.getDate() && this.gMonth == gLastDate.getMonth() && this.gYear == gLastDate.getFullYear() && this.gReturnItem == 'frm_Search.dd') ) {
	vCode += "><FONT SIZE='1' FACE='" + fontface + "' COLOR='gray'>" + this.format_day(vDay);
  } else {
	vCode += "><FONT SIZE='1' FACE='" + fontface + "'>"
    vCode = vCode + "<A HREF='#' " + 
     "onClick=\"self.opener.document." + this.gReturnItem + ".selectedIndex='" + 
     (vDay - 1) + 
     "';self.opener.document." + this.gReturnItem1  + ".selectedIndex=" + this.gMonth + ";"
     if (this.gReturnItem == 'frm_Search.ad' || this.gReturnItem == 'frm_Search.nad') {
      if (this.gReturnItem == 'frm_Search.ad') {
       vCode = vCode + "self.opener.amadChange(self.opener.document.frm_Search.am,self.opener.document.frm_Search.ad,self.opener.document.frm_Search.dm,self.opener.document.frm_Search.dd);";
      } else {
       vCode = vCode + "self.opener.amadChange(self.opener.document.frm_Search.nam,self.opener.document.frm_Search.nad,self.opener.document.frm_Search.ndm,self.opener.document.frm_Search.ndd);";
	  }      
     } else {
      if (this.gReturnItem == 'frm_Search.dd') {
       vCode = vCode + "self.opener.dmddChange(self.opener.document.frm_Search.dm,self.opener.document.frm_Search.dd,self.opener.document.frm_Search.am,self.opener.document.frm_Search.ad);";
      } else {
       vCode = vCode + "self.opener.dmddChange(self.opener.document.frm_Search.ndm,self.opener.document.frm_Search.ndd,self.opener.document.frm_Search.nam,self.opener.document.frm_Search.nad);";
      }
     }
     vCode = vCode + "window.close();\">" + 
     this.format_day(vDay) + 
    "</A>";
  }

    vCode = vCode + "</FONT></TD>";
   vDay=vDay + 1;

   if (vDay > vLastDay) {   
    vOnLastDay = 1;
    break;
   }
  }

  if (j == 6) {
   vCode = vCode + "</TR>";
  }
  if (vOnLastDay == 1) {
   break;
  }
 }
 
 // Fill up the rest of last week with proper blanks, so that we get proper square blocks
 for (m=1; m<(7-j); m++) {
  vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) + 
  "><FONT SIZE='1' FACE='" + fontface + "' COLOR='gray'>" + m + "</FONT></TD>";
 }
 return vCode;
}

// funciton used to build html for displaying each day in the calendar
// if the day biegg displayed is = to the arrival or departure day on the booking form, it is displayed in red bold
// if day is = to today, display in bold
Calendar.prototype.format_day = function(vday) {
	var vNowDay = gNow.getDate();
	var vNowMonth = gNow.getMonth();
	var vNowYear = gNow.getFullYear();

	// show departure and arrival day in red
	// show today in bold
	if ((vday == document.frm_Search.ad.value && this.gMonth == document.frm_Search.am.value-1 && this.gYear == vNowYear) || (vday == document.frm_Search.dd.value && this.gMonth == document.frm_Search.dm.value-1 && this.gYear == vNowYear)) {
		return ("<FONT COLOR=\"RED\"><B>" + vday + "</B></FONT>");
	} else {
		if (vday == vNowDay && this.gMonth == vNowMonth && this.gYear == vNowYear) {
			return ("<B>" + vday + "</B>");
		} else {
			return (vday);
		}
	}
}

// function called while building the html to display every day in the calendar
// tests day passed in as parameter
// if weekend (sat or sun) - display as different colour
Calendar.prototype.write_weekend_string = function(vday) {
	var i;
	// Return special formatting for the weekend day.
	for (i=0; i<weekend.length; i++) {
		if (vday == weekend[i]) {
			return (" BGCOLOR=\"" + weekendColor + "\"");
		}
	}
	return "";
}

// function constructs new calendar
// the calendar is customised (test and linnk colours)
// function calls show() function which writes html to the calendar document object
function Build(p_item, p_item1, p_month, p_year) {
 var p_WinCal = ggWinCal;
 gCal = new Calendar(p_item, p_item1, p_WinCal, p_month, p_year);

 // Customize your Calendar here..
 gCal.gBGColor="white";
 gCal.gLinkColor="#3a4f98";
 gCal.gTextColor="#3a4f98";
 gCal.gHeaderColor="#3a4f98";

 gCal.show();
}

// This function is called directly by the bookingform on the MBE, IBE, and KcBE
// function gets argunents from bookingform, does some stuff to calculate
//  the year based on the dates selected on the booingform, opens a pop-up
//  window and sets global handle ggWinCal = the window
// build() is then called to write the html to the window
function show_calendar() {
	/* 
	p_month : 0-11 for Jan-Dec; 12 for All Months.
	p_year : 4-digit year
	p_format: Date format (mm/dd/yyyy, dd/mm/yy, ...)
	p_item : Return Item.
	*/
		
	p_item = arguments[0];
	p_item1 = arguments[1];
	if (arguments[2] == null) {
		p_month = new String(gNow.getMonth());
	} else { 
		p_month = arguments[2];
	}

	// if arrival day is before today, and month is this month, then year is next year
	// otherwise year is this year
	p_year = gNow.getFullYear();
	if ((document.frm_Search.ad.value < gNow.getDate() && document.frm_Search.am.value == gNow.getMonth()+1) || (document.frm_Search.am.value < gNow.getMonth()+1)) {
		p_year++;
	}

	//if the given month is < than the current and the years are equal then advance to the next year. No negative booking.
	// This pieces of code, provides this facility where the month is selected from bookinginfo.asp.
	if ( ( parseInt( p_month ) < parseInt( gNow.getMonth() ) ) && ( parseInt( p_year ) == parseInt( gNow.getFullYear().toString() ) ) ) {
		p_year = parseInt(p_year) + 1;
	}
 
	vWinCal = window.open("", "Calendar", "width=170,height=200,status=no,resizable=no,top=200,left=200");
	vWinCal.opener = self;
	ggWinCal = vWinCal;
 
 Build(p_item, p_item1, p_month, p_year);
}

// end script

// Dates Functions


var browser = ""
    var intMSIE5UP = 1
    var intMSIE4 = 2 
    var intNewNS = 3
    var intOldNS4 = 4
    var intOpera = 5
    var intbrowser = 0
    
    //detecting older netscapes
	if (!document.getElementById && document.layers){
		browser = "Old Netscape"
		intbrowser = intOldNS4
		}
	//detecting newer Netscapes Note Opera is included here as it can emulate IE.
	if (navigator.appName == "Netscape" && document.getElementById && navigator.userAgent.indexOf("Opera") < 0){
		browser = "Newer Netscape"
	   intbrowser = intNewNS;
		} 
		
	//detecting Opera
	if (navigator.userAgent.indexOf("Opera") > 0){
		browser = "Opera"
		intbrowser = intOpera
		}

	//detecting IE  Note Opera is included here as it can emulate IE.
	if (navigator.appName =="Microsoft Internet Explorer" && navigator.userAgent.indexOf("Opera") < 0){
		browser = "IE"
		if (document.all && !document.getElementById) intbrowser = intMSIE4;
		if (document.all && document.getElementById)  intbrowser = intMSIE5UP;
		}




function isBrowserSupp() {
    // Get the version of the browser
    version =  parseFloat( navigator.appVersion );

    if ( ( version >= 2.0 ) && ( version < 2.1 ) && ( navigator.appName.indexOf( "Netscape" ) != -1 ) ) {
        return false;
    }
    else {
    return true;
    }

return true;
}

function isLeapYear(yrStr)
{
var leapYear=false;
var year = parseInt(yrStr, 10);
// every fourth year is a leap year
if (year%4 == 0)
    {
    leapYear=true;
    // unless it's a multiple of 100
    if (year%100 == 0)
        {
        leapYear=false;
        // unless it's a multiple of 400
        if (year%400 == 0)
            {
            leapYear=true;
            }
        }
    }
return leapYear;
}


function getDaysInMonth(mthIdx, YrStr)
{
// all the rest have 31
var maxDays=31
// expect Feb. (of course)
if (mthIdx==1)
    {
    if (isLeapYear(YrStr))
        {
        maxDays=29;
        }
    else
        {
        maxDays=28;
        }
    }
// thirty days hath...
if (mthIdx==3 || mthIdx==5 || mthIdx==8 || mthIdx==10)
    {
    maxDays=30;
    }
return maxDays;
}
//the function which does some magic to the date fields
// return non-zero if it is the last day of the month
function adjustDate(mthIdx, Dt)
{
var value=0;

var today = new Date()
var theYear = parseInt(today.getYear(),10)

if (mthIdx < today.getMonth()) {
    theYear = (parseInt(today.getYear(), 10) + 1)
}
if(theYear<100){
    theYear = "19" + theYear
}
else{
    if((theYear-100) < 10){
        theYear = "0" + (theYear-100)
    }
    else{
        theYear = (theYear-100)+""
    }
    theYear = "20" + theYear
}


var numDays=getDaysInMonth(mthIdx, theYear);

if (mthIdx==1)
    {
    if (Dt.options.selectedIndex + 1 < numDays)
        {
        return 0;
        }
    else
        {
        Dt.options.selectedIndex=numDays - 1;
        //check for leap year
        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
        {
        //index is 31 or 30
        value=2;
        }
    }
return value;
}

//changes departure month when arrival month is changed
function amadChange(inM,inD,outM,outD)
{
if (!isBrowserSupp())
    {
    return;
    }

var res = adjustDate(inM.options.selectedIndex, inD);
if (res != 0)
    {
           outD.options.selectedIndex=0;
           if (inM.options.selectedIndex==11){
            outM.options.selectedIndex=0
           }
           else{
            outM.options.selectedIndex=inM.options.selectedIndex + 1;
           }
    }
else
    {
    outM.options.selectedIndex = inM.options.selectedIndex;
    outD.options.selectedIndex = inD.options.selectedIndex+1;
    }
return;
}

function dmddChange(outM,outD,inM,inD)
{
if (!isBrowserSupp())
    {
    return;
    }

adjustDate(outM.options.selectedIndex,outD);
if (((outM.options.selectedIndex < inM.options.selectedIndex) && (inM.options.selectedIndex != 11)) || ((outM.options.selectedIndex == inM.options.selectedIndex) && (outD.options.selectedIndex <= inD.options.selectedIndex)))
	{
		amadChange(inM,inD,outM,outD);
	}
return;
}
// End Dates Functions
