function isBrowserSupp() {
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 );
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 ) {
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;
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 amadChange( inM, inD, outM, outD ) {
if ( !isBrowserSupp() ) {
return;
}

var res = adjustDate( inM.options.selectedIndex, inD );
if( res != 0 ) {
outD.options.selectedIndex = 0;
if ( outM.options.selectedIndex == 11 ) {
outM.options.selectedIndex = 0
} else {
outM.options.selectedIndex=inM.options.selectedIndex + 1;
outD.options.selectedIndex = 1;
}
} else {
outM.options.selectedIndex = inM.options.selectedIndex;
if (outD.options.selectedIndex <= inD.options.selectedIndex) {
outD.options.selectedIndex = inD.options.selectedIndex + 2;
}
}
return;
}


function dmddChange( outM, outD ) {
if ( !isBrowserSupp() ) {
return;
}

adjustDate( outM.options.selectedIndex, outD );
return;
}



function OpenWindow(file, name, width, height) {
OpenWindow(file, name, width, height, false);
}

function OpenWindow(file, name, width, height, showLeftTopScrollbar) {
var attr = "";
if(showLeftTopScrollbar) {
attr += "top=50,left=50,scrollbars=1,";
}
attr += "width=" + width + ",height=" + height + ",resizeable=1";
window.open(file, name, attr);
}

function loadDefaultDates() {
var airArrival = new Date();
var airDeparture = new Date();

var airAdvanceArrival = 14;
var airAdvanceDeparture = 15;

airArrival.setDate( airArrival.getDate() + airAdvanceArrival );
airDeparture.setDate( airDeparture.getDate() + airAdvanceDeparture );

document.forms['airForm'].departureMonth.value = airArrival.getMonth();
document.forms['airForm'].returnMonth.value = airDeparture.getMonth();
document.forms['airForm'].departureDay.value = airArrival.getDate();
document.forms['airForm'].returnDay.value = airDeparture.getDate();


}

function validateDepWindow(formName) {
if (document.forms[formName].tempDepTime[document.forms[formName].tempDepTime.selectedIndex].value==('M')) {
window.document.forms[formName].tripWindow.value='5';
window.document.forms[formName].departureTime.value='7AM';
} else if (document.forms[formName].tempDepTime[document.forms[formName].tempDepTime.selectedIndex].value==('A')) {
window.document.forms[formName].tripWindow.value='5';
window.document.forms[formName].departureTime.value='3PM';
} else if (document.forms[formName].tempDepTime[document.forms[formName].tempDepTime.selectedIndex].value==('E')) {
window.document.forms[formName].tripWindow.value='5';
window.document.forms[formName].departureTime.value='8PM';
} else if(document.forms[formName].tempDepTime[document.forms[formName].tempDepTime.selectedIndex].value==('ANT')) {
window.document.forms[formName].tripWindow.value='9';
window.document.forms[formName].departureTime.value='12PM';
} else {
window.document.forms[formName].tripWindow.value='5';
window.document.forms[formName].departureTime.value=document.forms[formName].tempDepTime.value;
}
}

function validateRetWindow(formName) {
if (document.forms[formName].tempRetTime[document.forms[formName].tempRetTime.selectedIndex].value==('M')) {
window.document.forms[formName].returnTime.value='7AM';
} else if (document.forms[formName].tempRetTime[document.forms[formName].tempRetTime.selectedIndex].value==('A')) {
window.document.forms[formName].returnTime.value='3PM';
} else if (document.forms[formName].tempRetTime[document.forms[formName].tempRetTime.selectedIndex].value==('E')) {
window.document.forms[formName].returnTime.value='8PM';
} else if(document.forms[formName].tempRetTime[document.forms[formName].tempRetTime.selectedIndex].value==('ANT')) {
window.document.forms[formName].returnTime.value='12PM';
} else {
window.document.forms[formName].returnTime.value=window.document.forms[formName].tempRetTime.value;
}
	  }

function update(themonth,theday){
document.forms[fName].elements[formType+'Day'].options[theday - 1].selected = true;
document.forms[fName].elements[formType+'Month'].options[themonth].selected = true;

testWindow.close();
}

function loadCalendar(viewMonth) {
	testWindow.document.close();
	testWindow.document.open();
	var day_of_week = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
	var month_of_year = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
	var dateObj = new Date();
	var year = dateObj.getYear();	 // Returns year
	var month = dateObj.getMonth(); // Returns month (0-11)
	var today = dateObj.getDate();  // Returns day (1-31)
	var weekday = dateObj.getDay(); // Returns day (1-31)
	var DAYS_OF_WEEK = 7;  // "constant" for number of days in a week
	var DAYS_OF_MONTH = 31; // "constant" for number of days in a month
	var cal;        // Used for printing
	if (viewMonth < month) {
		year = year + 1;
	}

	if(year < 1900){
		year += 1900; //done to solve the problem of netscape and mozilla returning year in form 10X for years > 2000
	}

	month = viewMonth;
	dateObj.setDate(1);   // Start the calendar day at '1'
	dateObj.setMonth(month); // Start the calendar month at now
	dateObj.setYear((year));

	var TR_start = '<TR>';
	var TR_end = '</TR>';
	var highlight_start = '<TD WIDTH="30"><TABLE CELLSPACING=0 BORDER=1 BGCOLOR=DEDEFF BORDERCOLOR=CCCCCC><TR><TD WIDTH=20><B><CENTER>';
	var highlight_end  = '</CENTER></TD></TR></TABLE></B>';
	var TD_start = '<TD WIDTH="30"><CENTER>';
	var TD_end = '</CENTER></TD>';
	var prevM = month - 1;
	var nextM = month + 1;

	if (nextM == 12) {
		nextM = 0;
	}

	if (prevM == -1) {
		prevM = 11;
	}

	cal += "<style>a:link{cursor: hand}a:active{cursor: hand}a:hover{cursor: hand}a:visited{cursor: hand}body{cursor: default}</style>";

cal += '<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="0" BORDERCOLOR="BBBBBB" width="100%" height="200"><TR><TD>';
	cal += '<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="2" width="100%">' + TR_start;
	cal += '<TD COLSPAN="' + DAYS_OF_WEEK + '" BGCOLOR="#EFEFEF"><CENTER><B>';
	cal += month_of_year[month] + '  ' + year + '</B>' + TD_end + TR_end;
	cal += TR_start;

	for(index=0; index < DAYS_OF_WEEK; index++) {
		cal += TD_start + day_of_week[index] + TD_end;
	}

	cal += TD_end + TR_end;
	cal += TR_start;

	for(index=0; index < dateObj.getDay(); index++) {
	  cal += TD_start + ' ' + TD_end;
}

for(index=0; index < DAYS_OF_MONTH; index++) {
if( dateObj.getDate() > index ) {
week_day =dateObj.getDay();

if(week_day == 0) {
cal += TR_start;
}

if(week_day != DAYS_OF_WEEK) {
var day = dateObj.getDate();

cal += TD_start + "<span onclick='window.opener.update(" + month + "," + day + ")' style='cursor:hand;font-weight:bold;background:#EFEFEF;width:22px;'>" + day + "</span>" + TD_end;
}

if(week_day == DAYS_OF_WEEK) {
cal += TR_end;
}
}

dateObj.setDate(dateObj.getDate()+1);

}// end for loop

	cal += '</center></td></TR></table></TABLE><br>';
cal += '<div align="center"><a href="javascript:" onClick="window.opener.loadCalendar(' + prevM + ');">&lt;&lt;</a>&nbsp;&nbsp;&nbsp;&nbsp;';
	cal += '<a href="javascript:" onClick="window.opener.loadCalendar(' + nextM + ');">&gt;&gt;</a><br><br></div>';
	cal += '<div align="right"><a href="javascript:window.close();">close</a></div>';

	testWindow.document.write(cal);
}

var testWindow;
var formType;
var fName;

function openCalendar(formName,type) {
	formType=type;
	fName=formName;
	testWindow = window.open('','dates','width=360,height=300,resizable=1,status=1,menubar=0,location=0');
	loadCalendar(document.forms[fName].elements[formType+'Month'].selectedIndex);
}
