var isNS=(document.layers) ? 1:0
var isIE=(document.all) ? 1:0
if(parseFloat(navigator.appVersion )== 4.04){
var isMacNS404=1;
} else {
var isMacNS404=0;
}
var visibleVar="null";
if(isNS){
visibleVar="show";
} else {
visibleVar="visible";
}
var monthDays=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var monthNameForCalc = new Array("January", "February", "March", "April", "May", "June",
								"July", "August", "September", "October", "November", "December");
var today=new Date();
var current_day=today.getDate();
var current_month=today.getMonth();
var current_year=today.getFullYear();

//SSa CR 444 Changes starts 
//Minumum and Maximum dates define the range of valid dates for booking flights 
// Minimum is today and Maximum is 360 from today inclusive
//getMaxAdvanceDays is in css.js to centralise the number of days as we cannot have a constant
var MinYear = current_year
var MinMonth = current_month
var MinDay = current_day
var MaxDate = new Date(today.getFullYear(), today.getMonth(),today.getDate() + getMaxAdvanceDays());
var MaxYear = MaxDate.getFullYear()
var MaxMonth = MaxDate.getMonth()
var MaxDay = MaxDate.getDate()
//SSa CR 444 Changes ends 

//NA Not required anymore because we are not supporting Mac NS 404
//if(!isMacNS404){
if(isNS)current_year+=1900;
//}



//nom du champ ou on met la date
var champname = 'jour';



var starting_month=current_month;
var starting_year=current_year;
var starting_day=current_day;
function previousMonth(calendarName,formTextPointer, monthNameIn, dayNameIn){
current_month--;

if(current_month<0){
current_year--;
current_month=11;

}
displayCalendar(current_day,current_month,current_year,calendarName,formTextPointer,monthNameIn,dayNameIn);
}




function nextMonth(calendarName,formTextPointer, monthNameIn, dayNameIn){
current_month++;
if(current_month>11){
current_year++;
current_month=0;
}
displayCalendar(current_day,current_month,current_year,calendarName,formTextPointer,monthNameIn,dayNameIn);
}





//fonction a modfifier si besoin....de mettre d'autre date..
function DansForm(passedDay,passedDate,champ){
passedDay=passedDay*1;
var formulaire = eval(sMyDocument + '.' + formName + '.' + champ);
formulaire.value=passedDay+'/'+passedDate.substr(4,5)+'/'+passedDate.substr(0,4);
}





