PageSourceSearch

https://www.antidote.info/user/themes/antidote/js/produits.js?g-9ac0be51

js antidote.info collected 2026-09-24 08:56:07 UTC 12,996 bytes, 409 lines download raw bytes

1let hash = window.location.hash;
2let pageCourante = window.location.pathname.split("/").slice(-1)[0];
3let sectionVisible;
4let largeurMobile = 810;
5
6$(function() {
7	affichageAsynchrone();
8	ajusteAffichageMobile();
9
10	let blocs = '.colonne-produit';
11	let selecteursAEgaliser = '.detail-langue';
12	egaliseHauteur(conteneur='#aperso', blocs, selecteursAEgaliser, '.description');
13	egaliseHauteur(conteneur='#afam', blocs, selecteursAEgaliser, '.description');
14
15	if (location.pathname.endsWith('antidote-12')) {
16		initAntidote12();
17	}
18
19	if (hash) {
20		let ancre = $(`h3${hash}`)
21		if ($(`h3${hash}`).length) {
22			ancre.get(0).scrollIntoView();
23		}
24	} else {
25		$("#" + pageCourante).find("li:first-child a").addClass("actif page-courante");
26	}
27
28	$('.declencheur-menu.active-on-hover').on({
29		mouseenter: function() {
30			let id_declencheur = $(this).attr('id')
31			$(`[data-declencheur="${id_declencheur}"]`).menuflottant('affiche');
32		}, mouseleave: function() {
33			let id_declencheur = $(this).attr('id')
34			$(`[data-declencheur="${id_declencheur}"]`).menuflottant('masque');
35		}
36	});
37});
38
39$(window).on("scroll", function(param) {
40	$(".arborescence").css("--bs", $("#barre-menu").css("--bs"))
41	$("header").css("--opacity", $("html").css("--opacity"))
42
43	if ($("section.module").has("h3[id]").length) {
44		let documentScroll = $(document).scrollTop();
45		let deuxiemeSection = $("section.module").has("h3[id]")[1];
46		let premiereSectionID = $("section.module").has("h3[id]")[0].querySelector("h3[id]").id;
47		let deuxiemeSectionID = deuxiemeSection.querySelector("h3[id]").id;
48
49		if (deuxiemeSection.offsetHeight < documentScroll) {
50			$("body").find(`a[href="#${deuxiemeSectionID}"]`).addClass('actif page-courante');
51			$("body").find(`a[href="#${premiereSectionID}"]`).removeClass('actif page-courante');
52		} else {
53			$("body").find(`a[href="#${premiereSectionID}"]`).addClass('actif page-courante');
54			$("body").find(`a[href="#${deuxiemeSectionID}"]`).removeClass('actif page-courante');
55		}
56	}
57
58	if ($('#afam').length) {
59		let fenetreOffsetBottom = $(window).scrollTop() + $(window).height();
60		let estForfaitFamilialVisible = fenetreOffsetBottom > ($('#afam .entete-colonne').offset().top + $('#afam .entete-colonne').height());
61		let estIntroVisible = (($(window).scrollTop() + 150) < $('#_tableau-produits').offset().top) && (fenetreOffsetBottom > $('#_tableau-produits').offset().top);
62
63		if (estForfaitFamilialVisible && !estIntroVisible) {
64			$('#bt-ancre-produit').addClass('disparait');
65		} else {
66			$('#bt-ancre-produit').removeClass('disparait');
67		}
68	}
69})
70
71function selecteursProduits(selection, autreProduit) {
72    $("#selecteur-produits-" + selection).click(function() {
73        $("#boutique-caracteristiques, #_mise-a-niveau-aplus #entete").addClass("mobile-affiche-" + selection);
74        $("#boutique-caracteristiques, #_mise-a-niveau-aplus #entete").removeClass("mobile-affiche-" + autreProduit);
75        $(".selecteur-produits div").removeClass("selectionne");
76        $(this).addClass("selectionne");
77    });
78}
79
80function clicAffiche(selection) {
81    $(".clic-affiche-" + selection).click(function() {
82        $("#selecteur-produits-" + selection).click();
83    });
84}
85
86// Ajuster onglet sélectionné selon paramètre dans URL
87function selectionOngletURL() {
88    let query = donneParam('produit') || donneParam('product');
89    $("#selecteur-produits-" + query).click();
90}
91
92function activeMenuDeroulantMobile() {
93	var $conteneurMenu = $(".arborescence > ul");
94
95	if ($(window).width() <= largeurMobile) {
96		$("aside h4.titre-page-mobile").on("click", function(data) {
97			if (!($(".arborescence").hasClass("visible"))) {
98				$(".arborescence").addClass("visible")
99				$conteneurMenu.show(50)
100			}
101		})
102
103		$(document).mouseup(function(e) {
104			if ((!$conteneurMenu.is(e.target) && $conteneurMenu.has(e.target).length !== 0)
105				|| ($conteneurMenu.has(e.target).length === 0 && !$(e.target).is('a'))
106				|| $(e.target).is('.actif, .page-courante')) {
107				$(".arborescence").removeClass("visible")
108				$conteneurMenu.hide(50);
109			}
110		});
111	} else {
112		$(document).unbind("mouseup");
113		$("aside h4.titre-page-mobile").unbind("click")
114		$(".arborescence > ul, .parent-actif + ul").show(50);
115	}
116}
117
118function ajusteAffichageMobile() {
119	selecteursProduits('perso', 'fam');
120	selecteursProduits('fam', 'perso');
121
122	clicAffiche('perso');
123	clicAffiche('fam');
124
125	selectionOngletURL();
126	activeMenuDeroulantMobile();
127
128	$(window).resize(function () {
129		activeMenuDeroulantMobile();
130	}).trigger("resize");
131}
132
133
134function affichageAsynchrone() {
135	var $conteneurPageAsynchrone = $('<div/>');
136
137	/***
138	 * Chargement ajax des pages de la documentation
139	 */
140	$("body.produits").on('click', "#contenu-onglet a, [data-produit='_antidote-11'] a", function (e) {
141		var href = $(this).attr('href');
142		var target = $(this).attr('target');
143		var state = donneHistoryState(href);
144
145		if (!(e.altKey) && !(e.metaKey) && !/^https?:\/\//.test(href) && target !== '' && href.charAt(0) !=='#' && (href.startsWith('/fr/boutique') || href.startsWith('/en/store'))) {
146			chargementAsyncMain(state, true);
147			e.preventDefault();
148			return false;
149		}
150		else if(href.charAt(0) =='#'){
151
152			e.preventDefault();
153
154			window.location.hash = href;
155			return false;
156		}
157	});
158
159	/**
160	 * Chargement asynchrone du contenu dans le bloc «main»
161	 */
162	var chargementAsyncMain = function (state, enregistreEtatHistorique) {
163		var url = state.url;
164		var $main = $('#main');
165		var $article = $('#main article');
166		var $aside = $('#main aside section.arborescence:not(.titre-page-mobile)');
167
168		// Affichage de l'indicateur de chargement
169		var $indicateurChargement = "#indicateur-chargement";
170		$($indicateurChargement).remove();
171		$('header').append($('<div id="indicateur-chargement"></div>'));
172
173		$($indicateurChargement).css({'width': '0%'});
174		timeoutScroll = window.setTimeout(function(){
175			if(parseInt($($indicateurChargement).css('width')) < '30'){
176				$($indicateurChargement).css({'width': '30%', 'transition': 'width 2s, opacity 3s'});
177			}
178		}, 200);
179
180		remplaceEtatNavigation(window.location.pathname); // Mettre la page courante comme premier élément de l'historique.
181		$($conteneurPageAsynchrone).load(url, function () {
182
183			if ($conteneurPageAsynchrone.find('#main').length) {
184				// Mise à jour de l'historique de navigation
185				if (enregistreEtatHistorique) {
186					metsAJourEtatNavigation(url);
187				}
188
189				var titrePage = $conteneurPageAsynchrone.find('> title').text();
190				$('html > head > title').html(titrePage);
191
192				// Remplacement de l'article
193				$($article).html($conteneurPageAsynchrone.find('#main article').html());
194
195				// Remplacement de la barre latérale
196				$($aside).html($conteneurPageAsynchrone.find('#main aside section.arborescence:not(.titre-page-mobile)').html());
197
198				// Ajustement du lien de modification de page
199				$('#lien-modification').attr('href', $conteneurPageAsynchrone.find('#lien-modification').attr('href'));
200
201				// Ajustement des liens dans le menu de changement de langue
202				$('#menu-langue').html($conteneurPageAsynchrone.find('#menu-langue').html());
203
204				// Retire la visibilité de l'arborescence lorsqu'en mobile
205				$(".arborescence").removeClass("visible")
206
207				ajusteAffichageMobile()
208
209				// Ajuste la hauteur des colonnes de produits
210				let blocs = '.colonne-produit';
211				let selecteursAEgaliser = '.detail-langue';
212				egaliseHauteur(conteneur='#aperso', blocs, selecteursAEgaliser, '.description');
213				egaliseHauteur(conteneur='#afam', blocs, selecteursAEgaliser, '.description');
214
215				$("a[href^='#']").on("click", function(e) {
216					$(`${e.target.hash}`).get(0).scrollIntoView();
217				})
218
219				// Fin de l'affichage de l'indicateur de chargement
220				timeoutScroll = window.setTimeout(function(){
221					$("#indicateur-chargement").css({'width': '100%', 'transition': 'width 500ms, opacity 500ms 200ms ease'});
222					$($indicateurChargement).css({'opacity': 0});
223				}, 200);
224
225				ajouteAncres();
226
227				// Défilement (seulement lors du premier accès)
228				if (enregistreEtatHistorique) {
229					/**
230					 * Défilement vers le titre de la page si celui-ci n'est pas visible
231					 */
232					var defilementIdeal = $($main).offset().top;
233
234					// Défilement vers une sous-section si une ancre interne est détectée à partir de l'URL
235					var objetURL = new URL('http://domaine.com'+url);
236
237					if(objetURL.hash){
238						defilementIdeal = $(objetURL.hash).offset().top;
239					}
240
241					// var hauteurBarremenu = $(window).width() <= largeurMobile ? $("aside")[0].offsetHeight : 0;
242					$(window).scrollTop(defilementIdeal);
243
244				} else {
245					// Retablir le defilement tel qu'il etait dans la sauvegarde de l'etat.
246					$(window).scrollTop(state.scrollY);
247				}
248
249				if (url.endsWith('/antidote-12')) {
250					initAntidote12();
251				} else if ((url.endsWith('/mise-a-niveau') || url.endsWith('upgrade')) && (typeof initMiseANiveauCadeau === "function") ) {
252					initMiseANiveauCadeau();
253				}
254
255				$('#main article .menu-flottant').menuflottant();
256			}
257			else {
258				window.location = url;
259			}
260			$conteneurPageAsynchrone.html();
261		});
262	};
263
264	$("body.produits").each(function(){
265		/**
266		 * Gestion de l'historique de navitation
267		 */
268		window.addEventListener('popstate', function (e) {
269			if (e.state) {
270				chargementAsyncMain(e.state, false);
271			}
272		});
273	});
274}
275
276var donneHistoryState = function (url) {
277	return {
278		url: url,
279		scrollY: window.scrollY,
280	}
281}
282
283var remplaceEtatNavigation = function (url) {
284	// Désactivation du saut de page lors du chargement d'URL
285	if ('scrollRestoration' in window.history) {
286		window.history.scrollRestoration = 'manual';
287	}
288
289	history.replaceState(donneHistoryState(url), null, url);
290};
291
292/**
293 * Mise à jour de l'historique de navigation
294 */
295var metsAJourEtatNavigation = function (url) {
296	// Désactivation du saut de page lors du chargement d'URL
297	if ('scrollRestoration' in window.history) {
298		window.history.scrollRestoration = 'manual';
299	}
300
301	history.pushState(donneHistoryState(url), null, url);
302};
303
304function initAntidote12() {
305	$blocPremierAchat = $("#_premier-achat");
306	$blocLanguesPremierAchat = $("#langues-premier-achat");
307	$blocModulesPremierAchat = $("#modules-premier-achat");
308	$blocVotreCommange = $("#votre-commande");
309	$detailCommande = $('#detail-commande');
310	$boutonAchat = $('#bouton-achat');
311	urlInitialBoutique = $boutonAchat.data('url-initial-boutique');
312
313
314	afficheCommande = function () {
315		nomProduit = '';
316		$blocPremierAchat.find('.selection h4').each(function (i) {
317			if (i > 0) {
318				nomProduit += ' + ';
319			}
320			nomProduit += $(this).text();
321
322		});
323
324
325		$detailCommande.find('div:eq(0)').html(nomProduit);
326
327		if ($blocModulesPremierAchat.find('.selection').length) {
328			$detailCommande.find('div:eq(1)').html($blocPremierAchat.data('prix-a10-et-module'));
329		}
330		else {
331			$detailCommande.find('div:eq(1)').html($blocPremierAchat.data('prix-a10'));
332		}
333	};
334
335	/**
336	 * Sélection / déselection des produits
337	 */
338	$blocLanguesPremierAchat.find('.produit-selectionnable').on('click', function () {
339
340		if (!$(this).hasClass('selection')) {
341
342			$blocPremierAchat.find('.selection').removeClass('selection');
343			$blocPremierAchat.removeClass('modules-premier-achat-actif');
344
345			$blocPremierAchat.addClass('modules-premier-achat-actif');
346
347			$(this).addClass('selection');
348
349			$('#modules-premier-achat .colonnes').removeClass('visible');
350
351			if ($(this).hasClass('fr')) {
352				$('#premier-achat-module-anglais').addClass('visible');
353			}
354			else {
355				$('#premier-achat-module-francais').addClass('visible');
356			}
357
358			$boutonAchat.attr('href', urlInitialBoutique + $(this).data('url-boutique'));
359
360			$blocModulesPremierAchat.slideDown(200, function () {
361				$blocVotreCommange.slideDown(200, function () {
362				});
363			});
364
365
366			afficheCommande();
367			ajusteTailleElementMasquables();
368		}
369		else {
370			$blocVotreCommange.slideUp(200, function () {
371				$blocModulesPremierAchat.slideUp(200);
372			});
373
374			$blocPremierAchat.removeClass('modules-premier-achat-actif');
375			$blocPremierAchat.find('.selection').removeClass('selection');
376		}
377	});
378
379	/**
380	 * Sélection / déselection des modules supplémentaires
381	 */
382	$blocModulesPremierAchat.find('.produit-selectionnable').on('click', function () {
383		if (!$(this).hasClass('selection')) {
384			$(this).addClass('selection');
385			$boutonAchat.attr('href', urlInitialBoutique + $(this).data('url-boutique'));
386		}
387		else {
388			$boutonAchat.attr('href', urlInitialBoutique + $blocPremierAchat.find('.selection').data('url-boutique'));
389			$(this).removeClass('selection');
390		}
391
392		afficheCommande();
393	});
394
395
396	ajusteTailleElementMasquables = function () {
397		// $blocLanguesPremierAchat.css('--max-h', $blocLanguesPremierAchat[0].scrollHeight);
398		// $blocModulesPremierAchat.css('--max-h', $blocModulesPremierAchat[0].scrollHeight);
399		// $blocVotreCommange.css('--max-h', $blocVotreCommange[0].scrollHeight);
400	}
401
402	$(window).on('resize', function () {
403		ajusteTailleElementMasquables();
404	}).trigger('resize');
405
406	$("#produits .savoir-plus").click(function () {
407		$(this).next(".description").toggle();
408	});
409}

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.