var max_days = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
var titles   = new Array('','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var year     = 2006;
var month    = "";
var day      = "";

function onChangeMonth(cmonth) {
    var add_day = 0;
    cmonth = cmonth.replace(/0(\d+)/g,'$1');
    day    = searchfrm.day.value;
    year   = searchfrm.year.value;
    str    = '<select name=day class=travel style="font: 11px Tahoma, Verdana, serif; color: #666 border: #999 1px solid; margin: 3px 0; width: 40px;">';
    if ((((year - 2004) % 4) == 0) && (cmonth == 2) ) {
        add_day = 1;
    }

    for (var i = 1; i < (max_days[cmonth] + add_day + 1); i++) {
        if (day == i) {
            sel = 'selected';
        } else {
            sel='';
        }
        if (i < 10) {
            dt = '0' + i;
        } else {
            dt = i;
        }
        str += '<option value=' + i + ' ' + sel + '>' + dt + '</option>';
    }
    str += '</select> ';
    day_sl.innerHTML = str;
}

function checkDates(pkday, pkmonth, dpday, dpmonth) {
    var d = new Date();
    var currMonth = d.getMonth() + 1;
    // Check that drop off dates come after pickup ones
    if (pkmonth == dpmonth) {
        if (pkday-dpday >= 0) {
          return false;
        }
    } else if (pkmonth > dpmonth && pkmonth >= currMonth && dpmonth >= currMonth) {
        return false;
    } else if (pkmonth > dpmonth && pkmonth < currMonth && dpmonth < currMonth) {
        return false;
    } else if (pkmonth < dpmonth && pkmonth < currMonth && dpmonth >= currMonth) {
        return false;
    }
    return true;
}

function setDates(dateValue, monthValue, dateField, monthField, formName) {
    eval("document." + formName + "." + dateField + ".selectedIndex = (dateValue-1)");
    eval("document." + formName + "." + monthField + ".value = padNumber(monthValue+1)");
    setOtherDates(dateField, formName);
    document.getElementById("calendar").style.visibility="hidden";
    if (document.getElementById) {
        document.getElementById("returnDay").style.visibility="visible";
        document.getElementById("returnMonth").style.visibility="visible";
        document.getElementById("RTIME").style.visibility="visible";
        document.getElementById("PAX1").style.visibility="visible";
        document.getElementById("PAX2").style.visibility="visible";
    }
}

function setOtherDates(dateField, formName) {
    //patch added amit kumar
    var pkday = eval("parseInt(document."+formName+".departureDay.selectedIndex)");
    pkday = pkday+1;
    var index=eval("document."+formName+".departureMonth.selectedIndex");
    var pkmonth = eval("document."+formName+".departureMonth.options["+index+"].value");
        pkmonth=remNumber(pkmonth);
    var dpday = eval("parseInt(document."+formName+".returnDay.selectedIndex)");
        dpday = dpday+1;
    var index1=eval("document."+formName+".returnMonth.selectedIndex");
    var dpmonth = eval("document."+formName+".returnMonth.options["+index1+"].value");
        dpmonth=remNumber(dpmonth);
    var d = new Date();
    currMonth = d.getMonth();
    currYear = d.getFullYear();
    //patch added amit kumar

    // If pickup date and month are being set..
    if (dateField == "departureDay") {
        // Adjust the drop off date
        if (pkmonth < currMonth) {
            currYear += 1;
        }
        var numOfDays = daysInMonth(pkmonth, currYear);
        var newDate = ((pkday + 3) % numOfDays) || numOfDays;
        eval("document." + formName + ".returnDay.selectedIndex = (newDate-1)");
        // Adjust the drop off month
        if (pkday + 3 > numOfDays) {
            var newMonth = (pkmonth + 1) % 12;
            if (newMonth == 0) {
                newMonth = padNumber(12);
            } else {
                newMonth = padNumber((pkmonth + 1) % 12);
            }
            eval("document."+formName+".returnMonth.value = newMonth");
        } else {
            eval("document."+formName+".returnMonth.value = padNumber(pkmonth)");
        }
    } else if (dateField == "returnDay") {
        // Else if dropoff date and month are being set..
        // If the selected drop off date is before the before the pickup date..
        if (!checkDates(pkday, pkmonth, dpday, dpmonth)) {
            // Adjust the pickup date
            if (dpday-1 <= 0) {
                var numOfDays = daysInMonth(dpmonth-1, currYear);
                eval("document."+formName+".departureDay.selectedIndex = (numOfDays+dpday)-2");
            } else {
                eval("document."+formName+".departureDay.selectedIndex = dpday-2");
            }
            // Adjust the pickup month
            if (dpday-1 <= 0) {
                var newMonth = dpmonth - 1;
                if (newMonth == 0) {

                    newMonth = padNumber(12);
                } else {
                    newMonth = padNumber(dpmonth - 1);
                }
                eval("document."+formName+".departureMonth.value = newMonth");
            } else { eval("document."+formName+".departureMonth.value = padNumber(dpmonth)"); }
        }
    }
}

function daysInMonth(month, year) {
    if (year == null) {
        var d = new Date();
        year = d.getFullYear();
    }
    if (month == 4 || month == 6 || month == 9 || month == 11) {
        return 30;
    } else if (month == 2) {
        if (year % 4 == 0) {
            return 29;
        } else {
            return 28;
        }
    } else {
    return 31;
    }
}

function padNumber(number) {
    var d     = new Date();
    currMonth = d.getMonth();
    currYear  = d.getFullYear();
    if (number > currMonth) {
        return (currYear*100 + number);
    } else {
        return ((currYear + 1)*100 + number);
    }
}

function remNumber(number) {
    number = eval(number);
    return (number % 100);
}

/// Synchronize the departure and arrival dates when changed
function SyncDates(depDayObject, depMonthObject, arrDayObject, arrMonthObject, eventType){
    (eventType == "depart") ? setOtherDates('departureDay', 'searchfrm') : setOtherDates('returnDay', 'searchfrm');
}

function setDays(month, day, year) {
    if (month.constructor != Number) {
        var date = month.options[month.selectedIndex].value;
        var month = getMonth(date) - 1;
        var year = getYear(date);
    }
    Date.DAYSINMONTH[1] = (year && !isLeapYear(year)) ? 28 : 29;
    var index = day.length;
    if (index == Date.DAYSINMONTH[month]) {
        return;
    } else if (index < Date.DAYSINMONTH[month]) {
        for (var i = index; i < Date.DAYSINMONTH[month]; i++) {
            day[i] = new Option(i + 1);
        }
    } else if (index > Date.DAYSINMONTH[month]) {
        for (var i = index; i >= Date.DAYSINMONTH[month]; i--) {
            day[i] = null;
        }
    }
    if (day.selectedIndex > index) {
        day.selectedIndex = 0;
    }
}

function getDateArray(length) {
    var arr = [];
    var date = new Date();
    var startYear = date.getFullYear();
    var startMonth = date.getMonth();
    for (var i = 0; i < 12; i++) {
        var num = ((startMonth + i) >= Date.MONTHS.length) ? (startMonth + i) - Date.MONTHS.length : startMonth + i;
        var year = ((startMonth + i) >= Date.MONTHS.length) ? startYear + 1 : startYear;
        var month = (length) ? Date.MONTHS[num].substring(0, 3) : Date.MONTHS[num];
        var value = String(num + 1);
        if (value.length == 1) {
            value = "0" + value;
        }
        arr[i] = [year + value, month + " " + year];
    }
    return arr;
}

function getMonth(date) {
    return Number(date.substring(4, 6));
}

function getYear(date) {
    return Number(date.substring(0, 4));
}

function isLeapYear(year) {
    return (year%4 == 0);
}

function getDate(year, month, day) {
    var d = new Date();
    d.setDate(1);
    if (typeof(year) != "undefined") {
        d.setYear(year);
    }
    if (typeof(month) != "undefined") {
        d.setMonth(month);
    }
    if (typeof(day) != "undefined") {
        d.setDate(day);
    }
    return d;
}

if (!Date.MONTHS) {
    Date.MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
}
Date.DAYSINMONTH = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
