﻿var ValidFrom = '';
var ValidTo = '';
var ArrivalFrom = '';
var ArrivalUntil = '';
var DepartureFrom = '';
var DepartureUntil = '';
var ArrivalDay = '';
var DepartureDay = '';
var MinDays = '';
var MaxDays = '';
var OfferTitle = '';
var CTL_Check_InClientID = '';
var CTL_Check_OutClientID = '';
var ddlNightsClientID = '';
var DateTxtID = '';
var ddlCityListClientID = '';
var ddlHotelListClientID = '';
var oDateTxtBox = 'txtSelectDate';

function validateSearch() {
    if (document.getElementById(ddlCityListClientID) && (document.getElementById(ddlCityListClientID).selectedIndex == 0)) {
        alert("Please select the City.");
        document.getElementById(ddlCityListClientID).focus();
        return false;
    }

    if (document.getElementById(ddlHotelListClientID) && (document.getElementById(ddlHotelListClientID).selectedIndex == 0)) {
        alert("Please select the Hotel.");
        document.getElementById(ddlHotelListClientID).focus();
        return false;
    }
    return true;
}

function SetCalendarDate(e, a, DateTxtID) {
    if (document.getElementById(DateTxtID) != null) {
        var datevalue = document.getElementById(DateTxtID);
        e._selectedDate = convertStrtoDate(datevalue.value);
    }
    e._popupBehavior.set_positioningMode(AjaxControlToolkit.PositioningMode.BottomLeft);
    if (!this._isOpen) {
        if (this._enabled)
            this.show();
    }
    else {
        this.hide();
    }
}

function setCalendarPosition(sender, args) {
    sender._popupBehavior.set_positioningMode(AjaxControlToolkit.PositioningMode.BottomLeft);
}

