var calendarOn = false;



var DAY_IN_MILLIS = 86400000;
var ST_COMPENSATE_IN_MILLIS = 5400000;

function afterCalendarSelection(type, fromDate, toDate, numDays)
{
    if (calendarOn == true)
    {
        if (type == 'depart')
        {
            reflectDepartDateChange(fromDate, toDate, numDays);
        }
        else if (type == 'return')
        {
            calcNumDays(fromDate, toDate, numDays);
        }
        calendarOn = false;
    }
}

function reflectDepartDateChange(fromDate, toDate, numDays)
{
    var fromDateStr = fromDate.value;
    var toDateStr = toDate.value;
    
    var fromDay = fromDateStr.substring(0, 2);								
    var fromMonth = fromDateStr.substring(3, 5);    
    //bug in Javascript date object: months go from 0-11!
    var fromMonthFix = fromMonth - 1;    
    var fromYear = fromDateStr.substring(6);
    
    var toDay = toDateStr.substring(0, 2);
    var toMonth = toDateStr.substring(3, 5);
    //bug in Javascript date object: months go from 0-11!
    var toMonthFix = toMonth - 1;
    var toYear = toDateStr.substring(6);
    
    var calcFromDate = new Date(fromYear, fromMonthFix, fromDay);
    var calcToDate = new Date(toYear, toMonthFix, toDay);
    
    if (calcFromDate > calcToDate)
    {
        calcReturnDate(fromDate, numDays, toDate);
    }
    else
    {
        calcNumDaysUsingDates(calcFromDate, calcToDate, numDays);
    }
}

function calcNumDaysUsingDates(fromDate, toDate, numDays)
{
    var fromDateMillis = fromDate.valueOf();
    var toDateMillis = toDate.valueOf();
    
    var numDaysMillis = toDateMillis - fromDateMillis;
    if (numDaysMillis > 0)
    {
        //bugzilla 2047: num days was calculated wrong for some return dates in March/April and October.....this 
        // was because Javascript Date object seems to be including the clocks going forward (+1 hour) and
        // back (-1 hour), which happens during these months....added a rounding on the num days to fix this
        numDays.value = Math.round(numDaysMillis / DAY_IN_MILLIS);
    }
    else
    {
        numDays.value = '0';
    }
}

function calcNumDays(fromDate, toDate, numDays)
{
    var fromDateStr = fromDate.value;
    var toDateStr = toDate.value;
    
    var fromDay = fromDateStr.substring(0, 2);								
    var fromMonth = fromDateStr.substring(3, 5);
    //bug in Javascript date object: months go from 0-11!
    var fromMonthFix = fromMonth - 1;
    var fromYear = fromDateStr.substring(6);
    
    var toDay = toDateStr.substring(0, 2);
    var toMonth = toDateStr.substring(3, 5);
    //bug in Javascript date object: months go from 0-11!
    var toMonthFix = toMonth - 1;
    var toYear = toDateStr.substring(6);
    
    var calcFromDate = new Date(fromYear, fromMonthFix, fromDay);
    var calcToDate = new Date(toYear, toMonthFix, toDay);
        
    calcNumDaysUsingDates(calcFromDate, calcToDate, numDays);
}

