2023-09-25 19:16:41 +02:00

510 lines
30 KiB
JavaScript

// === SCROLL MENU ===
const pageLink = document.querySelectorAll('.menu-scroll');
pageLink.forEach((elem) => {
elem.addEventListener('click', (e) => {
e.preventDefault();
document.querySelector(elem.getAttribute('href')).scrollIntoView({
behavior: 'smooth',
offsetTop: 1 - 60,
});
});
});
// section menu active
function onScroll(event) {
const sections = document.querySelectorAll('.menu-scroll');
const scrollPos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
for (let i = 0; i < sections.length; i++) {
const currLink = sections[i];
const val = currLink.getAttribute('href');
const refElement = document.querySelector(val);
const scrollTopMinus = scrollPos + 73;
if (refElement.offsetTop <= scrollTopMinus && refElement.offsetTop + refElement.offsetHeight > scrollTopMinus) {
document.querySelector('.menu-scroll').classList.remove('active');
currLink.classList.add('active');
} else {
currLink.classList.remove('active');
}
}
}
window.document.addEventListener('scroll', onScroll);
// === FOOTER DYNAMIC ===
// Sélectionnez le footer par son ID
const footer = document.getElementById('leFooter');
// Fonction pour positionner le footer en bas de la page
function positionFooter() {
const windowHeight = window.innerHeight;
const bodyHeight = document.body.clientHeight;
const footerHeight = footer.clientHeight;
if (bodyHeight < windowHeight) {
footer.style.position = 'absolute';
footer.style.bottom = '0';
} else {
footer.style.position = 'static';
}
}
// Appelez la fonction lors du chargement de la page et lorsque la fenêtre est redimensionnée
window.addEventListener('load', positionFooter);
window.addEventListener('resize', positionFooter);
// === MODE SOMBRE +> LOCAL STORAGE ===
// Fonction pour lire la valeur du thème depuis localStorage
function getThemeLocalStorage() {
return localStorage.getItem('theme');
}
// Fonction pour définir le thème dans localStorage
function setThemeLocalStorage(theme) {
localStorage.setItem('theme', theme);
}
// Fonction pour mettre à jour la classe sur le <html> en fonction du thème
function updateThemeClass() {
const darkTogglerCheckbox = document.querySelector('#darkToggler');
const html = document.querySelector('html');
const theme = getThemeLocalStorage();
// Appliquer la classe en fonction de la valeur de localStorage
if (theme === 'dark') {
darkTogglerCheckbox.checked = true;
html.classList.add('dark');
} else {
darkTogglerCheckbox.checked = false;
html.classList.remove('dark');
}
}
// Appeler la fonction d'initialisation de la gestion du thème
updateThemeClass();
// Gérer le changement de thème lorsque l'utilisateur clique sur la case à cocher
const darkTogglerCheckbox = document.querySelector('#darkToggler');
darkTogglerCheckbox.addEventListener('click', function () {
if (darkTogglerCheckbox.checked) {
setThemeLocalStorage('dark');
} else {
setThemeLocalStorage('light');
}
});
// === ENVOIE FORMULAIRE AVEC AJAX ===
// Attendre que le document soit prêt
$(document).ready(function () {
// Sélectionnez le formulaire par son ID (ajoutez un ID à votre formulaire si ce n'est pas déjà fait)
$('#formulaire-comp').submit(function (e) {
// Empêchez la soumission normale du formulaire
e.preventDefault(); // Assurez-vous que cette ligne est présente
$('#loading').removeClass('hidden');
$('#articleIntrouvable').addClass('hidden');
$('#articleContainer1').addClass('hidden');
$('#articleContainer2').addClass('hidden');
// Reste du code pour gérer la soumission du formulaire
console.log('Formulaire soumis !');
// Récupérez les valeurs des champs du formulaire
const articleTitle1 = $('#articleTitle1').val();
const articleTitle2 = $('#articleTitle2').val();
// Créez un objet JavaScript avec les données à envoyer au serveur
const formData = {
articleTitle1: articleTitle1,
articleTitle2: articleTitle2
};
// Utilisez AJAX pour envoyer les données au serveur
$.ajax({
type: 'POST',
url: '/search',
data: formData,
dataType: 'json',
success: function (response) {
console.log(response);
$('#loading').addClass('hidden');
$('#articleIntrouvable').removeClass('hidden');
// Mettez à jour la section HTML avec les données reçues ici
// Vérifiez si response.articleInfo1 existe et contient les informations nécessaires
if (response.articleInfo1) {
$('#articleInfo1Title').html(response.articleInfo1.title);
// Article 1
$('#articleInfo1Title').html(response.articleInfo1.title);
$('#articleInfo1url').attr('href', response.articleInfo1.url);
$('#articleInfo1extract').html(response.articleInfo1.extract);
$('#articleInfo1lastEdit').html(response.articleInfo1.lastEdit);
$('#articleInfo1numRevisions').html(response.articleInfo1.numRevisions);
$('#articleInfo1pageSize').html(response.articleInfo1.pageSize);
$('#articleInfo1firstRevisionUser').html(response.articleInfo1.firstRevisionUser);
$('#articleInfo1latestRevisionId').html(response.articleInfo1.latestRevisionId);
$('#articleInfo1pageId').html(response.articleInfo1.pageId);
$('#articleInfo1latestVersion').html(response.articleInfo1.latestVersion);
$('#articleInfo1wordCount').html(response.articleInfo1.wordCount);
$('#articleInfo1charCount').html(response.articleInfo1.charCount);
$('#articleInfo1lastContributor').html(response.articleInfo1.lastContributor);
$('#articleInfo1image').attr('href', response.articleInfo1.image);
$('#articleInfo1image img').attr('src', response.articleInfo1.image);
// Récupérez la valeur de l'image
const articleInfo1ImageValue = response.articleInfo1.image;
// Récupérez l'élément image par son ID
const articleInfo1Image = document.getElementById("articleInfo1image");
if (articleInfo1ImageValue === "Non disponible") {
// Si la valeur est "Non disponible", masquez l'élément
articleInfo1Image.style.display = "none";
} else {
// Sinon, affichez l'élément
articleInfo1Image.style.display = "block"; // Vous pouvez utiliser "inline" si nécessaire
// Assurez-vous de définir la source de l'image ici en fonction de votre logique
articleInfo1Image.src = articleInfo1ImageValue;
}
const infoboxContainer1 = document.getElementById("infoboxcontainer1");
// Supprimer le contenu précédent de l'infobox
while (infoboxContainer1.firstChild) {
infoboxContainer1.removeChild(infoboxContainer1.firstChild);
}
// Ajouter les nouvelles informations pour articleInfo1
const infoboxData1 = response.articleInfo1.infobox;
Object.entries(infoboxData1).forEach(([key, value]) => {
const ligne = document.createElement("tr");
ligne.innerHTML = `<th>${key}</th> <td>${value}</td>`;
infoboxContainer1.appendChild(ligne);
});
} else {
// Traitez le cas où response.articleInfo1 n'existe pas
}
// Vérifiez si response.articleInfo2 existe et contient les informations nécessaires
if (response.articleInfo2) {
$('#articleInfo2Title').html(response.articleInfo2.title);
// Article 2
$('#articleInfo2Title').html(response.articleInfo2.title);
$('#articleInfo2url').attr('href', response.articleInfo2.url);
$('#articleInfo2extract').html(response.articleInfo2.extract);
$('#articleInfo2lastEdit').html(response.articleInfo2.lastEdit);
$('#articleInfo2numRevisions').html(response.articleInfo2.numRevisions);
$('#articleInfo2pageSize').html(response.articleInfo2.pageSize);
$('#articleInfo2firstRevisionUser').html(response.articleInfo2.firstRevisionUser);
$('#articleInfo2latestRevisionId').html(response.articleInfo2.latestRevisionId);
$('#articleInfo2pageId').html(response.articleInfo2.pageId);
$('#articleInfo2latestVersion').html(response.articleInfo2.latestVersion);
$('#articleInfo2wordCount').html(response.articleInfo2.wordCount);
$('#articleInfo2charCount').html(response.articleInfo2.charCount);
$('#articleInfo2lastContributor').html(response.articleInfo2.lastContributor);
$('#articleInfo2image').attr('href', response.articleInfo2.image);
$('#articleInfo2image img').attr('src', response.articleInfo2.image);
// Récupérez la valeur de l'image
const articleInfo2ImageValue = response.articleInfo2.image;
// Récupérez l'élément image par son ID
const articleInfo2Image = document.getElementById("articleInfo2image");
if (articleInfo2ImageValue === "Non disponible") {
// Si la valeur est "Non disponible", masquez l'élément
articleInfo2Image.style.display = "none";
} else {
// Sinon, affichez l'élément
articleInfo2Image.style.display = "block"; // Vous pouvez utiliser "inline" si nécessaire
// Assurez-vous de définir la source de l'image ici en fonction de votre logique
articleInfo2Image.src = articleInfo2ImageValue;
}
const infoboxContainer2 = document.getElementById("infoboxcontainer2");
// Supprimer le contenu précédent de l'infobox
while (infoboxContainer2.firstChild) {
infoboxContainer2.removeChild(infoboxContainer2.firstChild);
}
// Ajouter les nouvelles informations pour articleInfo2
const infoboxData2 = response.articleInfo2.infobox;
Object.entries(infoboxData2).forEach(([key, value]) => {
const ligne = document.createElement("tr");
ligne.innerHTML = `<th>${key}</th> <td>${value}</td>`;
infoboxContainer2.appendChild(ligne);
});
} else {
// Traitez le cas où response.articleInfo2 n'existe pas
}
// Vérifiez si toutes les informations nécessaires sont disponibles
const allInfoAvailable = checkIfAllInfoAvailable(response);
if (allInfoAvailable) {
$('#articleContainer1').removeClass('hidden');
$('#articleContainer2').removeClass('hidden');
$('#articleIntrouvable').addClass('hidden');
$(document).ready(function () {
// Sélectionnez le lien par son ID
$('html, body').animate({
scrollTop: $('#resultat').offset().top
}, 1000); // 1000 millisecondes (1 seconde) pour l'animation
});
} else {
// Traitez le cas où certaines informations ne sont pas disponibles
const articleIntrouvable = document.getElementById("articleIntrouvable");
let errorMessage = "";
if (!response.articleInfo1 && !response.articleInfo2) {
errorMessage += "Les articles " +
'<span class="underline">' + articleTitle1 + "</span> et " +
'<span class="underline">' + articleTitle2 + "</span> sont introuvables.";
}
else {
if (!response.articleInfo1) {
errorMessage += "L'article " + '<span class="underline">' + articleTitle1 + "</span> est introuvable.";
}
if (!response.articleInfo2) {
errorMessage += "L'article " + '<span class="underline">' + articleTitle2 + "</span> est introuvable.";
}
}
articleIntrouvable.innerHTML = errorMessage;
}
},
error: function (error) {
console.error('Erreur lors de la recherche d\'informations sur les articles :', error);
// Ajoutez une console.log pour vérifier si cette partie du code est exécutée
console.log('Erreur AJAX');
// Sélectionnez le div d'erreur par son ID
const articleIntrouvable = document.getElementById("articleIntrouvable");
// Mettez à jour le contenu du div avec un message d'erreur
articleIntrouvable.textContent = "Aucun article n'a été trouvé.";
// Assurez-vous de masquer les conteneurs d'articles
$('#articleContainer1').addClass('hidden');
$('#articleContainer2').addClass('hidden');
}
});
});
});
function checkIfAllInfoAvailable(response) {
// Vérifiez si response.articleInfo1 contient toutes les informations nécessaires
const articleInfo1 = response.articleInfo1;
if (!articleInfo1) {
return false; // Si articleInfo1 est absent, retournez false
}
// Ajoutez ici des vérifications spécifiques pour les propriétés nécessaires dans articleInfo1
if (!articleInfo1.title || !articleInfo1.url || !articleInfo1.extract || !articleInfo1.lastEdit) {
return false; // Si l'une des propriétés nécessaires est absente, retournez false
}
// Vérifiez si response.articleInfo2 contient toutes les informations nécessaires
const articleInfo2 = response.articleInfo2;
if (!articleInfo2) {
return false; // Si articleInfo2 est absent, retournez false
}
// Ajoutez ici des vérifications spécifiques pour les propriétés nécessaires dans articleInfo2
if (!articleInfo2.title || !articleInfo2.url || !articleInfo2.extract || !articleInfo2.lastEdit) {
return false; // Si l'une des propriétés nécessaires est absente, retournez false
}
// Si toutes les vérifications sont passées, cela signifie que toutes les informations nécessaires sont disponibles
return true;
}
// === SMOOTH SCROLL ~(^^)~
// Fait scroll jusqu'au formulaire de comparaison
$(document).ready(function () {
// Sélectionnez le lien par son ID
$('#letzgooo').click(function (e) {
e.preventDefault(); // Empêchez le comportement de clic par défaut
$('html, body').animate({
scrollTop: $('#comparaison').offset().top
}, 1000); // 1000 millisecondes (1 seconde) pour l'animation
});
});
// Fait scroll une fois le formulaire envoyé
$(document).ready(function () {
// Sélectionnez le lien par son ID
$('#lance-comparaison').click(function (e) {
$('html, body').animate({
scrollTop: $('#resultat').offset().top
}, 1000); // 1000 millisecondes (1 seconde) pour l'animation
});
});
// === BANNIERE LES COOKIES ===
var config = {
"primaryColor": "#4A6CF7",
"darkColor": "#3b3e4a",
"lightColor": "#ffffff",
"themeMode": "dark",
"showSettingsBtn": false,
"showCloseIcon": false,
"showDeclineBtn": true,
"fullWidth": false,
"displayPosition": "left",
"settingsBtnLabel": "Customize",
"delay": 1400,
"expires": 365,
"title": "Acceptez nos délicieux cookies !",
"description": "Nous utilisons des cookies pour améliorer votre expérience sur notre site web. En continuant à naviguer, vous acceptez notre utilisation de cookies. Découvrez comment nous utilisons les cookies dans notre politique de confidentialité.",
"acceptBtnLabel": "Accepter",
"declineInfoBtnLabel": "Refuser",
"moreInfoBtnLink": "/privacy-policy/",
"moreInfoBtnLabel": "Politique de Confidentialité",
};
function appendScriptInHead(e) {
headerScripts.forEach(function (c) {
c.type === e && $("head").append(c.value);
});
}
var injectScripts = function () {
"undefined" != typeof headerScripts &&
(cookieBanner.isPreferenceAccepted("analytics") === !0 &&
appendScriptInHead("analytics"),
cookieBanner.isPreferenceAccepted("marketing") === !0 &&
appendScriptInHead("marketing"),
cookieBanner.isPreferenceAccepted("preferences") === !0 &&
appendScriptInHead("preferences"));
};
!function (e) {
var c = this
e.fn.cookieBanner = function () {
e(":root").css("--cookieBannerLight", config.lightColor), e(":root").css("--cookieBannerDark", config.darkColor)
var c = i("cookieConsent")
// Bloquer le scroll
document.body.style.overflow = 'hidden';
if (c) injectScripts()
else {
e("#cookieBanner").remove()
var n = '<li><input type="checkbox" name="gdprPrefItem" value="necessary" checked="checked" disabled="disabled" data-compulsory="on"> <label title="' + config.necessaryCookieTypeDesc + '">' + config.necessaryCookieTypeLabel + "</label></li>"
e.each(config.cookieTypes, function (e, c) {
if ("" !== c.type && "" !== c.value) {
var i = ""
c.description !== !1 && (i = ' title="' + c.description + '"'), n += '<li><input type="checkbox" id="gdprPrefItem' + c.value + '" name="gdprPrefItem" value="' + c.value + '" data-compulsory="on"> <label for="gdprPrefItem' + c.value + '"' + i + ">" + c.type + "</label></li>"
}
})
var p = '<div id="cookieBanner" class="' + config.themeMode + " display-" + config.displayPosition + " full-width-" + config.fullWidth + '"><div id="closeIcon">' + s + '</div><div class="title-wrap">' + a + "<h4>" + config.title + '</h4></div><div class="content-wrap"><div class="msg-wrap"><p>' + config.description + ' <a style="color:' + config.primaryColor + ';" href="' + config.moreInfoBtnLink + '">' + config.moreInfoBtnLabel + '</a></p><div id="cookieSettings">' + l + config.settingsBtnLabel + '</div><div id="cookieTypes" style="display:none;"><h5>' + config.cookieTypesTitle + "</h5><ul>" + n + '</ul></div></div><div class="btn-wrap"><button id="cookieAccept" style="color:' + config.lightColor + ";background:" + config.primaryColor + ";border: 1px solid " + config.primaryColor + ';" type="button">' + config.acceptBtnLabel + '</button><button id="cookieReject" style="color:' + config.primaryColor + ";border: 1px solid " + config.primaryColor + ';" type="button">' + config.declineInfoBtnLabel + "</button></div>"
setTimeout(function () {
e("body").append(p),
e("#cookieBanner").hide().fadeIn("slow"),
config.showSettingsBtn || e("#cookieSettings").hide(),
config.showDeclineBtn || e("#cookieReject").hide(),
config.showCloseIcon || e("#closeIcon").hide();
// Gestionnaire d'événement pour le bouton "Accepter"
e("body").on("click", "#cookieAccept", function () {
r(!0, config.expires);
e(".cookieBlur").fadeOut("fast", function () {
e(this).remove();
});
// Réactiver le défillement
document.body.style.overflow = 'auto';
var CookieBannerEnd = document.getElementById("cookieBlur");
CookieBannerEnd.id = "";
// Enregistrez un indicateur dans le stockage local
localStorage.setItem("EndOfCookieBanner", "true");
e("#cookieBlur").css("opacity", 0);
});
// Gestionnaire d'événement pour le bouton "Refuser"
e("body").on("click", "#cookieReject", function () {
r(!1, config.expires);
e(".cookieBlur").fadeOut("fast", function () {
e(this).remove();
});
// Réactiver le défillement
document.body.style.overflow = 'auto';
var CookieBannerEnd = document.getElementById("cookieBlur");
CookieBannerEnd.id = "";
// Enregistrez un indicateur dans le stockage local
localStorage.setItem("EndOfCookieBanner", "true");
e("#cookieBlur").css("opacity", 0);
});
}, config.delay);
e("body").on("click", "#cookieAccept",
function () {
r(!0, config.expires), e('input[name="gdprPrefItem"][data-compulsory="on"]').prop("checked", !0)
var c = []
e.each(e('input[name="gdprPrefItem"]').serializeArray(), function (e, i) { c.push(i.value) }), t("cookieConsentPrefs", encodeURIComponent(JSON.stringify(c)), { expires: o(365), path: "/" }), injectScripts()
}), e("body").on("click", "#cookieSettings", function () { e('input[name="gdprPrefItem"]:not(:disabled)').attr("data-compulsory", "off").prop("checked", !0), e("#cookieTypes").toggle("fast", function () { e("#cookieSettings").prop("disabled", !1) }) }), e("body").on("click", "#closeIcon", function () { e("#cookieBanner").remove() }), e("body").on("click", "#cookieReject", function () { r(!1, config.expires), t("cookieConsentPrefs", "", { expires: o(-365), path: "/" }) })
}
}
var i = function (e) { return document.cookie.indexOf(e) > -1 ? !0 : !1 }, r = function (i, r) { t("cookieConsent", i, { expires: o(r), path: "/" }), e("#cookieBanner").fadeOut("fast", function () { e(c).remove() }) }, t = function (e, c) {
var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}
document.cookie = "".concat(e, "=").concat(c).concat(Object.keys(i).reduce(function (e, c) { return e + ";".concat(c.replace(/([A-Z])/g, function (e) { return "-" + e.toLowerCase() }), "=").concat(i[c]) }, ""))
}, o = function (e) {
var c = new Date
return c.setTime(c.getTime() + 24 * e * 60 * 60 * 1e3), c.toUTCString()
}, n = function (e) {
var c = document.cookie.split(";").reduce(function (e, c) {
var i = c.split("=").map(function (e) { return e.trim() }), r = _slicedToArray(i, 2), t = r[0], o = r[1]
return t && o && (e[t] = decodeURIComponent(o)), e
}, {})
return e ? c[e] || !1 : c
}, l = '<?xml version="1.0" ?><svg height="16px" version="1.1" viewBox="0 0 20 20" width="16px" xmlns="http://www.w3.org/2000/svg" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns" xmlns:xlink="http://www.w3.org/1999/xlink"><title/><desc/><defs/><g fill="none" fill-rule="evenodd" id="Page-1" stroke="none" stroke-width="1"><g fill="#bfb9b9" id="Core" transform="translate(-464.000000, -380.000000)"><g id="settings" transform="translate(464.000000, 380.000000)"><path d="M17.4,11 C17.4,10.7 17.5,10.4 17.5,10 C17.5,9.6 17.5,9.3 17.4,9 L19.5,7.3 C19.7,7.1 19.7,6.9 19.6,6.7 L17.6,3.2 C17.5,3.1 17.3,3 17,3.1 L14.5,4.1 C14,3.7 13.4,3.4 12.8,3.1 L12.4,0.5 C12.5,0.2 12.2,0 12,0 L8,0 C7.8,0 7.5,0.2 7.5,0.4 L7.1,3.1 C6.5,3.3 6,3.7 5.4,4.1 L3,3.1 C2.7,3 2.5,3.1 2.3,3.3 L0.3,6.8 C0.2,6.9 0.3,7.2 0.5,7.4 L2.6,9 C2.6,9.3 2.5,9.6 2.5,10 C2.5,10.4 2.5,10.7 2.6,11 L0.5,12.7 C0.3,12.9 0.3,13.1 0.4,13.3 L2.4,16.8 C2.5,16.9 2.7,17 3,16.9 L5.5,15.9 C6,16.3 6.6,16.6 7.2,16.9 L7.6,19.5 C7.6,19.7 7.8,19.9 8.1,19.9 L12.1,19.9 C12.3,19.9 12.6,19.7 12.6,19.5 L13,16.9 C13.6,16.6 14.2,16.3 14.7,15.9 L17.2,16.9 C17.4,17 17.7,16.9 17.8,16.7 L19.8,13.2 C19.9,13 19.9,12.7 19.7,12.6 L17.4,11 L17.4,11 Z M10,13.5 C8.1,13.5 6.5,11.9 6.5,10 C6.5,8.1 8.1,6.5 10,6.5 C11.9,6.5 13.5,8.1 13.5,10 C13.5,11.9 11.9,13.5 10,13.5 L10,13.5 Z" id="Shape"/></g></g></g></svg>', a = '<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40"> <g fill="none" fill-rule="evenodd"> <circle cx="20" cy="20" r="20" fill="#D5A150"></circle> <path fill="#AD712C" d="M32.44 4.34a19.914 19.914 0 0 1 4.34 12.44c0 11.046-8.954 20-20 20a19.914 19.914 0 0 1-12.44-4.34C8.004 37.046 13.657 40 20 40c11.046 0 20-8.954 20-20 0-6.343-2.954-11.996-7.56-15.66z"> </path> <path fill="#C98A2E" d="M10.903 11.35c-.412 0-.824-.157-1.139-.471a4.432 4.432 0 0 1 0-6.26 4.397 4.397 0 0 1 3.13-1.297c1.183 0 2.294.46 3.13 1.296a1.61 1.61 0 0 1-2.276 2.277 1.2 1.2 0 0 0-.854-.354 1.208 1.208 0 0 0-.854 2.06 1.61 1.61 0 0 1-1.137 2.749z"> </path> <circle cx="12.894" cy="7.749" r="2.817" fill="#674230"></circle> <path fill="#7A5436" d="M10.09 7.48l-.003.032a1.566 1.566 0 0 0 1.624 1.683 2.824 2.824 0 0 0 2.703-2.578 1.566 1.566 0 0 0-1.624-1.683 2.823 2.823 0 0 0-2.7 2.546z"> </path> <path fill="#C98A2E" d="M4.464 24.227c-.412 0-.824-.157-1.138-.471a4.432 4.432 0 0 1 0-6.26 4.398 4.398 0 0 1 3.13-1.297c1.182 0 2.294.46 3.13 1.297a1.61 1.61 0 0 1-2.277 2.276 1.2 1.2 0 0 0-.853-.353 1.208 1.208 0 0 0-.854 2.06 1.61 1.61 0 0 1-1.138 2.748z"> </path> <circle cx="6.456" cy="20.626" r="2.817" fill="#674230"></circle> <path fill="#7A5436" d="M3.651 20.356a1.566 1.566 0 0 0 1.62 1.716 2.824 2.824 0 0 0 2.703-2.578 1.566 1.566 0 0 0-1.622-1.683 2.824 2.824 0 0 0-2.7 2.546z"> </path> <path fill="#C98A2E" d="M10.098 32.276c-.412 0-.824-.158-1.138-.472a4.432 4.432 0 0 1 0-6.26 4.397 4.397 0 0 1 3.13-1.297c1.182 0 2.294.46 3.13 1.297a1.61 1.61 0 0 1-2.277 2.276 1.2 1.2 0 0 0-.853-.353 1.208 1.208 0 0 0-.854 2.06 1.61 1.61 0 0 1-1.138 2.749z"> </path> <circle cx="12.089" cy="28.674" r="2.817" fill="#674230"></circle> <path fill="#7A5436" d="M9.285 28.405a1.566 1.566 0 0 0 1.62 1.716 2.824 2.824 0 0 0 2.703-2.578 1.566 1.566 0 0 0-1.622-1.684 2.824 2.824 0 0 0-2.7 2.546z"> </path> <path fill="#C98A2E" d="M18.95 37.91c-.411 0-.823-.158-1.137-.472a4.432 4.432 0 0 1 0-6.26 4.397 4.397 0 0 1 3.13-1.297c1.182 0 2.294.46 3.13 1.297a1.61 1.61 0 0 1-2.277 2.276 1.2 1.2 0 0 0-.853-.353 1.208 1.208 0 0 0-.854 2.06 1.61 1.61 0 0 1-1.138 2.748z"> </path> <circle cx="20.942" cy="34.308" r="2.817" fill="#674230"></circle> <path fill="#7A5436" d="M18.138 34.038l-.002.033a1.566 1.566 0 0 0 1.623 1.684 2.824 2.824 0 0 0 2.703-2.578 1.566 1.566 0 0 0-1.623-1.684 2.824 2.824 0 0 0-2.7 2.546z"> </path> <path fill="#C98A2E" d="M20.56 15.385c-.411 0-.823-.157-1.138-.471a4.432 4.432 0 0 1 0-6.26 4.397 4.397 0 0 1 3.13-1.297c1.183 0 2.294.46 3.13 1.296a1.61 1.61 0 0 1-2.276 2.277 1.2 1.2 0 0 0-.854-.354 1.208 1.208 0 0 0-.854 2.06 1.61 1.61 0 0 1-1.137 2.75z"> </path> <circle cx="22.552" cy="11.784" r="2.817" fill="#674230"></circle> <path fill="#7A5436" d="M19.748 11.514l-.003.033a1.566 1.566 0 0 0 1.624 1.683 2.824 2.824 0 0 0 2.703-2.578 1.566 1.566 0 0 0-1.624-1.683 2.823 2.823 0 0 0-2.7 2.546z"> </path> <path fill="#C98A2E" d="M30.219 29.861c-.412 0-.824-.157-1.139-.471a4.432 4.432 0 0 1 0-6.26 4.397 4.397 0 0 1 3.13-1.297c1.183 0 2.294.46 3.13 1.296a1.61 1.61 0 0 1-2.276 2.277 1.2 1.2 0 0 0-.854-.354 1.208 1.208 0 0 0-.854 2.06 1.61 1.61 0 0 1-1.137 2.75z"> </path> <circle cx="32.21" cy="26.26" r="2.817" fill="#674230"></circle> <path fill="#7A5436" d="M29.406 25.99a1.566 1.566 0 0 0 1.62 1.716 2.824 2.824 0 0 0 2.703-2.578 1.566 1.566 0 0 0-1.623-1.683 2.824 2.824 0 0 0-2.7 2.546z"> </path> <path fill="#C98A2E" d="M29.414 14.57c-.412 0-.824-.158-1.139-.472a4.432 4.432 0 0 1 0-6.26 4.397 4.397 0 0 1 3.13-1.297c1.183 0 2.295.46 3.13 1.297a1.61 1.61 0 0 1-2.276 2.276 1.2 1.2 0 0 0-.853-.353 1.208 1.208 0 0 0-.854 2.06 1.61 1.61 0 0 1-1.138 2.748z"> </path> <circle cx="31.405" cy="10.968" r="2.817" fill="#674230"></circle> <path fill="#7A5436" d="M28.601 10.698a1.566 1.566 0 0 0 1.62 1.716 2.824 2.824 0 0 0 2.703-2.578 1.566 1.566 0 0 0-1.622-1.683 2.824 2.824 0 0 0-2.7 2.546z"> </path> <path fill="#C98A2E" d="M17.341 24.227c-.412 0-.824-.157-1.138-.471a4.432 4.432 0 0 1 0-6.26 4.397 4.397 0 0 1 3.13-1.297c1.183 0 2.294.46 3.13 1.297a1.61 1.61 0 0 1-2.276 2.276 1.2 1.2 0 0 0-.854-.354 1.208 1.208 0 0 0-.854 2.06 1.61 1.61 0 0 1-1.138 2.75z"> </path> <circle cx="19.333" cy="20.626" r="2.817" fill="#674230"></circle> <path fill="#7A5436" d="M16.529 20.356l-.003.033a1.566 1.566 0 0 0 1.623 1.684 2.824 2.824 0 0 0 2.703-2.578 1.566 1.566 0 0 0-1.623-1.684 2.824 2.824 0 0 0-2.7 2.546z"> </path> <g fill="#AD712C" transform="translate(2.656 1.875)"> <circle cx="7.485" cy="21.143" r="1"></circle> <circle cx="11.509" cy="21.143" r="1"></circle> <circle cx="9.497" cy="17.521" r="1"></circle> <circle cx="2.253" cy="24.765" r="1"></circle> <circle cx="10.301" cy="33.618" r="1"></circle> <circle cx="12.716" cy="30.399" r="1"></circle> <circle cx="16.74" cy="25.57" r="1"></circle> <circle cx="23.179" cy="23.155" r="1"></circle> <circle cx="21.569" cy="24.765" r="1"></circle> <circle cx="23.984" cy="27.179" r="1"></circle> <circle cx="23.984" cy="32.008" r="1"></circle> <circle cx="32.837" cy="15.107" r="1"></circle> <circle cx="30.422" cy="31.203" r="1"></circle> <circle cx="18.35" cy=".62" r="1"></circle> <circle cx="3.863" cy="7.863" r="1"></circle> <circle cx=".644" cy="12.692" r="1"></circle> <circle cx="9.899" cy="13.9" r="1"></circle> <circle cx="12.314" cy="12.692" r="1"></circle> <circle cx="9.899" cy="11.485" r="1"></circle> <circle cx="21.167" cy="17.521" r="1"></circle> <circle cx="15.935" cy="5.449" r="1"></circle> <circle cx="23.581" cy="12.692" r="1"></circle> <circle cx="24.788" cy="16.314" r="1"></circle> <circle cx="27.203" cy="16.314" r="1"></circle> <circle cx="27.203" cy="18.729" r="1"></circle> <circle cx="22.776" cy="4.242" r="1"></circle> <circle cx="25.191" cy="3.034" r="1"></circle> </g> </g></svg>', s = '<?xml version="1.0" ?><svg viewBox="0 0 96 96" xmlns="http://www.w3.org/2000/svg"><title/><g fill="#bfb9b9"><path d="M48,0A48,48,0,1,0,96,48,48.0512,48.0512,0,0,0,48,0Zm0,84A36,36,0,1,1,84,48,36.0393,36.0393,0,0,1,48,84Z"/><path d="M64.2422,31.7578a5.9979,5.9979,0,0,0-8.4844,0L48,39.5156l-7.7578-7.7578a5.9994,5.9994,0,0,0-8.4844,8.4844L39.5156,48l-7.7578,7.7578a5.9994,5.9994,0,1,0,8.4844,8.4844L48,56.4844l7.7578,7.7578a5.9994,5.9994,0,0,0,8.4844-8.4844L56.4844,48l7.7578-7.7578A5.9979,5.9979,0,0,0,64.2422,31.7578Z"/></g></svg>'
return window.cookieBanner = {
init: function () { e.fn.cookieBanner() }, isAccepted: function () {
var e = n("cookieConsent")
return JSON.parse(e)
}, getPreferences: function () {
var e = n("cookieConsentPrefs")
return JSON.parse(e)
}, isPreferenceAccepted: function (e) {
var c = n("cookieConsent"), i = n("cookieConsentPrefs")
return i = JSON.parse(i), c === !1 ? !1 : i === !1 || -1 === i.indexOf(e) ? !1 : !0
}
}
}(jQuery)
// Lorsque la page se charge, vérifier le stockage local
$(document).ready(function () {
var CookieBannerEnd = document.getElementById("cookieBlur");
if (localStorage.getItem("EndOfCookieBanner") === "true") {
CookieBannerEnd.id = "";
// Pour réactiver le défilement
document.body.style.overflow = 'auto';
}
});