//Validate Check In Date
function ValidateDate(e) {
    var today = new Date();
    var defaultDay = today;
    ValidFrom = new Date(ValidFrom);
    ValidTo = new Date(ValidTo);
    ArrivalFrom = new Date(ArrivalFrom);
    ArrivalUntil = new Date(ArrivalUntil);
    DepartureFrom = new Date(DepartureFrom);
    DepartureUntil = new Date(DepartureUntil);

    var weekday = new Array(7);
    // weekday[0] = "Sunday";
    weekday[1] = "Monday";
    weekday[2] = "Tuesday";
    weekday[3] = "Wednesday";
    weekday[4] = "Thursday";
    weekday[5] = "Friday";
    weekday[6] = "Saturday";
    weekday[7] = "Sunday";

    var selectedDate = sender._selectedDate;
    //Check In date
    oArrDate = CTL_Check_InClientID + "_" + oDateTxtBox;
    var oADate = document.getElementById(oArrDate);
    var ADate = convertStrtoDate(oADate.value);
    //Check Out date
    oDepDate = CTL_Check_OutClientID + "_" + oDateTxtBox;
    var oDDate = document.getElementById(oDepDate);
    var DDate = convertStrtoDate(oDDate.value);

    var sCityCode = 0;
    var sTDay = today.getDay();
    var diff = 0;

    //If Arrival days are mentined set default check in date
    if ((ArrivalDay != '') && (ArrivalDay != "1|2|3|4|5|6|7")) {
        var sWeekDay = selectedDate.getDay();
        if (sWeekDay == 0) sWeekDay = 7; //Set day for SUnday
        var temp = new Array();
        temp = ArrivalDay.split('|');
        if (temp.length > 0) sCityCode = parseInt(temp[0]);
        if (ArrivalDay.indexOf(sTDay) <= 0) {
            //            diff = Math.abs(sCityCode - sTDay);
            //            defaultDay = dateAdd('d', diff, today);
            defaultDay = GetNextDaysDate(today, sCityCode);
        }
        else {
            defaultDay = dateAdd('d', diff, today);
        }
    }


    //selected date should not be greater than today's date
    if ((datedifference(sender._selectedDate, today) > 1)) {
        alert("You cannot select a day before today!");
        //sender._selectedDate = new Date();
        sender._selectedDate = defaultDay;
        // set the date back to the today
        sender._textbox.set_Value(sender._selectedDate.format(sender._format));
        setCheckOutDate();
        return false;
    }

    if ((datedifference(sender._selectedDate, DDate) < 0)) {
        alert("You cannot select a check-in date greater than check-out date!");
        sender._selectedDate = defaultDay;
        // set the date back to the today
        sender._textbox.set_Value(sender._selectedDate.format(sender._format));
        setCheckOutDate();
        return false;
    }


    if ((datedifference(selectedDate, ArrivalFrom) > 0) && (datedifference(ArrivalFrom, today) <= 0)) {
        var strMsg = "Arrival date for offer '" + OfferTitle + "' should be greater than or equal to " + ArrivalFrom.format(sender._format);
        alert(strMsg);
        sender._selectedDate = ArrivalFrom;
        sender._textbox.set_Value(sender._selectedDate.format(sender._format));
        setCheckOutDate();
        return false;
    }


    if ((datedifference(selectedDate, ArrivalUntil) < 0) && (datedifference(ArrivalUntil, today) <= 0)) {
        var strMsg = "Arrival date for offer '" + OfferTitle + "' should be considered until " + ArrivalUntil.format(sender._format);
        alert(strMsg);
        sender._selectedDate = ArrivalUntil;
        sender._textbox.set_Value(sender._selectedDate.format(sender._format));
        setCheckOutDate();
        return false;
    }


    if ((datedifference(selectedDate, DepartureUntil) < 0) && (datedifference(DepartureUntil, today) <= 0)) {

        var strMsg = "Arrival date for offer '" + OfferTitle + "' should be considered before " + DepartureUntil.format(sender._format);
        alert(strMsg);
        if (ArrivalFrom > today)
            sender._selectedDate = ArrivalFrom;
        else
            sender._selectedDate = today;
        sender._textbox.set_Value(sender._selectedDate.format(sender._format));
        setCheckOutDate();
        return false;
    }


    if ((datedifference(selectedDate, DepartureFrom) < 0) && (datedifference(DepartureFrom, today) <= 0)) {

        var strMsg = "Arrival date for offer '" + OfferTitle + "' should be considered before " + DepartureFrom.format(sender._format);
        alert(strMsg);
        if (ArrivalFrom > today)
            sender._selectedDate = ArrivalFrom;
        else
            sender._selectedDate = today;
        sender._textbox.set_Value(sender._selectedDate.format(sender._format));
        setCheckOutDate();
        return false;
    }

    //If Arrival Days are available for offer and offer days is not applicable for all days of a week
    if ((ArrivalFrom == '') || (isNaN(ArrivalFrom))) {
        if ((ArrivalDay != '') && (ArrivalDay != "1|2|3|4|5|6|7")) {
            if (ArrivalDay.indexOf(sWeekDay) < 0) { //if check selected day not comes in Arrival day
                var strMsg1 = "";
                if (temp.length > 0) {
                    strMsg1 = weekday[temp[0]];
                    for (var i = 1; i < (temp.length); i++) {
                        strMsg1 = strMsg1 + "," + weekday[temp[i]]; //create message for offer days
                    }
                }

                var strMsg = "Offer '" + OfferTitle + "' is valid only if Arrival day is " + strMsg1 + ".";
                alert(strMsg);
                sender._selectedDate = defaultDay;
                sender._textbox.set_Value(sender._selectedDate.format(sender._format));
                setCheckOutDate();
                return false;
            }

        }
    }


    if (((datedifference(selectedDate, ValidTo)) < 0) && (datedifference(ValidTo, today) <= 0)) {
        var strMsg = "Offer '" + OfferTitle + "' is valid upto " + ValidTo.format(sender._format);
        alert(strMsg);
        sender._selectedDate = defaultDay; //Set default day if offer's departure days are available..
        sender._textbox.set_Value(sender._selectedDate.format(sender._format));
        setCheckOutDate();
        return false;
    }

    //poulate numbe rof nights as per the change of check-in date and
    //set selected index equal to the difference of Check-Out and check-in date.
    oDepDate = CTL_Check_OutClientID + "_" + oDateTxtBox;
    var oDDate = document.getElementById(oDepDate);
    var DDate = convertStrtoDate(oDDate.value);

    if (document.getElementById(ddlNightsClientID).disabled == false) {
        populatenoOfRooms(sender._selectedDate); //Populate no. of nights
        //Set no .of nights selected= CheckOut date - Check In date
        if (document.getElementById(ddlNightsClientID)) {
            var selectedVal = Math.abs(datedifference(sender._selectedDate, DDate));
            setDropDownList(document.getElementById(ddlNightsClientID), selectedVal);
            //Again set CheckOut date as per the no. of nights selected.
            DDate = dateAdd('d', document.getElementById(ddlNightsClientID).value, sender._selectedDate);
            oDDate.value = chkDigit((DDate.getDate())) + "/" + chkDigit((DDate.getMonth() + 1)) + "/" + DDate.getFullYear();
        }
    }
    else {
        //If Arrivals days for offers are selected
        //Display no of nights equal to the difference between DDate and ADAte
        if (document.getElementById(ddlNightsClientID)) {
            var selectedVal = Math.abs(datedifference(sender._selectedDate, DDate));
            document.getElementById(ddlNightsClientID).options.length = 0;
            var optn = document.createElement("OPTION");
            optn.text = "" + selectedVal;
            optn.value = "" + selectedVal;
            document.getElementById(ddlNightsClientID).options.add(optn);

        }
    }

    return true;
}

