PageSourceSearch

https://www.gites-de-france-rhone.com/lib_2/js/foncs/fiche.js

js gites-de-france-rhone.com collected 2026-10-07 20:43:37 UTC 51,095 bytes, 1,133 lines download raw bytes

1/**
2 * Permet de regrouper les fonctions utilisées sur les pages de fiche
3 * Afin d'éviter de faire des fonctions identiques dans tous les looks...
4 */
5
6// Adrien 10/05/23 : Attention, ce fichier n'est plus utilisé sur la majorité des sites web excepté sur le compte client et le script de résa
7
8// Initialisation des différents évènements liés aux divs _packDivDatesTarifs
9function init_packDivDatesTarifs(){
10    (function($){
11        initSelectionTypeTarifs_packDivDatesTarifs();
12        initSelectionMois_packDivDatesTarifs();
13        initNavigationMois_packDivDatesTarifs();
14        initSelectionPeriode_packDivDatesTarifs();
15        checkAfficheBoutonWeekEnd_packDivDatesTarifs();
16        checkAfficheBoutonMidWeek_packDivDatesTarifs();
17        initCalendrierDatesFiche_packDivDatesTarifs();
18        init_detailChambreAfficheTarifs();
19        init_detailChambreAfficheDispo();
20        init_detailChambreSelectNbPers();
21        if(!jQuery('#inpt_resaDateDebCal')){
22            initEventClickBoutonReserver_packDivDatesTarifs();
23        }
24        initEventClickBoutonContactProp_packDivDatesTarifs();
25
26        // On vérifie que les champs de dates sont bien remplis avant d'aller en résa
27        if (!dateDebEtFin_VideOuDefault()) {
28            lanceCalculPrixSejour();
29        }
30
31        $(document).ready(function() {
32            $('#widgetFNGF_selectChambre').on('change', function() {
33                $('#div_loaderUnload').show();
34                var capacite = $('#widgetFNGF_selectChambre option[value="' + $(this).val() + '"]').attr('capacite');
35                updateSelectCapacite(capacite);
36                updatePrixResa();
37                $('#div_loaderUnload').hide();
38            });
39            
40            $('#widgetFNGF_selectCapacite').on('change', function() {
41                $('#div_loaderUnload').show();
42                updatePrixResa();
43                $('#div_loaderUnload').hide();
44            });
45        });
46        
47    })(jQuery);
48}
49
50function initSelectionTypeTarifs_packDivDatesTarifs(){
51    (function($){
52        $('.tarifsAvecDispo_choixDuree li span').bind('click', function(){
53            var liParent = $(this).parent('li');
54            if (liParent.hasClass('indisponible')) {
55                return;
56            }            
57            var typeTarif = $(this).parent('li').attr('data-duree-tarif');
58
59            if (typeTarif=='autre') {
60                ouvreDatePickerDateDeb_packDivDatesTarifs();
61                $(this).parent('li').addClass("opened");
62            } else {
63                $('.tarifsAvecDispo_choixDuree li').removeClass('active');
64                liParent.addClass('active');
65                $('.tarifsAvecDispo_detailUnMois .tarifsAvecDispo_detailUnMois_tarifUneDuree').hide();
66                $('.tarifsAvecDispo_detailUnMois .tarifsAvecDispo_detailUnMois_tarifUneDuree[data-duree-tarif="'+typeTarif+'"]').show();
67            }
68            
69            return false;
70        });
71    })(jQuery);
72}
73
74function initNavigationMois_packDivDatesTarifs(){
75    (function($){
76        $('.tarifsAvecDispo_choixMoisNext a').bind('click', function(){
77            // On décale l'affichage des mois seulement si le mois actuellement sélectionné n'est pas le premier
78            if (!$('.tarifsAvecDispo_listeMois li:visible').first().is('.active')) {
79                $('.tarifsAvecDispo_listeMois li:visible').first().hide();
80                $('.tarifsAvecDispo_listeMois li:visible').last().next().show();
81                // On masque la flèche suivante si on est arrivé au dernier mois
82                $('.tarifsAvecDispo_choixMoisPrev').css('visibility', 'visible');
83            }
84            // On sélectionne le mois suivant
85            var liMoisActifNext = $('.tarifsAvecDispo_listeMois li.active').next();
86            selectionneMois_packDivDatesTarifs(liMoisActifNext);
87        });
88        $('.tarifsAvecDispo_choixMoisPrev a').bind('click', function(){
89            // On décale l'affichage des mois seulement si le mois actuellement sélectionné n'est pas le dernier
90            if (!$('.tarifsAvecDispo_listeMois li:visible').last().is('.active')) {
91                // On décale l'affichage des mois
92                $('.tarifsAvecDispo_listeMois li:visible').last().hide();
93                $('.tarifsAvecDispo_listeMois li:visible').first().prev().show();
94                // On masque la flèche précédente si on est arrivé au premier mois
95                $('.tarifsAvecDispo_choixMoisNext').css('visibility', 'visible');
96            }
97            // On sélectionne le mois suivant
98            var liMoisPrev = $('.tarifsAvecDispo_listeMois li.active').prev();
99            selectionneMois_packDivDatesTarifs(liMoisPrev);
100        });
101    })(jQuery);
102}
103
104function initSelectionMois_packDivDatesTarifs(){
105    (function($){
106        $('.tarifsAvecDispo_listeMois li').bind('click', function(){
107            selectionneMois_packDivDatesTarifs($(this));
108        });
109    })(jQuery);
110}
111
112function selectionneMois_packDivDatesTarifs(liMois){
113    (function($){
114        // fiche 243238
115        if(liMois.hasClass('active') && liMois.is(':first-child, :last-child')) {
116            //console.log('fiche.js selectionneMois_packDivDatesTarifs return false');
117            return false;
118        }
119        
120        $('.tarifsAvecDispo_listeMois li').removeClass('active');
121        
122        liMois.addClass('active');
123        
124        // Il faut penser à vérifier que le li est visible, si ce n'est pas le cas on le rend visible ainsi que ses voisins
125        if (liMois.not(':visible')) {
126            $('.tarifsAvecDispo_listeMois li').hide();
127            liMois.show();
128            if (liMois.prev().length > 0) { // fiche 243238 : ajout condition sur length
129//                if (liMois.prev().is(':first-child')) {
130//                    $('.tarifsAvecDispo_choixMoisPrev').css('visibility', 'hidden');
131//                } else {
132//                    $('.tarifsAvecDispo_choixMoisPrev').css('visibility', 'visible');
133//                }
134                liMois.prev().show();
135            }
136            // fiche 243238 : Antoine - je mets ça ici
137            if (liMois.is(':first-child')) {
138                $('.tarifsAvecDispo_choixMoisPrev').css('visibility', 'hidden');
139            } else {
140                $('.tarifsAvecDispo_choixMoisPrev').css('visibility', 'visible');
141            }
142            if (liMois.next().length > 0) { // fiche 243238 : ajout condition sur length
143//                if (liMois.next().is(':last-child')) {
144//                    $('.tarifsAvecDispo_choixMoisNext').css('visibility', 'hidden');
145//                } else {
146//                    $('.tarifsAvecDispo_choixMoisNext').css('visibility', 'visible');
147//                }
148                liMois.next().show();
149            }
150            // fiche 243238 : Antoine - je mets ça ici
151            if (liMois.is(':last-child')) {
152                $('.tarifsAvecDispo_choixMoisNext').css('visibility', 'hidden');
153            } else {
154                $('.tarifsAvecDispo_choixMoisNext').css('visibility', 'visible');
155            }
156        }
157       
158       var moisAnnee = liMois.attr('data-moisAnnee');
159
160        $('.tarifsAvecDispo_detailUnMois').hide();
161        $('.tarifsAvecDispo_detailUnMois[data-moisAnnee="'+moisAnnee+'"]').show();
162        checkAfficheBoutonWeekEnd_packDivDatesTarifs();
163        checkAfficheBoutonMidWeek_packDivDatesTarifs();
164    })(jQuery);
165}
166
167function initSelectionPeriode_packDivDatesTarifs(){
168    (function($){
169        $('.tarifsAvecDispo_detailUnMois_tarifUneDuree td.libre').bind('click', function(){
170            $('.tarifsAvecDispo_detailUnMois_tarifUneDuree td').removeClass('select');
171            $(this).addClass('select');
172            
173            setInputDates_packDivDatesTarifs($(this).attr('data-deb'), $(this).attr('data-nbj'));
174            lanceCalculPrixSejour();
175        });
176        
177        $('.tarifsAvecDispo_detailUnMois_tarifUneDuree td.partiellementDispo').bind('click', function(){
178            if (typeof(ouvreDatePicker_partiellementDispo_foncAvant)=='function') {
179                ouvreDatePicker_partiellementDispo_foncAvant();
180            }
181            var dateDebAvant = $('#div_choixDates_packDivDatesTarifs .inpt_moteurDatesDateDeb').val();;
182            var dateFinAvant = $('#div_choixDates_packDivDatesTarifs .inpt_moteurDatesDateFin').val();
183            
184            setInputDates_packDivDatesTarifs($(this).attr('data-deb'), $(this).attr('data-nbj'), true);
185            ouvreDatePickerDateDeb_packDivDatesTarifs();
186            // On ne laisse pas les dates dans les champs pour éviter de perturber l'internaute
187            $('#div_choixDates_packDivDatesTarifs .inpt_moteurDatesDateDeb').val(dateDebAvant);
188            $('#div_choixDates_packDivDatesTarifs .inpt_moteurDatesDateFin').val(dateFinAvant);
189            return false;
190        });
191    })(jQuery);
192}
193
194function setInputDates_packDivDatesTarifs(dateDeb, duree, invisible){
195    (function($){
196        var objDate = new OBJDate(dateDeb);
197        objDate.ajoutJour(duree);
198        var dateFin = objDate.toString();
199
200        var objDateDeb = new Date();
201        objDateDeb.setFullYear(dateDeb.substr(6, 4), dateDeb.substr(3, 2)-1, dateDeb.substr(0, 2));
202        // fiche 235579
203        objDateDeb.setHours(0); objDateDeb.setMinutes(0); objDateDeb.setSeconds(0);
204        var objDateFin = new Date();
205        objDateFin.setFullYear(dateFin.substr(6, 4), dateFin.substr(3, 2)-1, dateFin.substr(0, 2));
206        
207        if (invisible) {
208            $('#div_choixDates_packDivDatesTarifs .inpt_moteurDatesDateDeb').attr('data-dateposition', dateDeb);
209            $('#div_choixDates_packDivDatesTarifs .inpt_moteurDatesDateFin').attr('data-dateposition', dateFin);
210        } else {
211            $('#div_choixDates_packDivDatesTarifs .inpt_moteurDatesDateDeb').val(dateDeb);
212            $('#div_choixDates_packDivDatesTarifs .inpt_moteurDatesDateFin').val(dateFin);
213        }
214        
215        if(window.setInputDates_packDivDatesTarifs_foncQdFini){
216            setInputDates_packDivDatesTarifs_foncQdFini();
217        }
218        
219    })(jQuery);
220}
221
222function lanceCalculPrixSejour(avecSelectionChambres){
223    (function($){
224        var dateDeb = $('#div_choixDates_packDivDatesTarifs .inpt_moteurDatesDateDeb').val();
225        var dateFin = $('#div_choixDates_packDivDatesTarifs .inpt_moteurDatesDateFin').val();
226        if ($('#div_choixModeResaGEGS').length>0) {
227            var modeResa = $('.inpt_modeVte:checked').val();
228        }
229        
230        if (dateDeb && dateFin) {
231            var tabData = {type: 'verifDates', dateDeb: dateDeb, dateFin: dateFin, avecQTipFD : $('#sp_infoBulleAideFraisDossiers').length, modeResa: modeResa};
232            modeCalculPrixSurFiche = true;
233            if (avecSelectionChambres===true) {
234                ajaxVerifDates(tabData, affectSelectionChambres_fiche);
235            } else {
236                ajaxVerifDates(tabData);
237            }
238        }
239    })(jQuery);
240}
241
242function checkAfficheBoutonWeekEnd_packDivDatesTarifs(){
243    (function($){
244        var btnWeekEnd = $('.tarifsAvecDispo_choixDuree').find('li[data-duree-tarif="week-end"]');
245        var divMoisSelect = $('.tarifsAvecDispo_detailUnMois:visible');
246        var tableDureeWeekEnd = divMoisSelect.find('table.tarifsAvecDispo_detailUnMois_tarifUneDuree[data-duree-tarif="week-end"]');
247        if (tableDureeWeekEnd.find('td').not('.indisponible').length>0) {
248            btnWeekEnd.removeClass('indisponible').attr("title","");
249        } else {
250            btnWeekEnd.addClass('indisponible').attr("title",btnWeekEnd.attr("data-titlepasTarif"));
251            if (btnWeekEnd.is('.active')) {
252                $('.tarifsAvecDispo_choixDuree li[data-duree-tarif="semaine"] span').trigger('click');
253            }
254        }
255    })(jQuery);
256}
257
258function checkAfficheBoutonMidWeek_packDivDatesTarifs(){
259    (function($){
260        var btnMidWeek = $('.tarifsAvecDispo_choixDuree').find('li[data-duree-tarif="mid-week"]');
261        var divMoisSelect = $('.tarifsAvecDispo_detailUnMois:visible');
262        var tableDureeMidWeek = divMoisSelect.find('table.tarifsAvecDispo_detailUnMois_tarifUneDuree[data-duree-tarif="mid-week"]');
263        if (tableDureeMidWeek.find('td').not('.indisponible').length>0) {
264            btnMidWeek.removeClass('indisponible').attr("title","");
265        } else {
266            btnMidWeek.addClass('indisponible').attr("title",btnMidWeek.attr("data-titlepasTarif"));
267            if (btnMidWeek.is('.active')) {
268                $('.tarifsAvecDispo_choixDuree li[data-duree-tarif="semaine"] span').trigger('click');
269            }
270        }
271    })(jQuery);
272}
273
274function initCalendrierDatesFiche_packDivDatesTarifs(){
275    (function($){
276//        if (jQuery('#inpt_choixDates_packDivDatesTarifs_NEW').length>0) {
277//            initDatePickers_datesSejour();
278//            return;
279//        }
280        var tabParam = new Array();
281        tabParam.ident = jQuery('#div_choixDates_packDivDatesTarifs').attr('data-ident');
282        tabParam.instance = jQuery('#div_choixDates_packDivDatesTarifs').attr('data-instance');
283        tabParam.exercice = jQuery('#div_choixDates_packDivDatesTarifs').attr('data-exercice');
284        tabParam.modeFicheV8 = true;
285        
286        afficherMasquerCalendrier(tabParam);
287    })(jQuery);
288}
289
290function majDivTarifAPartirDe(tabRetour){
291    (function ($) {
292        // On regarde s'il faut actualier la page
293        if ($('#div_choixDates_packDivDatesTarifs') && $('#div_choixDates_packDivDatesTarifs').attr('data-impweb')==='N' && !tabRetour.htmlTarifFicheApartirDe && $('#widgetGNGF').length == 0) {
294            if (tabRetour.planVente && $('#div_choixDates_packDivDatesTarifs').attr('data-planvente') !== tabRetour.planVente) {
295                // Actualiser la page
296                var tabInfosActualisation = {deb: $('#inpt_resaDateDebCal').val(), fin: $('#inpt_resaDateFinCal').val()};
297                actualisePageFiche(tabInfosActualisation);
298                return;
299            }
300        }
301        $('#div_msgErreurRetourVerifDates').html(''); // fiche 246872
302        if (tabRetour.msgErreurCalculPrix) {
303            $('.tarifFicheApartirDe').hide();
304            // TODO : afficher ce message et garder les prix?
305            if ($('#div_msgErreurRetourVerifDates').length>0) {
306                $('#div_msgErreurRetourVerifDates').replaceWith(tabRetour.msgErreurCalculPrix);
307            } else {
308                $('.tarifFicheApartirDe').before(tabRetour.msgErreurCalculPrix);
309            }
310        } else if (tabRetour.htmlTarifFicheApartirDe) {
311            $('#div_msgErreurRetourVerifDates').hide();
312            $('.tarifFicheApartirDe').html(tabRetour.htmlTarifFicheApartirDe);
313            $('.tarifFicheApartirDe').show();
314            
315            if(tabRetour.prixChambres){
316                tabRetour.prixChambres.forEach(function(chambre){ // on met à jour le prix dans la div de la chambre concernée.
317                    var div = $('.div_tarifUneChambre_infosTarifs[data-num_idch="'+chambre['numChambre']+'"]');
318                    div.find('.sp_prixSejour_prix').html(chambre['prixAdu']);
319                    div.find('.sp_lblApresPrix').hide();
320                });
321            }
322            
323            // HL@1969205 | On a des problèmes de chargement de lib => safeguard sur la fonction qtip implémenté => je remets
324            // On peut avoir des qtips sur le nouveau HTML, on doit donc rappeler la fonction qui initialise
325            setEventForQtip();
326        } else {
327            $('.tarifFicheApartirDe').hide();
328        }
329        
330        if (tabRetour.msgInfoDemandeParMail) {
331            if ($('#div_msgInfoDemandeParMail').length>0) {
332                $('#div_msgInfoDemandeParMail').replaceWith(tabRetour.msgInfoDemandeParMail);
333            } else {
334                $('.tarifFicheApartirDe').after(tabRetour.msgInfoDemandeParMail);
335            }
336        } else {
337            $('#div_msgInfoDemandeParMail').hide();
338        }
339        
340        if (tabRetour.htmlBoutonReserver) {
341            if($('.divWrapperBoutonReserverContact').length>0){
342                $('.divWrapperBoutonReserverContact').html(tabRetour.htmlBoutonReserver);
343            }
344            else if($('.div_btnResa').length>0){
345                $('.div_btnResa').html(tabRetour.htmlBoutonReserver);
346            }
347            else{
348                $('#btResa').html(tabRetour.htmlBoutonReserver);
349            }
350//            $('.div_btnResa').html(tabRetour.htmlBoutonReserver);
351            majHrefBoutonReserver();
352            initEventClickBoutonReserver_packDivDatesTarifs();
353        }
354        
355        if (tabRetour.location) {
356            // Mise à jour du prix dans le champ caché pour le tag Criteo
357            var prixLocation = tabRetour.location.replace(' €', '');
358            $('#a_btnReserver_packDivDatesTarifs').attr('data-prix', prixLocation);
359        }
360        
361        if (tabRetour.changeMsgBtnReserver) {
362            var titleDemandeResa = $('#a_btnReserver_packDivDatesTarifs').attr('data-titleDemandeResa');
363            $('#a_btnReserver_packDivDatesTarifs').attr('title', titleDemandeResa);
364            $('#a_btnReserver_packDivDatesTarifs .sp_lblReserver').each(function(){
365                var lblDemandeResa = $(this).attr('data-lblDemandeResa');
366                $(this).text(lblDemandeResa);
367                $('#a_btnReserver_packDivDatesTarifs').addClass('demandeDeResa');
368            });
369            var lienResa = $('#a_btnReserver_packDivDatesTarifs').attr('data-lienResa');
370            lienResa += '&forceLink=1';
371            $('#a_btnReserver_packDivDatesTarifs').attr('data-lienResa', lienResa);
372        }
373    })(jQuery);
374}
375
376function majDivChambres_packDivDatesTarifs(tabRetour, avecFondQdFini){
377    if (tabRetour.htmlDivChambres) {
378        for(var numIdCh in tabRetour.htmlDivChambres){
379            var div = jQuery('.div_tarifUneChambre_infosTarifs[data-num_idch="'+numIdCh+'"]');
380            if(div.length === 0){
381                continue;
382            }
383            var html = tabRetour.htmlDivChambres[numIdCh];
384            div.replaceWith(html);
385            var dateDeb = jQuery('.inpt_moteurDatesDateDeb').val();
386            changeMoisCalendrierPHP(jQuery('.divWrapperInfosChambre_packDivDatesTarifs[data-num_idch="'+numIdCh+'"]'),dateDeb);
387            jQuery('.div_tarifUneChambre_lancerResa').removeClass('sansDates');
388            jQuery('.div_tarifUneChambre_selectNbPers[data-numIdch="'+numIdCh+'"]').removeClass('disabled');
389            jQuery('.divWrapperInfosChambre_packDivDatesTarifs[data-num_idch="'+numIdCh+'"]').removeClass('indisponible');
390            jQuery('.div_tarifUneChambre_selectNbPers[data-numIdch="'+numIdCh+'"] .select_nbPers').removeAttr('disabled');             
391            jQuery('.div_tarifUneChambre_selectNbPers[data-numIdch="'+numIdCh+'"] .select_nbPers').next('.ui-selectmenu-button').removeClass('ui-selectmenu-disabled');
392            jQuery('.div_tarifUneChambre_selectNbPers[data-numIdch="'+numIdCh+'"] .select_nbPers').next('.ui-selectmenu-button').removeClass('ui-state-disabled');
393            if(jQuery('.div_tarifUneChambre_infosTarifs[data-num_idch="'+numIdCh+'"]').hasClass('indisponible')){
394                jQuery('.divWrapperInfosChambre_packDivDatesTarifs[data-num_idch="'+numIdCh+'"]').addClass('indisponible');
395                jQuery('.div_tarifUneChambre_selectNbPers[data-numIdch="'+numIdCh+'"]').addClass('disabled');
396                jQuery('.div_tarifUneChambre_selectNbPers[data-numIdch="'+numIdCh+'"] .select_nbPers').attr('disabled','');
397                jQuery('.div_tarifUneChambre_selectNbPers[data-numIdch="'+numIdCh+'"] .select_nbPers').next('.ui-selectmenu-button').addClass('ui-selectmenu-disabled');
398                jQuery('.div_tarifUneChambre_selectNbPers[data-numIdch="'+numIdCh+'"] .select_nbPers').next('.ui-selectmenu-button').addClass('ui-state-disabled');
399            }
400        }
401//        jQuery('#div_fiche_bloc_tarif_chmb_packDivDatesTarifs').replaceWith(tabRetour.htmlDivChambres);
402        init_detailChambreAfficheTarifs();
403        init_detailChambreAfficheDispo();
404        jQuery(".a_lblConnaitredispos").text(jQuery(".a_lblConnaitredispos").data("lblavecdates"));
405        // Fonction définie dans le look
406        if(avecFondQdFini!==false && window.majDivChambres_packDivDatesTarifs_foncQdFini){
407            majDivChambres_packDivDatesTarifs_foncQdFini();
408        }
409    }
410    
411    if (tabRetour.htmlDatesSejoursAlternatifs) {
412        jQuery('.divWrapperInfosChambre_packDivDatesTarifs').each(function(){
413            var numIdch = jQuery(this).data('num_idch');
414            
415            if (jQuery(this).find('.div_sejoursAlternatifs').length > 0) {
416                jQuery(this).find('.div_sejoursAlternatifs').remove();
417            }
418            if (tabRetour.htmlDatesSejoursAlternatifs[numIdch] !== '') {
419                // Afficher "div_sejoursAlternatifs" et masquer "div_tarifUneChambre_lancerResa"
420                jQuery(this).find('.div_tarifUneChambre_lancerResa').hide();
421                jQuery(this).append(tabRetour.htmlDatesSejoursAlternatifs[numIdch]);
422            } else {
423                // Effacer "div_sejoursAlternatifs" s'il est présent et affiche "div_tarifUneChambre_lancerResa"
424                jQuery(this).find('.div_tarifUneChambre_lancerResa').show();
425            }
426        });
427    }
428}
429
430function majHrefBoutonReserver(sansPlanning){
431    (function($){
432        if ($('#a_btnReserver_packDivDatesTarifs').attr('data-accesResa')=='O' || sansPlanning) {
433            var lienResa = $('#a_btnReserver_packDivDatesTarifs').attr('data-lienResa');
434            $('#a_btnReserver_packDivDatesTarifs').attr('href', lienResa);
435            $('#a_btnReserver_packDivDatesTarifs').attr('target', $('#a_btnReserver_packDivDatesTarifs').attr('data-target'));
436            if (typeof(waDecorateLink)=="function") {
437                lienResa = waDecorateLink(lienResa);
438            }
439            $('#a_btnReserver_packDivDatesTarifs').attr('href', lienResa);
440        }
441    })(jQuery);
442}
443
444function verifDatePickerFiche() {
445    var ok = true;
446    
447    (function ($) {
448
449        if (dateDebEtFin_VideOuDefault()) {
450            ouvreDatePickerDateDeb_packDivDatesTarifs();
451            ok = false;
452        }
453    })(jQuery);
454    
455    return ok;
456}
457
458function initEventClickBoutonReserver_packDivDatesTarifs(){
459    (function($){
460        $('#a_btnReserver_packDivDatesTarifs').unbind('click');
461        $('#a_btnReserver_packDivDatesTarifs').bind('click', function(){
462            // On vérifie que les champs de dates sont bien remplis avant d'aller en résa
463            if(!verifDatePickerFiche()) {
464                return false;
465            }
466            majHrefBoutonReserver(true);
467            // Appels au trackEvent avec dataLayer.push
468            var tabParamsGTM = $(this).attr('data-paramsTrackEvent');
469            var listeParams = eval('('+tabParamsGTM+')');
470            if(window.dataLayer){
471                dataLayer.push({
472                    'Label_Event': listeParams.label,
473                    'Categorie_Event': listeParams.categorie,
474                    'event': listeParams.action
475                });
476
477                var prix = $(this).attr('data-prix');
478                var TransactionId = listeParams.prefixe+listeParams.label;
479                dataLayer.push({
480                    'Transaction_Id': TransactionId,
481                    'Product_Id': listeParams.ident,
482                    'Price': prix,
483                    'event': 'Criteo_Contact'
484                });
485            // Pas de GTM, il faut déterminer si on est en GA ou en UA
486            } else if (window.ga) {
487                ga('send', 'event', listeParams.categorie, listeParams.action, listeParams.label);
488            } else if (typeof(_gaq)!='undefined') {
489                _gaq.push(['_trackEvent', listeParams.categorie, listeParams.action, listeParams.label]);
490            }
491        });
492    })(jQuery);
493}
494
495function initEventClickBoutonContactProp_packDivDatesTarifs(){
496    (function($){
497        $('#a_btnContactProp_packDivDatesTarifs').click(function(){
498            if(!verifDatePickerFiche()) {
499                return false;
500            }
501            // Le code suivant suivant n'est pas toujours exécuté car quand les dates sont bien remplies, le html du bouton est parfois réactualisé et du coup on ne passe pas ici.
502            // on passe par un 2ème bouton qui lui contient la classe du type StatMe
503            $('#a_btnContactProp_forStatMe').trigger('click');
504        });
505        
506        $('#a_btnContactProp_forStatMe').click(function(){
507            var valDateDeb = getValInputDateDebFiche();
508            sendThisToProp($(this).data('ident'), '800', '600', $(this).data('titre'), 'N', 'N',valDateDeb , $('#moteur_datePickerDeb').data('duree'));
509            
510            // Appels au trackEvent avec dataLayer.push
511            if(window.dataLayer){
512                var tabParamsGTM = $(this).attr('data-paramsTrackEvent');
513                var listeParams = eval('('+tabParamsGTM+')');
514                dataLayer.push({
515                    'Label_Event': listeParams.label,
516                    'Categorie_Event': listeParams.categorie,
517                    'event': listeParams.event
518                });
519            }
520        });
521    })(jQuery);
522}
523
524function initEventQTipInfoCalculTaxeSejour(){
525    (function($){
526        if($('.btnDetailCalculTaxeSejour').length > 0){
527            var text = $('.detailCalculTaxeSejour').html();
528            $('.btnDetailCalculTaxeSejour').qtip({
529                content: text
530            });
531        }
532    })(jQuery);
533}
534
535function ouvreDatePickerDateDeb_packDivDatesTarifs(){
536    if(jQuery('#div_choixDates').length > 0){
537        if(jQuery('#div_choixDates #inpt_resaDateDeb').length>0){
538            jQuery('#div_choixDates #inpt_resaDateDeb').trigger('click');
539        }
540        else if(jQuery('#div_choixDates #inpt_resaDateDebCal').length>0){
541            jQuery('#div_choixDates #inpt_resaDateDebCal').trigger('click');
542        }
543    }else{
544        if(jQuery('#div_choixDates_packDivDatesTarifs #inpt_resaDateDeb').length>0){
545            jQuery('#div_choixDates_packDivDatesTarifs #inpt_resaDateDeb').trigger('click');
546        }
547        else if(jQuery('#div_choixDates_packDivDatesTarifs #inpt_resaDateDebCal').length>0){
548            jQuery('#div_choixDates_packDivDatesTarifs #inpt_resaDateDebCal').trigger('click');
549        }
550    }
551    if(window.ouvreDatePickerDateDeb_packDivDatesTarifs_foncQdFini){
552        ouvreDatePickerDateDeb_packDivDatesTarifs_foncQdFini();
553    }
554}
555
556function majTarifsSelectionne(dateDeb, dateFin){
557    (function($){
558        // Récupération du mois et de l'année de dateDeb puis déclencher le clic sur le bouton correspondant, on aura déjà le bon mois d'affiché
559        var objDateDeb = new OBJDate(dateDeb);
560        var objDateFin = new OBJDate(dateFin);
561        var moisAnnee = objDateDeb.getMois()+'-'+objDateDeb.getAnnee();
562        var nbj = objDateDeb.getNbJourEcartWithOBJDate(objDateFin);
563        
564        var liMoisASelect = $('.tarifsAvecDispo_listeMois li[data-moisannee="'+moisAnnee+'"]');
565        var divMoisSelect = $('.tarifsAvecDispo_detailUnMois[data-moisannee="'+moisAnnee+'"]');
566        selectionneMois_packDivDatesTarifs(liMoisASelect);
567        
568        $('.tarifsAvecDispo_detailUnMois_tarifUneDuree td').removeClass('select');
569        if (objDateDeb.getJourSemaine()==6 && nbj==7) {
570            $('.tarifsAvecDispo_choixDuree li[data-duree-tarif="semaine"] span').trigger('click');
571            divMoisSelect.find('.tarifsAvecDispo_detailUnMois_tarifUneDuree[data-duree-tarif="semaine"] td[data-deb="'+dateDeb+'"]').addClass('select');
572        } else if (objDateDeb.getJourSemaine()==5 && nbj==2) {
573            $('.tarifsAvecDispo_choixDuree li[data-duree-tarif="week-end"] span').trigger('click');
574            divMoisSelect.find('.tarifsAvecDispo_detailUnMois_tarifUneDuree[data-duree-tarif="week-end"] td[data-deb="'+dateDeb+'"]').addClass('select');
575        } else if (objDateDeb.getJourSemaine()==1 && nbj==7) {
576            $('.tarifsAvecDispo_choixDuree li[data-duree-tarif="mid-week"] span').trigger('click');
577            divMoisSelect.find('.tarifsAvecDispo_detailUnMois_tarifUneDuree[data-duree-tarif="mid-week"] td[data-deb="'+dateDeb+'"]').addClass('select');
578        }
579    })(jQuery);
580}
581
582function init_detailChambreAfficheTarifs(){
583    (function ($) {
584        $(".a_btVoirPrixChambre").click(function () {
585            var numChambre = $(this).attr("data-chambre");
586            if ($(this).hasClass("closed")) {
587                $('.div_tarifUneChambre_tarifs[data-chambre="' + numChambre + '"]').show();
588                $(this).removeClass("closed").addClass("opened");
589            }
590            else {
591                $('.div_tarifUneChambre_tarifs[data-chambre="' + numChambre + '"]').hide();
592                $(this).addClass("closed").removeClass("opened");
593            }
594        });
595        
596    })(jQuery);
597}
598
599function click_btnResaUneChambre(){
600    (function ($) {
601        var href = $("#a_btnReserver_packDivDatesTarifs").attr("href");
602        window.open(href,'_blank');
603    })(jQuery);
604}
605
606function init_detailChambreAfficheDispo(){
607    (function ($) {
608        var avecPlanning = true;
609        if ($('.a_btVoirDispoChambre').attr('data-planning') == 'false') {
610            avecPlanning = false;
611        }
612        $(".a_btVoirDispoChambre").click(function () {
613            $('#div_fiche_bloc_tarif_chmb_packDivDatesTarifs').attr('data-numidchselect','');
614            if (avecPlanning) {
615                ouvreDatePickerDateDeb_packDivDatesTarifs();
616            }
617            else {
618                alert("Pour connaitre les disponibilités veuillez contacter le propriétaire.");
619            }
620            return false;
621        });
622        $('.div_tarifUneChambre_lancerResa > *').unbind('click');
623        if ($('.div_tarifUneChambre_lancerResa.sansDates').length>0 && avecPlanning) {
624            $('.div_tarifUneChambre_lancerResa.sansDates > *').bind('click', function(){
625                $('#div_fiche_bloc_tarif_chmb_packDivDatesTarifs').attr('data-numidchselect',$(this).parents('.div_tarifUneChambre').data('num_idch'));
626                ouvreDatePickerDateDeb_packDivDatesTarifs();
627                return false;
628            });
629        }
630    })(jQuery);
631}
632
633function init_detailChambreSelectNbPers(){
634    (function($){
635        if ($('.div_tarifUneChambre_selectNbPers').length==0) {
636            return;
637        }
638        $('.div_tarifUneChambre_selectNbPers').find('.select_nbPers').bind('change selectmenuchange', function(){
639            var numIdch = $(this).attr('data-numIdch');
640            var div = $(this).parents('.div_tarifUneChambre_selectNbPers ');
641            if (!verifNbAdultes(numIdch)) {
642                if ($(this).is('.select_nbEnfants') || $(this).is('.select_nbBebes')) {
643                    $(this).val(0);
644                } else if ($(this).is('.select_nbAdultes')) {
645                    div.find('.select_nbEnfants').val(0);
646                    div.find('.select_nbBebes').val(0);
647                }
648            }
649            majListesSelect_packDivTarifs(div);
650            majTarifsFiche_packDivTarifs();
651        });
652    })(jQuery);
653}
654
655function verifNbAdultes(numIdch){
656    var verif = false;
657    
658    (function($){
659        if ($('.select_nbAdultes[data-numIdch="'+numIdch+'"]').val()==0 && ($('.select_nbEnfants[data-numIdch="'+numIdch+'"]').val()>0 || $('.select_nbBebes[data-numIdch="'+numIdch+'"]').val()>0)) {
660            $('.div_tarifUneChambre_saisirAdultes[data-numIdch="'+numIdch+'"]').show();
661            verif = false;
662        } else {
663            $('.div_tarifUneChambre_saisirAdultes[data-numIdch="'+numIdch+'"]').hide();
664            verif = true;
665        }
666    })(jQuery);
667    return verif;
668}
669
670function majListesSelect_packDivTarifs(div){
671    (function($){
672        var capacite = div.data('capacite');
673        var nbAdultes = parseInt(div.find('.select_nbAdultes').val());
674        var nbEnfantsMax = Math.min(capacite - nbAdultes, div.find('.div_selectNbEnfants').data('nbenfantsmax'));
675        var nbEnfants = parseInt(div.find('.select_nbEnfants').val());
676        if (nbEnfants > nbEnfantsMax) {
677            div.find('.select_nbEnfants').val(0);
678            nbEnfants = 0;
679        }
680        var nbAdultesMax = capacite - nbEnfants;
681        
682        var elemListeEnfants = div.find('.select_nbEnfants');
683        var valeurDernierElementListeEnfants = div.find('.select_nbEnfants').find('option:last-child').val();
684        if (valeurDernierElementListeEnfants<nbEnfantsMax) {
685            var i = parseInt(valeurDernierElementListeEnfants);
686            while (i < nbEnfantsMax) {
687                i++;
688                elemListeEnfants.append("<option value='"+(i)+"'>"+(i)+"</option>");
689            }
690        } else {
691            while (elemListeEnfants.find('option:last-child').val() > nbEnfantsMax) {
692                elemListeEnfants.find('option:last-child').remove();
693            }
694        }
695        
696        div.find('.select_nbEnfants').children().each(function(){
697            if ($(this).val()>nbEnfantsMax) {
698                $(this).hide();
699            } else {
700                $(this).show();
701            }
702        });
703        if (nbAdultes>0) {
704            div.find('.select_nbAdultes').children().each(function(){
705                if ($(this).val()>nbAdultesMax) {
706                    $(this).hide();
707                } else {
708                    $(this).show();
709                }
710            });
711        }
712        
713        // si on utilise jquery ui selectmenu 329513
714        if(div.find('.select_nbAdultes').is(':hidden')){
715            div.find('.select_nbAdultes').selectmenu('refresh');
716        }
717        if(div.find('.select_nbEnfants').is(':hidden')){
718            div.find('.select_nbEnfants').selectmenu('refresh');
719        }
720        if(div.find('.select_nbBebes').is(':hidden')){
721            div.find('.select_nbBebes').selectmenu('refresh');
722        }
723    })(jQuery);
724}
725
726function majTarifsFiche_packDivTarifs(){
727    (function($){
728        // Pour être sûr d'avoir le bon dossier en session (en cas d'onglets multiples) je refais la sélection des dates qui va réinitialiser le dosser en session
729        lanceCalculPrixSejour(true);
730        // TODO : récupérer les personnes sélectionnées
731//        var tabPersSelect = getTabPersSelect_packDivTarifs();
732//        // On sérialise et on utilise la fonction de foncResa.js qui permet de sélectionner les chambres
733//        affectSelectionChambres(tabPersSelect);
734    })(jQuery);
735}
736
737function affectSelectionChambres_fiche(){
738    var tabPersSelect = getTabPersSelect_packDivTarifs();
739    // On sérialise et on utilise la fonction de foncResa.js qui permet de sélectionner les chambres
740    affectSelectionChambres(tabPersSelect);
741}
742
743function getTabPersSelect_packDivTarifs(){
744    var tabPersSelect = [];
745    (function($){
746        if ($('.div_tarifUneChambre_selectNbPers').length==0) {
747            return;
748        }
749        $('.div_tarifUneChambre_selectNbPers').each(function(){
750            var tabSelect = {};
751            tabSelect.numeroChambre = $(this).attr('data-numeroChambre');
752            tabSelect.numIdch = $(this).attr('data-numIdch');;
753            tabSelect.nbAdultes = $(this).find('.select_nbAdultes').val();
754            tabSelect.nbEnfants = $(this).find('.select_nbEnfants').val();
755            tabSelect.nbBebes = $(this).find('.select_nbBebes').val();
756            tabPersSelect.push(tabSelect);
757        });
758    })(jQuery);
759    return tabPersSelect;
760}
761
762function reinitDatepickers_packDivTarifs(){
763    (function($){
764        if ($('#inpt_resaDateDeb').length > 0) {
765            var dateDebDefault = $('#inpt_resaDateDeb').attr('data-lblDefautArrivee');
766            $('#inpt_resaDateDeb').val(dateDebDefault);
767        } else if ($('#inpt_resaDateDebCal').length > 0) {
768            var dateDebDefault = $('#inpt_resaDateDebCal').attr('data-lblDefautArrivee');
769            $('#inpt_resaDateDebCal').val(dateDebDefault);
770        }
771
772        if ($('#inpt_resaDateFin').length > 0) {
773            var dateFinDefault = $('#inpt_resaDateFin').attr('data-lblDefautDepart');
774            $('#inpt_resaDateFin').val(dateFinDefault);
775        } else if ($('#inpt_resaDateFinCal').length > 0) {
776            var dateFinDefault = $('#inpt_resaDateFinCal').attr('data-lblDefautDepart');
777            $('#inpt_resaDateFinCal').val(dateFinDefault);
778        }
779    })(jQuery);
780}
781
782function initBtDescPlusMoins(){
783    (function($){
784        if($(".a_VoirPlusDescEnvir").length>0){
785            $(".a_VoirPlusDescEnvir").toggle(
786                function(){
787                    $(".descEnvirSecond").show();
788                    $(".descEnvirFirstSuite").hide();
789                    $(this).text($(this).attr("data-lblLireMoins"));
790                },
791                function(){
792                    $(".descEnvirSecond").hide();
793                    $(".descEnvirFirstSuite").show();
794                    $(this).text($(this).attr("data-lblLirePlus"));
795                }
796            )
797        }
798        
799        if($('.div_descriptionComplete[data-afficheplus="true"]').length>0){
800            var objDiv = $('.div_descriptionComplete[data-afficheplus="true"]');
801            var objDivContent = $('.div_descriptionComplete[data-afficheplus="true"]').children('.div_descriptionCompleteContent');
802            if($(objDivContent).outerHeight() > $(objDiv).outerHeight()){
803                $(objDiv).addClass('reduced');
804                $(objDiv).next('.div_descriptionComplete_btnPlus').show();
805                $(objDiv).css("max-height",$(objDivContent).outerHeight());
806                $('.div_descriptionComplete_btnPlus a').off('click');
807                $('.div_descriptionComplete_btnPlus a').click(function(){
808                    if($(objDiv).hasClass('reduced')){
809                        $(objDiv).removeClass('reduced');                        
810                        var $elem = jQuery(this);
811                        $(this).fadeOut( 500, function() {
812                          $(this).text($(this).data('lblmoins'));
813                          $(this).fadeIn(500);
814                        });
815                        addEventGa('affichageDescription','affiche',$(this).data('labelevent'));
816                    }
817                    else{
818                        $(objDiv).addClass('reduced');                        
819                        $(this).fadeOut( 500, function() {
820                          $(this).text($(this).data('lblplus'));
821                          $(this).fadeIn(500);
822                        });
823                        addEventGa('affichageDescription','masque',$(this).data('labelevent'));
824                    }
825                })
826            } else {
827                $('.div_descriptionComplete.reduced').removeClass('reduced');
828            }
829        }
830    })(jQuery);
831}
832
833function afficheFormSignalPlanningLDPasAJour(ref, dest){
834    (function($){
835        $.ajax({
836            type: 'POST',
837            url : '/lib_2/ajax/gereFiche.php',
838            data: {action: 'getHTML_formSignalPlanningLDPasAJour', ref: ref, dest: dest},
839            datatype: 'json',
840            beforeSend: function(){
841                
842            },
843            success: function(result){
844                var tabRetour = XMLToArray(result);
845                afficheDivAvecTransparence(tabRetour.html, 800, 600, null, tabRetour.titre);
846                initFormSignalPlanningLDPasAJour();
847            }
848        });
849    })(jQuery);
850}
851
852function initFormSignalPlanningLDPasAJour(){
853    (function($){
854        var langue = initLangueForDatePicker();
855        $.datepicker.setDefaults($.datepicker.regional[langue]);
856        $("#div_formSignalPlanningLDPasAJour .datepicker").datepicker({minDate: 0,  dateFormat: 'dd/mm/yy',  firstDay: 1});
857        
858        $( "#inpt_formSignalDateDeb" ).datepicker( "option", "onSelect", function(selectedDate){
859            var dateDebut = new OBJDate(selectedDate);
860            // on fait en sorte de ne pas choisir une date de fin inférieure à la date de début
861            $("#inpt_formSignalDateFin").datepicker("option", "minDate", dateDebut.toString());
862            $('#inpt_formSignalDateFin').datepicker("setDate", dateDebut.toString());
863            delete dateDebut;
864            setTimeout(function() {$('#inpt_formSignalDateFin').focus();}, 0);
865        });
866        // au clic sur calendrier d'arrivée, on vérifie que la durée mini est respectée, sinon on informe l'internaute
867        $( "#inpt_formSignalDateFin").datepicker( "option", "onSelect", function(selectedDate){
868            var dateFin = new OBJDate(selectedDate);
869            $("#inpt_formSignalDateDeb").datepicker("option", "maxDate", dateFin.toString());
870            delete dateFin;
871        });
872        
873        initActionBtnReloadCaptcha();
874    })(jQuery);
875}
876
877function verifEtEnvoiMailSignalPlanningLDPasAJour(){
878    (function($){
879        var langue = $("body").attr("data-langue");
880        var tabMessages = getTabMessagesValidationFormulaireByLangue(langue);
881        var email = new LiveValidation("inpt_formSignalEmail", {validMessage: tabMessages.valid, onlyOnSubmit: true});
882        addValidateOnLiveValidationEmail(email, langue, true);
883        
884        var dateDeb = new LiveValidation("inpt_formSignalDateDeb", {validMessage: tabMessages.valid, onlyOnSubmit: true});
885        dateDeb.add(Validate.Presence, {failureMessage: tabMessages.obligatoire});
886        dateDeb.add(Validate.Format, {pattern: /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/, failureMessage: tabMessages.dates});
887        var dateFin = new LiveValidation("inpt_formSignalDateFin", {validMessage: tabMessages.valid, onlyOnSubmit: true});
888        dateFin.add(Validate.Presence, {failureMessage: tabMessages.obligatoire});
889        dateFin.add(Validate.Format, {pattern: /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/, failureMessage: tabMessages.dates});
890        
891        var tabAValider = new Array(email, dateDeb, dateFin);
892        
893        if ($('#captcha').length>0) {
894            tabAValider.push(getLiveValidationCaptcha());
895        }
896        
897        LiveValidation.massValidate(tabAValider);
898        
899        if ($(".LV_invalid").length == 0) {
900            envoiMailSignalPlanningLDPasAJour();
901        }
902    })(jQuery);
903}
904
905function envoiMailSignalPlanningLDPasAJour(){
906    (function($){
907        var ref = $('#inpt_formSignalRef').val();
908        var dest = $('#inpt_formSignalDest').val();
909        var dateDebut = $('#inpt_formSignalDateDeb').val();
910        var dateFin = $('#inpt_formSignalDateFin').val();
911        var mail = $('#inpt_formSignalEmail').val();
912        var message = $('#inpt_formSignalMessage').val();
913        var captcha = '';
914        if ($('#captcha').length>0) {
915            captcha = $('#captcha').val();
916        }
917        
918        $.ajax({
919            type: 'POST',
920            url : '/lib_2/ajax/envoiMail.php',
921            data: {typeMail: 'mailSignalPlanningLDPasAJour', ref: ref, dest: dest, dateDebut: dateDebut, dateFin: dateFin, mail: mail, message: message, captcha: captcha},
922            dataType: 'json',
923            beforeSend: function(){
924                $('#div_formSignalPlanningLDPasAJour .div_messageErreurSaisie').hide();
925                $('#form_signalPlanningLDPasAJour *').attr('disabled', 'disabled');
926                $('#div_formSignalPlanningLDPasAJour_validation').hide();
927            },
928            success: function(result){
929                if (result.code=='OK') {
930                    $('#div_formSignalPlanningLDPasAJour .div_messageRetour.OK').show();
931                } else {
932                    $('#div_formSignalPlanningLDPasAJour .div_messageRetour.KO').show();
933                    $('#form_signalPlanningLDPasAJour *').attr('disabled', false);
934                    $('#div_formSignalPlanningLDPasAJour_validation').show();
935                }
936            }
937        });
938    })(jQuery);
939}
940
941function initAvisClientAfnor(){
942    (function($){
943        if($(".a_afficheDetailCertification").length>0){
944            $(".a_afficheDetailCertification").click(function(){
945                var struct = $(this).data("structure");
946                $('.div_avisClientCertificationAccroche[data-structure="'+struct+'"]').hide();
947                $('.div_avisClientCertificationDetail[data-structure="'+struct+'"]').show();
948            })
949        }
950        if($(".a_masqueDetailCertification").length>0){
951            $(".a_masqueDetailCertification").click(function(){
952                var struct = $(this).data("structure");
953                $('.div_avisClientCertificationAccroche[data-structure="'+struct+'"]').show();
954                $('.div_avisClientCertificationDetail[data-structure="'+struct+'"]').hide();
955            })
956        }
957        
958        if($(window).width() <= 750){
959            $(".btn_ouvre_avisAfnorPopin").fancybox({
960                maxWidth  : 634,
961                fitToView : false,
962                width : '100%',
963                height : '100%',
964                autoSize : false,
965                closeClick : false,
966                openEffect : 'fade',
967                closeEffect : 'fade',
968                openSpeed: 500,
969                closeSpeed: 500,
970                wrapCSS: 'fancyboxAfnor',
971                scrolling : 'yes',
972                helpers : {
973                    title:  null
974                }
975            });
976        }
977        else{
978            $(".btn_ouvre_avisAfnorPopin").fancybox({
979                maxWidth  : 634,
980                fitToView : false,
981                width : '85%',
982                autoSize : true,
983                closeClick : false,
984                openEffect : 'fade',
985                closeEffect : 'fade',
986                openSpeed: 500,
987                closeSpeed: 500,
988                wrapCSS: 'fancyboxAfnor',
989                scrolling : 'no',
990                helpers : {
991                    title:  null
992                }
993            });
994        }
995                
996    })(jQuery);
997}
998    
999function actualisePageFiche(tabInfos) {
1000    var paramsUrl = getVarsFromUrl() || {};
1001    var url = location.pathname;
1002    url += '?';
1003    var sejourIdentique = false;
1004    for (var prop in paramsUrl) {
1005        if (prop && prop != 'deb' && prop != 'nbj' && prop != 'exe' && prop != 'reload'){
1006            url += prop+'='+paramsUrl[prop]+'&';
1007        } else if (prop=='deb' && tabInfos.deb==paramsUrl['deb'] && ((tabInfos.fin && tabInfos.fin==paramsUrl['fin']) || tabInfos.nbj==paramsUrl['nbj'])) {
1008            sejourIdentique = true;
1009        }
1010    }
1011    // On essaye d'actualiser la page alors qu'on a les mêmes paramètres donc on ne le fait pas sinon on risque d'avoir une boucle infinie
1012    if (sejourIdentique) {
1013        return false;
1014    }
1015    if (tabInfos.deb) {
1016        url += '&deb='+tabInfos.deb;
1017    }
1018    if (tabInfos.fin) {
1019        url += '&fin='+tabInfos.fin;
1020    }
1021    if (tabInfos.nbj) {
1022        url += '&nbj='+tabInfos.nbj;
1023    }
1024    if (tabInfos.exe) {
1025        url += '&exe='+tabInfos.exe;
1026    }
1027    url += '&reload=true';
1028
1029    location.href = url;
1030}
1031
1032function initSejoursAlternatifs(){
1033    (function($){
1034        $('.a_listeTarifsParJourArriveeSansDateDefinie').click(function(){
1035           ouvreDatePickerDateDeb_packDivDatesTarifs();
1036        });
1037    })(jQuery);
1038}
1039
1040function ouvrirPhotos3DimensionsMosaique() {
1041    jQuery('.containerPhotosMosaique').addClass('ouvert');
1042    jQuery('body').addClass('overflowHidden');
1043    jQuery('.ensemblePhotosBouton3Dimensions').attr('data-etat', 'mosaique');
1044    metAJourEvenementsClavierAffichagePhoto();
1045}
1046
1047function ouvrirPhotos3DimensionsDiaporama(positionInitiale = 0) {
1048    jQuery('.ensemblePhotosSlider').addClass('ouvert');
1049    jQuery('.ensemblePhotosCliquer .unePhoto[data-position="' + positionInitiale + '"]').addClass('active');
1050    mettreAJourActive(positionInitiale, jQuery('.ensemblePhotosSlider .ensemblePhotosCliquer .unePhoto').length, false);
1051    jQuery('.flechesSlider').focus();
1052    jQuery('body').addClass('overflowHidden');
1053    jQuery('.ensemblePhotosBouton3Dimensions').attr('data-etat', 'diaporama');
1054    metAJourEvenementsClavierAffichagePhoto();
1055}
1056
1057function fermerPhotos3DimensionsMosaique() {
1058    jQuery('.containerPhotosMosaique').removeClass('ouvert');
1059    jQuery('body').removeClass('overflowHidden');
1060    jQuery('.ensemblePhotosBouton3Dimensions').attr('data-etat', 'fermer');
1061    metAJourEvenementsClavierAffichagePhoto();
1062}
1063
1064function fermerPhotos3DimensionsDiaporama() {
1065    jQuery('.ensemblePhotosSlider').removeClass('ouvert');
1066    jQuery('.ensemblePhotosCliquer .unePhoto.active').removeClass('active');
1067    if (jQuery('.ensemblePhotosBouton3Dimensions').attr('data-avecMosaique') === 'true') {
1068        jQuery('.ensemblePhotosBouton3Dimensions').attr('data-etat', 'mosaique');
1069    } else {
1070        jQuery('body').removeClass('overflowHidden');
1071        jQuery('.ensemblePhotosBouton3Dimensions').attr('data-etat', 'fermer');
1072    }
1073    metAJourEvenementsClavierAffichagePhoto();
1074}
1075
1076function metAJourEvenementsClavierAffichagePhoto() {
1077    jQuery(window).off('keydown');
1078    switch (jQuery('.ensemblePhotosBouton3Dimensions').attr('data-etat')) {
1079        case 'mosaique' :
1080            jQuery(window).on('keydown', function (event) {
1081                if (event.key === 'Escape') {
1082                    fermerPhotos3DimensionsMosaique();
1083                }
1084            });
1085        break;
1086        case 'diaporama' :
1087            jQuery(window).on('keydown', function (event) {
1088                var nbPhotos = parseInt(jQuery('.ensemblePhotosBouton3Dimensions').attr('data-nbphoto'));
1089                if (event.key === 'ArrowRight') {
1090                    deplacerSlider('droite', nbPhotos);
1091                } else if (event.key === 'ArrowLeft') {
1092                    deplacerSlider('gauche', nbPhotos);
1093                } else if (event.key === 'Escape') {
1094                    fermerPhotos3DimensionsDiaporama();
1095                }
1096            });
1097        break;
1098    }
1099}
1100
1101function deplacerSlider(sensDefiler, nbPhotos) {
1102    var active = parseInt(jQuery('.ensemblePhotosCliquer .unePhoto.active').attr('data-position'));
1103    if (sensDefiler == 'gauche') {
1104        active--;
1105    } else if (sensDefiler == 'droite') {
1106        active++;
1107    }
1108    mettreAJourActive(active, nbPhotos, true);
1109}
1110
1111function mettreAJourActive(newActive = 1, nbPhotos = 0, dejaInitialise = false) {
1112    jQuery('button.flechesSlider').removeClass('inactif');
1113    if (newActive <= 1 || nbPhotos === 1) {
1114        jQuery('button.flechesSlider.gauche').addClass('inactif');
1115    }
1116    if (newActive >= nbPhotos || nbPhotos === 1) {
1117        jQuery('button.flechesSlider.droite').addClass('inactif');
1118    }
1119    if (dejaInitialise && (newActive < 1 || newActive > nbPhotos)) {
1120        return;
1121    }
1122    jQuery('.ensemblePhotosCliquer .unePhoto.active').removeClass('active');
1123    jQuery('.ensemblePhotosCliquer .unePhoto[data-position="' + newActive + '"]').addClass('active');
1124    for (var i = 1; i <= nbPhotos; i++) {
1125        var photoADeplacer = jQuery('.ensemblePhotosSlider .ensemblePhotosCliquer .unePhoto[data-position="' + i + '"]');
1126        indiceDePosition = i - newActive;
1127        photoADeplacer.css('transform', 'translateX(' + 100 * indiceDePosition + '%');
1128    }
1129}
1130
1131function ouvreCarrouselPhotosChambre(elementClique) {}
1132
1133function fermeCarrouselPhotosChambre(elementClique) {}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.