//SSa CR 444 Changes starts 
function displayCalendar(day, curMonth, curYear, calendarName, formTextPointer, inMonthName, inDayName)
{

var firstDay=new Date(curYear,curMonth,1).getDay(); //the day of the week of the first day  
var dayString =""
var monthString=""
var totCells=0
var remainingNumberOfCells 
var calStr

if( (curYear % 4 == 0) || ( curYear % 100 == 0 && curYear % 400 == 0 ) ) // setting no of days as 29 for Feb for a leap year condition  
{
	monthDays[1]=29;
}


calStr='<table cellspacing="0" cellpadding="0" border="0" width="160">';
calStr+='<tr bgcolor="#ffffff">';

//Showing the Next and Previous links on the calendar
if ( (curYear >= MinYear) && (curYear <= MaxYear) )
{
	//Note: MinMonth would be in the MinYear and MaxMonth would be in the MaxYear 
	//Note: There might be months in the years between which are not >= MinMonth or <= MaxMonth.Hence in general we need to
	//Cover all Months starting from MinMonth in the MinYear
	//Cover all months uptil MaxMonth in the MaxYear 
	//All other months in all the years inbetween

	//Previous link should be there for all months after the minimum month till the  maximum month inclusive 
	if( (curMonth > MinMonth && curYear == MinYear)  || (curMonth <= MaxMonth && curYear == MaxYear) || (curYear > MinYear && curYear < MaxYear) )  
	{
		calStr+='<td align="left" class="formText0"><a href="#" onclick="javascript:previousMonth(\''+calendarName+'\',\''+formTextPointer+'\',\''+inMonthName+'\',\''+inDayName+'\');"><img border=0 src="'+arrow_left_img+'" alt="'+sPreviousMonthText+'"></a></td>';
	}
	else //no link is shown
		calStr+='<td class="formText0"><spacer type=block width=1 height=1></td>';

	calStr+='<td width="140" align="center" class="mois">'+monthName[curMonth]+' '+curYear+'</td>'; //Name of the month between the Prev and Next Links

	//Next link should be there for all months from the minimum month before maximum month  
	if( (curMonth >= MinMonth && curYear == MinYear)  || (curMonth < MaxMonth && curYear == MaxYear) || (curYear > MinYear && curYear < MaxYear) )  
	{
		calStr+='<td align="right" class="formText0"><a href="#" onclick="javascript:nextMonth(\''+calendarName+'\',\''+formTextPointer+'\',\''+inMonthName+'\',\''+inDayName+'\');"><img border=0 src="'+arrow_right_img+'" alt="' +sNextMonthText+'"></a></td>';
	}
	else
		calStr+='<td class="formText0"><spacer type=block width=1 height=1></td>';
}//End of Previous and Next links


calStr+='</tr>';
calStr+='</table>';

calStr+='<table cellspacing="0" cellpadding="0" border="0" width="160">';
calStr+='<tr>';

for(var i = 0; i < dayName.length; i++) //setting the days of the week (first letter) in the calendar 
{
	calStr+='<td width="23" height="18" align="center" class="jour">'+dayName[i].substring(0,1)+'</td>';
}
calStr+='</tr>';
calStr+='<tr>';

for(var i = 0; i < firstDay; i++) //setting the day of the week the first date of the month falls on
{
	calStr+='<td class="jour" width="23" height="18">&nbsp;</td>';
}

if(curMonth + 1 < 10) //prepending zero to the month
{
	monthString='0'+(curMonth+1);
} else 
{	
	monthString=curMonth+1;
}

for(var curDay = 1; curDay <= monthDays[curMonth]; curDay++) //for all days in the current month
{
	if(curDay < 10) //prepending  zero to the days
	{
		dayString='0'+curDay; 
	} else 
	{
		dayString=curDay;
	}

	//making only the valid set of days in each month to be clickable in the calendar  
	if( (curYear == MinYear ) && (curMonth == MinMonth) )
	{
		if(curDay >= MinDay) // today and later days in the minimum month 
			calStr+='<td width="23" height="18" align="center" class="formText"><a href="#" onclick="javascript:toggleLayer(\''+calendarName+'\');DansForm(\''+dayString+'\',\''+curYear+monthString+'\',\''+ champname + '\');return false;">'+curDay +'</a></td>';
		else
			calStr+='<td width="23" height="18" align="center" class="formText">' + curDay +'</td>';
	}
	else if( (curYear == MaxYear) && (curMonth == MaxMonth) )
	{
		if(curDay <= MaxDay) // all days uptil the maximum day in the maximum month
			calStr+='<td width="23" height="18" align="center" class="formText"><a href="#" onclick="javascript:toggleLayer(\''+calendarName+'\');DansForm(\''+dayString+'\',\''+curYear+monthString+'\',\''+ champname + '\');return false;">'+curDay+'</a></td>';
		else 
			calStr+='<td width="23" height="18" align="center">' + curDay +'</td>';
	}
	//all dates for all other months within the range
	else if ( (curYear == MinYear && curMonth > MinMonth) || ( curYear == MaxYear &&  curMonth < MaxMonth) || (curYear > MinYear && curYear < MaxYear) )
		calStr+='<td width="23" height="18" align="center" class="formText"><a href="#" onclick="javascript:toggleLayer(\''+calendarName+'\');DansForm(\''+dayString+'\',\''+curYear+monthString+'\',\''+ champname + '\');return false;">'+curDay +'</a></td>';

	//after every seven days move to the next row in the calendar 
	if( (curDay + firstDay) % 7 == 0 && ( curDay < monthDays[curMonth] + 1) )
	{
		calStr+='</tr><tr>';	
	}

}//end of for loop for all days in the current month

	//the total number of rows in the calendar can be 4, 5 or 6 depending on the first day of the month  
	totCells=firstDay + monthDays[curMonth];
	if(totCells>35)
	{
		remainingNumberOfCells=(42-totCells); //7 * 6 
	} else if (totCells>28)
	{
		remainingNumberOfCells=(35-totCells); // 7 * 5
	} else 
	{
		remainingNumberOfCells=(28-totCells); // 7 * 4
	}

// pad all the empty date cells in last row 
	for(var i=0;i<remainingNumberOfCells;i++)
	{
		calStr+='<td width="23" height="18">&nbsp;</td>';
	}
calStr+='</tr>';
calStr+='</table>';


calStr+='</td>';
calStr+='<td width="1" bgcolor="#FF3300"><img src="/images/de/FE/Global/spacer.gif" width="1" height="1"></td>';
calStr+='<td width="2" bgcolor="#CCCCCC"><img src="/images/de/FE/Global/spacer.gif" width="2" height="1"></td>';
calStr+='</tr>';
calStr+='</table>';


calStr+='<table cellpadding="0" cellspacing="0" border="0">';
calStr+='<tr><td width="160" bgcolor="#FFFFFF">'


calStr+='<table cellpadding="0" cellspacing="0" border="0" width="160">';
calStr+='<tr bgcolor="#ffffff"><td width="150">&nbsp;</td>';
calStr+='<td><a href="javascript:toggleLayer(\''+calendarName+'\')" class="lien">'+fermeture+'</a></td>';
calStr+='</tr>';
calStr+='</table>';


calStr+='</td></tr></table>';
display(calendarName,calStr)

} //end of displayCalendar function
//SSa CR 444 Changes ends 