//Set Check Out date if any validation fails from check-in date
function setCheckOutDate() {

    oArrDate = CTL_Check_InClientID + "_" + oDateTxtBox;
    var oADate = document.getElementById(oArrDate);
    var ADate = convertStrtoDate(oADate.value);

    oDepDate = CTL_Check_OutClientID + "_" + oDateTxtBox;
    var oDDate = document.getElementById(oDepDate);
    var DDate = convertStrtoDate(oDDate.value);
    //If arrival from/ departure for offer is available
    if (document.getElementById(ddlNightsClientID).disabled == false) {
        populatenoOfRooms(ADate);
        if (document.getElementById(ddlNightsClientID)) {
            DDate = convertStrtoDate(oDDate.value);
            var selectedVal = Math.abs(datedifference(ADate, DDate));
            setDropDownList(document.getElementById(ddlNightsClientID), selectedVal);
            DDate = dateAdd('d', document.getElementById(ddlNightsClientID).value, ADate);
            oDDate.value = chkDigit((DDate.getDate())) + "/" + chkDigit((DDate.getMonth() + 1)) + "/" + DDate.getFullYear();
        }
    }
    else {
        //If Arrival days and departure days are mentioned
        if (document.getElementById(ddlNightsClientID)) {
            var selectedVal = Math.abs(datedifference(ADate, DDate));

            // added by aniruddha on 20/01/2010
            if (selectedVal > 10) {
                selectedVal = 10;
                DDate = dateAdd('d', selectedVal, ADate);
                oDDate.value = chkDigit((DDate.getDate())) + "/" + chkDigit((DDate.getMonth() + 1)) + "/" + DDate.getFullYear();            
            }
            
            document.getElementById(ddlNightsClientID).options.length = 0;
            var optn = document.createElement("OPTION");
            optn.text = "" + selectedVal;
            optn.value = "" + selectedVal;
            document.getElementById(ddlNightsClientID).options.add(optn);            
        }
    }
}

