/** 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 = 'loading...'; } /** 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(""); } 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 += ""; // } // 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; }