﻿// ---------------------------------------- Variables : PageControls ----------------------------------------
var BookingResultContainer_ClientID;
var BookingResultContainer;
var BookingResultContainerCrossSelling_ClientID = 'BookingResultContainerCrossSelling';
var BookingResultContainerCrossSelling;
var TextBoxPriceMin_ClientID;
var TextBoxPriceMax_ClientID;
var CheckBoxService1_ClientID;
var CheckBoxService2_ClientID;
var CheckBoxService3_ClientID;
var _buildMode = 0x01;
var _pageSize = 6;
var dateFormat;
var isMapLoading = false;
var idtypeoi;
var idoi;
var inittype;
var minDuration;
var initDuration;
var initdateYear;
var initdateMonth;
var initdateDay;
var showtabfam1;
var showtabfam2;
var showtabfam4;
var templateHtml;
var siteCss;
var jTheme;
var idPublication;

// ---------------------------------------- Properties ----------------------------------------
function get_results(){
    if (!BookingResultContainer)
        BookingResultContainer = $find(BookingResultContainer_ClientID);
    return BookingResultContainer;
}
function get_resultsCrossSelling(){
    if (!BookingResultContainerCrossSelling)
        BookingResultContainerCrossSelling = $find(BookingResultContainerCrossSelling_ClientID);
    return BookingResultContainerCrossSelling;
}

// ---------------------------------------- Fonctions: GoogleMaps ----------------------------------------
function showPageOnMap()
{
    var results = get_results();
    if (results) {
        results._showCarto();
        results._unselectMarkers();
        results._showBounds();
    }
}
function loadMaps() {
    if (!isMapLoading) {
        isMapLoading = true;
        google.load("maps", "2.x", { "callback": mapsLoaded });
    }
}
function mapsLoaded()
{
    if (get_results()) { get_results()._loadedMapScript(); }
    if (get_resultsCrossSelling()) { get_resultsCrossSelling()._loadedMapScript(); }
}

    
// ---------------------------------------- Fonctions: Pagination ----------------------------------------
function firstPage() {
    var results = get_results();
    if (results) { 
        results.pageFirst(); 
        EvalPager();
    }
}
function prevPage() {
    var results = get_results();
    if (results) { 
        results.pagePrev(); 
        EvalPager();
    }
}
function nextPage() {
    var results = get_results();
    if (results) { 
        results.pageNext(); 
        EvalPager();
    }
}
function lastPage() {
    var results = get_results();
    if (results) { 
        results.pageLast(); 
        EvalPager();
    }
}
function EvalPager() {
    var results = get_results();
    if (results) { 
        var resultsCount = String.format("{0} résultats ont été trouvés", results.get_resultCount());
        $get('LabelResultCount').innerHTML = resultsCount;
        $get('LabelResultCountFooter').innerHTML = resultsCount;
        
        var pageCount = String.format("{0}&nbsp;/&nbsp;{1}", results.get_pageIndex()+1, results.get_pageCount());
        $get('pageIndex').innerHTML = pageCount;
        $get('pageIndex2').innerHTML = pageCount;
    }
}

// ---------------------------------------- Fonctions: Tri ----------------------------------------
function sort(sortField) {
    var sortprice = $get("sortprice");
    var sortclass = $get("sortclass");
    var sortcommune = $get("sortcommune");
    var sorttitle = $get("sorttitle");
    $common.removeCssClasses(sortprice, ["sortselected"]);
    $common.removeCssClasses(sortclass, ["sortselected"]);
    $common.removeCssClasses(sortcommune, ["sortselected"]);
    $common.removeCssClasses(sorttitle, ["sortselected"]);
    var sortElement = null;
    switch(sortField){
        case BookingControls.SortField.Price:
            sortElement = sortprice;
            break;
        case BookingControls.SortField.Classement:
            sortElement = sortclass;
            break;
        case BookingControls.SortField.Commune:
            sortElement = sortcommune;
            break;
        case BookingControls.SortField.Title:
            sortElement = sorttitle;
            break;
    }
    $common.addCssClasses(sortElement, ["sortselected"]);
    var asc = "false";
    if (sortElement.attributes["sortasc"])
        asc = sortElement.attributes["sortasc"].nodeValue;
    asc = (asc=="true") ? "false" : "true";
    sortElement.attributes["sortasc"].nodeValue = asc;
    get_results().set_sortField(sortField);
    get_results().set_sortAsc(asc == "true");
    get_results().sortResults();
    EvalPager();
}

// ---------------------------------------- Fonctions: Filtre ----------------------------------------
function filterPrice() {
    var priceMin = parseInt($get(TextBoxPriceMin_ClientID).value);
    var priceMax = parseInt($get(TextBoxPriceMax_ClientID).value);
    get_results().set_filterPrice({min: priceMin, max:priceMax});
}
function filterServices(codes) {
    get_results().set_filterService(codes);
}
function onfilterchanged(sender, args) {
    EvalPager();
}

