(function(){ var container = document.getElementById('trainer-cert-calculator'); if (!container) { return; } var styleId = 'trainer-cert-calculator-styles'; if (!document.getElementById(styleId)) { var style = document.createElement('style'); style.id = styleId; style.textContent = "#trainer-cert-calculator .trainer-cert-calculator{background:#f8fafc;border-radius:16px;padding:1.75rem;box-shadow:0 18px 35px rgba(15,23,42,0.12);font-family:inherit;color:#0f172a}#trainer-cert-calculator .trainer-cert-calculator__intro{font-size:1.05rem;margin-bottom:1.5rem;line-height:1.6}#trainer-cert-calculator .trainer-cert-calculator__courses{display:flex;flex-direction:column;gap:1.1rem;margin:0\n0 1.75rem 0}#trainer-cert-calculator .trainer-cert-calculator__course{display:grid;grid-template-columns:80px 1fr minmax(120px,140px);gap:1rem;align-items:center;background:#fff;border-radius:14px;padding:1rem 1.2rem;box-shadow:0 10px 22px rgba(15,23,42,0.08);transition:transform 0.2s ease,box-shadow 0.2s ease}#trainer-cert-calculator .trainer-cert-calculator__course:hover{transform:translateY(-2px);box-shadow:0 16px 30px rgba(15,23,42,0.12)}#trainer-cert-calculator .trainer-cert-calculator__course:focus-within{box-shadow:0 0 0 3px rgba(59,130,246,0.35)}#trainer-cert-calculator .trainer-cert-calculator__image{width:70px;height:70px;border-radius:50%;overflow:hidden;background:linear-gradient(135deg,#eef2ff,#d8b4fe);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.6rem;color:#4c1d95}#trainer-cert-calculator .trainer-cert-calculator__image\nimg{width:100%;height:100%;object-fit:cover;display:block}#trainer-cert-calculator .trainer-cert-calculator__image--placeholder{letter-spacing:0.03em}#trainer-cert-calculator .trainer-cert-calculator__details{display:flex;flex-direction:column;gap:0.35rem}#trainer-cert-calculator .trainer-cert-calculator__course-title{margin:0;font-size:1.1rem;line-height:1.4}#trainer-cert-calculator .trainer-cert-calculator__per-person{margin:0;color:#475569;font-size:0.95rem}#trainer-cert-calculator .trainer-cert-calculator__input{display:flex;flex-direction:column;gap:0.4rem;align-items:flex-start}#trainer-cert-calculator .trainer-cert-calculator__label{font-size:0.85rem;font-weight:600;color:#1e293b}#trainer-cert-calculator .trainer-cert-calculator__field{width:90%;border-radius:10px;border:1px\nsolid rgba(148,163,184,0.6);padding:0.55rem 0.65rem;font-size:1rem;transition:border-color 0.2s ease,box-shadow 0.2s ease}#trainer-cert-calculator .trainer-cert-calculator__field:focus{outline:none;border-color:#6366f1;box-shadow:0 0 0 3px rgba(99,102,241,0.25)}#trainer-cert-calculator .trainer-cert-calculator__summary{display:flex;flex-direction:column;gap:1rem;background:#0f172a;border-radius:14px;padding:1.5rem;color:#f8fafc}#trainer-cert-calculator .trainer-cert-calculator__owned-heading{display:flex;justify-content:space-between;align-items:center;margin:0;font-weight:600}#trainer-cert-calculator .trainer-cert-calculator__owned-heading-text{margin-right:1rem}#trainer-cert-calculator .trainer-cert-calculator__owned-total{text-align:right;font-weight:700}#trainer-cert-calculator .trainer-cert-calculator__total{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:0.5rem;font-size:1.1rem}#trainer-cert-calculator .trainer-cert-calculator__total-value{font-weight:700;font-size:1.6rem}#trainer-cert-calculator .trainer-cert-calculator__button{display:inline-flex;align-items:center;justify-content:center;gap:0.4rem;text-decoration:none;font-weight:600;font-size:1rem;border-radius:999px;padding:0.8rem 1.6rem;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;transition:transform 0.2s ease,box-shadow 0.2s ease}#trainer-cert-calculator .trainer-cert-calculator__button:hover{transform:translateY(-1px);box-shadow:0 12px 20px rgba(99,102,241,0.35)}#trainer-cert-calculator .trainer-cert-calculator__button--disabled{background:linear-gradient(135deg,#94a3b8,#64748b);cursor:not-allowed;box-shadow:none}#trainer-cert-calculator .trainer-cert-calculator__button--disabled:hover{transform:none;box-shadow:none}#trainer-cert-calculator .trainer-cert-calculator__notice{margin:0;font-size:0.95rem;color:#e0f2fe}#trainer-cert-calculator .trainer-cert-calculator--message{background:#1e293b;color:#f8fafc;text-align:center}#trainer-cert-calculator .trainer-cert-calculator--message .trainer-cert-calculator__notice{color:#f8fafc}@media (max-width:768px){#trainer-cert-calculator .trainer-cert-calculator__course{grid-template-columns:60px 1fr;grid-template-areas:\u0022image title\u0022 \u0022image input\u0022}#trainer-cert-calculator .trainer-cert-calculator__image{grid-area:image}#trainer-cert-calculator .trainer-cert-calculator__details{grid-area:title}#trainer-cert-calculator .trainer-cert-calculator__input{grid-area:input;width:100%;flex-direction:row;align-items:center;justify-content:space-between}#trainer-cert-calculator .trainer-cert-calculator__label{margin-right:0.5rem}}@media (max-width:520px){#trainer-cert-calculator .trainer-cert-calculator{padding:1.25rem}#trainer-cert-calculator .trainer-cert-calculator__summary{padding:1.25rem}#trainer-cert-calculator .trainer-cert-calculator__total{flex-direction:column;align-items:flex-start}#trainer-cert-calculator .trainer-cert-calculator__button{width:100%}}"; document.head.appendChild(style); } container.innerHTML = "\u003Cdiv class=\u0022trainer-cert-calculator trainer-cert-calculator--message\u0022\u003E\n \u003Cp class=\u0022trainer-cert-calculator__notice\u0022\u003EPlease log in as an active GoE trainer to use the certification credit calculator.\u003C/p\u003E\n\u003C/div\u003E\n"; var inputElements = container.querySelectorAll('input[data-credits]'); var totalValueElement = container.querySelector('[data-total-value]'); var totalLabelElement = container.querySelector('[data-total-label]'); var basketButton = container.querySelector('[data-add-button]'); var buttonTextElement = container.querySelector('[data-button-text]'); var summaryElement = container.querySelector('.trainer-cert-calculator__summary'); var baseUrl = basketButton ? basketButton.getAttribute('data-base-url') : null; var totalLabelSingular = totalLabelElement ? totalLabelElement.getAttribute('data-total-label-singular') : ''; var totalLabelPlural = totalLabelElement ? totalLabelElement.getAttribute('data-total-label-plural') : ''; var buttonLabelSingular = basketButton ? basketButton.getAttribute('data-button-label-singular') : ''; var buttonLabelPlural = basketButton ? basketButton.getAttribute('data-button-label-plural') : ''; var ownedTotal = 0; if (summaryElement && summaryElement.hasAttribute('data-owned-total')) { ownedTotal = Number(summaryElement.getAttribute('data-owned-total')) || 0; } function sanitiseField(field) { var cleaned = field.value.replace(/[^0-9]/g,''); if (cleaned !== field.value) { field.value = cleaned; } return cleaned === '' ? 0 : parseInt(cleaned,10); } function normaliseDisplayValue(amount) { var formatted = amount.toFixed(2); formatted = formatted.replace(/\.00$/,''); formatted = formatted.replace(/(\.\d)0$/,'$1'); return formatted; } function updateTotals() { var totalCredits = 0; inputElements.forEach(function(field){ var quantity = sanitiseField(field); var perPersonCredits = Number(field.getAttribute('data-credits')) || 0; if (quantity > 0) { totalCredits += quantity * perPersonCredits; } }); totalCredits = Math.round(totalCredits * 100) / 100; var totalCreditsText = normaliseDisplayValue(totalCredits); var creditsToPurchase = totalCredits - ownedTotal; if (creditsToPurchase < 0) { creditsToPurchase = 0; } creditsToPurchase = Math.round(creditsToPurchase * 100) / 100; var creditsToPurchaseText = normaliseDisplayValue(creditsToPurchase); if (totalValueElement) { totalValueElement.textContent = totalCreditsText; } if (totalLabelElement) { var totalLabelText = totalCredits === 1 && totalLabelSingular ? totalLabelSingular : totalLabelPlural; if (totalLabelText) { totalLabelElement.textContent = totalLabelText; } } if (basketButton && buttonTextElement) { var buttonText = ''; if (creditsToPurchase === 1 && buttonLabelSingular) { buttonText = buttonLabelSingular; } else if (buttonLabelPlural) { var formattedLabel = buttonLabelPlural; if (formattedLabel.indexOf('%1$s') !== -1) { formattedLabel = formattedLabel.replace('%1$s', creditsToPurchaseText); } else if (formattedLabel.indexOf('%s') !== -1) { formattedLabel = formattedLabel.replace('%s', creditsToPurchaseText); } buttonText = formattedLabel; } buttonTextElement.textContent = buttonText; } var shouldEnable = Boolean(baseUrl) && creditsToPurchase > 0; if (basketButton) { if (shouldEnable) { basketButton.classList.remove('trainer-cert-calculator__button--disabled'); basketButton.setAttribute('href', baseUrl + creditsToPurchaseText); basketButton.setAttribute('aria-disabled', 'false'); } else { basketButton.classList.add('trainer-cert-calculator__button--disabled'); basketButton.setAttribute('aria-disabled', 'true'); if (baseUrl) { basketButton.setAttribute('href', '#'); } } } } inputElements.forEach(function(field){ field.addEventListener('input', updateTotals); field.addEventListener('change', updateTotals); }); if (basketButton) { basketButton.addEventListener('click', function(event){ if (basketButton.classList.contains('trainer-cert-calculator__button--disabled')) { event.preventDefault(); } }); } updateTotals(); })();