(function () { 'use strict'; var modalEl = null; var iframeEl = null; var titleEl = null; var modalReady = false; function ensureModal() { if (modalEl) { return; } modalEl = document.createElement('div'); modalEl.className = 'modal fade eventup-registration-modal'; modalEl.id = 'eventupRegistrationModal'; modalEl.setAttribute('tabindex', '-1'); modalEl.setAttribute('role', 'dialog'); modalEl.setAttribute('aria-labelledby', 'eventupRegistrationModalTitle'); modalEl.setAttribute('aria-hidden', 'true'); modalEl.innerHTML = ''; document.body.appendChild(modalEl); iframeEl = modalEl.querySelector('.eventup-registration-modal__frame'); titleEl = modalEl.querySelector('#eventupRegistrationModalTitle'); if (window.jQuery) { window.jQuery(modalEl).on('hidden.bs.modal', function () { if (iframeEl) { iframeEl.src = 'about:blank'; } }); } modalReady = true; } function buildEmbedUrl(url) { if (!url) { return ''; } try { var parsed = new URL(url, window.location.href); parsed.searchParams.set('embed', '1'); return parsed.toString(); } catch (error) { var joiner = url.indexOf('?') >= 0 ? '&' : '?'; return url + joiner + 'embed=1'; } } function resolveRegistrationUrl(cta, config) { if (cta && cta.url) { return cta.url; } var meta = (config && config.meta) || {}; var eventId = meta.eventId; var webBase = meta.webBaseUrl; if (eventId && webBase) { return String(webBase).replace(/\/$/, '') + '/event/' + eventId + '/register'; } return ''; } function openModal(url, title) { ensureModal(); if (!url) { console.warn('[registration-modal] No registration URL configured.'); return; } if (titleEl) { titleEl.textContent = title || 'Register'; } if (iframeEl) { iframeEl.src = buildEmbedUrl(url); } if (window.jQuery) { window.jQuery(modalEl).modal('show'); } else { modalEl.classList.add('show'); modalEl.style.display = 'block'; modalEl.removeAttribute('aria-hidden'); } } function bindLink(link, cta, config) { if (!link || link.getAttribute('data-registration-modal-bound') === 'true') { return; } link.setAttribute('data-registration-modal-bound', 'true'); link.setAttribute('data-cta-target', 'modal'); link.href = '#'; link.addEventListener('click', function (event) { event.preventDefault(); openModal(resolveRegistrationUrl(cta, config), cta && cta.text ? cta.text : 'Register'); }); } window.EventUpRegistrationModal = { bindLink: bindLink, open: openModal, resolveUrl: resolveRegistrationUrl, isReady: function () { return modalReady; }, }; })();