// ---------------------------------------- Fonctions: Modes d'affichage ----------------------------------------
function onbuildmodechanged(sender, e) {
    var encartRecherche = $get('blocGlobalEncartRecherche');
    var encartAffiner = $get('blocGlobalEncartAffiner');
    var resultsHeader = $get('blocGlobalResultsHeader');
    var resultsFooter = $get('blocGlobalResultsFooter');
    var resultDetailHeader = $get('blocGlobalResultDetailHeader');
    var encartListeResults = $get('blocGlobalEncartListeResults');
    var resultDetailFooter = $get('blocGlobalResultDetailFooter');
    var listeResults = $get('blocContenuEncartListeResults');
    var encartNouvelleRecherche = $get('blocGlobalEncartNouvelleRecherche');
    
    get_resultsCrossSelling().hideAllResults();
    //get_results().showPageResults();
    
    switch (e.mode)
    {
        case BookingControls.BuildMode.Detail:
            $common.setVisible(encartRecherche, false);
            $common.setVisible(encartNouvelleRecherche, false);
            $common.setVisible(encartAffiner, false);
            $common.setVisible(resultsHeader, false);
            $common.setVisible(resultsFooter, false);
            $common.setVisible(resultDetailHeader, true);
            $common.setVisible(encartListeResults, true);
            $common.setVisible(resultDetailFooter, true);
            get_results().buildResultsModeLight(listeResults);
            break;
        case BookingControls.BuildMode.Compact:
            $common.setVisible(encartRecherche, true);
            $common.setVisible(encartNouvelleRecherche, true);
            $common.setVisible(encartAffiner, true);
            $common.setVisible(resultsHeader, true);
            $common.setVisible(resultsFooter, true);
            $common.setVisible(resultDetailHeader, false);
            $common.setVisible(encartListeResults, false);
            $common.setVisible(resultDetailFooter, false);
            break;
    }
}
function onbuildmodechangedCrossSelling(sender, e) {
    onbuildmodechanged(sender,{mode: BookingControls.BuildMode.Detail}); 
    
    //get_resultsCrossSelling().showPageResults();
    sender._show();
    var id = sender.get_id();
    var offres = sender._selectOffresUnite(0);
    for (var i = 0; i < offres.length; i++) {
        $("#" + id + "_loadpopup_" + i).cluetip({ local: true, hideLocal: true, cursor: 'pointer', insertionType: 'insertBefore', cluetipClass: '', dropShadow: false, fx: { open: 'fadeIn'} });
    }
    get_results().hideAllResults();
}
function setModeListe() {
    var results = get_results();
    if (results) {
        if (!results._mapScriptLoaded) {
            results._loadingMapScript();
        }
        results.showResultsModeCompact(); 
    }
}