function calcReturnDate(fromDate, numDays, toDate, dayField, monthField, yearField, dateField, textDayField)
{
    numDaysStr = numDays.value;
    
    numDaysMillis = numDaysStr * DAY_IN_MILLIS;
    
    var fromDateStr = fromDate.value;
    var fromDay = fromDateStr.substring(0, 2);								
    
    
    
    // gohop change
    // var fromMonth = fromDateStr.substring(3, 5);
    var myMonth = fromDateStr.substring(3, 6);
    var fromMonth = getMonthNumByName(myMonth);
    //bug in Javascript date object: months go from 0-11!
    var fromMonthFix = fromMonth - 1;
    var fromYear = fromDateStr.substring(7);
    fromYear = "20" + fromYear ;        
    // end of gohop change
    
    
   
   
    if (numDaysMillis > 0)
    {
        var calcFromDate = new Date(fromYear, fromMonthFix, fromDay);
        
        var fromDateMillis = calcFromDate.valueOf();
        
        var toDateMillis = fromDateMillis + numDaysMillis;
        
        //bugzilla 2047: sometimes when you entered a depart date and then specified 1 as the number of days, the
        // return date would still be the same as the depart date (for example 28/10/2007).....this was because Javascript
        // Date object seems to be including the clocks going forward and back, which happens in March/April (+1 hour) and 
        // October (-1 hour)....needed to just compensate by a great enough value (chose 1.5 hours) to result in the correct
        // return date always being displayed
        toDateMillis = toDateMillis + ST_COMPENSATE_IN_MILLIS;
        
        var calcToDate = new Date();
        
        calcToDate.setTime(toDateMillis);
        
        var toDay = calcToDate.getDate();
        
        toDay = toDay > 9 ? toDay : '0' + toDay;
             
        var toMonth = calcToDate.getMonth();
     
        //bug in Javascript date object: months go from 0-11!
        var toMonthFix = toMonth + 1;
                
        toMonthFix = toMonthFix > 9 ? toMonthFix : '0' + toMonthFix;
        
        var toYear = calcToDate.getFullYear();
        
        var toDateStr = toDay + '/' + toMonthFix + '/' + toYear;
        
        
        
        // gohop change
        var nameDayAndDate = formatDate(calcToDate, dateFormatDay); 
        var nameDay = nameDayAndDate.substring(0,3);
        var nameDate = nameDayAndDate.substring(4);
        toDate.value = nameDate;
        document.getElementById(textDayField).innerHTML = nameDay;
        // end of gohop change 
        
        document.getElementById(dayField).value = toDay;
        document.getElementById(monthField).value = toMonthFix;
        document.getElementById(yearField).value = toYear;
        document.getElementById(dateField).value = toDateStr;
        
        
    }
    else
    {
        
        // gohop change
        var calcFromDate = new Date(fromYear, fromMonthFix, fromDay);
        var nameDayAndDate = formatDate(calcFromDate, dateFormatDay); 
        var nameDay = nameDayAndDate.substring(0,3);
        
        toDate.value = fromDate.value;
        document.getElementById(textDayField).innerHTML = nameDay;
        // end of gohop change
        
        
        document.getElementById(dayField).value = fromDay;
		document.getElementById(monthField).value = fromMonth;
		document.getElementById(yearField).value = fromYear;
        document.getElementById(dateField).value = fromDay + '/' + fromMonth + '/' + fromYear;
    }
}



// gohop change

function getMonthNumByName(MonthName)
{
var monthID
switch (MonthName)
{
case "Jan":
  monthID = "01" ;
  break;
case "Feb":
  monthID = "02" ;
  break;
case "Mar":
  monthID = "03" ;
  break;
case "Apr":
  monthID = "04" ;
  break;
case "May":
  monthID = "05" ;
  break;
case "Jun":
  monthID = "06" ;
  break;  
case "Jul":
  monthID = "07" ;
  break;
case "Aug":
  monthID = "08" ;
  break;
case "Sep":
  monthID = "09" ;
  break;
case "Oct":
  monthID = "10" ;
  break;
case "Nov":
  monthID = "11" ;
  break;
case "Dec":
  monthID = "12" ;
  break;    
default:
  alert("month name error");
}
return monthID;
}


function getMonthNameByNum(MonthNum)
{
var myMonths=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
var MonthName = myMonths[MonthNum-1]
return MonthName
}


function popupFlightDetails(url, ItinerarySequenceNumber, ODNumber )
{
paramsURL = url + '?seqNo=' + ItinerarySequenceNumber + '&odNo=' + ODNumber ;
window.open(paramsURL,'details','width=700,height=500,resizable=no,scrollbars=yes');
}

function popupSingleFlightDetail(url, Airline, FlightNumber, DepartureDate, DepartureAirport, ArrivalAirport)
{
paramsURL = url + '?Airline=' + Airline + '&FlightNumber=' + FlightNumber + '&DepartureDate=' + DepartureDate + '&DepartureAirport=' + DepartureAirport + '&ArrivalAirport=' + ArrivalAirport ;
window.open(paramsURL,'details','width=700,height=500,resizable=no,scrollbars=yes');
}

// end of gohop change