}; function normPath(p) { return (p || "").replace(/\/$/, "").toLowerCase(); } function addDirectIdealAfter(primaryBtn, cfg) { if (!primaryBtn || !cfg || !cfg.url) return; const hrefKey = primaryBtn.getAttribute("href") || ""; const parent = primaryBtn.parentElement || document.body; if (parent.querySelector(`[data-direct-ideal-for="${CSS.escape(hrefKey)}"]`)) return; const idealBtn = document.createElement("a"); idealBtn.href = cfg.url; idealBtn.textContent = cfg.text || "Betaal met iDEAL | Wero"; idealBtn.className = primaryBtn.className; idealBtn.style.display = "block"; idealBtn.style.marginTop = "10px"; idealBtn.style.textDecoration = "none"; idealBtn.setAttribute("data-direct-ideal-for", hrefKey); primaryBtn.insertAdjacentElement("afterend", idealBtn); } function runDirectCTA() { const path = normPath(window.location.pathname); const cfgList = DIRECT_CTA[path]; if (!cfgList || !cfgList.length) return; cfgList.forEach(cfg => { let btn = document.querySelector(`a[href="${cfg.matchHref}"]`); if (!btn) { btn = [...document.querySelectorAll("a")] .find(a => (a.getAttribute("href") || "").includes(cfg.matchHref)); } if (btn) addDirectIdealAfter(btn, cfg); }); } let tries = 0; const interval = setInterval(() => { runDirectCTA(); tries++; if (tries > 80) clearInterval(interval); }, 250); new MutationObserver(runDirectCTA).observe(document.documentElement, { childList: true, subtree: true }); })(); // ============================ // BUTTON INSERT LOGIC (cart_item) // ============================ function addButtonAfter(cartBtnEl, cta) { if (!cartBtnEl || !cta || !cta.url) return; const hrefKey = cartBtnEl.getAttribute("href") || ""; const parent = cartBtnEl.parentElement; if (parent && parent.querySelector(`[data-ideal-for="${CSS.escape(hrefKey)}"]`)) return; const idealBtn = document.createElement("a"); idealBtn.href = cta.url; idealBtn.textContent = cta.text || "Betaal met iDEAL | Wero"; idealBtn.className = cartBtnEl.className; idealBtn.style.display = "block"; idealBtn.style.marginTop = "10px"; idealBtn.style.textDecoration = "none"; idealBtn.setAttribute("data-ideal-for", hrefKey); cartBtnEl.insertAdjacentElement("afterend", idealBtn); } // ============================ // RUNNER // ============================ function getPageConfig(path) { if (MULTI_DATE_CTA[path]) return MULTI_DATE_CTA[path]; const lower = path.toLowerCase(); const key = Object.keys(MULTI_DATE_CTA).find(k => k.toLowerCase() === lower); return key ? MULTI_DATE_CTA[key] : null; } function run() { const path = window.location.pathname.replace(/\/$/, ""); const pageConfig = getPageConfig(path); if (!pageConfig) return; const cartButtons = Array.from(document.querySelectorAll('a[href*="#cart_item_"]')); cartButtons.forEach(btn => { const match = (btn.getAttribute("href") || "").match(/(cart_item_[A-Za-z0-9]+)/); if (!match) return; const cartItem = match[1]; const cta = pageConfig[cartItem]; if (cta) addButtonAfter(btn, cta); }); } // ============================ // KAJABI SAFE INIT // ============================ let tries = 0; const interval = setInterval(() => { run(); tries++; if (tries > 80) clearInterval(interval); }, 250); const observer = new MutationObserver(run); observer.observe(document.documentElement, { childList: true, subtree: true }); })();