/** 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 = $('', {
value: residence.find('code').text(),
text: residence.find('libelle').text()
});
$('select#station_residence').append(optionResidence);
});
$('select#station_residence').removeProp('disabled');
},
error: function(XMLHttpRequest, textStatus)
{
alert(textStatus);
}
});
}