function display(id,str){

if(isNS||isIE){
//if(isNS){
//with (document[id].document){
//open();
//write(str);
//close();
//}
//} else {
//
//}
}

document.getElementById(id).innerHTML=str;

}
var visibleVar;
if(isNS){
visibleVar="visible";
var layerRef="document.getElementById";
var styleSwitch=".style";
} else {
visibleVar="visible";
var layerRef="document.getElementById";
var styleSwitch=".style";
}






function toggleDepartCalendar(nomchamp,pos_top,pos_left){
champname = nomchamp;
if(eval(layerRef+'("returnCalendar")'+styleSwitch+'.visibility == visibleVar')) hideCalendar('returnCalendar');

//if (isIE) {
if (eval(sMyDocument + '.' + formName + "." + monthDropDownDepart  + ".value")==0) {
eval(sMyDocument + '.' + formName + '.' + monthDropDownDepart  + '.value=""');
}

if (!eval(sMyDocument + '.' + formName + "." + monthDropDownDepart  + ".value")=="") {
current_month = eval(sMyDocument + '.' + formName + "." + monthDropDownDepart + ".value");
current_year=current_month.substring(0,4) * 1;

current_month = ((current_month.substring(4,6)) * 1) - 1;
current_day = eval(sMyDocument + '.' + formName + "." + dayDropDownDepart + ".value");

}

//} 
//else {

//var oMonthDD = eval(sMyDocument + '.' + formName + "." + monthDropDownDepart);
//var oDayDD = eval(sMyDocument + '.' + formName + "." + dayDropDownDepart);

//if (oMonthDD.options[oMonthDD.selectedIndex].value==0) {

//oMonthDD.options[oMonthDD.selectedIndex].value="";
//}

//if (!oMonthDD.options[oMonthDD.selectedIndex].value=="") {
//current_month = oMonthDD.options[oMonthDD.selectedIndex].value;
//current_year=current_month.substring(0,4) * 1;
//current_month = ((current_month.substring(4,6)) * 1) - 1;
//current_day = oDayDD.options[oDayDD.selectedIndex].value;
//}
//}

if(!eval(layerRef+'("departCalendar")'+styleSwitch+'.visibility == visibleVar'))

 displayCalendar(current_day, current_month, current_year, 'departCalendar', 'document.quickFlightSearchForm.textDepart', monthDropDownDepart, dayDropDownDepart);

toggleLayer('departCalendar',pos_top,pos_left);
}






function showCalendar(layerName,pos_top,pos_left){

eval(layerRef+'("'+layerName+'")'+styleSwitch+'.top="' +pos_top +'"');
eval(layerRef+'("'+layerName+'")'+styleSwitch+'.left="' +pos_left +'"');
eval(layerRef+'("'+layerName+'")'+styleSwitch+'.width="160"');
eval(layerRef+'("'+layerName+'")'+styleSwitch+'.visibility="visible"');
}




function hideCalendar(layerName){
eval(layerRef+'("'+layerName+'")'+styleSwitch+'.visibility="hidden"');
}




