export function buildEmail(data) { const name=String(data.name||'').trim(), email=String(data.email||'').trim(), message=String(data.message||'').trim(); if (!name || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email) || !message) throw new Error('Please enter your name, a valid email and your project requirements.'); const service=String(data.service||'General enquiry').replace(/[\r\n]/g,' '); const body=`Name: ${name}\nEmail: ${email}\nCompany: ${data.company||'Not specified'}\nService: ${service}\n\nProject requirements:\n${message}`; return `mailto:info@sgnuvetrix.com?subject=${encodeURIComponent('NUVETRIX enquiry: '+service)}&body=${encodeURIComponent(body)}`; } if (typeof document!=='undefined') { const menu=document.querySelector('.menu-toggle'), nav=document.querySelector('#site-nav'); menu?.addEventListener('click',()=>{const open=menu.getAttribute('aria-expanded')!=='true';menu.setAttribute('aria-expanded',String(open));nav.classList.toggle('is-open',open);}); document.addEventListener('keydown',e=>{if(e.key==='Escape'&&menu){menu.setAttribute('aria-expanded','false');nav.classList.remove('is-open');menu.focus();}}); const form=document.querySelector('#enquiry-form'); if(form){ const service=new URLSearchParams(location.search).get('service'); if(service && [...form.elements.service.options].some(o=>o.value===service)) form.elements.service.value=service; const panel=document.querySelector('#draft-result'); form.addEventListener('input',()=>{panel.hidden=true;}); form.addEventListener('submit',e=>{ e.preventDefault(); if(!form.reportValidity())return; try{const href=buildEmail(Object.fromEntries(new FormData(form)));document.querySelector('#open-draft').href=href;panel.hidden=false;panel.focus();} catch(error){document.querySelector('#form-status').textContent=error.message;} }); } }