// ---------------------------------------- JQuery: Recherche ----------------------------------------
$(document).ready(function() {

    function initSelection() {
        var tabIndex = 0;
        var hebIndex = 0;
        var actIndex = 0;
        if (inittype == 'fdfbac6f-4422-4046-b394-f9ff5193623b') {
            tabIndex = 0;
            hebIndex = 0;
        } else if (inittype == '3cdf2761-22a8-4353-b96d-6a06122d4ed7') {
            tabIndex = 0;
            hebIndex = 1;
        } else if (inittype == '5e305462-69b3-4fd6-9394-98fa4a0f97ac') {
            tabIndex = 0;
            hebIndex = 2;
        } else if (inittype == '2319d9cb-74c6-4ed8-8a16-c01ecc9b4987') {
            tabIndex = 0;
            hebIndex = 3;
        } else if (inittype == 'ea652fed-bfd4-4139-a656-0693e97c3ab4') {
            tabIndex = 1;
            actIndex = 0;
        } else if (inittype == 'aa2634c9-08d1-43d8-af7a-0e9c7c8c1e22' || inittype == 'ec425e81-2f03-4b69-82bf-96b8af01a12c') {
            tabIndex = 1;
            actIndex = 1;
        } else if (inittype == '3c98efdd-5edf-44ff-bdfa-c40efe47678b' || inittype == '8e9c4de6-a19d-4751-aa3c-3812c3f6efc7') {
            tabIndex = 1;
            actIndex = 2;
        } else if (inittype == 'ea9cd2e5-76aa-45c8-8b77-38502764fddb') {
            tabIndex = 1;
            actIndex = 3;
        } else if (inittype == '6caf58a6-e775-4309-8bdd-b01f8b1ba437') {
            tabIndex = 1;
            actIndex = 4;
        } else if (inittype == '2ca4399e-35e9-45c3-82ad-9a47d374ce87') {
            tabIndex = 1;
            actIndex = 5;
        } else if (inittype == '07e7f7d5-6625-4d0b-a0f5-f635ee65cac4') {
            tabIndex = 1;
            actIndex = 6;
        } else if (inittype == '52bafeb2-d32b-46e2-88c9-67ae564df1d6') {
            tabIndex = 2;
        } else if (inittype == '9911be18-992c-4f59-9cf7-930773788a6c') {
            tabIndex = 2;
        } 
        $("#tabs").tabs({
            selected: tabIndex
        }).show();
        $("#selectTypeHeb").attr('selectedIndex', hebIndex);
        $("#selectTypeAct").attr('selectedIndex', actIndex);
        if (showtabfam4 == "false" && tabIndex < 2)
            $("#book-linktab4").hide();
    }

    initSelection();
    if (idtypeoi != '' && idoi != '') {
        $("#tabs ul").hide();
        $("#selectTypeHeb").hide();
        $("#selectTypeAct").hide();
    }
    //$("#tabs").show();

    $("#bookdialog").dialog({
        show: 'clip',
        autoOpen: false,
        bgiframe: true,
        modal: true,
        title: BookingControls.Resources.Reservation,
        draggable: true,
        resizable: false,
        position: [220, 10],
        width: '300px',
        heigth: '100px'
    });
    function generateAgeSelect() {
        var ageSelectOrigin = $("#nbpersonnes_chambre1 select.ageenfant2");
        ageSelectOrigin.hide();
        var nb = $("#selectroom1_nbenf").attr("options").length - 1;
        for (var i = 1; i < nb; i++) {
            ageSelectOrigin.clone(true).insertAfter(ageSelectOrigin).insertAfter(ageSelectOrigin);
        }
        for (var i = 0; i < nb; i++) {
            ageSelectOrigin.clone(true).insertAfter(ageSelectOrigin).appendTo("#ageenfants2");
        }
    }
    generateAgeSelect();
    $("#selectroom1_nbenf").change(function() {
        var nb = $("#selectroom1_nbenf").attr('selectedIndex');
        if (nb == 0)
            $("#nbpersonnes_chambre1 .ageenfants2").hide();
        else
            $("#nbpersonnes_chambre1 .ageenfants2").show();
        $("#nbpersonnes_chambre1 select.ageenfant2").hide();
        $("#nbpersonnes_chambre1 select.ageenfant2:lt(" + nb + ")").show();
    }).change();
    $("#selectroom2_nbenf").change(function() {
        var nb = $("#selectroom2_nbenf").attr('selectedIndex');
        if (nb == 0)
            $("#nbpersonnes_chambre2 .ageenfants2").hide();
        else
            $("#nbpersonnes_chambre2 .ageenfants2").show();
        $("#nbpersonnes_chambre2 select.ageenfant2").hide();
        $("#nbpersonnes_chambre2 select.ageenfant2:lt(" + nb + ")").show();
    }).change();

    $("#dateFrom").datepicker({
        prevText: '',
        nextText: '',
        defaultDate: 0,
        minDate: 0,
        maxDate: '+1y+1m',
        altField: '#lblDateFrom',
        altFormat: 'D',
        onSelect: function(dateText) {
            setMinDateTo();
            return false;
        }
    });
    $("#dateTo").data('minDate', new Date());
    $("#dateTo").datepicker({
        prevText: '',
        nextText: '',
        minDate: 1,
        maxDate: '+1y+1m',
        altField: '#lblDateTo',
        altFormat: 'D',
        beforeShow: function(input) {
            return { minDate: $(this).data('minDate') };
        }
    });
    function initDates() {
        var d1 = new Date();
        if (initdateYear && initdateMonth && initdateDay)
            d1 = new Date(initdateYear, initdateMonth, initdateDay);
        var duration = (initDuration) ? initDuration : minDuration;
        $('#dateFrom').attr('value', $.datepicker.formatDate(dateFormat, d1));
        $('#lblDateFrom').attr('value', $.datepicker.formatDate('D', d1));
        var d2 = Date.DateAdd("d", duration, d1);
        $('#dateTo').attr('value', $.datepicker.formatDate(dateFormat, d2));
        $('#lblDateTo').attr('value', $.datepicker.formatDate('D', d2));
    };
    function setMinDateTo() {
        var d1 = $('#dateFrom').datepicker('getDate');
        var d2 = Date.DateAdd("d", minDuration, d1);
        $('#lblDateTo').attr('value', $.datepicker.formatDate('D', d2));
        $('#dateTo').attr('value', $.datepicker.formatDate(dateFormat, d2));
        $('#dateTo').data('minDate', d2);
    };
    initDates();

    $("#selectTypeHeb").change(function() {
        var i = $(this).attr('selectedIndex');
        $("#blocContenuOI_1_1").hide();
        $("#blocContenuOI_1_2").hide();
        $("#blocContenuOI_1_3").hide();
        $("#blocContenuOI_1_4").hide();
        if (i == 0) {
            $("#blocContenuOI_1_1").show();
        } else if (i == 1) {
            $("#blocContenuOI_1_2").show();
        } else if (i == 2) {
            $("#blocContenuOI_1_3").show();
        } else if (i == 3) {
            $("#blocContenuOI_1_4").show();
        }
    }).change();

    $("#selectNbRooms").change(function() {
        var i = $(this).attr('selectedIndex');
        if (i == 0) {
            $("#nbpersonnes_chambre2").hide();
        } else {
            $("#nbpersonnes_chambre2").show();
        }
    }).change();

    $(".book-link").click(function() { openBooking(); });
    $(".button-search").click(function() { launchBooking(); }).hover(function() { $(this).addClass("ui-state-hover"); }, function() { $(this).removeClass("ui-state-hover"); });

    function openBooking() {
        $("#bookdialog").dialog('open');
    }
    function launchBooking() {
        var date1 = $("#dateFrom").datepicker("getDate");
        var date2 = $("#dateTo").datepicker("getDate");
        var selectedTabIndex = $('#tabs').data('selected.tabs');
        var famille;
        var type;
        var nbadult = 1;
        var nbenf = 0;
        var ageenf = [];
        var nbadult2 = 0;
        var nbenf2 = 0;
        var ageenf2 = [];
        if (selectedTabIndex == 0) {
            famille = $("#selectTypeHeb").attr('value');
            if (famille == '1_1') {
                var nbCh = $("#selectNbRooms").val();
                nbadult = $("#selectroom1_nbadult").val();
                nbenf = $("#selectroom1_nbenf").val();
                var nb1 = $("#selectroom1_nbenf").attr('selectedIndex');
                $("#nbpersonnes_chambre1 select.ageenfant2:lt(" + nb1 + ")").each(function() { ageenf.push($(this).val()); });
                if (nbCh >= 2) {
                    nbadult2 = $("#selectroom2_nbadult").val();
                    nbenf2 = $("#selectroom2_nbenf").val();
                    var nb2 = $("#selectroom1_nbenf").attr('selectedIndex');
                    $("#nbpersonnes_chambre2 select.ageenfant2:lt(" + nb2 + ")").each(function() { ageenf2.push($(this).val()); });
                }
            } else if (famille == '1_2') {
                nbadult = $("#selectLoc_pers").val();
                nbenf = 0;
            } else if (famille == '1_3') {
                nbadult = $("#selectCamp_pers").val();
                nbenf = 0;
            } else if (famille == '1_4') {
                nbadult = $("#selectvv_ad").val();
                nbenf = $("#selectvv_enf").val();
                var nbbb = $("#selectvv_bb").val();
                for (var i = 0; i < nbenf; i++) {
                    ageenf.push(8);
                }
                for (var i = 0; i < nbbb; i++) {
                    ageenf.push(1);
                }
                nbenf = parseInt(nbenf) + parseInt(nbbb);
            }
        } else if (selectedTabIndex == 1) {
            if (idtypeoi && idtypeoi != '')
                type = idtypeoi;
            else
                famille = $("#selectTypeAct").val();
            nbadult = $("#selectact_nbadult").val();
            nbenf = $("#selectact_nbenf").val();
        } else if (selectedTabIndex == 2) {
            if (idtypeoi && idtypeoi != '')
                type = idtypeoi;
            else
                famille = "4_1";
            nbadult = $("#selectf4_nbadult").val();
            nbenf = $("#selectf4_nbenf").val();
        }
        startBooking(famille, type, nbadult, nbenf, ageenf, nbadult2, nbenf2, ageenf2, $.datepicker.formatDate(dateFormat, date1), $.datepicker.formatDate(dateFormat, date2));
    };
    function startBooking(famille, type, nbadultes, nbenfants, ageenfants, nbadultes2, nbenfants2, ageenfants2, datefrom, dateto) {
        var url = 'BookingWaitResults.aspx?search=';
        if (famille)
            url = url + 'fam:' + famille;
        else if (type)
            url = url + 'type:' + type;
        url = url + '_nbadultes:' + nbadultes + '_nbenfants:' + nbenfants + '_ageenfants:' + ageenfants + '_date:' + datefrom + '_date2:' + dateto;
        if (nbadultes2 > 0) url = url + '_nbadultes2:' + nbadultes2 + '_nbenfants2:' + nbenfants2 + '_ageenfants2:' + ageenfants2;
        if (idoi != '') url = url + '&oi=' + idoi;
        url = url + '&template=' + templateHtml;
        url = url + '&sitecss=' + siteCss;
        url = url + '&jtheme=' + jTheme;
        url = url + '&idpublication=' + idPublication;
        window.location = url;
    };
});
