﻿var cityDisableDatesData = null;
var DisableDatesDataByTarget = null;
var firstDateOnPicker = "";
var cnst_SearchPackagesCookie = "SearchPackagesCookie";
var noDatesFlag = false;

var PackagesRanges = {
    adult: [1, 2, 3, 4, 5],
    child: [0, 1, 2, 3, 4, 5],
    baby: [0, 1, 2],
    rooms: [1, 2, 3]
}

var packagesCookie = null;

SearchPackagesMethods =
{

    FillCountries: function() {
        $.ajax({
            type: "POST",
            url: "/ajax/handler.aspx/GetDefaultCountries",
            contentType: "application/json; charset=utf-8",
            data: "{iPackageTypeId:" + PackageTypeId + "}",
            dataType: "json",
            async: false,
            success: function(data) {
                $('select#CountryFromPackage').html(GeneralScriptMethods.fillOptionsV2(eval(data.d)));
            }
        });
    },

    CountryFromPackage_OnChange: function(countryID) {

        SearchPackagesMethods.InitPackagesDates();
        SearchPackagesMethods.HideNightsCountArea();
        $.ajax({
            type: "POST",
            url: "/ajax/handler.aspx/GetPackageCitiesByCountryID",
            data: "{countryID:" + countryID + ",iPackageTypeId:" + PackageTypeId + "}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: false,
            success: function(data) {
                $('select#CityFromPackage').html(GeneralScriptMethods.fillOptionsV2(eval(data.d)));
            }
        });
    },

    CalculatePackageRange: function() {
        var dateTargetArr = $(".dateTargetPackages").val().split('/');
        var dateBackArr = $(".dateBackPackages").val().split('/');

        var dateTarget = new Date(dateTargetArr[2], dateTargetArr[1] - 1, dateTargetArr[0]).getTime();
        var dateBack = new Date(dateBackArr[2], dateBackArr[1] - 1, dateBackArr[0]).getTime();

        $("#divNightsCount").attr("style", "display:block");
        $("#spnNightsCount").html(parseInt((dateBack - dateTarget) / (24 * 3600 * 1000)));

    },

    HideNightsCountArea: function() {
        $("#divNightsCount").attr("style", "display:none");
    },

    AddNewPackageRoom: function(roomNum) {
        var roomTemplate = $("<div class='PackageRoomWrapDiv' ><span class='roomTitleSpan'></span><div class='roomContentWrap'><div class='singleSelect'><label style='font-size:12px;font-weight:normal;'>מבוגר</label><select class='adult'></select></div><div class='singleSelect'><label style='font-size:12px;font-weight:normal;'>ילד </label><select class='child'></select></div><div class='singleSelect'><label style='font-size:12px;font-weight:normal;'>תינוק</label><select class='baby'></select></div><div  style='clear:both;'></div></div></div>");
        roomTemplate.insertBefore("#BeforeMePackage");
        $('select.adult', roomTemplate).html(GeneralScriptMethods.fillOptions(PackagesRanges.adult));
        $('select.adult', roomTemplate).val(2); // Sets default adults numer to 2.
        $('select.child', roomTemplate).html(GeneralScriptMethods.fillOptions(PackagesRanges.child));
        $('select.baby', roomTemplate).html(GeneralScriptMethods.fillOptions(PackagesRanges.baby));
        var roomNumber = roomNum + 1;
        $('.roomTitleSpan', roomTemplate).html('חדר ' + roomNumber);
    },

    SetRoomPackages: function(roomNum) {
        var RoomsContent = $(".PackageRoomWrapDiv");
        if (RoomsContent.length < roomNum) {
            for (i = 0; i < roomNum - RoomsContent.length; i++) {
                SearchPackagesMethods.AddNewPackageRoom(i + RoomsContent.length);
            }
        }
        else {
            for (i = RoomsContent.length; i > roomNum; i--) {
                $(RoomsContent[i - 1]).remove();
            }
        }
    },

    DisableReturnDayByTargetDate: function() {
        var targetDate = $(".dateTargetPackages").val();
        $.ajax({
            type: "POST",
            url: "/ajax/handler.aspx/GetDisableEndDatesByCity",
            data: "{cityID:'" + $("select#CityFromPackage").val() + "',fromDate:'" + targetDate + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: false,
            success: function(data) {
                DisableDatesDataByTarget = data.d;
                firstDateOnPicker = DisableDatesDataByTarget.split(",")[0].split('"')[1];
                var arrDt = firstDateOnPicker.split('-');
                var dateBackDate = new Date(arrDt[2], arrDt[0] - 1, arrDt[1]);
                $(".dateBackPackages").val(dateBackDate.format("dd/mm/yyyy"));

                SearchPackagesMethods.CalculatePackageRange();
            },
            error: function(exp) {
                alert(exp);
            }
        });
    },
    SetCalandersAccordingToPackages: function() {
        bIsDefaultSelected = false;
        SearchPackagesMethods.ClearErrorArea();
        var dtFirstTargetDate = "";

        if ($("select#CityFromPackage").val() != 0) {
            $('input.datePickerPackages').datepicker("destroy");

            $.ajax({
                type: "POST",
                url: "/ajax/handler.aspx/GetDisableDatesByCity",
                data: "{cityID:" + $("select#CityFromPackage").val() + "}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                async: false,
                success: function(data) {
                    cityDisableDatesData = data.d;
                    firstDateOnPicker = cityDisableDatesData.split(",")[0].split('"')[1];
                    var arrDt = firstDateOnPicker.split('-');
                    var dateTargetDate = new Date(arrDt[2], arrDt[0] - 1, arrDt[1]);
                    dtFirstTargetDate = dateTargetDate.format("dd/mm/yyyy");
                }
            });

            $('.dateTargetPackages').datepicker({
                numberOfMonths: 2,
                isRTL: true,
                showOn: 'both',
                buttonImage: PackagesCalendarIcon,
                constrainInput: true,
                dateFormat: "dd/mm/yy",
                onSelect: function(dateText, inst) {
                    SearchPackagesMethods.DisableReturnDayByTargetDate();
                    //$('.dateBackPackages').datepicker("show");
                    var t = setTimeout("$('.dateBackPackages').datepicker('show');", 50);
                },
                beforeShowDay: DisableTargetDates
            });

            $(".dateTargetPackages").val(dtFirstTargetDate);

            $('.dateBackPackages').datepicker({
                numberOfMonths: 2,
                isRTL: true,
                showOn: 'both',
                buttonImage: PackagesCalendarIcon,
                constrainInput: true,
                dateFormat: "dd/mm/yy",
                onSelect: function() { SearchPackagesMethods.CalculatePackageRange(); },
                beforeShowDay: DisableBackDates
            });

            if (dtFirstTargetDate == "") {
                alert("אין תאריכים ליעד המבוקש");
                noDatesFlag = true;
            }
            else {
                SearchPackagesMethods.DisableReturnDayByTargetDate();
                noDatesFlag = false;
            }
        }
    },

    ClearErrorArea: function() {
        $("#spnPackageErrorMsg").html("");
        $("#divError").css("display", "none");
    },

    RaisePackageError: function(errorText) {
        $("#divError").css("display", "block");
        $("#spnPackageErrorMsg").html(errorText);

    },

    ValidateAll: function() {
        SearchPackagesMethods.ClearErrorArea();
        if ($('select#CountryFromPackage').val() == 0) {
            SearchPackagesMethods.RaisePackageError("נא לבחור מדינה");
            return false;
        }

        if ($('select#CityFromPackage').val() == 0) {
            SearchPackagesMethods.RaisePackageError("נא לבחור עיר");
            return false;
        }

        if (noDatesFlag) {
            SearchPackagesMethods.RaisePackageError("אין תאריכים ליעד המבוקש");
            return false;
        }

        if ($(".dateTargetPackages").val() == "") {
            SearchPackagesMethods.RaisePackageError("נא לבחור תאריך יציאה");
            return false;
        }

        if ($(".dateBackPackages").val() == "") {
            SearchPackagesMethods.RaisePackageError("נא לבחור תאריך חזרה");
            return false;
        }



        return true;
    },
    RestoreCookies: function() {
        if (PackageTypeId == 5) {
            var PackagesSearchCookie = $.JSONCookie(cnst_SearchPackagesCookie);
            SearchPackagesMethods.SetRoomPackages(PackagesSearchCookie.roomsNumber);
            $("select#PackageRooms").val(PackagesSearchCookie.roomsNumber);
            if (PackagesSearchCookie.items) {
                $.each(PackagesSearchCookie.items, function(i, setting) {

                    if (PackagesSearchCookie.items[i].info == "select#CountryFromPackage") {
                        SearchPackagesMethods.CountryFromPackage_OnChange(setting.val);
                    }

                    if (PackagesSearchCookie.items[i].info == "select#ddlGradesPackages") {
                        $(".hotelBasisPackages").click();
                    }
                    $(setting.field).val(setting.val);

                    if (PackagesSearchCookie.items[i].info == "select#CityFromPackage") {
                        SearchPackagesMethods.SetCalandersAccordingToPackages();
                        $(setting.field).val(setting.val);
                    }

                });

                var dateTargetArr = $(".dateTargetPackages").val().split('/');
                var currentTargetDate = new Date(dateTargetArr[2], dateTargetArr[1] - 1, dateTargetArr[0]).getTime();
                var currentDate = new Date();

                if (currentTargetDate < currentDate) {
                    SearchPackagesMethods.SetCalandersAccordingToPackages();
                }


            }
        }
    },
    InitPackagesDates: function() {

        $('input.datePickerPackages').datepicker({
            numberOfMonths: 2,
            isRTL: true,
            showOn: 'both',
            buttonImage: PackagesCalendarIcon,
            constrainInput: true,
            dateFormat: "dd/mm/yy",
            beforeShowDay: function() { return false; }
        });
        $('input.datePickerPackages').val("");
    },
    InitPage: function() {
        SearchPackagesMethods.FillCountries();
        $('select#PackageRooms').html(GeneralScriptMethods.fillOptions(PackagesRanges.rooms));
        SearchPackagesMethods.AddNewPackageRoom(0);
        SearchPackagesMethods.InitPackagesDates();
        SearchPackagesMethods.HideNightsCountArea();
    },
    Search: function() {

        packagesCookie = { items: [], roomsNumber: $("select#PackageRooms").val() };

        if (SearchPackagesMethods.ValidateAll()) {

            baseSearchPackagesURL += "fcid=" + $('select#CountryFromPackage').val() + "&";
            GeneralScriptMethods.AddToCookie(packagesCookie, $('select#CountryFromPackage'), 'select#CountryFromPackage', 'select#CountryFromPackage');

            baseSearchPackagesURL += "cid=" + $('select#CityFromPackage').val() + "&";
            GeneralScriptMethods.AddToCookie(packagesCookie, $('select#CityFromPackage'), 'select#CityFromPackage', 'select#CityFromPackage');

            if ($(".PackagesRadio:checked").hasClass("PackagesRadio2")) {
                baseSearchPackagesURL += "pmargin=" + $('select#ddlPriceMargin').val() + "&";
            }

            baseSearchPackagesURL += "cname=" + escape($('select#CityFromPackage option:selected').text()) + ", " + escape($('select#CountryFromPackage option:selected').text()) + "&";
            baseSearchPackagesURL += "ptstr=" + PackageTypeName + "&"; // Need work
            baseSearchPackagesURL += "needVisa=" + "0" + "&"; // Allways 0, Since there is no use for needVisa while searching packages.

            baseSearchPackagesURL += "fd=" + $('.dateTargetPackages').val() + "&";
            GeneralScriptMethods.AddToCookie(packagesCookie, $('.dateTargetPackages'), '', '.dateTargetPackages');

            var dateTargetArr = $('.dateTargetPackages').val().split('/');
            var dateTarget = new Date(dateTargetArr[2], dateTargetArr[1] - 1, dateTargetArr[0]).getTime();
            var dateDiffPackages = parseInt((dateTarget - new Date()) / (24 * 3600 * 1000)) + 1;



            baseSearchPackagesURL += "td=" + $('.dateBackPackages').val() + "&";
            GeneralScriptMethods.AddToCookie(packagesCookie, $('.dateBackPackages'), '', '.dateBackPackages');

            //Update search session.

            jQuery.ajax(
                {
                    url: "/ajax/UpdateSearchSessionParams.aspx",
                    type: "POST",
                    dataType: "HTML",
                    data: "dateTarget=" + $(".dateTargetPackages").val() + "&dateBack=" + $(".dateBackPackages").val(),
                    async: false
                }
            );


            if ($('div#innerPackagesHotelStars').css("display") == 'block') {
                GeneralScriptMethods.AddToCookie(packagesCookie, $('select#ddlGradesPackages'), 'select#ddlGradesPackages', 'select#ddlGradesPackages');
                GeneralScriptMethods.AddToCookie(packagesCookie, $('select#ddlBasisesPackages'), 'select#ddlBasisesPackages', 'select#ddlBasisesPackages');
                baseSearchPackagesURL += "hgin=" + $('#ddlGradesPackages').val() + "&";
                baseSearchPackagesURL += "hbin=" + $('#ddlBasisesPackages').val() + "&";
            }
            else {
                baseSearchPackagesURL += "hgin=" + '0' + "&";
                baseSearchPackagesURL += "hbin=" + '0' + "&";
            }

            baseSearchPackagesURL += "ptid=" + PackageTypeId + "&";
            baseSearchPackagesURL += "rcid=" + $("select#PackageRooms").val() + "&";


            var romms = $(".PackageRoomWrapDiv").each(function(index, value) {
                var roomNumber = index + 1;
                baseSearchPackagesURL += "r" + roomNumber + "a=" + $('select.adult', value).val() + "&";
                baseSearchPackagesURL += "r" + roomNumber + "b=" + $('select.baby', value).val() + "&";
                baseSearchPackagesURL += "r" + roomNumber + "ch=" + $('select.child', value).val() + "&";
            });
            $(".PackageRoomWrapDiv .singleSelect select").each(function(index, value) {
                GeneralScriptMethods.AddToCookie(packagesCookie, $(value), '', $(value).getPath('stopPackages'));
            });


            baseSearchPackagesURL += "&DateDelta=" + dateDiffPackages;
            baseSearchPackagesURL += "&Dest=" + escape("נופש ב" + $('select#CityFromPackage option:selected').text());

            $.JSONCookie(cnst_SearchPackagesCookie, packagesCookie);

            top.location.href = baseSearchPackagesURL;
        }
    },

    toggleSearchOptions: function() {
        if ($(".PackagesRadio:checked").hasClass("PackagesRadio1")) {
            $(".pnlPriceMargin").css("display", "none");
            $(".regularSearchArea").css("display", "block");
        }
        else {
            $(".pnlPriceMargin").css("display", "block");
            $(".regularSearchArea").css("display", "none");
        }
    }
};

