1<!doctype html> 2<html lang="fr"> 3 <head> 4 <meta charset="utf-8"> 5 <title></title> 6 <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" /> 7 <meta name="author" content="Alfred Sevestre" /> 8 <meta name="description" content="" /> 9 <link href="/css/slick.css" media="screen" rel="stylesheet" type="text/css" /> 10 <link href="/css/toastr.min.css" media="screen" rel="stylesheet" type="text/css" /> 11 <link href="/css/styles.css" media="screen" rel="stylesheet" type="text/css" /> 12 <link href="/css/styles-complementary.css" media="screen" rel="stylesheet" type="text/css" /> 13 <link href="/css/new_mi.css" media="screen" rel="stylesheet" type="text/css" /> 14 <link href="/css/new_activites.css" media="screen" rel="stylesheet" type="text/css" /> 15 <link href="/css/new_tarifs.css" media="screen" rel="stylesheet" type="text/css" /> 16 <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/[email protected]/slick/slick.css"> 17 <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/[email protected]/slick/slick-theme.css"> 18 <link rel='stylesheet' href='https://cdn-uicons.flaticon.com/2.6.0/uicons-brands/css/uicons-brands.css'> 19 <link rel='stylesheet' href='https://cdn-uicons.flaticon.com/2.6.0/uicons-regular-rounded/css/uicons-regular-rounded.css'> 20 <link rel='stylesheet' href='https://cdn-uicons.flaticon.com/2.6.0/uicons-regular-straight/css/uicons-regular-straight.css'> 21 <link rel='stylesheet' href='https://cdn-uicons.flaticon.com/3.0.0/uicons-solid-straight/css/uicons-solid-straight.css'> 22 <link rel="icon" href="https://moncentreaquatique.com/logos/1043755381.png" /> 23 <link href='/css/espace-perso.css' media='screen' rel='stylesheet' type='text/css' /> 24 25 <!-- GTM dataLayer init --> 26
26<script>window.dataLayer = window.dataLayer || [];</script>
26 27 28 <!-- GTM Container (code centre) --> 29 <!-- Google Tag Manager -->
30<script>
vendor: 331 bytes, lines 30-34
30(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 31new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 32j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 33'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 34})(window,document,'script','dataLayer','
34GTM-TDVR5ZS4
vendor: 3 bytes, line 34
34');
34</script>
34 35<!-- End Google Tag Manager --> 36<!-- Google Tag Manager (noscript) -->
vendor: 69 bytes, lines 36-37
36 37<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
37GTM-TDVR5ZS4
vendor: 85 bytes, lines 37-38
37" 38height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
39<!-- End Google Tag Manager (noscript) --> 40 <meta property='og:locale' content='fr_FR' /> 41 <meta property='og:type' content='article' /> 42 <meta property='og:title' content="" /> 43 <meta property='og:description' content="" /> 44 <meta property='og:url' content='http://alfredsevestre.fr/espace-perso/connexion' /> 45 <meta property='og:site_name' content='Alfred Sevestre' /> 46 <meta property='og:image' content='https://moncentreaquatique.com/logos/1043755381.png' /> 47 <meta property='og:image:secure_url' content='https://moncentreaquatique.com/logos/1043755381.png' /> 48 <meta name='twitter:card' content='summary_large_image' /> 49 <meta name='twitter:description' content='' /> 50 <meta name='twitter:title' content='' /> 51 <meta name='twitter:image' content='https://moncentreaquatique.com/logos/1043755381.png' /> 52 53 <style> 54 :root { 55 --RECREA_COLOR_PRIMARY: #6aabcf; 56 --RECREA_COLOR_SECONDARY: #244564; 57 } 58 </style> 59 60
60<script src="/js/filtre_type_activite.js" defer></script>
60 61 62 </head> 63 <body> 64 <div id='container'> 65 <div id='content'> 66 67 <style type="text/css"> 68 body .contentsquare-content.color-true .plus{ 69 background: linear-gradient(0deg, rgba(106,171,207,1) 0%, rgba(106,171,207,0.75) 75%, transparent 100%); 70 } 71 body .contentsquare-content.color2-true .plus{ 72 background: linear-gradient(0deg, rgba(36,69,100,1) 0%, rgba(36,69,100,0.75) 75%, transparent 100%); 73 } 74 body #menu .menu-content nav a.btn-custom-color span:hover { 75 /* color:#6cabd0 !important; */ 76 background: #ffffff !important; 77 } 78</style> 79<div id="container-menu"> 80 <section id="overmenu"> 81 <div class="content"> 82 <div class="marquee_container"> 83 <a href='/horaires.html' class="marquee_link"> 84 <p class='marquee_content'><strong>Bassin 25m</strong> : <span style='color:#ffffff;'>11:30 - 13:30 et 17:00 - 22:00</span> | <strong>Hammam</strong> : <span style='color:#ffffff;'>11:30 - 13:30 et 17:00 - 22:00</span> | <strong>Bassin ludique</strong> : <span style='color:#ffffff;'>17:00 - 18:00</span> | <strong>Sauna</strong> : <span style='color:#ffffff;'>11:30 - 13:30 et 17:00 - 22:00</span></p> 85 </a> 86 </div> 87 </div> 88 89 <div class="connexion_inscription"> 90 <a class="se_connecter" href="/espace-perso/connexion">Se connecter</a> 91 <a class="s_inscrire" href="/espace-perso/devenir-membre">S'inscrire</a> 92 </div> 93 </section> 94 <section id="menu"> 95 <div class="menu-content"> 96 <a href="/" id="logo-site"> 97 <img src="https://moncentreaquatique.com/logos/1043755381.png" alt="Alfred Sevestre" title="Alfred Sevestre" /> 98 </a> 99 <div class="left-content"> 100 <a href="/cheques-cadeaux" class="button btn-cheque"><span>Plaisir d'offrir</span></a></li> 101 <div id="hamburger"> 102 <span></span> 103 <span></span> 104 <span></span> 105 <span></span> 106 </div> 107 </div> 108 <nav id="nav-menu"> 109 <ul id="list-menu"> 110 111 <li class="menu-dropdown"><div class='dropdown__header nav-title'><a href='/espaces.html' class='disabled-link_menu'>Le centre</a><i class="fi fi-ss-angle-small-down"></i></div><div class="dropdown"><ul class='dropdown__content'><li><a href="/espace-1197-aquatique.html">aquatique</a></li><li><a href="/espace-1198-detente.html">détente</a></li><li><a href="/espace-1222-exterieur.html">extérieur</a></li><li><a href="/espace-1200-forme.html">forme</a></li></ul></div></li><li class="menu-dropdown"><div class='dropdown__header nav-title'><a href='/offres.html' class='disabled-link_menu'>Nos offres</a><i class="fi fi-ss-angle-small-down"></i></div><div class="dropdown"><ul class='dropdown__content'><li><a href="/offre-1213886-offre-pro-cse.html">offre pro & cse</a></li></ul></div></li><li class='nav-title'><a href='/activites.html'>Activités</a></li><li class='nav-title'><a href='/actus.html'>Actus</a></li><li class="menu-dropdown"><div class='dropdown__header nav-title'><a href='/infos-pratiques.html'>Infos Pratiques</a><i class="fi fi-ss-angle-small-down"></i></div><div class="dropdown"><ul class='dropdown__content'><li><a href='/horaires.html'>Horaires</a></li><li><a href='/tarifs.html'>Abonnements & Tarifs</a></li><li><a href='/partenaires.html'>Nos Partenaires</a></li> <li><a href="/module-inscriptions/reserver/?planning">Plannings</a></li> 112 <li><a href='/contact.html'>Accès & Contact</a></li><li><a href="/infos-pratiques.html">Règles</a></li> 113 </ul></div></li><li class='nav-title'><a href="https://aquazena.fr/" class="btn btn-orange btn-custom-color" target="_blank"><span style="background: #6cabd0; border: 2px solid #6cabd0" onMouseOver="this.style.color='#6cabd0'" onMouseOut="this.style.color='#ffffff'">Piscine Aquazena</span></a></li><li class='nav-title'><a href=""></a></li><li id='btn_resa' class='nav-title'><a href="/module-inscriptions/" target="_self" class="btn-orange"><span>Réserver</span></a></li><li id='btn_cheque' class='nav-title'><a href="/cheques-cadeaux" class="btn-orange"><span>Chèques Cadeaux</span></a></li><li class='nav-title icons-rs'><a href="https://www.facebook.com/A.Sevestre.ISSY"><i class='fi fi-brands-facebook'></i></a></li> 114 <!-- <li><a href="cheques-cadeaux">Chèques Cadeaux</a></li> --> 115 <!-- 116 <li><a href="club.html">
116Club</a></li> 117 <li><a href="pro.html">Pro</a></li> 118 --> 119 <!-- <li><a href="" class="btn-orange"><span>Acheter</span></a></li> --> 120 </ul> 121 </nav> 122 </div> 123 </section> 124</div> 125 126<section id="tabbar"> 127 <!-- NEW TABBAR --> 128 <nav id="mobile_tabbar"> 129 <ul class="tabs"> 130 <li class="tab tab_01"> 131 <a href="/horaires.html"> 132 <svg class="tab_icons"><use href="/css/images/icons/icons.svg#icon_horaire"></svg> 133 <p>Horaires</p> 134 </a> 135 </li> 136 <li class="tab tab_02"> 137 <a href="/tarifs.html"> 138 <svg class="tab_icons"><use href="/css/images/icons/icons.svg#icon_tarif"></svg> 139 <p>Tarifs</p> 140 </a> 141 </li> 142 <li class="tab tab_03"> 143 <a href="/module-inscriptions/"> 144 <div class="tab_side tab_side_left"></div> 145 <div class="tab_main"> 146 <svg id="a" xmlns="http://www.w3.org/2000/svg" width="64" height="48" viewBox="0 0 64 48"> 147 <path d="M64,0v48H0V0h.3c1.9,0,3.4,1.3,3.9,3v1h0c2,13.6,13.6,24,27.7,24s25.8-10.4,27.7-24h0v-1c.4-1.7,2-3,3.9-3h.5Z" /> 148 </svg> 149 <span class="button_resa"> 150 <svg class="tab_icons"><use href="/css/images/icons/icons.svg#icon_plus"></svg> 151 </span> 152 <p>Réserver</p> 153 </div> 154 <div class="tab_side tab_side_right"></div> 155 </a> 156 </li> 157 <li class="tab tab_04"> 158 <a href="/activites.html"> 159 <svg class="tab_icons"><use href="/css/images/icons/icons.svg#icon_sparkles"></svg> 160 <p>Activités</p> 161 </a> 162 </li> 163 <li class="tab tab_05 active"> 164 <a href="/espace-perso"> 165 <svg class="tab_icons active"><use href="/css/images/icons/icons.svg#icon_user"></svg> 166 <p>Compte</p> 167 </a> 168 </li> 169 </ul> 170 </nav> 171</section> 172
173<script type="text/javascript" async> 174 const dropdownItems = document.querySelectorAll('.menu-dropdown'); 175 176 if (dropdownItems) { 177 dropdownItems.forEach((dropdown) => { 178 dropdown.addEventListener('click', (e) => toggleDropdown(e)); 179 }); 180 } 181 182 const toggleDropdown = (e) => { 183 let target = e.currentTarget; 184 185 if (!target.classList.contains('open')) { 186 dropdownItems.forEach((item) => { 187 item.classList.remove('open'); 188 }); 189 target.classList.add('open'); 190 } else { 191 target.classList.remove('open'); 192 } 193 }; 194 195 let marqueeContainer = document.querySelector(".marquee_container"); 196 let marqueeContent = document.querySelector(".marquee_content"); 197 198 let timeToFill; 199 let contentText; 200 201 if(marqueeContent){ 202 timeToFill = Math.floor(window.innerWidth / marqueeContent.offsetWidth); 203 contentText = marqueeContent.innerHTML; 204 } 205 206 for (let i = 0; i < timeToFill; i++) { 207 marqueeContent.innerHTML += contentText; 208 } 209 marqueeContainer.innerHTML += marqueeContainer.innerHTML; 210 211 Array.from(marqueeContainer.children).forEach((child) => { 212 let duration = child.getBoundingClientRect().width / 100; 213 child.style.animationDuration = `${duration}s`; 214 }); 215 216 // document.querySelector(".scroll2").style.animationDelay = `${animDuration / 2}s`; 217 // foreach (scroll as scroll) { 218 // scroll.style.animationDuration = `${scroll.getBoundingClientRect().width / 100}s`; 219 // } 220 221</script>
221<main id='inscription_container'> 222<section id='inscription' class='connexion_espace_perso'> 223<div id='div_visuel'> 224<a class='back_home' href="/"><svg class='icon_chevron' ><use href='/css/images/icons/icons.svg#icon_chevron'/></svg>Retour au site</a> 225<div> 226<h3>Vous n'avez pas encore de compte ?</h3> 227<a class='button' href='/espace-perso/devenir-membre'>Inscrivez-vous</a> 228</div> 229</div> 230<div id='div_formulaire'> 231<a id='logo-site' href='/'> <img src='https://moncentreaquatique.com/logos/1043755381.png' alt='Alfred Sevestre' title='Alfred Sevestre' /></a> 232<h3>Vous avez déjà un compte ? <br> Connectez-vous !</h3> 233<form id='formConnexion' class='connexion_form' method='post' action='/espace-perso/connexion/'> 234<input type='hidden' name='from_module_resa' value=''> 235<input type='hidden' name='periode' value='0'> 236<input type='hidden' name='creneau' value='0'> 237<div class='connexion_input connexion_input_mail'> 238<label for='email' class='label'>Adresse mail</label> 239<input required type='email' id='email' name='email' placeholder="Saisissez votre adresse mail " autocomplete='email' oninput='enableSubmit(this)' > 240</div> 241<div class='connexion_input connexion_input_mdp'> 242<label for='password' class='label password'>Mot de passe 243<div class='mdp_oublie' onclick="open_popup_pwd_lost();">Mot de passe oublié ?</div> </label> 244<div class='password_input'> 245<input required type='password' id='password' name='password' placeholder="Rentrez votre mot de passe" autocomplete='current-password' onfocus='capslock_alert(event)' onfocusout='document.getElementById('capslock_alert').style.visibility = 'hidden'' oninput='enableSubmit(this)' > 246<div class='preview_icon' onclick='togglePassword()'> 247<svg class='icon_oeil' ><use href='/css/images/icons/icons.svg#icon_oeil'></svg> 248<svg class='icon_oeil_barre' style='display:none;'><use href='/css/images/icons/icons.svg#icon_oeil_barre'></svg> 249</div> 250</div> 251<div id='capslock_alert'>La touche Ver Maj est active.</div> 252</div> 253<div class='connexion_input connexion_remember_me'> 254<label class='ep-toggle' for='remember_me'> 255<input type='checkbox' id='remember_me' name='remember_me' value='1'> 256<span class='ep-toggle__switch'></span> 257<span class='ep-toggle__label'>Se souvenir de moi (30j)</span> 258</label> 259</div> 260</form> 261<div class='valider_resa'> 262<input disabled id='btn_submit_connexion' class='btn_submit' form='formConnexion' type='submit' onclick='DisableMultiClic(this.id)' value='Connexion' > 263<div class='div_inscription_popup'> 264Vous n'avez pas de compte ? <a href='/espace-perso/devenir-membre/'>Je m'inscris</a> 265</div> 266</div> 267</div> 268</section> 269</main>
270<script> 271 272 // Cache pour stocker les boutons submit associés aux formulaires 273 const formButtonCache = new Map(); 274 275 // Debounce timers pour chaque formulaire 276 const debounceTimers = new Map(); 277 278 function enableSubmit(input = null, skipDebounce = false) { 279 let form; 280 281 if (input instanceof HTMLElement) { 282 form = input.closest('form'); 283 } else { 284 // Si pas d'input fourni, gérer tous les formulaires 285 document.querySelectorAll('form').forEach(form => enableSubmit(form, true)); 286 return; 287 } 288 289 if (!form) return; // Sécurité supplémentaire 290 291 // Debouncing intelligent : uniquement pour les événements input, pas au chargement 292 if (!skipDebounce && input instanceof HTMLElement) { 293 const formId = form.id || form.getAttribute('name') || 'form_' + Array.from(document.querySelectorAll('form')).indexOf(form); 294 295 // Annuler le timer précédent pour ce formulaire 296 if (debounceTimers.has(formId)) { 297 clearTimeout(debounceTimers.get(formId)); 298 } 299 300 // Créer un nouveau timer 301 const timerId = setTimeout(() => { 302 enableSubmit(form, true); 303 debounceTimers.delete(formId); 304 }, 50); 305 306 debounceTimers.set(formId, timerId); 307 return; 308 } 309 310 const inputs = form.querySelectorAll('[required]'); 311 312 // Utiliser le cache pour le bouton ou le chercher et le mettre en cache 313 let btn = formButtonCache.get(form); 314 if (!btn) { 315 btn = document.querySelector(`input[type="submit"][form="${form.id}"], button[type="submit"][form="${form.id}"]`); 316 if (btn) { 317 formButtonCache.set(form, btn); 318 } 319 } 320 321 if (!btn) return; 322 323 let isValid = true; 324 const radioGroups = new Map(); 325 326 inputs.forEach(input => { 327 const val = input.value.trim(); 328 329 switch (input.type) { 330 case 'checkbox': 331 if (!input.checked) isValid = false; 332 break; 333 334 case 'radio': 335 if (!radioGroups.has(input.name)) radioGroups.set(input.name, false); 336 if (input.checked) radioGroups.set(input.name, true); 337 break; 338 339 case 'select-one': 340 if (!val || val === '') isValid = false; 341 break; 342 343 case 'number': 344 if (input.classList.contains('input_number') && !/^\d+$/.test(val)) isValid = false; 345 break; 346 347 default: 348 if (val === "") isValid = false; 349 break; 350 } 351 }); 352 353 for (let [group, checked] of radioGroups.entries()) { 354 if (!checked) { 355 isValid = false; 356 break; 357 } 358 } 359 360 btn.disabled = !isValid; 361 } 362 363 document.addEventListener('DOMContentLoaded', () => { 364 // Validation initiale complète pour détecter les valeurs par défaut (select, radio checked, etc.) 365 enableSubmit(); 366 367 // Scan pour l'auto-remplissage du navigateur 368 const scanAutoFill = setTimeout(() => { 369 enableSubmit(); 370 }, 600) 371 }); 372 373function capslock_alert(event) { 374 let input = document.getElementById("password"); 375 let text = document.getElementById("capslock_alert"); 376 377 input.addEventListener("keydown", function(event) { 378 if (event.getModifierState("CapsLock")) { 379 text.style.display = "block"; 380 } else { 381 text.style.display = "none"; 382 } 383 }); 384 385 input.addEventListener("focusout", function(event) { 386 text.style.display = "none"; 387 }); 388} 389 390function togglePassword() { 391 const passwordField = document.querySelector('#password'); 392 const eyeShow = document.querySelector('.icon_oeil'); 393 const eyeHide = document.querySelector('.icon_oeil_barre'); 394 395 if (passwordField.type === 'password') { 396 passwordField.type = 'text'; 397 eyeShow.style.display = "none"; 398 eyeHide.style.display = "block"; 399 } else { 400 passwordField.type = 'password'; 401 eyeHide.style.display = "none"; 402 eyeShow.style.display = "block"; 403 } 404} 405 406function getXmlHttpRequestObject() 407{ 408 if(window.XMLHttpRequest) 409 { 410 return new XMLHttpRequest(); 411 } 412 else if(window.ActiveXObject) 413 { 414 return new ActiveXObject("Microsoft.XMLHTTP"); 415 } 416 else 417 { 418 return null; 419 } 420} 421 422var ajax = getXmlHttpRequestObject(); 423 424function hide_popup() 425{ 426 setTimeout(function() 427 { 428 document.getElementById('mask_popup').style.display = "none"; 429 document.getElementById('popup').style.display = "none"; 430 document.getElementById('popup').innerHTML = ""; 431 }, 100); 432} 433 434function open_popup_pwd_lost() 435{ 436 document.getElementById('mask_popup').style.display = "flex"; 437 document.getElementById('popup').style.display = "flex"; 438 if( ajax.readyState==4 || ajax.readyState==0 ) 439 { 440 ajax.open( "GET", "/espace-perso/connexion/?action=popup_pwd_lost", true ); 441 ajax.onreadystatechange = function() 442 { 443 if( ajax.readyState==4 || ajax.readyState==0 ) 444 { 445 document.getElementById('popup').innerHTML = ajax.responseText; 446 } 447 } 448 ajax.send(null); 449 } 450} 451 452</script>
452 453<div id='mask_popup' onclick='hide_popup();'></div> 454<div id='popup'></div> 455</div> 456<footer> 457 <div id="footer"> 458 <div class="content"> 459 <section> 460 <span class="h5"> 461 Alfred Sevestre</span> 462 <p> 463 70 Boulevard Gallieni<br /> 464 92130 Issy-les-Moulineaux </p> 465 </section> 466 <section> 467 <span class="h5">Pages</span> 468 <ul> 469 <li><a href='/espaces.html' class='disabled-link_menu'>Le centre</a></li><li><a href='/activites.html'>Activités</a></li><li><a href='/infos-pratiques.html'>Infos Pratiques</a></li><li><a href="/module-inscriptions/" target="_self">Réserver</a></li> 470 <!-- <li><a href="/cheques-cadeaux.html">Chèques Cadeaux</a></li> --> 471 472 <li><a href="/actus.html">Actus</a></li> 473 474 <li><a href="/partenaires.html">Nos Partenaires</a></li> 475 476 <!-- 477 <li><a href="/club.html">Club</a></li> 478 <li><a href="/pro.html">Pro</a></li> 479 --> 480 <li><a href="/cheques-cadeaux">Chèques Cadeaux</a></li> 481 <!-- <li><a href="">Acheter</a></li> --> 482 </ul> 483 </section> 484 <section> 485 <span class="h5">Informations</span> 486 <ul> 487 <!-- <li><a href="/faq.html">FAQ</a></li> --> 488 <li><a href="/horaires.html">Horaires</a></li> 489 <li><a href="/tarifs.html">Tarifs et abonnements</a></li> 490 <li><a href="/module-inscriptions/reserver/?planning">Plannings</a></li> 491 <li><a href="/contact.html">Contact</a></li> 492 </ul> 493 <span class="h5">Avis clients</span> 494 <div id="stars-container"> 495 <div class="stars"> 496 <div class="star full"></div> 497 <div class="star full"></div> 498 <div class="star full"></div> 499 <div class="star half"></div> 500 <div class="star "></div> 501 </div> 502 <span class="note">3.6/5 sur 732 avis Google</span> 503 </div> 504 </section> 505 <section> 506 <span class="h5">Nous contacter</span> 507 <ul> 508 <li><a href="tel:01 40 93 04 56"><i class="icon-telephone"></i> 01 40 93 04 56</a></li> 509 <li><a href="mailto:[email protected]"><i class="icon-email"></i> <span id="centreemail">[email protected]</span></a></li> 510 <li>Retrouvez-nous sur<a href="https://www.facebook.com/A.Sevestre.ISSY"><i class='fi fi-brands-facebook' style='margin-left:10px;margin-right:0;'></i></a></li> </ul> 511 </section> 512 <section id="logos-footer"> 513 <figure> 514 <a href='https://recrea.fr' target="_blank"><img src="https://moncentreaquatique.com/logos/RECREA-blanc.png" alt="Logo Récréa" title="Logo Récréa" /></a> 515 </figure> 516 </section> 517 </div> 518 </div> 519 <div id="subfooter"> 520 <div class="content"> 521 <div class="inline"> 522 523 <nav> 524 <div class="inline">©alfredsevestre.fr 2025</div><span> | </span><a href="/mentions-legales.html">CGU & mentions légales</a><span> | </span><a href="/protection-des-donnees-personnelles.html">Protection des données personnelles</a><span> | </span><a href="javascript:openAxeptioCookies()">Gestion des cookies</a> 525 <p class="recaptcha-disclaimer"> 526 Ce site est protégé par reCAPTCHA et la <a href="https://policies.google.com/privacy" target="_blank">politique de confidentialité</a> et les <a href="https://policies.google.com/terms" target="_blank">conditions d'utilisation</a> de Google s'appliquent. 527 </p> 528 <span> | </span> 529 <a href="https://moncentreaquatique.com/pdf_cgv/2096068678.pdf" target="_blank">Conditions générales de ventes</a> 530 </nav> 531 532 </div> 533 </div> 534 </div> 535</footer> 536
537<script type="application/ld+json"> 538{ 539 "@context": "https://schema.org", 540 "@type": "PublicSwimmingPool", 541 "name": "Piscine Alfred Sevestre", 542 "image": "https://moncentreaquatique.com/logos/1043755381.png", 543 "@id": "", 544 "url": "http://alfredsevestre.fr", 545 "telephone": "01 40 93 04 56", 546 "priceRange": "€", 547 "address": { 548 "@type": "PostalAddress", 549 "streetAddress": "70 Boulevard Gallieni", 550 "addressLocality": "Issy-les-Moulineaux", 551 "postalCode": "92130", 552 "addressCountry": "FR" 553 }, 554 "aggregateRating": { 555 "@type": "AggregateRating", 556 "ratingValue": "3.6", 557 "bestRating": "5", 558 "worstRating": "1", 559 "ratingCount": "732" 560 }, 561 "geo": { 562 "@type": "GeoCoordinates", 563 "latitude": "48.82707500", 564 "longitude": "2.26679800" 565 } 566} 567</script>
567 568
569<script> 570// pour modifier dynamiquement le texte SOLDE ACTUEL SEMAINE EN COURS 571function updateLabelFromSelect(sel) { 572 if (!sel) return; 573 574 // cible du label (défaut: "label-solde") 575 var labelId = sel.dataset.labelTarget || 'label-solde'; 576 var label = document.getElementById(labelId); 577 if (!label) return; 578 579 var opt = sel.options[sel.selectedIndex]; 580 if (!opt) return; 581 582 // offset prioritaire via data-week-offset 583 var offset = parseInt(opt.dataset.weekOffset || '0', 10); 584 585 // fallback si pas de data-week-offset (extrait "(semaine +N)" du texte) 586 if (isNaN(offset)) { 587 var m = (opt.textContent || '').match(/\(semaine\s*([+-]?\d+|en cours)\)/i); 588 if (m) { 589 offset = (m[1].toLowerCase() === 'en cours') ? 0 : parseInt(m[1], 10); 590 } else { 591 offset = 0; 592 } 593 } 594 595 var text = 'Solde actuel '; 596 if (offset === 0) { 597 text += 'semaine en cours :'; 598 } else if (offset > 0) { 599 text += 'de la semaine :'; 600 } else { 601 text += 'Semaine ' + offset + ' :'; 602 } 603 604 label.textContent = text; 605} 606 607function onPeriodeChange(sel, aboId) { 608 updateLabelFromSelect(sel); 609 var periodeId = parseInt(sel.value, 10) || 0; 610 611 var url = new URL(window.location.href); 612 url.searchParams.set('periode_id_' + String(aboId), String(periodeId)); 613 614 // secours: ajoute aussi ?scroll_to=abo-123 (utile si un redirect serveur intervient) 615 url.searchParams.set('scroll_to', 'abo-' + String(aboId)); 616 617 // ancre hash (visible si pas de redirect) 618 url.hash = '#abo-' + String(aboId); 619 620 window.location.assign(url.toString()); 621} 622</script>
622 623
624<script type="text/javascript" src="/js/min/jquery-3.5.1.min.js"></script>
vendor: 1 bytes, line 624
624
625<script type="text/javascript" src="/js/min/slick.min.js"></script>
vendor: 1 bytes, line 625
625
626<script type="text/javascript" src="/js/min/toastr.min.js"></script>
vendor: 1 bytes, line 626
626
627<script type="text/javascript" src="/js/min/scripts.min.js"></script>
vendor: 1 bytes, line 627
627
628<script src="https://code.jquery.com/jquery-3.7.1.js"></script>
vendor: 1 bytes, line 628
628
629<script src="https://code.jquery.com/jquery-migrate-3.5.2.js"></script>
vendor: 1 bytes, line 629
629
630<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/slick/slick.min.js"></script>
vendor: 1 bytes, line 630
630
631<script type="text/javascript" src="/js/tarifs.js"></script>
vendor: 1 bytes, line 631
631
632<script type="text/javascript" src="/js/offres.js"></script>
632 633 634<!-- reCAPTCHA v3 -->
vendor: 61 bytes, lines 634-635
634 635<script src="https://www.google.com/recaptcha/api.js?render=
6356LfreFQrAAAAABkcHTeLIj2kQD3YbQMkSTG7xrtP
vendor: 12 bytes, line 635
635"></script>
636<script> 637 grecaptcha.ready(function() { 638 var recaptchaSiteKey = '6LfreFQrAAAAABkcHTeLIj2kQD3YbQMkSTG7xrtP'; 639 640 function fillRecaptchaTokens(token) { 641 var inputs = document.querySelectorAll('#recaptchaResponse, .recaptcha-token'); 642 inputs.forEach(function(input) { 643 input.value = token; 644 }); 645 } 646 647 // Générer un token initial 648 grecaptcha.execute(recaptchaSiteKey, {action: 'submit'}).then(fillRecaptchaTokens); 649 650 // Rafraîchir le token toutes les 90 secondes (le token expire au bout de ~2 min) 651 setInterval(function() { 652 grecaptcha.execute(recaptchaSiteKey, {action: 'submit'}).then(fillRecaptchaTokens); 653 }, 90000); 654 }); 655</script>
655 656 </div> 657 <!-- GTM dataLayer: page_view + user_data + session tracking events --> 658
658<script> 659 window.dataLayer = window.dataLayer || []; 660 dataLayer.push({ 661 event: "page_view", 662 page_type: 'other' }); 663 664 665 666 </script>
666 667 668 </body> 669</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.