function toggleLayer(layerName,pos_top,pos_left){
if(eval(layerRef+'("'+layerName+'")'+styleSwitch+'.visibility == visibleVar')){
hideCalendar(layerName);
}else{
showCalendar(layerName,pos_top,pos_left);
}
}







function addOptionToDD(whichDD, optionText, optionValue) {
var thisDD = eval(sMyDoc + '.forms.' + formName + '.' + whichDD);
thisDD[thisDD.length] = new Option(optionText, optionValue);
}





function populateDDforThisMonth(sWhich, iYear, iMonth, iDay) {
var thisDate;
if(sWhich == 'D'){
emptyDropDown(dayDropDownDepart);
for (counter=1; counter<=monthDays[parseInt(iMonth - 1)]; counter++) {
thisDate = new Date(monthNameForCalc[parseInt(iMonth - 1)] + ' ' + counter + ', ' + iYear);
addOptionToDD(dayDropDownDepart, dayNameShort[thisDate.getDay()] + ' ' + counter, counter);
}
addOptionToDD(dayDropDownDepart, ' ', 100);
var newIndex = monthDays[parseInt(iMonth - 1)];
if((iDay<=monthDays[parseInt(iMonth - 1)])&&(iDay>0)){
newIndex = iDay - 1;
}
eval(sMyDoc + '.forms.' + formName + '.' + dayDropDownDepart + '.selectedIndex=' + newIndex);
}else{
emptyDropDown(dayDropDownReturn);
for (counter=1; counter<=monthDays[parseInt(iMonth - 1)]; counter++) {
thisDate = new Date(monthNameForCalc[parseInt(iMonth - 1)] + ' ' + counter + ', ' + iYear);
addOptionToDD(dayDropDownReturn, dayNameShort[thisDate.getDay()] + ' ' + counter, counter);
}
addOptionToDD(dayDropDownReturn, ' ', 100);
if ((iMonth < 1) || (iMonth > 12)) {
var newIndex = 1;
} else {
var newIndex = monthDays[parseInt(iMonth - 1)];
if((iDay<=monthDays[parseInt(iMonth - 1)])&&(iDay>0)){
newIndex = iDay - 1;
}
}
eval(sMyDoc + '.forms.' + formName + '.' + dayDropDownReturn + '.selectedIndex=' + newIndex);
}
}






function calcDayOfWeek(sWhich) {
if (sWhich == 'D') {
var iYear = parseInt(eval(sMyDoc + '.forms.' + formName + '.' + monthDropDownDepart + '.options[' + sMyDoc + '.forms.' + formName + '.' + monthDropDownDepart + '.selectedIndex].value.substring(0,4)'));
var iMonth = eval(sMyDoc + '.forms.' + formName + '.' + monthDropDownDepart + '.options[' + sMyDoc +'.forms.' + formName + '.' + monthDropDownDepart + '.selectedIndex].value.substring(4,6)');
var iDay = eval(sMyDoc + '.forms.' + formName + '.' + dayDropDownDepart + '.options[' + sMyDoc +'.forms.' + formName + '.' + dayDropDownDepart + '.selectedIndex].value');

if((iYear%4==0 && iYear%100!=0)||(iYear%400==0)){
monthDays[1]=29;
} else {
monthDays[1]=28;
}
}else{
var iYear = parseInt(eval(sMyDoc + '.forms.' + formName + '.' + monthDropDownReturn + '.options[' + sMyDoc + '.forms.' + formName + '.' + monthDropDownReturn + '.selectedIndex].value.substring(0,4)'));
var iMonth = eval(sMyDoc + '.forms.' + formName + '.' + monthDropDownReturn + '.options[' + sMyDoc + '.forms.' + formName + '.' + monthDropDownReturn + '.selectedIndex].value.substring(4,6)');
if ((eval(sMyDoc+".forms."+formName+"."+dayDropDownReturn+".selectedIndex"))<0){
eval(sMyDoc+".forms."+formName+"."+dayDropDownReturn+".selectedIndex=0");
}

var iDay = eval(sMyDoc + '.forms.' + formName + '.' + dayDropDownReturn + '.options[' + sMyDoc +'.forms.' + formName + '.' + dayDropDownReturn + '.selectedIndex].value');

if((iYear%4==0 && iYear%100!=0)||(iYear%400==0)){
monthDays[1]=29;
} else {
monthDays[1]=28;
}
}
populateDDforThisMonth(sWhich, iYear, iMonth, iDay);
}
