(() => { const heliosCiblePrix = document.querySelector("#ajaxPriceTTC"); const astroBoite = document.getElementById("sun-paybox"); const orionLigne = document.getElementById("sun-line"); if (!astroBoite || !orionLigne) return; // parsing prix const photonParse = (txt) => { if (!txt) return NaN; const brut = String(txt).replace(/\s|[^\d,\.]/g, ""); const canon = brut.includes(",") ? brut.replace(/\./g, "").replace(",", ".") : brut; const val = Number.parseFloat(canon); return Number.isFinite(val) ? val : NaN; }; 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); }; // met à jour le texte en fonction du bouton actif 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); orionLigne.classList.toggle("sun-mute", !Number.isFinite(total)); }; // fonction pour attacher les clics sur tous les boutons actuels const attachListeners = () => { const buttons = astroBoite.querySelectorAll(".sun-chip"); buttons.forEach(btn => { if (!btn.__listenerAttached) { btn.addEventListener("click", (e) => { e.preventDefault(); buttons.forEach(b => b.classList.remove("sun-active")); btn.classList.add("sun-active"); zenithMaj(); }); btn.__listenerAttached = true; } }); }; attachListeners(); // observer si le prix change dynamiquement if (heliosCiblePrix) { const observer = new MutationObserver(zenithMaj); observer.observe(heliosCiblePrix, { characterData: true, subtree: true, childList: true }); } // initial zenithMaj(); })();