/* ═══════════════════════════════════════════════════════════════ Lucid-X Technologies — Shared JavaScript Handles: footer injection, enquiry form, mobile nav ═══════════════════════════════════════════════════════════════ */ (function () { 'use strict'; // ── Inject Footer ─────────────────────────────────────────────────────────── var footerEl = document.getElementById('siteFooter'); if (footerEl) { footerEl.innerHTML = ` `; } // Inject mobile nav overlay var mobileNav = document.createElement('div'); mobileNav.className = 'mobile-nav'; mobileNav.id = 'mobileNav'; mobileNav.innerHTML = ` Home Bundle Purchases Web Design Business Apps Sheets & Scripts API Integration Custom Apps Get in Touch `; document.body.appendChild(mobileNav); // ── Mobile Nav Toggle ──────────────────────────────────────────────────────── window.toggleNav = function () { var nav = document.getElementById('mobileNav'); if (nav) nav.classList.toggle('active'); }; // ── Enquiry Form ───────────────────────────────────────────────────────────── var form = document.getElementById('enquiryForm'); if (!form) return; form.addEventListener('submit', async function (e) { e.preventDefault(); var submitBtn = form.querySelector('.form-submit'); var submitText = document.getElementById('submitText'); var statusEl = document.getElementById('formStatus'); // Collect data var data = { service: form.getAttribute('data-service') || 'General' }; var inputs = form.querySelectorAll('input, select, textarea'); inputs.forEach(function (inp) { if (!inp.name) return; if (inp.type === 'checkbox') { if (inp.checked) { data[inp.name] = data[inp.name] ? data[inp.name] + ', ' + inp.value : inp.value; } } else { data[inp.name] = inp.value; } }); // Validate if (!data.name || !data.email) { statusEl.textContent = '⚠️ Please fill in your name and email address.'; statusEl.className = 'form-status error'; return; } submitBtn.disabled = true; submitText.textContent = 'Sending…'; statusEl.className = 'form-status'; statusEl.style.display = 'none'; try { var resp = await fetch('/api/enquiry', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }); var result = await resp.json(); if (resp.ok && result.success) { statusEl.innerHTML = '✅ Enquiry sent! Our team will reach out to you within 24 hours. Thank you, ' + (data.name.split(' ')[0] || 'there') + '!'; statusEl.className = 'form-status success'; form.reset(); } else { throw new Error(result.message || 'Could not send enquiry'); } } catch (err) { statusEl.innerHTML = '❌ ' + (err.message || 'Failed to send. Please email us directly at enquiries@lucidxtech.com'); statusEl.className = 'form-status error'; } finally { submitBtn.disabled = false; submitText.textContent = 'Send Enquiry →'; } }); // ── Bundles auth gate for shared nav ───────────────────────────────────────── (function() { var desktopLink = document.getElementById('sharedBundlesLink'); var mobileLink = document.getElementById('sharedBundlesMobileLink'); function gateHandler(e) { var token = localStorage.getItem('lucidx_token') || localStorage.getItem('lucidx_session_token'); if (token) return; // logged in — navigate normally e.preventDefault(); // Inject toast if not already present if (!document.getElementById('sharedAuthToast')) { var toast = document.createElement('div'); toast.id = 'sharedAuthToast'; toast.style.cssText = [ 'position:fixed','bottom:28px','left:50%','transform:translateX(-50%) translateY(20px)', 'background:rgba(8,11,20,0.97)','border:1px solid rgba(38,118,255,0.4)', 'border-radius:14px','padding:14px 22px','z-index:9999', 'display:flex','align-items:center','gap:14px', 'box-shadow:0 8px 32px rgba(0,0,0,0.6)', 'font-family:"DM Sans",sans-serif','font-size:14px','color:#fff', 'opacity:0','transition:all 0.35s ease','white-space:nowrap', ].join(';'); toast.innerHTML = '🔒 Sign in to access Bundles Sign In →'; document.body.appendChild(toast); setTimeout(function() { toast.style.opacity='1'; toast.style.transform='translateX(-50%) translateY(0)'; }, 10); setTimeout(function() { toast.style.opacity='0'; setTimeout(function(){ toast.remove(); }, 400); }, 4000); } } if (desktopLink) desktopLink.addEventListener('click', gateHandler); if (mobileLink) mobileLink.addEventListener('click', gateHandler); })(); })();