/** FONTIONS EXECUTEES AU CHARGEMENT DU DOM **/ $(document).ready(function(){ ajaxMisAJourListes(saison, ajaxPath); $('input.type_vacances').click(function(){ $('label.type_vacances.radioSelected').removeClass('radioSelected'); $(this).parent('label').addClass('radioSelected'); // alert($(this).parent().text()); ajaxMisAJourListes(saison, ajaxPath); }); /** module de recherche **/ $('input[name="typeRecherche"]').each(function(){ if($(this).prop('checked') == true) { changeDureeSejour($(this)); } }); $("input.typeSejour").click(function(){ changeDureeSejour(this); }); $('div#recherche input[type="radio"]').each(function() { if($(this).hasClass('type_vacances')) $(this).parent('label').addClass('type_vacances'); else if($(this).hasClass('typeSejour')) $(this).parent('label').addClass('typeSejour'); if($(this).val() == 'E') { $(this).parent('label').css('clear', 'both'); } if($(this).prop('checked') == true) { $('label[class="radioSelected"]').removeClass('radioSelected'); $(this).parent('label').addClass('radioSelected'); } }); /** Initialisation de l'autocomplete sur le module recherche **/ if($('div#recherche').length != 0) { // Gestion autocomplete $("#autocomplete_input_recherche_rapide").autocomplete({ source: availableTagFlo, minLength: 0, open: function(){ if($("div#autocomplete_cadre ul.ui-autocomplete").length == 0 && $("ul.ui-autocomplete").length != 0) { var ul = $("ul.ui-autocomplete").detach(); ul.appendTo("div#autocomplete_liste"); } $("ul.ui-autocomplete").css('left', 'auto').css('top', 'auto'); $("div#autocomplete_cadre").show('blind', 500); }, select: function(event, ui){ $("a#bouton_rechercher_rapide").attr("href", ui.item.link); /* Changement design bouton (dégrisement) */ $("a#bouton_rechercher_rapide").removeClass("bouton_rechercher_desatur"); $("a#bouton_rechercher_rapide").addClass("bouton_rechercher"); $("#bouton_rechercher_rapide_gauche").attr("src", "site/media/bouton_std_gauche.png"); $("#bouton_rechercher_rapide_droite").attr("src", "site/media/bouton_std_droite.png"); $("a#bouton_reinit_autocomplete").show(); $("#autocomplete_input_recherche_rapide").attr("disabled", "disabled"); $("#autocomplete_input_recherche_rapide").addClass("selected"); }, close: function(){ $("div#autocomplete_cadre").hide('blind', 500); } }); $('input#autocomplete_input_recherche_rapide').live("click", function(){ if($('input#autocomplete_input_recherche_rapide').val() == "") { // $("div#autocomplete_cadre").css('display', 'block'); $("#autocomplete_input_recherche_rapide").autocomplete("search", ""); } }); $("#bouton_reinit_autocomplete").click(function() { $("#autocomplete_input_recherche_rapide").val(''); $("#autocomplete_input_recherche_rapide").removeClass("selected"); $("#bouton_reinit_autocomplete").css('display', 'none'); $("#autocomplete_input_recherche_rapide").removeAttr("disabled", ""); /* changement css bouton */ $("a#bouton_rechercher_rapide").removeClass("bouton_rechercher"); $("a#bouton_rechercher_rapide").addClass("bouton_rechercher_desatur"); $("#bouton_rechercher_rapide_gauche").attr("src", "site/media/bouton_std_gauche_desatur.png"); $("#bouton_rechercher_rapide_droite").attr("src", "site/media/bouton_std_droite_desatur.png"); $("a#bouton_rechercher_rapide").unbind('mouseenter').unbind('mouseleave'); }); } }); /** Grise les listes déroulantes du moteur de recherche **/ function grise_recherche() { $('li img#ajax_loader').css('display', 'block'); getId('recherche_pays').disabled = true; getId('recherche_region').disabled = true; getId('recherche_station').disabled = true; } /** Dégrise les listes déroulantes du moteur de recherche **/ function degrise_recherche() { getId('recherche_pays').disabled = false; getId('recherche_region').disabled = false; getId('recherche_station').disabled = false; $('li img#ajax_loader').css('display', 'none'); } /** Temporise le dégrisage des listes déroulantes du moteur de recherche **/ function clear_recherche() { setTimeout("degrise_recherche()", 500); } /** Construit le lien du 'action' et envoie le formulaire dans le cas ou une résidence est selectionnée dans la liste **/ function valid_recherche(element, nom_region, nom_station) { if (element.selectedIndex != 0) { loading(); var val = element.value; //nrsh + cholo + cidho var nrsh = val.substr(0, 6); //code_station var espace = nrsh.indexOf(' ', 0); //repère l'emplacement du premier espace dans le code_station if (espace != -1 && espace < 6) nrsh = nrsh.substr(0, espace); //Si un espace est trouvé et si le code_station fait moins de 6 cractères, on supprime les espaces en trop dans le code_station var cholo = val.substr(6, 1); //code_hebergement var cidho = val.substr(7, 4); //code_logement getId('form_recherche').action = 'vacances-location-mer-montagne,logements-' + nom_region + ',' + nom_station + '-' + nrsh + '-' + cholo + '-' + cidho + '-residence.html#residence'; getId('form_recherche').submit(); } } /** Cache/montre la liste des checkboxes pour affiner la recherche **/ function click_affiner() { $("#affiner").toggle('blind',{}, 500, function(){ $("#affiner").stop(true, true) if($("#affiner").css('display') == 'none') { $("#montrer_cacher").attr('src', 'site/media/recherche/plus.png'); } else { $("#montrer_cacher").attr('src', 'site/media/recherche/moins.png'); } }); } /** Cache un élément avec 'display' **/ function show_element(id) { getId(id).style.display = "block"; } /** Montre un élément avec 'display' **/ function hide_element(id) { getId(id).style.display = "none"; } /** Cache un élément avec 'visible' **/ function show_element_visible(id) { getId(id).style.visibility = "visible"; } /** Montre un élément avec 'visible' **/ function hide_element_visible(id) { getId(id).style.visibility = "hidden"; } /** Switch entre les checkboxes promo et coup de coeur (comme si c'était des radios) **/ function checkboxes(type) { if(type == 'promo') { getId('form_recherche').promo_cdc.value = 'D'; getId('form_recherche').cdc.checked = false; } else if(type == 'cdc') { getId('form_recherche').promo_cdc.value = 'S'; getId('form_recherche').promo.checked = false; } if(getId('form_recherche').promo.checked == false && getId('form_recherche').cdc.checked == false) getId('form_recherche').promo_cdc.value = ''; } /** Cache le block des dates **/ function hide_dates() { getId('li_date_depart').style.display = 'none'; getId('li_date_fin').style.display = 'none'; } /** Montre le block des dates **/ function show_dates() { getId('li_date_depart').style.display = 'block'; getId('li_date_fin').style.display = 'block'; } function changeDureeSejour() { if($("label input.typeSejour[value='semaine']").prop('checked') == true) { $('.sejoursSemaine').css('display', 'block'); $('.courtsSejours').css('display', 'none'); $("input.typeSejour[value='semaine']").parent('label.typeSejour').addClass('radioSelected'); $("input.typeSejour[value='court']").parent('label.typeSejour').removeClass('radioSelected'); } else { $('.sejoursSemaine').css('display', 'none'); $('.courtsSejours').css('display', 'block'); $("input.typeSejour[value='semaine']").parent('label.typeSejour').removeClass('radioSelected'); $("input.typeSejour[value='court']").parent('label.typeSejour').addClass('radioSelected'); } } /** Construit/déplace et affiche l'infobulle du moteur de recherche **/ function ouvrir_infobulle_hors_temps_reel(conteneur, msg, pos) { // if(navigator.appName == 'Microsoft Internet Explorer' && conteneur.id.substring((conteneur.id.lastIndexOf('_') + 1)) == 'container') // { // var cal = eval('date_' + conteneur.id.substring((conteneur.id.indexOf('_') + 1), conteneur.id.lastIndexOf('_')) + '_cal'); // cal.hide(); // } if(navVersion() == '6') pos = 'b'; // patch pour que l'infobulle ne passes pas sous les selects avec IE6 (solution : afficher l'infobulle en bas ^^) if(getId('infobulle_hors_temps_reel')) { var infobulle = getId('infobulle_hors_temps_reel'); infobulle.innerHTML = msg; infobulle.style.display = 'block'; if(pos == 'h') infobulle.style.top = getTop(conteneur) - infobulle.offsetHeight + 'px'; // getTop est une fonction fournie par le calendrier else infobulle.style.top = getTop(conteneur) + conteneur.offsetHeight + 'px'; // getTop est une fonction fournie par le calendrier infobulle.style.left = getLeft(conteneur) + 0 + 'px'; // getLeft est une fonction fournie par le calendrier } else { var infobulle = document.createElement('div'); infobulle.setAttribute('id', 'infobulle_hors_temps_reel'); getId('li_checkbox_hors_temps_reel').appendChild(infobulle); infobulle.innerHTML = msg; infobulle.style.display = 'block'; if(pos == 'h') infobulle.style.top = getTop(conteneur) - infobulle.offsetHeight + 'px'; // getTop est une fonction fournie par le calendrier else infobulle.style.top = getTop(conteneur) + conteneur.offsetHeight + 'px'; // getTop est une fonction fournie par le calendrier infobulle.style.left = getLeft(conteneur) + 0 + 'px'; // getLeft est une fonction fournie par le calendrier } } /** Cache l'infobulle du moteur de recherche **/ function hide_infobulle_hors_temps_reel() { if(getId('infobulle_hors_temps_reel')) getId('infobulle_hors_temps_reel').style.display = 'none'; } /** Construit le lien du 'action' pour les recherches hors temps réel **/ function ecrire_lien() { if(getId('temps_reel').checked == true) // Recherche temps réel { var radios_type_vac = getId('radio_type_vac').getElementsByTagName('input'); for(var i = 0; i < radios_type_vac.length; i++) if(radios_type_vac[i].checked == true) var type_vac = radios_type_vac[i].value; var pays = getId('selectPays').value; var region = getId('selectRegion').value; var station = getId('selectStation').value; var criteres = ''; var radios_affiner = getId('affiner').getElementsByTagName('input'); for(var i = 0; i < radios_affiner.length; i++) { if(radios_affiner[i].checked == true) { if(criteres != '') criteres += '_'; criteres += radios_affiner[i].value; } } var lien = 'vacances-reservation-sejour-tourisme-location,recherche-' + type_vac + '-' + pays + '-' + region; if(station != '') lien += '-' + station; lien += '-1'; if(criteres != '') lien += '-' + criteres.toLowerCase(); lien += '.html'; // alert(lien); getId('form_recherche').action = lien; } } /** Graissage du bouton radio sélectionné **/ function style_radioSelected(id) { var tab_temps_reel = new Array('temps_reel', 'hors_temps_reel'); getId('label_'+id).className = 'type_vacances_selected'; for (var i = 0; i < tab_temps_reel.length; i++) { if (tab_temps_reel[i] != id) { getId('label_'+tab_temps_reel[i]).className = 'type_vacances'; } } } /** Fonctions AJAX **/ function ajaxMisAJourListes(saison, path) { var typeVacances = "&type_vacances=" + $('input[name="type_vacances"]:checked').val(); var langue = "&lang=" + $('#langue_date').attr('value'); var paysSelected = "&pays=" + $('select#recherche_pays').attr('value'); var regionSelected = "®ion=" + $('select#recherche_region').attr('value'); // var stationSelected = "&station=" + $('select#recherche_station').attr('value'); if($('select#recherche_station').attr('value') != 0) var stationSelected = "&station=" + $('select#recherche_station').attr('value'); else stationSelected = ""; // On vide les listes déjà présentes $('select#recherche_pays').empty(); $('select#recherche_region').empty(); $('select#recherche_station').empty(); // alert(path); var parametre = "&recherche=maj&saison=" + saison + typeVacances + langue + paysSelected + regionSelected + stationSelected; // alert(parametre); $.ajax({ type: "POST", url: path, // Force le retour de l'ajax en xml dataType: 'xml', data: parametre, beforeSend:function() { grise_recherche(); }, complete:function() { degrise_recherche(); }, success:function(responseXML) { // alert('TypeVacances : ' + typeVacances); // alert($(responseXML).text()); $(responseXML).find('Pays').each( function() { var pays = $(this); // On crée l'option var optionPays = $('