PageSourceSearch

https://alfredsevestre.fr/espace-perso/connexion

html alfredsevestre.fr collected 2026-10-08 20:44:52 UTC 26,835 bytes, 669 lines download raw bytes

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&eacute;tente</a></li><li><a href="/espace-1222-exterieur.html">ext&eacute;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&eacute;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&egrave;s & Contact</a></li><li><a href="/infos-pratiques.html">R&egrave;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&eacute;server</span></a></li><li id='btn_cheque' class='nav-title'><a href="/cheques-cadeaux"  class="btn-orange"><span>Ch&egrave;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&eacute;j&agrave; 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&eacute;s</a></li><li><a href='/infos-pratiques.html'>Infos Pratiques</a></li><li><a href="/module-inscriptions/" target="_self">R&eacute;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 &amp; 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&eacute;n&eacute;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": "&euro;",
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.