//Validate Check-Out date
function ValidateCheckOutDate(e) {

    var today = new Date();
    ValidFrom = new Date(ValidFrom);
    ValidTo = new Date(ValidTo);
    ArrivalFrom = new Date(ArrivalFrom);
    ArrivalUntil = new Date(ArrivalUntil);
    DepartureFrom = new Date(DepartureFrom);
    DepartureUntil = new Date(DepartureUntil);

    var weekday = new Array(7);
    //    weekday[0] = "Sunday";
    weekday[1] = "Monday";
    weekday[2] = "Tuesday";
    weekday[3] = "Wednesday";
    weekday[4] = "Thursday";
    weekday[5] = "Friday";
    weekday[6] = "Saturday";
    weekday[7] = "Sunday";


    //var selectedDate = sender._selectedDate;

    oArrDate = CTL_Check_InClientID + "_" + oDateTxtBox;
    var oADate = document.getElementById(oArrDate);
    var ADate = convertStrtoDate(oADate.value);

    oDepDate = CTL_Check_OutClientID + "_" + oDateTxtBox;
    var oDDate = document.getElementById(oDepDate);
    var DDate = convertStrtoDate(oDDate.value);

    var selectedDate = sender._selectedDate;

    var sCityCode = 0;
    var sTDay = today.getDay();
    var diff = 0;

    var defaultArrDay = today;
    //var defaultDepDay = today;
    var defaultDepDay = defaultArrDay;
    

    if ((ArrivalDay != '') && (ArrivalDay != "1|2|3|4|5|6|7")) {
        var sWeekDay = ADate.getDay();
        if (sWeekDay == 0) sWeekDay = 7; //Set day for SUnday
        var temp = new Array();
        temp = ArrivalDay.split('|');
        if (temp.length > 0) sCityCode = parseInt(temp[0]);
        if (ArrivalDay.indexOf(sTDay) <= 0) {
            //                diff = Math.abs(sCityCode - sTDay);
            //                defaultArrDay = dateAdd('d', diff, today);
            defaultArrDay = GetNextDaysDate(today, sCityCode);
        }
        else {
            defaultArrDay = dateAdd('d', diff, today);
        }
    }


    if ((DepartureDay != '') && (DepartureDay != "1|2|3|4|5|6|7")) {
        var sWeekDay = selectedDate.getDay();
        if (sWeekDay == 0) sWeekDay = 7; //Set day for SUnday
        var temp = new Array();
        temp = DepartureDay.split('|');
        if (temp.length > 0) sCityCode = parseInt(temp[0]);
        if (DepartureDay.indexOf(sTDay) <= 0) {
            //                diff = Math.abs(sCityCode - sTDay);
            //                defaultDepDay = dateAdd('d', diff, today);
            defaultDepDay = GetNextDaysDate(defaultArrDay, sCityCode);
        }
        else {
            defaultDepDay = dateAdd('d', diff, today);
        }
    }



    //selected date should not be greater than today's date
    if ((datedifference(selectedDate, today) > 1)) {
        alert("You cannot select a day before today!");
        //sender._selectedDate = new Date();
        sender._selectedDate = ADate; //defaultDepDay;
        if (datedifference(ADate, defaultDepDay) < 0) {
            ADate = defaultArrDay;
            oADate.value = chkDigit((ADate.getDate())) + "/" + chkDigit((ADate.getMonth() + 1)) + "/" + ADate.getFullYear();
        }
        // set the date back to the today
        sender._textbox.set_Value(sender._selectedDate.format(sender._format));
        setCheckOutDate();
        return false;
    }

    if ((datedifference(ADate, selectedDate) < 0)) {
        alert("You cannot select a check-out date less than check-in date!");
        sender._selectedDate = ADate; //defaultDepDay;
        if (datedifference(ADate, defaultDepDay) < 0) {
            ADate = defaultArrDay;
            oADate.value = chkDigit((ADate.getDate())) + "/" + chkDigit((ADate.getMonth() + 1)) + "/" + ADate.getFullYear();
            sender._selectedDate = ADate;
        }
        // set the date back to the today
        sender._textbox.set_Value(sender._selectedDate.format(sender._format));
        setCheckOutDate();
        return false;
    }

    var oDepDate = CTL_Check_OutClientID + "_txtSelectDate";
    var oDDate = document.getElementById(oDepDate);
    var DDate = convertStrtoDate(oDDate.value);

    //If departure day for the selected offfer is mentioned...
    if ((DepartureFrom == '') || (isNaN(DepartureFrom))) {
        if (((DepartureDay != '')) && (DepartureDay != '1|2|3|4|5|6|7')) {
            var sWeekDay = DDate.getDay();
            if (sWeekDay == 0)
                sWeekDay = 7;
            if (DepartureDay.indexOf(sWeekDay) < 0) { //check selected day comes in Arrival day
                var strMsg1 = "";
                var temp = new Array();
                temp = DepartureDay.split('|');
                if (temp.length > 0) {

                    strMsg1 = weekday[temp[0]];
                    for (var i = 1; i < (temp.length); i++) {
                        strMsg1 = strMsg1 + "," + weekday[temp[i]]; //create message for offer days
                    }
                }
                var strMsg = "Offer '" + OfferTitle + "' is valid only if Departure day is " + strMsg1 + ".";
                alert(strMsg);
                //set date to allowed days greater than todays date or todays date if today's day is in arrival days.
                sender._selectedDate = defaultDepDay;
                if (datedifference(ADate, defaultDepDay) < 0) {
                    ADate = defaultArrDay;
                    oADate.value = chkDigit((ADate.getDate())) + "/" + chkDigit((ADate.getMonth() + 1)) + "/" + ADate.getFullYear();
                }

                sender._textbox.set_Value(sender._selectedDate.format(sender._format));
                setCheckOutDate();
                return false;
            }

        }
    }

    if (((datedifference(DDate, ValidTo)) < 0) && (datedifference(ValidTo, today) <= 0)) {
        var strMsg = "Offer '" + OfferTitle + "' is valid upto " + ValidTo.format(sender._format);
        alert(strMsg);
        sender._selectedDate = defaultDepDay; //Set default day if offer's arrival days are available..
        if (datedifference(ADate, defaultDepDay) < 0) {
            ADate = defaultArrDay;
            oADate.value = chkDigit((ADate.getDate())) + "/" + chkDigit((ADate.getMonth() + 1)) + "/" + ADate.getFullYear();
        }
        sender._textbox.set_Value(sender._selectedDate.format(sender._format));
        setCheckOutDate();
        return false;
    }

    if (document.getElementById(ddlNightsClientID).disabled == false) {
        populatenoOfRooms(sender._selectedDate); //Populate no. of nights
        //Set no .of nights selected= CheckOut date - Check In date
        if (document.getElementById(ddlNightsClientID)) {
            oDDate = document.getElementById(oDepDate);
            DDate = convertStrtoDate(oDDate.value);
            var selectedVal = Math.abs(datedifference(ADate, DDate));
            setDropDownList(document.getElementById(ddlNightsClientID), selectedVal);
        }

    }
    else {
        //If Arrivals days for offers are selected
        //Display no of nights equal to the difference between DDate and ADAte
        if (document.getElementById(ddlNightsClientID)) {
            oDDate = document.getElementById(oDepDate);
            DDate = convertStrtoDate(oDDate.value);
            var selectedVal = Math.abs(datedifference(ADate, DDate));
            document.getElementById(ddlNightsClientID).options.length = 0;
            var optn = document.createElement("OPTION");
            optn.text = "" + selectedVal;
            optn.value = "" + selectedVal;
            document.getElementById(ddlNightsClientID).options.add(optn);
        }
    }

    return true;

}

