/** FONTIONS EXECUTEES AU CHARGEMENT DU DOM **/
$(document).ready(function()
{
// ajaxWriteHistory();
// $('#retourNav').click(function(){
// ajaxReadHistory();
// });
/** Déclenche l'opacité lors de l'affichage de la popup de choix du marché ou d'erreurs **/
if($('div#init_marche').length != 0 || $('div#erreurs').length != 0) opacityOn();
/** initialise le calendrier pour la page concours **/
if($('div#concours').length != 0) calConcours();
/** Redimentionne le fond opaque de la liste des résidences sur la page spa **/
if($('div#spa').length != 0) ajusterZone();
/** Redimentionne les fonds opaques des descriptifs de la page spa aquaroma **/
if($('div#aquaroma').length != 0) ajusterZonesAquaroma();
/** Initialisation du calendrier sur les page logement et recherche **/
if($('div#recherche').length != 0)
{
// Création des deux calendrier du moteur de recherche
var dates = $("#dateDebut, #dateFin").datepicker({
minDate: '0',
changeMonth: true,
dateFormat: formatDateLangue,
numberOfMonths: 1,
changeYear: 'true',
showOn: 'both',
buttonImageOnly: 'true',
showAnim: '',
buttonImage: 'site/media/recherche/calendrier.png',
onSelect: function( selectedDate ){
var option = this.id == "dateDebut" ? "minDate" : "", instance = $( this ).data( "datepicker" );
if(option != "")
{
// On se situe dans le cas ou l'utilisateur à choisis via le premier calendrier.
// Il faut donc restreindre les jours précédent et afficher sur l'autre calendrier la date une semaine après (si possible)
// Cette méthode nous retourne la date maximale autorisée.
var date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);
date.setDate(date.getDate()+1);
$('#dateFin').datepicker("option", option, date);
var datefin = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);
datefin.setDate(datefin.getDate()+3);
$('#dateFin').datepicker("setDate", datefin);
}
}
});
$("#dateDebut").datepicker("option", "maxDate", dateMaxDebutPourUneResa);
$("#dateDebut").datepicker("option", "buttonText", titleImgDebut);
$("#dateFin").datepicker("option", "maxDate", dateMaxFinPourUneResa);
$("#dateFin").datepicker("option", "buttonText", titleImgFin);
//La date envoyée par le PHP est paramétrée dans DatePicker (le fait de préciser le value de l'input ne suffit pas), elle est convertie au passage en date AS400
$("#dateDebut").datepicker("setDate", new Date(dateDebut.substr(0,4), dateDebut.substr(4,2)-1, dateDebut.substr(6,2)));
$("#dateFin").datepicker("setDate" , new Date(dateFin.substr(0,4) , dateFin.substr(4,2)-1 , dateFin.substr(6,2)));
//Idem au dessus, a chaque modification de date (choix à la semaine) on convertit et paramètre (setDate) le DatePicker
$("#choixSemaineDepart").change(function(){
$("#dateDebut").datepicker("setDate", new Date($(this).val().substr(0,4),$(this).val().substr(4,2)-1,$(this).val().substr(6,2)));
// $( "#dateFin" ).datepicker("setDate", new Date($(this).val().substr(0,4),$(this).val().substr(4,2)-1,$(this).val().substr(6,2)+7));
}
);
if($('div#recherche').length != 0)
{
/* Init marche au click sur l'image du calendrier ou sur l'input */
$(".ui-datepicker-trigger,#dateDebut,#dateFin").click(function() {
verif_init_marche();
});
}
}
/** Fonction permettant de changer les images sur les cotés des boutons au survol **/
$('div.submit, a.bouton_rechercher').live('hover', function(event){
if(event.type == 'mouseenter')
{
$(this).children('img.submit_img_right, img[id^="bouton_rechercher"][id$="droite"]').attr('src', 'site/media/bouton_std_droite_hover.png');
$(this).children('img.submit_img_left, img[id^="bouton_rechercher"][id$="gauche"]').attr('src', 'site/media/bouton_std_gauche_hover.png');
}
else if(event.type == 'mouseleave')
{
$(this).children('img.submit_img_right, img[id^="bouton_rechercher"][id$="droite"]').attr('src', 'site/media/bouton_std_droite.png');
$(this).children('img.submit_img_left, img[id^="bouton_rechercher"][id$="gauche"]').attr('src', 'site/media/bouton_std_gauche.png');
}
});
});
/** Sauvegarde de l'historique de navigation **/
function ajaxWriteHistory()
{
$.ajax({
type: "POST",
url: urlHistorique,
data: "url=" + document.location.toString() + "&post=" + postHistorique
});
}
/** Récupération de la page précédante dans l'historique de navigation **/
function ajaxReadHistory()
{
$.ajax({
type: "POST",
url: urlHistorique,
data: "lire=" + 1,
dataType: "xml",
success: function(data){
xml = data;
},
complete: function(){
alert($(xml).text());
}
});
}
/** retour **/
function retourNav()
{
window.history.back();
var url = document.location.toString();
var position = url.indexOf('#', 0);
if(position != -1)
{
var onglet = url.substr(position + 1);
if(in_array(onglet, ['residence', 'station', 'domaine', 'region', 'pays']))
{
retourNav();
}
}
}
/** retourne l'objet de l'élément dont l'id est passé en parametre **/
function getId(id)
{
return document.getElementById(id);
}
/** fonction de stockage des scripts à charger **/
// FuncOL = new Array();
// function onLoad(Obj)
// {
// FuncOL[FuncOL.length] = Obj;
// }
/** Fonction qui permet d'ajouter 7 jours, au plus, pour le second calendrier, lorsque l'utilisateur séléctionne une date **/
function addDaysToDate(old_date, delta_days, type_date, date_Max_Pour_Une_Resa)
{
/* Le type date permet de déterminé le format (dd/mm/yy ou mm/dd/yy)*/
var split_type_date = type_date.split('/');
var split_date = old_date.split('/');
var split_date_Max_Pour_Une_Resa = date_Max_Pour_Une_Resa.split('/');
var day = ((split_type_date[0] == 'dd') ? split_date[0] : split_date[1]);
var dayMax = ((split_type_date[0] == 'dd') ? split_date_Max_Pour_Une_Resa[0] : split_date_Max_Pour_Une_Resa[1]);
var month = ((split_type_date[0] == 'mm') ? split_date[0] : split_date[1]);
var monthMax = ((split_type_date[0] == 'mm') ? split_date_Max_Pour_Une_Resa[0] : split_date_Max_Pour_Une_Resa[1]);
var year = split_date[2];
var yearMax = split_date[2];
var new_date = new Date(year, month*1 - 1, day*1 + delta_days);
var new_day = new_date.getDate();
new_day = ((new_day < 10) ? '0' : '') + new_day; // ajoute un zéro devant pour la forme
var new_month = new_date.getMonth() + 1;
new_month = ((new_month < 10) ? '0' : '') + new_month; // ajoute un zéro devant pour la forme
var new_year = new_date.getYear();
new_year = ((new_year < 200) ? 1900 : 0) + new_year; // necessaire car IE et FF retourne pas la meme chose
/* On vérifie que la date ne dépasse pas de la date maximum souhaitée */
if((yearMax+monthMax+dayMax) < (new_year+new_month+new_day))
{
/* la date dépasse !!! */
var new_date_text = ((split_type_date[0] == 'dd') ? (dayMax + '/' + monthMax + '/' + yearMax) : (monthMax + '/' + dayMax + '/' + yearMax));
}
else
{
var new_date_text = ((split_type_date[0] == 'dd') ? (new_day + '/' + new_month + '/' + new_year) : (new_month + '/' + new_day + '/' + new_year));
}
return new_date_text;
}
/** Fonction pour montrer/cacher des bloces **/
function checkVisibilityAndClickById(id, prefixe, prefixe_hidden, tick, id_img, lien_img, nom_img)
{
/*
id : identifiant de l'element à montrer ou à cacher
prefixe :
prefixe_hidden :
tick :
id_img : identifiant de la puce ouverte ou fermé => balise html
lien_img : lien vers la puce => site/media/...
nom_img : tableau contenant le nom de la puce ouverte et fermée
*/
// Par défaut il faut définir dans le css que l'élément est visible ou non, sinon on a une erreur javascript lors de la comparaison
// On utilise un préfixe pour éviter d'avoir une erreur de type << attribute id has invalid value >>
if(prefixe != null && prefixe != '') identifiant = prefixe+id;
else identifiant = id;
if(prefixe_hidden != null && prefixe_hidden != '') id_hidden = prefixe_hidden+id;
else id_hidden = null;
// Ce bloc est obligatoire car au chargement de la page le style.visibility est considéré comme vide ... je ne sais pas pourquoi.
if(id_hidden != null && prefixe_hidden != '')
{
if(getId(id_hidden).value == '1')
{
getId(identifiant).style.visibility = 'visible';
getId(identifiant).style.display = 'block';
}
else
{
getId(identifiant).style.visibility = 'hidden';
getId(identifiant).style.display = 'none';
}
}
if(getId(identifiant).style.visibility == 'hidden' || getId(identifiant).style.visibility == '' || getId(identifiant).style.visibility == null) // Affiche le bloc
{
getId(identifiant).style.visibility = 'visible';
getId(identifiant).style.display = 'block';
if (id_img != null && id_img != '') getId(id_img).src = lien_img+nom_img[1];
// On rempli l'input hidden correspondant avec la valeur 1 pour conserver le fait qu'il est visible
if(id_hidden != null) getId(id_hidden).value = '1'; // 1 = visible
}
else // Cache le bloc
{
getId(identifiant).style.visibility = 'hidden';
getId(identifiant).style.display = 'none';
if (id_img != null && id_img != '') getId(id_img).src = lien_img+nom_img[0];
// On rempli l'input hidden correspondant avec la valeur 0 pour conserver le fait qu'il est caché
if(id_hidden != null && prefixe_hidden != '') getId(id_hidden).value = '0'; // 0 = caché
}
// if(tick) changeTick(this); // On change de sens la puce
}
/** supprime les slashes qui échappent les quotes **/
function str_replace(niddle, replace, haystack)
{
str = haystack.replace(niddle, replace);
return str;
}
/** supprime les slashes qui échappent les quotes **/
function stripslashes(str)
{
str = str.replace(/\\'/g, '\'');
str = str.replace(/\\"/g, '"');
str = str.replace(/\\0/g, '\0');
str = str.replace(/\\\\/g, '\\');
return str;
}
/** Change la couleur du background d'un élement **/
function changerBackground(elem, color)
{
if((elem.tagName == 'SELECT' && navigator.appName != 'Microsoft Internet Explorer') || elem.tagName != 'SELECT') elem.style.backgroundColor = color;
}
/** permet de créer un effet coloré avec un fondu vers une autre couleur (en passant si nécessaire par une autre couleur définie) **/
// On peut appeler la fonction de cette façon : onclick="javascript: add_error_style('EditView', 'salutation', 'ERREUR !!');"
// Ne pas oublier de mettre une couleur de fond sur l'input ou modifier le js dans la fonction get_current_bgcolor ?
if(navigator.appName != 'Microsoft Internet Explorer')
{
var inputsWithErrors = new Array();
function add_error_style(formname, input, txt) // txt = message affiché à l'utilisateur
{
inputHandle = eval("getId('" + formname + "')['" + input + "']");
// inputHandle = eval("document." + formname + "['" + input + "']");
style = get_current_bgcolor(inputHandle);
if(inputHandle.parentNode.innerHTML.search(txt) == -1)
{
errorTextNode = document.createElement('span');
errorTextNode.className = 'required';
errorTextNode.innerHTML = '
' + txt; // Position d'affichage du message d'erreur à modifier si nécessaire
inputHandle.parentNode.appendChild(errorTextNode);
}
inputHandle.style.backgroundColor = "#F78A20"; // Couleur de début
inputsWithErrors.push(inputHandle);
for(wp = 1; wp <= 10; wp++)
{
window.setTimeout('fade_error_style(style, ' + wp * 10 + ')', 1000 + (wp * 100));
}
}
function get_current_bgcolor(input) // Récupération de la couleur de fond
{
if(input.currentStyle) // ie
{
style = input.currentStyle.backgroundColor;
return style.substring(1,7);
}
else // moz
{
style = '';
styleRGB = document.defaultView.getComputedStyle(input, '').getPropertyValue("background-color");
comma = styleRGB.indexOf(',');
style += dec2hex(styleRGB.substring(4, comma));
commaPrevious = comma;
comma = styleRGB.indexOf(',', commaPrevious+1);
style += dec2hex(styleRGB.substring(commaPrevious+2, comma));
style += dec2hex(styleRGB.substring(comma+2, styleRGB.lastIndexOf(')')));
return style;
}
}
function hex2dec(hex) // Découpage de la couleur
{
return(parseInt(hex,16));
}
var hexDigit = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");
function dec2hex(dec)
{
return(hexDigit[dec>>4] + hexDigit[dec&15]);
}
function fade_error_style(normalStyle, percent) //Eclaircissement
{
errorStyle = 'F78A20'; //Couleur intermédiaire
var r1 = hex2dec(errorStyle.slice(0,2));
var g1 = hex2dec(errorStyle.slice(2,4));
var b1 = hex2dec(errorStyle.slice(4,6));
var r2 = hex2dec(normalStyle.slice(0,2));
var g2 = hex2dec(normalStyle.slice(2,4));
var b2 = hex2dec(normalStyle.slice(4,6));
var pc = percent / 100;
r = Math.floor(r1+(pc*(r2-r1)) + .5);
g = Math.floor(g1+(pc*(g2-g1)) + .5);
b = Math.floor(b1+(pc*(b2-b1)) + .5);
for(var wp = 0; wp < inputsWithErrors.length; wp++)
{
inputsWithErrors[wp].style.backgroundColor = "#" + dec2hex(r) + dec2hex(g) + dec2hex(b);
}
}
}
/** fonction qui permet d'ajouter ou d'enlever 7 jours a une date du calendrier */
// function datePlusMoins(date_debut, modif, langue)
function datePlusMoins(date_debut, modif)
{
// var langue = '{/literal}{$langue}{literal}';
// (date_debut.substr(0,1) == 0 )? alert("Jour < 10 : " + date_debut.substr(1,1)) : alert("Jour > 10 : " + date_debut.substr(0,2))
// if(langue == 'f' || langue == 'a')
if(format == '%d/%m/%Y')
{
var jour_debut = parseInt((date_debut.substr(0,1) == 0 ? date_debut.substr(1,1) : date_debut.substr(0,2)));
var mois_debut = parseInt((date_debut.substr(3,1) == 0 ? date_debut.substr(4,1) : date_debut.substr(3,2)));
}
else
{
var mois_debut = parseInt((date_debut.substr(0,1) == 0 ? date_debut.substr(1,1) : date_debut.substr(0,2)));
var jour_debut = parseInt((date_debut.substr(3,1) == 0 ? date_debut.substr(4,1) : date_debut.substr(3,2)));
}
var annee_debut = parseInt(date_debut.substr(6,4));
date = new Date();
// alert(jour_debut);
// l'ordre importe BEAUCOUP, bien mettre le mois avant le jour. (requis par Date)
date.setMonth(mois_debut-1);
date.setDate(jour_debut);
date.setFullYear(annee_debut);
if(modif == 'plus') date.setDate(date.getDate() + 7);
else if(modif == 'moins') date.setDate(date.getDate() - 7);
strDay = (date.getDate() < 10 ? "0" : "") + date.getDate();
month = date.getMonth() + 1; // Retourne le numéro du mois. Attention 0 correspond au mois de Janvier et 11 au mois de Décembre. C'est pour cela que l'on ajoute 1.
strMonth = (month < 10 ? "0" : "")+month;
if(format == '%d/%m/%Y') strDate = strDay + "/" + strMonth + "/" + date.getFullYear();
else strDate = strMonth + "/" + strDay + "/" + date.getFullYear();
return strDate;
}
/** fonction qui permet d'ajouter ou d'enlever 7 jours a une date du calendrier */
function majDatesCal()
{
if(getId('calendrier_debut_container_hidden')) getId('calendrier_debut_container').value = getId('calendrier_debut_container_hidden').value;
if(getId('calendrier_fin_container_hidden')) getId('calendrier_fin_container').value = getId('calendrier_fin_container_hidden').value;
}
/** Parcours d'une chaine en testant si ce qu'il y a dans s correspond bien a la liste b **/
function carasp(s, b)
{
var i;
for (i = 0; i < s.length; i++)
{
var c = s.charAt(i);
if (b.indexOf(c) == -1) return false;
}
return true;
}
/** test des caractères spéciaux **/
function testNumChar(chaine, msg)
{
if(!carasp(chaine, "0123456789"))
{
alert(msg);
return false;
}
else return true;
}
/** test des caractères spéciaux **/
function testSpecialChar(chaine, msg)
{
if(!carasp(chaine, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmonpqrstuvwxyzÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÝÿýÑñ' -"))
{
alert(msg);
return false;
}
else return true;
}
function testSpecialChar_param(chaine, msg, para)
{
if(para == "tel")
{
if(!carasp(chaine, "+.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmonpqrstuvwxyz "))
{
alert(msg + "+.0123456789, ABCDEFGHIJKLMNOPQRSTUVWXYZ, abcdefghijklmonpqrstuvwxyz et espace");
return false;
}
else return true;
}
else if(para == "code_postal")
{
if(!carasp(chaine, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ "))
{
alert(msg + "0123456789, ABCDEFGHIJKLMNOPQRSTUVWXYZ et espace");
return false;
}
else return true;
}
else if(para == "ville")
{
if(!carasp(chaine, ".,?;:!0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmonpqrstuvwxyzÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÝÿýÑñ "))
{
alert(msg + ".0123456789, ABCDEFGHIJKLMNOPQRSTUVWXYZ, abcdefghijklmonpqrstuvwxyz, virgule et espace");
return false;
}
else return true;
}
else if(para == "adresse")
{
if(!carasp(chaine, "'\-.,;:!?0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmonpqrstuvwxyzÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÝÿýÑñ "))
{
alert(msg + ".0123456789, ABCDEFGHIJKLMNOPQRSTUVWXYZ, abcdefghijklmonpqrstuvwxyz, tiret, apostrophe,virgule et espace");
return false;
}
else return true;
}
}
/** teste si les caracteres passés en parametre sont présents dans la chaine **/
function testChar(chaine, msg, carateres)
{
if(!carasp(chaine, carateres))
{
alert(msg);
return false;
}
else return true;
}
/** met en majuscules la premiere lettre d'une chaine **/
function ucFirst(chaine)
{
var debut = chaine.charAt(0).toUpperCase();
var fin = chaine.substr(1, chaine.length-1).toLowerCase();
var result = debut+fin;
return result;
}
/** met en majuscules la premiere lettre de chaques mots d'une chaine **/
function ucWords(chaine)
{
var tabMots = chaine.split(/[ ]/);
var tailleTab = tabMots.length;
var result = '';
var i;
for(i = 0; i < tailleTab; i++)
{
result += ucFirst(tabMots[i]);
if(i != tailleTab-1) result += ' ';
}
return result;
}
/** remplace les caracteres spéciaux par les caracteres standards **/
function replaceSpecialChar(chaine)
{
var remplaceA = /[ÀÁÂÃÄÅàáâãäå]/g;
var remplaceO = /[ÒÓÔÕÖØòóôõöø]/g;
var remplaceE = /[ÈÉÊËèéêë]/g;
var remplaceC = /[Çç]/g;
var remplaceI = /[ÌÍÎÏìíîï]/g;
var remplaceU = /[ÙÚÛÜùúûü]/g;
var remplaceY = /[Ýÿý]/g;
var remplaceN = /[Ññ]/g;
chaine = chaine.replace(remplaceA, "a");
chaine = chaine.replace(remplaceO, "o");
chaine = chaine.replace(remplaceE, "e");
chaine = chaine.replace(remplaceC, "c");
chaine = chaine.replace(remplaceI, "i");
chaine = chaine.replace(remplaceU, "u");
chaine = chaine.replace(remplaceY, "y");
chaine = chaine.replace(remplaceN, "n");
return chaine;
}
/** fait clignoter les elements font qui ont pour classes 'blink' **/
function blink()
{
var elems = document.getElementsByTagName('font');
var x = elems.length;
for(var i = 0; i < x; i++)
{
if(elems[i].className == 'blink')
{
if(elems[i].style.visibility == "hidden") var etat = 'hidden';
if(elems[i].style.visibility == "hidden") elems[i].style.visibility = "visible";
else elems[i].style.visibility = "hidden";
}
}
// alternance du timeout
if(etat != 'hidden') setTimeout('blink()', 500); // éteint
else setTimeout('blink()', 1500); // allumé
}
/** retourne la version du navigateur (FF pour Firefox ; 5, 6, 7... pour IE en fonction des versions) **/
function navVersion()
{
var version;
if(navigator.appName == 'Microsoft Internet Explorer') version = navigator.appVersion.substr(22, 1);
else version = 'FF';
return version;
}
/** fonction pour connaitre exactement le navigateur et sa version (dans le cas IE et FF) **/
function browserVersion()
{
var version;
switch(navigator.appName)
{
case 'Microsoft Internet Explorer':
version = 'Internet Explorer ' + navigator.appVersion.substr(22, 1);
break;
case 'Opera':
version = 'Opera';
break;
case 'Netscape':
if(navigator.userAgent.indexOf('Firefox') != -1) version = 'Firefox ' + navigator.userAgent.substr((navigator.userAgent.lastIndexOf('/')+1), 1);
else if(navigator.userAgent.indexOf('Chrome') != -1) version = 'Chrome';
else if(navigator.userAgent.indexOf('Safari') != -1) version = 'Safari';
break;
default:
version = 'Other...';
break;
}
return version;
}
/** cache les selects **/
function hideSelect()
{
if(navVersion() == '6')
{
var elems = document.getElementsByTagName('select');
var x = elems.length;
for(var i = 0; i < x; i++) elems[i].style.visibility = "hidden";
}
}
/** montre les selects **/
function showSelect()
{
var elems = document.getElementsByTagName('select');
var x = elems.length;
for(var i = 0; i < x; i++) elems[i].style.visibility = "visible";
}
/** cache les flash **/
function hideFlash()
{
var elems = document.getElementsByTagName('object');
var x = elems.length;
for(var i = 0; i < x; i++)
{
elems[i].style.visibility = "hidden";
elems[i].style.display = "none";
}
}
/** montre les flash **/
function showFlash()
{
var elems = document.getElementsByTagName('object');
var x = elems.length;
for(var i = 0; i < x; i++)
{
elems[i].style.visibility = "visible";
elems[i].style.display = "block";
}
}
/** définit le niveau d'opacité d'un element **/
function setOpacity(niveau, id)
{
getId(id).style.filter = 'alpha(opacity=' + niveau + ')';
getId(id).style.opacity = '0.' + niveau;
}
/** affiche l'overlay noir **/
function opacityOn()
{
getId('overlay').className = 'overlay_active';
// if(getId('flash')) getId('flash').style.visibility = "hidden";
hideFlash();
hideSelect();
// hideFacebookLike();
setOpacity(70, 'overlay');
}
/** cache l'overlay noir **/
function opacityOff()
{
getId('overlay').className = 'overlay_passive';
showFlash();
showSelect();
// showFacebookLike();
// document.body.style.paddingRight = '0';
document.getElementsByTagName('html')[0].style.overflowY = 'auto';
if (navigator.appName == 'Microsoft Internet Explorer')
{
// document.body.style.left = '0';
// document.getElementsByTagName('html')[0].style.overflowX = 'hidden';
// document.getElementsByTagName('html')[0].style.overflowX = 'auto';
}
}
/** retourne la position d'un élément **/
function findPos(element_id)
{
AObject = getId(element_id);
var posX = 0, posY = 0;
do
{
posX += AObject.offsetLeft;
posY += AObject.offsetTop;
AObject = AObject.offsetParent;
}
while( AObject != null );
var pos = [];
pos['X'] = posX;
pos['Y'] = posY;
return pos;
}
/** retourne la taille d'un élément (plus ses borders) **/
function findSize(element_id)
{
AObject = getId(element_id);
var sizeX = 0, sizeY = 0;
sizeX += AObject.offsetWidth;
sizeY += AObject.offsetHeight;
var size = [];
size['X'] = sizeX;
size['Y'] = sizeY;
return size;
}
/** fonction de test - afficher avec un alert la taille d'un element, ainsi que sa position **/
function size(element_id)
{
var size = findSize(element_id)
var pos = findPos(element_id)
// alert('Width : ' + size['X'] + 'px\nHeight : ' + size['Y'] + 'px\n\nLeft : ' + pos['X'] + 'px\nTop : ' + pos['Y'] + 'px');
}
/** fonction pour faire patienter lors d'un desabonnement **/
function formDesaboLoading()
{
getId('cadre_form_desabo').innerHTML = '
';
}
/** fonction pour réinitialiser le formulaire de desabonnement **/
function newDesabo()
{
getId('cadre_form_desabo').innerHTML = getId('desabo_hidden').innerHTML;
}
/** permet de changer la couleur des champs input du site en orange **/
function input_focus(id)
{
getId(id).style.backgroundColor = '#DDEEFC';
}
/** permet de changer la couleur des champs input du site en blanc **/
function input_blur(id)
{
getId(id).style.backgroundColor = '#FFFFFF';
}
/** ouvre le calendrier au mois correspondant à la date selectionnée **/
function goDate(cal, input, format)
{
// alert("cal : " + cal + "\ninput.value : " + input.value + "\nformat : " + format);
if(format == '%d/%m/%Y')
{
// alert('if');
var mois = parseInt(input.value.substr(3, 2), 10) - 1; // On précise 10 comme second argument (signifie base 10) afin de contrer le bug du parseInt (avec 08 et 09)
var jour = parseInt(input.value.substr(0, 2), 10);
}
else
{
// alert('else');
var mois = parseInt(input.value.substr(0, 2), 10) - 1; // On précise 10 comme second argument (signifie base 10) afin de contrer le bug du parseInt (avec 08 et 09)
var jour = parseInt(input.value.substr(3, 2), 10);
}
var annee = parseInt(input.value.substr(6, 4), 10); // Toujours concernant le bug parseInt => http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256C85006A6604
// cal.addDates(new Array(new Date(annee, mois, jour)), true, true, true)
// alert(annee + '/' + mois + '/' + jour);
cal.goToMonth(annee, mois);
cal.selectDates(new Array(new Date(annee, mois, jour)), true, true, true)
}
/** fonction pour cacher le formulaire d'envoi à un ami **/
function fermer_envoi_ami()
{
getId('bloc_envoyer_ami').style.display = 'none';
opacityOff();
getId('loading_login_envoi_ami').innerHTML = getId('descriptif_envoi_ami').innerHTML;
}
/** fonction pour savoir si un nombre est pair ou impair **/
function pair(nombre)
{
if(nombre/2 == Math.round(nombre/2)) return 1;
else return 0;
}
/** fonction getElementsByClassName pour IE qui ne l'implémente pas de base **/
function getElementsByClassNameIE(oElm, strClassName)
{
var arrElements = oElm.all;
var arrReturnElements = new Array();
strClassName = strClassName.replace(/\-/g, "\\-");
var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
var oElement;
for(var i = 0; i < arrElements.length; i++)
{
oElement = arrElements[i];
if(oRegExp.test(oElement.className))
{
arrReturnElements.push(oElement);
}
}
return (arrReturnElements);
}
/** désactive loading() **/
function unLoading()
{
if(getId('status') || getId('status_marche'))
{
opacityOff();
getId('status').style.display = 'none';
getId('status_marche').style.display = 'none';
}
}
/** désactive loading() apres un délais **/
function unLoadingWait()
{
setTimeout('unLoading()', 1000)
}
/** fonction in_array fonctionnant comme en php ^^ **/
function in_array(needle, haystack, argStrict)
{
// http://kevin.vanzonneveld.net
// + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + improved by: vlado houba
// * example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']);
// * returns 1: true
// * example 2: in_array('vlado', {0: 'Kevin', vlado: 'van', 1: 'Zonneveld'});
// * returns 2: false
// * example 3: in_array(1, ['1', '2', '3']);
// * returns 3: true
// * example 4: in_array(1, ['1', '2', '3'], false);
// * returns 4: true
// * example 5: in_array(1, ['1', '2', '3'], true);
// * returns 5: false
var key = '', strict = !!argStrict;
if (strict)
{
for (key in haystack)
{
if (haystack[key] === needle) return true;
}
}
else
{
for (key in haystack)
{
if (haystack[key] == needle) return true;
}
}
return false;
}
/** fonction array_search fonctionnant comme en php (Searches the array for a given value and returns the corresponding key if successful ) **/
function array_search(needle, haystack, argStrict)
{
// Searches the array for a given value and returns the corresponding key if successful
//
// version: 1008.1718
// discuss at: http://phpjs.org/functions/array_search // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + input by: Brett Zamir (http://brett-zamir.me)
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// * example 1: array_search('zonneveld', {firstname: 'kevin', middle: 'van', surname: 'zonneveld'});
// * returns 1: 'surname'
var strict = !!argStrict;
var key = '';
for (key in haystack)
{
if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle))
{
return key;
}
}
return false;
}
/** fonctions de test permettant d'afficher les objets javascript **/
function print_r(obj)
{
win_print_r = window.open('about:blank', 'win_print_r');
win_print_r.document.write('
');
r_print_r(obj, win_print_r);
win_print_r.document.write('');
}
function r_print_r(theObj, win_print_r) // fonction indispensable à la fonction précédente
{
if(theObj.constructor == Array || theObj.constructor == Object)
{
if (win_print_r == null)
win_print_r = window.open('about:blank', 'win_print_r');
}
for(var p in theObj)
{
if(theObj[p].constructor == Array || theObj[p].constructor == Object)
{
win_print_r.document.write("["+p+"] =>"+typeof(theObj)+"");
win_print_r.document.write("");
r_print_r(theObj[p], win_print_r);
win_print_r.document.write("
");
}
else win_print_r.document.write("["+p+"] =>"+theObj[p]+"");
}
win_print_r.document.write("");
}
/** fonctions de test permettant d'afficher les objets javascript **/
function print_r_baps(obj)
{
historique = '';
r_print_r_baps(obj, historique);
alert(historique);
}
function r_print_r_baps(theObj, historique) // fonction indispensable à la fonction précédente
{
if(typeof(theObj) == 'Array' || typeof(theObj) == 'Object')
{
if(historique == null) historique = '';
}
for(var p in theObj)
{
alert(p);
// alert(typeof(theObj[p]));
// if(typeof(theObj[p]) == 'Array' || typeof(theObj[p]) == 'Object')
// {
// historique += "[" + p + "] => " + typeof(theObj) + "";
// historique += "";
// r_print_r_baps(theObj[p], historique);
// historique += "
";
// }
// else historique += "[" + p + "] => " + theObj[p] + "";
}
historique += "";
}
function afficher_infobulle_presse(article)
{
getId('infobulle_' + article).style.display = 'block';
getId('titre_defaut').style.display = 'none';
getId('img_defaut').style.display = 'none';
}
function cacher_infobulle_presse(article)
{
getId('infobulle_' + article).style.display = 'none';
getId('titre_defaut').style.display = 'block';
getId('img_defaut').style.display = 'block';
}
/** fonction de sauvegarde d'event et de desactivation de bouton pour évtier double validation AJAX (calcul du prix, compte client etc.) **/
function save_onclick(id)
{
var onclick = getId(id).onclick;
return onclick;
}
/** sauvegarde le style d'un élément **/
function save_style_color(id)
{
var style_color = getId(id).style.color;
return style_color;
}
/** Desactivation d'un bouton de validation pour eviter les doubles validation AJAX **/
function desactiver_bouton(id, color)
{
var onclick = save_onclick(id);
var style_color = save_style_color(id);
var save_button = new Array(onclick,style_color);
getId(id).onclick = function() { void(0); }
getId(id).style.color = color; //permet de visualiser que la désactivation est effective
return save_button;
}
/** Réactivation du bouton valider seulement si la requête à aboutie **/
function reactiver_bouton(id, save_button)
{
getId(id).onclick = save_button[0];
getId(id).style.color = save_button[1];
}
/** Remplit le nom **/
function remplirNom(texte, type)
{
var nom, prenom, civilite;
if (type == 'n')
{
nom = texte;
getId('nom_cache').value = nom;
getId('adulte_1_nom').value = getId('nom_cache').value;
}
else if (type == 'p')
{
prenom = texte;
getId('prenom_cache').value = prenom;
getId('adulte_1_prenom').value = getId('prenom_cache').value;
}
else if (type == 'c')
{
civilite = texte;
getId('civilite_cache').value = civilite;
getId('adulte_1_civilite').value = getId('civilite_cache').value;
}
}
/** supprimer les espaces en début et fin de chaine **/
function trim(myString)
{
return myString.replace(/^\s+/g, '').replace(/\s+$/g, '');
}
/** Adapte la taille de la zone de liste résidence (page spa) **/
function ajusterZone()
{
getId('opaque').style.height = getId('contenu_residence').offsetHeight + 'px';
}
/** Adapte la taille de la zone de liste résidence (page aquaroma) **/
function ajusterZonesAquaroma()
{
// getId('fond_transparent_1').style.height = getId('contenu_1').offsetHeight + 'px';
// getId('fond_transparent_2').style.height = getId('contenu_2').offsetHeight + 'px';
// getId('fond_transparent_3').style.height = getId('contenu_3').offsetHeight + 'px';
getId('fond_transparent_4').style.height = getId('contenu_4').offsetHeight + 'px';
getId('fond_transparent_5').style.height = getId('contenu_5').offsetHeight + 'px';
}
/** Gère le nombre de participants. Si le nombre est trop élevé( ici 20 ), un message d'erreur est affiché. Sinon si le nombre d'enfants à changer alors on créé les blocs **/
function changeNbEnfants()
{
var listeNbEnfants = getId('nb_enfants');
var listeNbAdultes = getId('nb_adultes');
var optionsListeEnfants = listeNbEnfants.getElementsByTagName('option');
var nbEnfantsSelected = parseFloat(listeNbEnfants.value);
var resteParticipants = 20 - parseFloat(listeNbAdultes.value);
if( resteParticipants <= 0)
{
listeNbEnfants.value = 0;
listeNbEnfants.disabled = true;
}
else
{
if(listeNbEnfants.disabled == true)
{
listeNbEnfants.disabled = false;
}
var i = optionsListeEnfants.length - 1 ;
while ( i > resteParticipants)
{
listeNbEnfants.removeChild(optionsListeEnfants[i]);
i--;
}
if( (optionsListeEnfants.length - 2) < resteParticipants)
{
// alert(" Il y a moins d'options que d'enfants possible !");
var nbEnfants = range( optionsListeEnfants.length - 1, resteParticipants + 1);
for(var id = optionsListeEnfants.length - 1; id < resteParticipants + 1; id++)
{
// alert("Valeur de l'id dans la boucle " + id + " & Valeur du tableau : " + nbEnfants[id]);
addOption(listeNbEnfants,nbEnfants[id],nbEnfants[id]);
}
}
if( nbEnfantsSelected > resteParticipants )
{
optionsListeEnfants[resteParticipants+1].selected = 'selected';
}
}
}
function range(/*[start,] stop[, step]*/)
{
if (!arguments.length)
{
return [];
}
var min, max, step;
if (arguments.length == 1)
{
min = 0;
max = arguments[0]-1;
step = 1;
}
else
{
/* Step par défaut mis à 1 si non précisé */
min = arguments[0];
max = arguments[1]-1;
step = arguments[2] || 1;
}
/* Transforme les pas négatifs en pas positifs en changeant l'ordre du tableau */
if (step < 0 && min >= max)
{
step *= -1;
var tmp = min;
min = max;
max = tmp;
min += ((max-min) % step);
}
var a = [];
for (var i = min; i <= max; i += step)
{
a[i] = i;
}
return a;
}
/** Ajoute des options à un select **/
function addOption(/*selectbox,text,value[, selected ]*/)
{
var selectbox = arguments[0];
var text = arguments[1];
var value = arguments[2];
var optn = document.createElement("option");
optn.text = text;
optn.value = value;
if(arguments[3]) optn.setAttribute('selected','selected');
selectbox.options.add(optn);
}
/** Fonctions AJAX **/
/** crée l'objet de requete AJAX **/
function createRequestObject()
{
var xhr;
if(window.XMLHttpRequest) xhr = new XMLHttpRequest(); // Mozilla, Safari, et autres vrais browsers... :)
else if(window.ActiveXObject) xhr = new ActiveXObject("Microsoft.XMLHTTP"); // Internet Explozer :(
return xhr;
}
/** syntaxe foreach en JS (Afin d'aviter la concatenation du code source de la fonction dans la variable data, il faut créer un objet et non un array) **/
/* for (var cle in tab_rubriques)
{
// alert(name);
// alert(tab_rubriques[name]);
data += "&"+cle+"="+tab_rubriques[cle];
} */
/** non utilisée - récupere les actions sur les divers évenements (onclick, href...) d'un élément **/
function backup_action(e)
{
// alert('hop');
if(!e) var elem = window.event.srcElement;
else var elem = e.target;
// alert(getId('init_marche_ok').innerHTML);
// alert('firstChild.nodeName : ' + div_init.firstChild.nodeName + "\n" + 'firstChild.nodeValue : ' + div_init.firstChild.nodeValue);
var div_init = getId('init_marche_ok').firstChild;
var init_marche_ok = parseInt(div_init.nodeValue);
if(getId('init_marche').style.display == 'block' && init_marche_ok != 1)
{
// alert('nodeName : ' + elem.parentNode.nodeName + "\nid : " + elem.parentNode.id + "\nclassName : " + elem.parentNode.className + "\n\nnodeName : " + elem.parentNode.parentNode.nodeName + "\nid : " + elem.parentNode.parentNode.id + "\nclassName : " + elem.parentNode.className);
if(elem.onclick)
{
// alert('backup_action : ' + elem.onclick);
bkpOnclick = elem.onclick;
elem.onclick = void(0);
// alert('backup_action : ' + elem.onclick);
}
else delete bkpOnclick;
if(elem.href)
{
// alert('backup_action : ' + elem.href);
bkpHref = elem.href;
elem.href = 'javascript: void(0);';
// alert('backup_action : ' + elem.href);
}
else delete bkpHref;
if(elem.onmouseup)
{
// alert('backup_action : ' + elem.onmouseup);
bkpOnmouseup = elem.onmouseup;
elem.onmouseup = void(0);
// alert('backup_action : ' + elem.onmouseup);
}
else delete bkpOnmouseup;
if(elem.onmousedown)
{
// alert('backup_action : ' + elem.onmousedown);
bkpOnmousedown = elem.onmousedown;
elem.onmousedown = void(0);
// alert('backup_action : ' + elem.onmousedown);
}
else delete bkpOnmousedown;
}
}
/** non utilisée - restore les actions sur les divers évenements (onclick, href...) d'un élément **/
function restore_action(e)
{
if(!e) var elem = window.event.srcElement;
else var elem = e.target;
if(getId('init_marche').style.display == 'block' && init_marche_ok != 1)
{
if(typeof bkpOnclick != "undefined")
{
elem.onclick = bkpOnclick;
delete bkpOnclick;
}
if(typeof bkpHref != "undefined")
{
elem.href = bkpHref;
delete bkpHref;
}
if(typeof bkpOnmouseup != "undefined")
{
elem.onmouseup = bkpOnmouseup;
delete bkpOnmouseup;
}
if(typeof bkpOnmousedown != "undefined")
{
elem.onmousedown = bkpOnmousedown;
delete bkpOnmousedown;
}
}
}
/** controle si on a déja choisi son marché et le cas échéant affiche la fenetre de choix des marché. **/
function verif_init_marche(elem)
{
var retour = true;
var div_init = getId('init_marche_ok').firstChild;
var init_marche_ok = parseInt(div_init.nodeValue);
// alert('init_marche_ok : ' + init_marche_ok);
if(init_marche_ok == 0)
{
var xhr_init_marche = createRequestObject();
xhr_init_marche.open("POST", "site/includes/ajax_verif_init_marche.php", false); // AJAX Synchrone
xhr_init_marche.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr_init_marche.send(null);
var docXML = xhr_init_marche.responseXML; //Objet permettant de gérer le xml généré dans le script PHP
var init_marche_xml = docXML.getElementsByTagName("init_marche");
init_marche_ok = parseInt(init_marche_xml[0].firstChild.nodeValue);
getId('init_marche_ok').innerHTML = init_marche_ok;
// alert('init_marche_ok : ' + init_marche_ok);
if(init_marche_ok != 1)
{
if(typeof elem != "undefined")
{
var chaine;
// alert('elem onclick : ' + elem.onclick + "\n" + 'typeof elem onclick : ' + typeof elem.onclick);
if(typeof elem.onclick != "undefined" && elem.onclick != null)
{
// alert('pas jquery');
chaine = elem.onclick.toString();
}
else
{
// alert('jquery');
jQuery.each($('#' + elem.id).data('events').click, function(key, handlerObj) {
if(key == 0) chaine = handlerObj.handler.toString();
});
}
var onclick_elem = chaine.slice(chaine.indexOf('{') + 1, chaine.lastIndexOf('}'));
var regQuote = new RegExp('(")', 'g'); // on déclare l'expression réguliere qui va chercher tous les " (le g signifie que l'on cherche toutes les occurences)
var regLine = new RegExp('(\r\n|\r|\n|\t)', 'g'); // on déclare l'expression réguliere qui va chercher tous les retours à la ligne
var regSpace = new RegExp('( )', 'g'); // on déclare l'expression réguliere qui va chercher tous les espaces
var action = onclick_elem.replace(regQuote, '\'').replace(regLine, '').replace(regSpace, ''); // on se sert des expressions régulieres déclarées au dessus afin de nettoyer la chaine
if(action.indexOf('javascript:') != -1) action = trim(action.replace('javascript:', ''));
var data = "onclick=" + action;
// alert(chaine);
// alert(action);
// alert(data);
}
retour = false;
var xhr_init_marche_bis = createRequestObject();
xhr_init_marche_bis.onreadystatechange = function()
{
if(xhr_init_marche_bis.readyState == 4)
{
if(xhr_init_marche_bis.status == 200)
{
opacityOn();
getId('ajax_init_marche').style.display = 'block';
getId('ajax_init_marche').innerHTML = xhr_init_marche_bis.responseText;
// alert(xhr_init_marche_bis.responseText);
getId('init_marche_ok').innerHTML = 1;
}
else alert(xhr_init_marche_bis.status + " " + xhr_init_marche_bis.statusText);
}
};
xhr_init_marche_bis.open("POST", "site/includes/ajax_init_marche.php", true);
xhr_init_marche_bis.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
if(typeof data != "undefined") xhr_init_marche_bis.send(data);
else xhr_init_marche_bis.send(null);
}
}
return retour;
}
/** fonction pour éviter les plantages lorsque on ne veux pas utiliser init_marche **/
/* function verif_init_marche(elem)
{
return true;
} */
/** Cette fonction prend en paramètre les données utiles à la PSK de calcul du prix (et d'acompte), execute la PSK, rempli le récapitulatif et affiche le prix à côté du logement visé. **/
function verif_login(email, password)
{
//affichage du bloc de loading
getId('loading_login').innerHTML = getId('cadre_temporaire_login').innerHTML;
getId('loading_login').style.display = 'block';
getId('loading_login').style.visibility = 'visible';
//Desactivation du bouton recalculer pour eviter les doubles validation
getId('submitButton_verif_login').disabled = true;
var xhr_verif_login = createRequestObject();
xhr_verif_login.open("POST","site/includes/vacanciers/ajax_login_client.php", true);
xhr_verif_login.onreadystatechange = function()
{
if(xhr_verif_login.readyState == 4) // la réponse est arrivée
{
if(xhr_verif_login.status == 200) // code html qui défini que la requête est OK , prêt à afficher
{
//on injecte le recap dans le bloc prévu à cet effet
getId('loading_login').innerHTML = xhr_verif_login.responseText;
getId('cadre_temporaire_login').style.display = 'none'; //Contient le cadre temporaire du loading (recapitualtif_prix.tpl)
getId('cadre_temporaire_login').style.visibility = 'hidden';
getId('login_code_retour').style.display = 'none';
getId('login_code_retour').style.visibility = 'hidden';
//Réactivation du bouton valider seulement si la requête à aboutie
getId('submitButton_verif_login').disabled = false;
if(getId('login_code_retour').innerHTML == 1)
{
window.location.replace("vacances-location-sejour-mer-montagne-campagne,vacanciers-compte.html");
}
}
else
{
xhr_verif_login.abort();
}
}
}
xhr_verif_login.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // on envoi le header avec la requete
//envoi des données au php
var data = "email="+email;
data += "&password="+password;
//alert(data);
xhr_verif_login.send(data); // on envoi des paramètres au serveur , si on en envoi pas il faut mettre "null"
}
/** Cette fonction prend en paramètre le mail d'un client et lui envoi son mot de passe **/
function envoi_mail_oublie(email)
{
//Affichages de control
//alert(email);
//affichage du bloc de loading
getId('loading_login_mdp').innerHTML = getId('cadre_temporaire_login').innerHTML;
getId('loading_login_mdp').style.display = 'block';
getId('loading_login_mdp').style.visibility = 'visible';
//Desactivation du bouton recalculer pour eviter les doubles validation
getId('submitButton_mdp_oublie').disabled = true;
/* getId('lien_valider_login_mdp').onclick = function() { void(0); }
//getId('lien_valider_login_mdp').removeAttribute("onclick");
getId('lien_valider_login_mdp').style.color = '#000000'; //permet de voir que la désactivation est effective
*/
var xhr_mdp_oublie = createRequestObject();
xhr_mdp_oublie.open("POST","site/includes/vacanciers/ajax_mdp_oublie.php",true);
xhr_mdp_oublie.onreadystatechange = function()
{
if(xhr_mdp_oublie.readyState == 4) // la réponse est arrivée
{
if(xhr_mdp_oublie.status == 200) // code html qui défini que la requête est OK , prêt à afficher
{
//alert('status 200 OK');
//alert(xhr_mdp_oublie.responseText);
//on injecte le recap dans le bloc prévu à cet effet
getId('loading_login_mdp').innerHTML = xhr_mdp_oublie.responseText;
getId('cadre_temporaire_login_mdp').style.display = 'none'; //Contient le cadre temporaire du loading (recapitualtif_prix.tpl)
getId('cadre_temporaire_login_mdp').style.visibility = 'hidden';
//Réactivation du bouton submit
getId('submitButton_mdp_oublie').disabled = false;
}
else
{
xhr_mdp_oublie.abort();
}
}
}
xhr_mdp_oublie.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // on envoi le header avec la requete
//envoi des données au php
var data = "email="+email;
//alert(data);
xhr_mdp_oublie.send(data); // on envoi des paramètres au serveur , si on en envoi pas il faut mettre "null"
}
/** fonction pour se déconnecter de l'espace client **/
/* function deconnexion()
{
//affichage du bloc de loading
getId('loading_login_resa').innerHTML = getId('cadre_temporaire_login_resa').innerHTML;
//Desactivation du bouton valider pour eviter les doubles validation
var save_button = desactiver_bouton('deconnexion_compte','#000000');
// var save_onclick = getId('deconnexion_compte').onclick;
// getId('deconnexion_compte').onclick = function() { void(0); }
// var save_style = getId('deconnexion_compte').style.color;
// getId('deconnexion_compte').style.color= '#000000'; //permet de voir que la désactivation est effective
var xhr_deconnexion = createRequestObject();
xhr_deconnexion.open("POST", "site/includes/vacanciers/ajax_deconnexion.php", true);
xhr_deconnexion.onreadystatechange = function()
{
if(xhr_deconnexion.readyState == 4) // la réponse est arrivée
{
if(xhr_deconnexion.status == 200) // code html qui défini que la requête est OK , prêt à afficher
{
var docXML = xhr_deconnexion.responseXML; //Objet permettant de gérer l'xml généré dans le script PHP
var deco_header = docXML.getElementsByTagName("deco_header");
var deco_login = docXML.getElementsByTagName("deco_login");
var deco_formulaire = docXML.getElementsByTagName("deco_formulaire");
getId('logged_or_not').innerHTML = deco_header[0].firstChild.nodeValue;
getId('login_resa').innerHTML = deco_login[0].firstChild.nodeValue;
getId('login_resa').className = 'deconnecte';
getId('formulaire_login_resa').innerHTML = deco_formulaire[0].firstChild.nodeValue;
getId('civilite_mr').checked = true;
getId('adulte_1_nom').value = '';
getId('adulte_1_prenom').value = '';
remplirNom(getId('civilite_mr').value, 'c');
// Afficher le bouton verifier mail
getId('bouton_verif_mail').className = 'montre';
getId('verif_mail_reponse').className = 'montre';
}
else xhr_deconnexion.abort();
}
}
xhr_deconnexion.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // on envoi le header avec la requete
//envoi des données au php
// var data = "email="+email;
// data += "&password="+password;
//alert(data);
// xhr_deconnexion.send(data); // on envoi des paramètres au serveur , si on en envoi pas il faut mettre "null"
xhr_deconnexion.send(null); // on envoi des paramètres au serveur , si on en envoi pas il faut mettre "null"
} */
/** fonction pour se désabonner de la newsletter **/
function desabo()
{
//affichage du bloc de loading
// getId('cadre_form_desabo').innerHTML = getId('cadre_temporaire_login_resa').innerHTML;
//Desactivation du bouton valider pour eviter les doubles validation
// var save_button = desactiver_bouton('desabo_compte','#000000');
/*
var save_onclick = getId('desabo_compte').onclick;
getId('desabo_compte').onclick = function() { void(0); }
var save_style = getId('desabo_compte').style.color;
getId('desabo_compte').style.color= '#000000'; //permet de voir que la désactivation est effective
*/
var xhr_desabo = createRequestObject();
xhr_desabo.open("POST", "site/includes/contactez_nous/ajax_desabo.php", true);
xhr_desabo.onreadystatechange = function()
{
if(xhr_desabo.readyState == 4) // la réponse est arrivée
{
if(xhr_desabo.status == 200) // code html qui défini que la requête est OK , prêt à afficher
{
var docXML = xhr_desabo.responseXML; //Objet permettant de gérer l'xml généré dans le script PHP
var retour = docXML.getElementsByTagName("retour");
getId('cadre_form_desabo').innerHTML = retour[0].firstChild.nodeValue;
// unLoading();
}
else xhr_desabo.abort();
}
}
xhr_desabo.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // on envoi le header avec la requete
// envoi des données au php
var captcha = getId('captcha_desabo').value;
var email = getId('email_desabo').value;
var typeNews = getId('typeNews').value;
var data = "captcha_desabo=" + captcha + "&email_desabo=" + email + "&typeNews=" + typeNews;
// data += "&password="+password;
formDesaboLoading();
// alert(data);
xhr_desabo.send(data); // on envoi des paramètres au serveur , si on en envoi pas il faut mettre "null"
// xhr_desabo.send(null); // on envoi des paramètres au serveur , si on en envoi pas il faut mettre "null"
}
/** fonction pour changer la langue en session **/
function changer_langue(langue)
{
loading();
var data = 'langue=' + langue;
var url = document.location.toString();
var onglet = url.substr(url.indexOf('#', 0)+1);
if(in_array(onglet, ['residence', 'station', 'domaine', 'region', 'pays'])) data += '&onglet=' + onglet; // Dans le cas ou on est dans les pages de descriptifs
// alert(url);
var xhr_langue = createRequestObject();
xhr_langue.onreadystatechange = function ()
{
if(xhr_langue.readyState == 4)
{
if (xhr_langue.status == 200)
{
window.location.reload();
}
else alert("Error: returned status code " + xhr_langue.status + " " + xhr_langue.statusText);
}
};
xhr_langue.open("POST", "site/includes/ajax_changer_langue.php", true);
xhr_langue.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr_langue.send(data);
}
/** fonction pour changer le marche en session **/
function changer_marche(marche, pays)
{
loading();
var data = 'marche=' + marche;
var url = document.location.toString();
var onglet = url.substr(url.indexOf('#', 0)+1);
if(in_array(onglet, ['residence', 'station', 'domaine', 'region', 'pays'])) data += '&onglet=' + onglet; // Dans le cas ou on est dans les pages de descriptifs
// alert(url);
var xhr_marche = createRequestObject();
xhr_marche.onreadystatechange = function ()
{
if(xhr_marche.readyState == 4)
{
if (xhr_marche.status == 200)
{
changer_pays_client(pays);
window.location.reload();
}
else alert("Error: returned status code " + xhr_marche.status + " " + xhr_marche.statusText);
}
};
xhr_marche.open("POST", "site/includes/ajax_changer_marche.php", true);
xhr_marche.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr_marche.send(data);
}
/** fonction pour changer le pays client **/
function changer_pays_client(pays)
{
var data = 'pays_client=' + pays;
var xhr_pays = createRequestObject();
xhr_pays.open("POST", "site/includes/ajax_changer_pays_client.php", true);
xhr_pays.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr_pays.send(data);
}
/** Fonction renvoyant le numero de la semaine en fonction d'une date as400 **/
function calculNumSemaine(date)
{
return $.datepicker.iso8601Week(new Date(date.substr(0,4), date.substr(4,2) - 1, date.substr(6,2)));
}
// function getDateFromWeek(numeroSemaine,dayOffset)
// {
// dayOffset = (typeof(dayOffset) == 'int') ? dayOffset : 0;
// var date = new Date();
// numOfdaysPastSinceLastMonday = eval(date.getDay()- dayOffset);
// date.setDate(date.getDate() - numOfdaysPastSinceLastMonday);
// var weekNoToday = date.getWeek();
// var weeksInTheFuture = eval( weekNo - weekNoToday );
// date.setDate(date.getDate() + eval( 7 * weeksInTheFuture ));
// return date.getDate();
// }
/** Fonction renvoyant le numero du jour en fonction d'une date as400 (lundi = 1, samedi = 6) **/
function calculNumJour(date)
{
return (new Date(date.substr(0,4), date.substr(4,2) - 1, date.substr(6,2))).getDay();
}
/** Fonction renvoyant le nombre de jours séparant 2 dates en fonction du format dans lequel elles sont entrées (as400, dd/mm/yyyy, mm/dd/yyyy, ..., etc) **/
function calculNbJours(dateDebut, dateFin, formatDatesEntrees)
{
switch(formatDatesEntrees)
{
case 'dd/mm/yy':
var d1 = new Date(dateDebut.substr(6,4), dateDebut.substr(3,2) - 1, dateDebut.substr(0,2));
var d2 = new Date(dateFin.substr(6,4), dateFin.substr(3,2) - 1, dateFin.substr(0,2));
break;
case 'mm/dd/yy':
var d1 = new Date(dateDebut.substr(6,4), dateDebut.substr(0,2) - 1, dateDebut.substr(3,2));
var d2 = new Date(dateFin.substr(6,4), dateFin.substr(0,2) - 1, dateFin.substr(3,2));
break;
default: // As400
var d1 = new Date(dateDebut.substr(0,4), dateDebut.substr(4,2) - 1, dateDebut.substr(6,2));
var d2 = new Date(dateFin.substr(0,4), dateFin.substr(4,2) - 1, dateFin.substr(6,2));
break;
}
var WNbJours = d2.getTime() - d1.getTime();
return Math.ceil(WNbJours/(1000*60*60*24));
}
function htmlentities (string, quote_style, charset, double_encode)
{
// Convert all applicable characters to HTML entities
//
// version: 1109.2015
// discuss at: http://phpjs.org/functions/htmlentities
// + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + improved by: nobbler
// + tweaked by: Jack
// + bugfixed by: Onno Marsman
// + revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + bugfixed by: Brett Zamir (http://brett-zamir.me)
// + input by: Ratheous
// + improved by: Rafal Kukawski (http://blog.kukawski.pl)
// + improved by: Dj (http://phpjs.org/functions/htmlentities:425#comment_134018)
// - depends on: get_html_translation_table
// * example 1: htmlentities('Kevin & van Zonneveld');
// * returns 1: 'Kevin & van Zonneveld'
// * example 2: htmlentities("foo'bar","ENT_QUOTES");
// * returns 2: 'foo'bar'
var hash_map = this.get_html_translation_table('HTML_ENTITIES', quote_style),
symbol = '';
string = string == null ? '' : string + '';
if(hash_map.hasOwnProperty(string) === true)
{
if (!hash_map) {
return false;
}
if (quote_style && quote_style === 'ENT_QUOTES')
{
hash_map["'"] = ''';
}
if (!!double_encode || double_encode == null)
{
for (symbol in hash_map)
{
if (hash_map.hasOwnProperty(symbol))
{
string = string.split(symbol).join(hash_map[symbol]);
}
}
}
else
{
string = string.replace(
/([\s\S]*?)(&(?:#\d+|#x[\da-f]+|[a-zA-Z][\da-z]*);|$)/g,
function (ignore, text, entity)
{
for (symbol in hash_map)
{
if (hash_map.hasOwnProperty(symbol))
{
text = text.split(symbol).join(hash_map[symbol]);
}
}
return text + entity;
}
);
}
}
return string;
}
function get_html_translation_table (table, quote_style) {
// http://kevin.vanzonneveld.net
// + original by: Philip Peterson
// + revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + bugfixed by: noname
// + bugfixed by: Alex
// + bugfixed by: Marco
// + bugfixed by: madipta
// + improved by: KELAN
// + improved by: Brett Zamir (http://brett-zamir.me)
// + bugfixed by: Brett Zamir (http://brett-zamir.me)
// + input by: Frank Forte
// + bugfixed by: T.Wild
// + input by: Ratheous
// % note: It has been decided that we're not going to add global
// % note: dependencies to php.js, meaning the constants are not
// % note: real constants, but strings instead. Integers are also supported if someone
// % note: chooses to create the constants themselves.
// * example 1: get_html_translation_table('HTML_SPECIALCHARS');
// * returns 1: {'"': '"', '&': '&', '<': '<', '>': '>'}
var entities = {},
hash_map = {},
decimal;
var constMappingTable = {},
constMappingQuoteStyle = {};
var useTable = {},
useQuoteStyle = {};
// Translate arguments
constMappingTable[0] = 'HTML_SPECIALCHARS';
constMappingTable[1] = 'HTML_ENTITIES';
constMappingQuoteStyle[0] = 'ENT_NOQUOTES';
constMappingQuoteStyle[2] = 'ENT_COMPAT';
constMappingQuoteStyle[3] = 'ENT_QUOTES';
useTable = !isNaN(table) ? constMappingTable[table] : table ? table.toUpperCase() : 'HTML_SPECIALCHARS';
useQuoteStyle = !isNaN(quote_style) ? constMappingQuoteStyle[quote_style] : quote_style ? quote_style.toUpperCase() : 'ENT_COMPAT';
if (useTable !== 'HTML_SPECIALCHARS' && useTable !== 'HTML_ENTITIES')
{
throw new Error("Table: " + useTable + ' not supported');
// return false;
}
entities['38'] = '&';
if (useTable === 'HTML_ENTITIES') {
entities['160'] = ' ';
entities['161'] = '¡';
entities['162'] = '¢';
entities['163'] = '£';
entities['164'] = '¤';
entities['165'] = '¥';
entities['166'] = '¦';
entities['167'] = '§';
entities['168'] = '¨';
entities['169'] = '©';
entities['170'] = 'ª';
entities['171'] = '«';
entities['172'] = '¬';
entities['173'] = '';
entities['174'] = '®';
entities['175'] = '¯';
entities['176'] = '°';
entities['177'] = '±';
entities['178'] = '²';
entities['179'] = '³';
entities['180'] = '´';
entities['181'] = 'µ';
entities['182'] = '¶';
entities['183'] = '·';
entities['184'] = '¸';
entities['185'] = '¹';
entities['186'] = 'º';
entities['187'] = '»';
entities['188'] = '¼';
entities['189'] = '½';
entities['190'] = '¾';
entities['191'] = '¿';
entities['192'] = 'À';
entities['193'] = 'Á';
entities['194'] = 'Â';
entities['195'] = 'Ã';
entities['196'] = 'Ä';
entities['197'] = 'Å';
entities['198'] = 'Æ';
entities['199'] = 'Ç';
entities['200'] = 'È';
entities['201'] = 'É';
entities['202'] = 'Ê';
entities['203'] = 'Ë';
entities['204'] = 'Ì';
entities['205'] = 'Í';
entities['206'] = 'Î';
entities['207'] = 'Ï';
entities['208'] = 'Ð';
entities['209'] = 'Ñ';
entities['210'] = 'Ò';
entities['211'] = 'Ó';
entities['212'] = 'Ô';
entities['213'] = 'Õ';
entities['214'] = 'Ö';
entities['215'] = '×';
entities['216'] = 'Ø';
entities['217'] = 'Ù';
entities['218'] = 'Ú';
entities['219'] = 'Û';
entities['220'] = 'Ü';
entities['221'] = 'Ý';
entities['222'] = 'Þ';
entities['223'] = 'ß';
entities['224'] = 'à';
entities['225'] = 'á';
entities['226'] = 'â';
entities['227'] = 'ã';
entities['228'] = 'ä';
entities['229'] = 'å';
entities['230'] = 'æ';
entities['231'] = 'ç';
entities['232'] = 'è';
entities['233'] = 'é';
entities['234'] = 'ê';
entities['235'] = 'ë';
entities['236'] = 'ì';
entities['237'] = 'í';
entities['238'] = 'î';
entities['239'] = 'ï';
entities['240'] = 'ð';
entities['241'] = 'ñ';
entities['242'] = 'ò';
entities['243'] = 'ó';
entities['244'] = 'ô';
entities['245'] = 'õ';
entities['246'] = 'ö';
entities['247'] = '÷';
entities['248'] = 'ø';
entities['249'] = 'ù';
entities['250'] = 'ú';
entities['251'] = 'û';
entities['252'] = 'ü';
entities['253'] = 'ý';
entities['254'] = 'þ';
entities['255'] = 'ÿ';
}
if (useQuoteStyle !== 'ENT_NOQUOTES')
{
entities['34'] = '"';
}
if (useQuoteStyle === 'ENT_QUOTES')
{
entities['39'] = ''';
}
entities['60'] = '<';
entities['62'] = '>';
// ascii decimals to real symbols
for (decimal in entities)
{
if (entities.hasOwnProperty(decimal))
{
hash_map[String.fromCharCode(decimal)] = entities[decimal];
}
}
return hash_map;
}