function DisableTargetDates(date) {

    var m = date.getMonth() + 1, d = date.getDate(), y = date.getFullYear();
    //console.log('Checking (raw): ' + m + '-' + d + '-' + y);

    if (m < 10) {
        m = '0' + m;
    }
    if (d < 10) {
        d = '0' + d;
    }
    var cuurentDate = m + '-' + d + '-' + y;
    return [cityDisableDatesData.indexOf(cuurentDate) != -1];
           
    //jQuery.datepicker.SetDisabledDays(date, cityDisableDatesData);
}

function DisableBackDates(date) {
    var m = date.getMonth() + 1, d = date.getDate(), y = date.getFullYear();
    //console.log('Checking (raw): ' + m + '-' + d + '-' + y);

    if (m < 10) {
        m = '0' + m;
    }
    if (d < 10) {
        d = '0' + d;
    }
    var cuurentDate = m + '-' + d + '-' + y;
    return [DisableDatesDataByTarget.indexOf(cuurentDate) != -1];
}



$(document).ready(function() {
    SearchPackagesMethods.InitPage();

    if (bIsRegularSearch == "False") {
        $('select#CountryFromPackage').val(0);
    }

    if (bIsRegularSearch == "True" && pmargin == "") { // cityID - query string param for destination pages.
        SearchPackagesMethods.RestoreCookies();
    }
    else {
        if (pmargin == "") {
            $('select#CountryFromPackage').val(countryID);
            SearchPackagesMethods.CountryFromPackage_OnChange(countryID);
            $('select#CityFromPackage').val(cityID);
            SearchPackagesMethods.SetCalandersAccordingToPackages();
        }
    }

    //Set Engine details for HOtelInfo page.
    var location = window.location.href;
    if (location.indexOf("Hotels/HotelInfo") > -1) {
        $('select#CountryFromPackage').val(hotelCountryID);
        SearchPackagesMethods.CountryFromPackage_OnChange(hotelCountryID);
        $('select#CityFromPackage').val(hotelCityID);
        SearchPackagesMethods.SetCalandersAccordingToPackages();
    }


});