function GetNextDaysDate(time, sDay) {   
    var time = new Date(time);
    var startTime = dateAdd('d', 1, time);
    
    if (sDay == 7) {
        sDay = 0;
    }
    while (startTime.getDay() != sDay) {
        startTime = dateAdd('d', 1, startTime);
    }

    if (sDay == 0) {
        sDay = 7;
    }

    return startTime;
}

//Populate number of Nights
function populatenoOfRooms(selectedDate) {
    var noOfDays = 0;
    var iMinRooms = 0;
    var today = new Date();
    //Set Minimum and maximum no of nights from ddlNights...
    if (document.getElementById(ddlNightsClientID)) {
        if (document.getElementById(ddlNightsClientID).options.length != 0) {
            iMinRooms = Math.abs(document.getElementById(ddlNightsClientID).options[0].value);
            noOfDays = Math.abs(document.getElementById(ddlNightsClientID).options[document.getElementById(ddlNightsClientID).options.length - 1].value);
        }
    }
    //If check-in and check-out date changed
    var oArrDate = CTL_Check_InClientID + "_txtSelectDate";
    var oDepDate = CTL_Check_OutClientID + "_txtSelectDate";

    var oADate = document.getElementById(oArrDate);
    var oDDate = document.getElementById(oDepDate);
    var DDate = convertStrtoDate(oDDate.value);
    var ADate = convertStrtoDate(oADate.value);

    // if ((selectedDate <= DepartureFrom) && (selectedDate >= today)) set minimum limit to no. of nights
    if ((datedifference(selectedDate, DepartureFrom) >= 0) && (datedifference(selectedDate, today) <= 1)) {
        iMinRooms = Math.round(datedifference(selectedDate, DepartureFrom));
        if (datedifference(DDate, dateAdd('d', iMinRooms, ADate)) >= 0) {
            DDate = dateAdd('d', iMinRooms, ADate);
            oDDate.value = chkDigit((DDate.getDate())) + "/" + chkDigit((DDate.getMonth() + 1)) + "/" + DDate.getFullYear();
        }

    }

    //if offer's valid to date, then change max limit equal to validto date minus selected date 
    if ((datedifference(selectedDate, ValidTo) >= 0) && (datedifference(selectedDate, today) <= 1)) {
        noOfDays = Math.round(datedifference(selectedDate, ValidTo));
        //noOfDays = Math.abs(Date(today).getDay() - Date(ValidTo).getDay());
    }

    //If offers maximum limit is set in CMS, then set maximum limit equal to CMS's max days minus 1
    if (MaxDays != 0)
        noOfDays = MaxDays - 1;

    //If Offer's departure until is provided in CMS, set  set maximum limit equal to CMS's departure until minus Selected Date      
    if ((datedifference(selectedDate, DepartureUntil) >= 0) && (datedifference(selectedDate, today) <= 1)) {
        noOfDays = Math.round(datedifference(selectedDate, DepartureUntil));
    }

    //If Minimum limit is grater than maximum limit, set maximum limit = min limit
    if (iMinRooms > noOfDays)
    {
        noOfDays = iMinRooms;
    }
    
    //Max. no of nights will not be greater than 10
    if (noOfDays > 10) {
        noOfDays = 10;
    }

    //Fill ddlNIghts dropdown list.
    if (document.getElementById(ddlNightsClientID)) {
        document.getElementById(ddlNightsClientID).options.length = 0;

        for (var x = iMinRooms; x <= noOfDays; x++) {
            var optn = document.createElement("OPTION");
            optn.text = "" + x;
            optn.value = "" + x;
            document.getElementById(ddlNightsClientID).options.add(optn);
        }
    }

}

