(() => { const heliosCiblePrix = document.querySelector("#ajaxPriceTTC"); // source "0,00€T.T.C" const astroBoite = document.getElementById("sun-paybox"); const orionLigne = document.getElementById("sun-line"); const apolloOptions = [...astroBoite.querySelectorAll(".sun-chip")]; const photonParse = (txt) => { if (!txt) return NaN; const brut = String(txt).replace(/\s|[^\d,\.] /g, ""); // enlève €TTC, NBSP, etc. // Si virgule présente et point aussi, on suppose que la virgule est décimale française const canon = brut.includes(",") ? brut.replace(/\./g, "").replace(",", ".") : brut; return Number.parseFloat(canon); }; // 2 décimales const coronaFormat = (n) => new Intl.NumberFormat("fr-FR", { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(n); const solsticeTexte = (total, mode) => { if (!Number.isFinite(total) || total <= 0) return "Montant indisponible."; if (mode === 15) { return `Paiement différé à j+15 : ${coronaFormat(total)} €`; } const rayon = total / mode; return `${mode} mensualités de ${coronaFormat(rayon)} € (sans frais)`; }; const aphelionMontant = () => { if (!heliosCiblePrix) return NaN; const contenu = heliosCiblePrix.textContent || heliosCiblePrix.innerText || ""; return photonParse(contenu); }; const zenithMaj = () => { const total = aphelionMontant(); const actif = astroBoite.querySelector(".sun-chip.sun-active"); const mode = Number(actif?.dataset.sunMode || 3); orionLigne.textContent = solsticeTexte(total, mode); if (!Number.isFinite(total)) { orionLigne.classList.add("sun-mute"); } else { orionLigne.classList.remove("sun-mute"); } }; apolloOptions.forEach(btn => { btn.addEventListener("click", () => { apolloOptions.forEach(b => b.classList.remove("sun-active")); btn.classList.add("sun-active"); zenithMaj(); }); }); if (heliosCiblePrix) { const coronaObserver = new MutationObserver(zenithMaj); coronaObserver.observe(heliosCiblePrix, { characterData: true, subtree: true, childList: true }); } zenithMaj(); })();