PageSourceSearch

https://piscineboulognebillancourt.com/espace-perso/connexion

html piscineboulognebillancourt.com collected 2026-10-08 02:27:25 UTC 29,566 bytes, 716 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="Piscine Boulogne Billancourt" />
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/1205421031.svg" />
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://piscineboulognebillancourt.com/espace-perso/connexion' />
45		<meta property='og:site_name' content='Piscine Boulogne Billancourt' />
46		<meta property='og:image' content='https://moncentreaquatique.com/logos/1205421031.svg' />
47		<meta property='og:image:secure_url' content='https://moncentreaquatique.com/logos/1205421031.svg' />
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/1205421031.svg' />
52
53		<style>
54						:root {
55				--RECREA_COLOR_PRIMARY: #083b4b;
56				--RECREA_COLOR_SECONDARY: #6dc1ee;
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(8,59,75,1) 0%, rgba(8,59,75,0.75) 75%, transparent 100%);
70	}
71	body .contentsquare-content.color2-true .plus{
72		background: linear-gradient(0deg, rgba(109,193,238,1) 0%, rgba(109,193,238,0.75) 75%, transparent 100%);
73	}
74	body #menu .menu-content nav a.btn-custom-color span:hover {
75		/* color:#ff1a1a !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>Aquatique</strong> : <span style='color:#ffffff;'>07:00 - 08:45 et 11:30 - 21:00</span> | <strong>Fitness</strong> : <span style='color:#ffffff;'>07:00 - 21:00</span> | <strong>Bien-&ecirc;tre</strong> : <span style='color:#ffffff;'>10:00 - 21:00</span> | <strong>Snack</strong> : <span style='color:#ffffff;'>11:30 - 19: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/1205421031.svg" alt="Piscine Boulogne Billancourt" title="Piscine Boulogne Billancourt" />
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-568-aquatique.html">aquatique</a></li><li><a href="/espace-570-bien-etre.html">bien-&ecirc;tre</a></li><li><a href="/espace-617-exterieur.html">ext&eacute;rieur</a></li><li><a href="/espace-569-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-1213614-offre-stage-de-natation-aquatique.html">Offre - Stage de natation aquatique</a></li><li><a href="/offre-1213454-offre-pro-et-cse.html">OFFRE - PRO et CSE</a></li><li><a href="/offre-630-offre-anniversaire.html">OFFRE - ANNIVERSAIRE</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://www.billetweb.fr/pack-decouverte4" class="btn btn-orange btn-custom-color" target="_blank"><span style="background: #ff1a1a; border: 2px solid #ff1a1a" onMouseOver="this.style.color='#ff1a1a'" onMouseOut="this.style.color='#ffffff'">Billetterie</span></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://fr-fr.facebook.com/piscineboulognebillancourt"><i class='fi fi-brands-facebook'></i></a><a href="https://www.instagram.com/piscineboulogne92100/"><i class='fi fi-brands-instagram'></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/1205421031.svg' alt='Piscine Boulogne Billancourt' title='Piscine Boulogne Billancourt' /></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="footer_padding"></div>
459		<div id="newsletter">
460			<div class="badge">
461				<i class="fi fi-rr-envelope"></i>
462			</div>
463			<div class="text_content">
464				<h2>Inscrivez-vous à notre newsletter</h2>
465				<p>Recevez toutes nos informations directement dans votre boite mail et ne manquez plus aucune actualité !</p>
466			</div>
467			<form method="post" action="#footer" id="formNewsletter">
468				<div class="newsletter_inputs">
469					<input type="hidden" name="recaptcha_response" id="recaptchaResponse">
470		        	<input type="text" name="inscription_brevo" value="" class="inputs" placeholder="Entrez votre email.."/>
471		        	<input type="submit" value="S'inscrire" class="btn_submit"/>
472				</div>
473				<p class="mention"><i class="fi fi-rs-shield-check"></i> En vous inscrivant, vous acceptez notre <a href="/protection-des-donnees-personnelles.html"> politique de confidentialité.</a></p>
474	    	</form>
475	    	
475<script>
476		(function(){
477			var fN = document.getElementById('formNewsletter');
478			if(!fN) return;
479			// reCAPTCHA : token frais genere au moment de la soumission (evite les
480			// rejets 'expired'/'dupe' lies au token global pre-genere par footerinc).
481			fN.addEventListener('submit', function(e){
482				if( fN.dataset.recaptchaFresh === '1' ){ fN.dataset.recaptchaFresh=''; return; }
483				if( typeof grecaptcha === 'undefined' ) return;
484				e.preventDefault();
485				if( fN.dataset.recaptchaPending === '1' ) return;
486				fN.dataset.recaptchaPending='1';
487				var submitter = e.submitter || null;
488				var go = function(){
489					fN.dataset.recaptchaFresh='1';
490					fN.dataset.recaptchaPending='';
491					if(fN.requestSubmit) fN.requestSubmit(submitter||undefined); else fN.submit();
492				};
493				grecaptcha.ready(function(){
494					grecaptcha.execute('6LfreFQrAAAAABkcHTeLIj2kQD3YbQMkSTG7xrtP',{action:'submit'})
495						.then(function(token){ var i=fN.querySelector('#recaptchaResponse'); if(i) i.value=token; go(); })
496						.catch(go);
497				});
498			});
499		})();
500		</script>
500
501		    	        </div>
502        		<div class="content">
503			<section>
504				<span class="h5">
505				Piscine Boulogne Billancourt</span>
506				<p>
507					165 Rue du Vieux Pont de S&egrave;vres,<br />
508					92100 Boulogne-Billancourt				</p>
509			</section>
510			<section>
511				<span class="h5">Pages</span>
512				<ul>
513					<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>
514					<!-- <li><a href="/cheques-cadeaux.html">Chèques Cadeaux</a></li> -->
515
516                                        										<li><a href="/actus.html">Actus</a></li>
517                                        
518                                        										<li><a href="/partenaires.html">Nos Partenaires</a></li>
519                                        
520					<!--
521					<li><a href="/club.html">Club</a></li>
522					<li><a href="/pro.html">Pro</a></li>
523					-->
524										<li><a href="/cheques-cadeaux">Chèques Cadeaux</a></li>
525										<!-- <li><a href="">Acheter</a></li> -->
526				</ul>
527			</section>
528			<section>
529				<span class="h5">Informations</span>
530				<ul>
531					<!-- <li><a href="/faq.html">FAQ</a></li> -->
532					<li><a href="/horaires.html">Horaires</a></li>
533					<li><a href="/tarifs.html">Tarifs et abonnements</a></li>
534										<li><a href="/module-inscriptions/reserver/?planning">Plannings</a></li>
535										<li><a href="/contact.html">Contact</a></li>
536				</ul>
537				<span class="h5">Avis clients</span>
538				<div id="stars-container">
539					<div class="stars">
540						<div class="star full"></div>
541						<div class="star full"></div>
542						<div class="star full"></div>
543						<div class="star full"></div>
544						<div class="star "></div>
545					</div>
546					<span class="note">4/5 sur 2289 avis Google</span>
547				</div>
548			</section>
549			<section>
550				<span class="h5">Nous contacter</span>
551				<ul>
552					<li><a href="tel:01 46 08 09 09"><i class="icon-telephone"></i> 01 46 08 09 09</a></li>
553					<li><a href="mailto:[email protected]"><i class="icon-email"></i> <span id="centreemail">[email protected]</span></a></li>
554					<li>Retrouvez-nous sur<a href="https://fr-fr.facebook.com/piscineboulognebillancourt"><i class='fi fi-brands-facebook' style='margin-left:10px;margin-right:0;'></i></a><a href="https://www.instagram.com/piscineboulogne92100/"><i class='fi fi-brands-instagram' style='margin-left:10px;margin-right:0;'></i></a></li>				</ul>
555			</section>
556			<section id="logos-footer">
557				<figure>
558					<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>
559				</figure>
560									<figure class="collectivite">
561						<img src="https://moncentreaquatique.com/logos/1442654927.png" />
562					</figure>
563							</section>
564		</div>
565	</div>
566	<div id="subfooter">
567		<div class="content">
568			<div class="inline">
569
570				<nav>
571				    <div class="inline">©piscineboulognebillancourt.com 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>
572					<p class="recaptcha-disclaimer">
573  					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.
574					</p>
575				    				        <span> | </span>
576				        				        <a href="https://moncentreaquatique.com/pdf_cgv/603851617.pdf" target="_blank">Conditions g&eacute;n&eacute;rales de ventes</a>
577				    				</nav>
578
579			</div>
580		</div>
581	</div>
582</footer>
583
584<script type="application/ld+json">
585{
586  "@context": "https://schema.org",
587  "@type": "PublicSwimmingPool",
588  "name": "Piscine Boulogne-Billancourt",
589  "image": "https://moncentreaquatique.com/logos/1205421031.svg",
590   "@id": "",
591  "url": "http://piscineboulognebillancourt.com",
592  "telephone": "01 46 08 09 09",
593  "priceRange": "&euro;",
594  "address": {
595    "@type": "PostalAddress",
596    "streetAddress": "165 Rue du Vieux Pont de S&egrave;vres,",
597    "addressLocality": "Boulogne-Billancourt",
598    "postalCode": "92100",
599     "addressCountry": "FR"
600  },
601  "aggregateRating": {
602    "@type": "AggregateRating",
603    "ratingValue": "4",
604     "bestRating": "5",
605    "worstRating": "1",
606    "ratingCount": "2289"
607  },
608  "geo": {
609    "@type": "GeoCoordinates",
610    "latitude": "48.83051600",
611    "longitude": "2.24083000"
612   }  
613}
614</script>
614
615
616<script>
617// pour modifier dynamiquement le texte SOLDE ACTUEL SEMAINE EN COURS
618function updateLabelFromSelect(sel) {
619  if (!sel) return;
620
621  // cible du label (défaut: "label-solde")
622  var labelId = sel.dataset.labelTarget || 'label-solde';
623  var label = document.getElementById(labelId);
624  if (!label) return;
625
626  var opt = sel.options[sel.selectedIndex];
627  if (!opt) return;
628
629  // offset prioritaire via data-week-offset
630  var offset = parseInt(opt.dataset.weekOffset || '0', 10);
631
632  // fallback si pas de data-week-offset (extrait "(semaine +N)" du texte)
633  if (isNaN(offset)) {
634    var m = (opt.textContent || '').match(/\(semaine\s*([+-]?\d+|en cours)\)/i);
635    if (m) {
636      offset = (m[1].toLowerCase() === 'en cours') ? 0 : parseInt(m[1], 10);
637    } else {
638      offset = 0;
639    }
640  }
641
642  var text = 'Solde actuel ';
643  if (offset === 0) {
644    text += 'semaine en cours :';
645  } else if (offset > 0) {
646    text += 'de la semaine :';
647  } else {
648    text += 'Semaine ' + offset + ' :';
649  }
650
651  label.textContent = text;
652}
653
654function onPeriodeChange(sel, aboId) {
655  updateLabelFromSelect(sel);
656  var periodeId = parseInt(sel.value, 10) || 0;
657
658  var url = new URL(window.location.href);
659  url.searchParams.set('periode_id_' + String(aboId), String(periodeId));
660
661  // secours: ajoute aussi ?scroll_to=abo-123 (utile si un redirect serveur intervient)
662  url.searchParams.set('scroll_to', 'abo-' + String(aboId));
663
664  // ancre hash (visible si pas de redirect)
665  url.hash = '#abo-' + String(aboId);
666
667  window.location.assign(url.toString());
668}
669</script>
669
670
671<script type="text/javascript" src="/js/min/jquery-3.5.1.min.js"></script>
vendor: 1 bytes, line 671
671
672<script type="text/javascript" src="/js/min/slick.min.js"></script>
vendor: 1 bytes, line 672
672
673<script type="text/javascript" src="/js/min/toastr.min.js"></script>
vendor: 1 bytes, line 673
673
674<script type="text/javascript" src="/js/min/scripts.min.js"></script>
vendor: 1 bytes, line 674
674
675<script src="https://code.jquery.com/jquery-3.7.1.js"></script>
vendor: 1 bytes, line 675
675
676<script src="https://code.jquery.com/jquery-migrate-3.5.2.js"></script>
vendor: 1 bytes, line 676
676
677<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/slick/slick.min.js"></script>
vendor: 1 bytes, line 677
677
678<script type="text/javascript" src="/js/tarifs.js"></script>
vendor: 1 bytes, line 678
678
679<script type="text/javascript" src="/js/offres.js"></script>
679
680
681<!-- reCAPTCHA v3 -->
vendor: 61 bytes, lines 681-682
681
682<script src="https://www.google.com/recaptcha/api.js?render=
6826LfreFQrAAAAABkcHTeLIj2kQD3YbQMkSTG7xrtP
vendor: 12 bytes, line 682
682"></script>
683<script>
684  grecaptcha.ready(function() {
685    var recaptchaSiteKey = '6LfreFQrAAAAABkcHTeLIj2kQD3YbQMkSTG7xrtP';
686
687    function fillRecaptchaTokens(token) {
688      var inputs = document.querySelectorAll('#recaptchaResponse, .recaptcha-token');
689      inputs.forEach(function(input) {
690        input.value = token;
691      });
692    }
693
694    // Générer un token initial
695    grecaptcha.execute(recaptchaSiteKey, {action: 'submit'}).then(fillRecaptchaTokens);
696
697    // Rafraîchir le token toutes les 90 secondes (le token expire au bout de ~2 min)
698    setInterval(function() {
699      grecaptcha.execute(recaptchaSiteKey, {action: 'submit'}).then(fillRecaptchaTokens);
700    }, 90000);
701  });
702</script>
702
703		</div>
704		<!-- GTM dataLayer: page_view + user_data + session tracking events -->
705				
705<script>
706		window.dataLayer = window.dataLayer || [];
707		dataLayer.push({
708			event: "page_view",
709			page_type: 'other'		});
710
711		
712		
713				</script>
713
714
715	</body>
716</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.