function convertStrtoDate(strdate) {

    var dt1 = parseInt(strdate.substring(0, 2), 10);
    var mon1 = parseInt(strdate.substring(3, 5), 10);
    var yr1 = parseInt(strdate.substring(6, 10), 10);
    var dt = new Date(yr1, mon1 - 1, chkDigit(dt1));
    return dt;
}


//Function to update changes in check-in , check-out date, and update no.of nights list accordingly.
function AddDateInchkOutDate(oDepDate, oArrDate, blnAddDate) {

    var today = new Date();
    ValidFrom = new Date(ValidFrom);
    ValidTo = new Date(ValidTo);
    ArrivalFrom = new Date(ArrivalFrom);
    ArrivalUntil = new Date(ArrivalUntil);
    DepartureFrom = new Date(DepartureFrom);
    DepartureUntil = new Date(DepartureUntil);

    oDepDate = oDepDate + "_" + oDateTxtBox;
    oArrDate = oArrDate + "_" + oDateTxtBox;
    var oDDate = document.getElementById(oDepDate);
    var oADate = document.getElementById(oArrDate);

    var DDate = convertStrtoDate(oDDate.value);
    var ADate = convertStrtoDate(oADate.value);
    var minDays = document.getElementById(ddlNightsClientID).value;

    //If Offer's Arrival Days and departure days are not mentioned
    if (document.getElementById(ddlNightsClientID).disabled == false) {
        if (document.getElementById(ddlNightsClientID).selectedIndex < 0) {
            if (datedifference(ValidTo, DepartureUntil) <= 0) {
                // DDate = dateAdd('d', document.getElementById(ddlNightsClientID).value, ADate);
                DDate = dateAdd('d', Math.abs(datedifference(DepartureUntil, ADate)), ADate);
                // alert(datedifference(DDate, ValidTo));
                if ((datedifference(DDate, DepartureUntil)) < 0) {
                    DDate = DepartureUntil;
                    //             alert(Math.abs(datedifference(ValidTo, today)));
                    //             DDate = dateAdd('d', Math.abs(datedifference(ValidTo ,today))  , today);
                }
            }
            else {
                // DDate = dateAdd('d', document.getElementById(ddlNightsClientID).value, ADate);
                DDate = dateAdd('d', Math.abs(datedifference(ValidTo, ADate)), ADate);
                // alert(datedifference(DDate, ValidTo));
                if ((datedifference(DDate, ValidTo)) < 0) {
                    DDate = ValidTo;
                    //             alert(Math.abs(datedifference(ValidTo, today)));
                    //             DDate = dateAdd('d', Math.abs(datedifference(ValidTo ,today))  , today);
                }
            }
        }
        else {

            DDate = dateAdd('d', document.getElementById(ddlNightsClientID).value, ADate);
            if (((datedifference(DDate, ValidTo)) < 0) && (datedifference(ValidTo, today) <= 0)) {
                DDate = ValidTo;

            }

            if (((datedifference(DDate, DepartureUntil)) < 0) && (datedifference(DepartureUntil, today) <= 0)) {
                DDate = DepartureUntil;
            }
            oDDate.value = chkDigit((DDate.getDate())) + "/" + chkDigit((DDate.getMonth() + 1)) + "/" + DDate.getFullYear();

        }
        if (document.getElementById(ddlNightsClientID)) {
            var selectedVal = Math.abs(datedifference(ADate, DDate));
            setDropDownList(document.getElementById(ddlNightsClientID), selectedVal);
        }
        //alert(DDate);
    }
    else {
        //If arrival days and departure days for the offers are available
        var defaultArrDay = today;
        var defaultDepDay = today;
        var sTDay = today.getDay();
        var diff = 0;
        var sCityCode = 0;
        var temp = new Array();

        var sTDay = today.getDay();

        //Set default Arrvial date
        if (ArrivalDay.indexOf(sTDay) < 0) {
            temp = ArrivalDay.split('|');
            if (temp.length > 0) sCityCode = parseInt(temp[0]);
            //diff = Math.abs(sCityCode - sTDay);
            // defaultArrDay = dateAdd('d', diff, today);
            defaultArrDay = GetNextDaysDate(today, sCityCode);
        }
        else {
            defaultArrDay = today;
        }
        //set default departure date
        if (DepartureDay.indexOf(sTDay) < 0) {
            temp = DepartureDay.split('|');
            if (temp.length > 0) sCityCode = parseInt(temp[0]);
            //             diff = Math.abs(sCityCode - sTDay);
            //             defaultDepDay  = dateAdd('d', diff, today);
            defaultDepDay = GetNextDaysDate(defaultArrDay, sCityCode);
        }
        else {
            defaultDepDay = today;
        }

        var diff1 = datedifference(ADate, DDate);
        if ((diff1 < 0) || (diff1 > 10)) {
            // if blnAddDate is false then check condition for check in date           
            if (diff1 < 0) {
                ADate = convertStrtoDate(oADate.value);
                var sADay = ADate.getDay();
                temp = DepartureDay.split('|');
                if (temp.length > 0) sCityCode = parseInt(temp[0]);
                DDate = GetNextDaysDate(ADate, sCityCode);
                //                 diff = Math.abs(sCityCode - sADay);
                //                 DDate = dateAdd('d', diff, ADate);
            }

            if (diff1 > 10) {
                alert("Booking cannot be done for more than 10 days");
                ADate = defaultArrDay;
                DDate = defaultDepDay;
            }

            oADate.value = chkDigit((ADate.getDate())) + "/" + chkDigit((ADate.getMonth() + 1)) + "/" + ADate.getFullYear();
            oDDate.value = chkDigit((DDate.getDate())) + "/" + chkDigit((DDate.getMonth() + 1)) + "/" + DDate.getFullYear();
            return false;

        }
        else if (diff1 >= 0) {
            if (blnAddDate == true) {
            }
            else {
                if (ArrivalDay.indexOf(ADate.getDay()) < 0)
                    ADate = defaultArrDay;
                else
                    ADate = convertStrtoDate(oADate.value);
                var sADay = ADate.getDay();
                temp = DepartureDay.split('|');
                if (temp.length > 0) sCityCode = parseInt(temp[0]);
                DDate = GetNextDaysDate(ADate, sCityCode);

                //                 DDate = dateAdd('d', diff1, ADate);    
                oDDate.value = chkDigit((DDate.getDate())) + "/" + chkDigit((DDate.getMonth() + 1)) + "/" + DDate.getFullYear();
                if (document.getElementById(ddlNightsClientID)) {
                    var selectedVal = Math.abs(diff1);
                    setDropDownList(document.getElementById(ddlNightsClientID), selectedVal);
                }
            }

        }
        if (document.getElementById(ddlNightsClientID)) {
            document.getElementById(ddlNightsClientID).options.length = 0;
            var optn = document.createElement("OPTION");
            optn.text = "" + Math.abs(datedifference(ADate, DDate));
            optn.value = "" + Math.abs(datedifference(ADate, DDate));
            document.getElementById(ddlNightsClientID).options.add(optn);
        }

    }

    return true;

}

