/* ═══════════════════════════════════════════════════════════════
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);
})();
})();