function setDropDownList(elementRef, valueToSetTo) {
    var isFound = false;

    for (var i = 0; i < elementRef.options.length; i++) {
        if (elementRef.options[i].value == valueToSetTo) {
            elementRef.options[i].selected = true;
            isFound = true;
        }
    }

    if (isFound == false) {
        if ((elementRef.options.length - 1) > 0)
            elementRef.options[elementRef.options.length - 1].selected = true;
    }
}

function chkDigit(i) {
    var str = i + '';
    if ((str.length) == 1) {
        str = '0' + str;
    }
    return str;
}

function dateAdd(p_Interval, p_Number, p_Date) {
    //if(!isDate(p_Date)){return "invalid date: '" + p_Date + "'";}
    if (isNaN(p_Number)) { return "invalid number: '" + p_Number + "'"; }

    p_Number = new Number(p_Number);
    var dt = new Date(p_Date);
    switch (p_Interval.toLowerCase()) {
        case "yyyy":
            {// year
                dt.setFullYear(dt.getFullYear() + p_Number);
                break;
            }
        case "q":
            { // quarter
                dt.setMonth(dt.getMonth() + (p_Number * 3));
                break;
            }
        case "m":
            { // month
                dt.setMonth(dt.getMonth() + p_Number);
                break;
            }
        case "y": // day of year
        case "d": // day
        case "w":
            { // weekday
                dt.setDate(dt.getDate() + p_Number);
                break;
            }
        case "ww":
            { // week of year
                dt.setDate(dt.getDate() + (p_Number * 7));
                break;
            }
        case "h":
            { // hour
                dt.setHours(dt.getHours() + p_Number);
                break;
            }
        case "n":
            { // minute
                dt.setMinutes(dt.getMinutes() + p_Number);
                break;
            }
        case "s":
            { // second
                dt.setSeconds(dt.getSeconds() + p_Number);
                break;
            }
        case "ms":
            { // second
                dt.setMilliseconds(dt.getMilliseconds() + p_Number);
                break;
            }
        default:
            {
                return "invalid interval: '" + p_Interval + "'";
            }
    }
    return dt;
}


function datedifference(fromdate, todate) {
    var startingdate = new Date(1997, 5, 11); //Month is 0-11 in JavaScript
    var today = new Date();
    //Get 1 day in milliseconds
    var one_day = 1000 * 60 * 60 * 24;

    //Calculate difference btw the two dates, and convert to days
    return Math.ceil((todate.getTime() - fromdate.getTime()) / (one_day));
}
 