import {renderPage,pages,titles} from './content.mjs';
const page=document.body.dataset.page||'index';
let lang='es';try{lang=localStorage.getItem('suave-language')==='en'?'en':'es'}catch{}
let step=0;
const formData={patient:'new',reason:'exam',date:'',time:'any',name:'',phone:'',email:'',insurance:'unsure'};
const tr=(es,en)=>lang==='es'?es:en;
const escapeHTML=(s)=>String(s).replace(/[&<>"']/g,c=>({'&':'&','<':'<','>':'>','"':'"',"'":'''}[c]));
const reasonLabel=(v)=>({exam:tr('Examen o limpieza','Exam or cleaning'),filling:tr('Caries o empaste','Cavity or filling'),pain:tr('Dolor dental','Toothache'),implant:tr('Implantes','Dental implants'),arch:tr('Arcada completa','Full arch'),other:tr('Otra consulta','Other visit')})[v];
const timeLabel=(v)=>({any:tr('Sin preferencia','No preference'),morning:tr('Por la mañana','Morning'),afternoon:tr('Por la tarde','Afternoon')})[v];
const insuranceLabel=(v)=>({yes:tr('Tengo seguro dental','I have dental insurance'),no:tr('No tengo seguro dental','I do not have dental insurance'),unsure:tr('Prefiero consultarlo con recepción','I’d like to discuss it with the front desk')})[v];
const choice=(name,value,label)=>``;
const option=(value,label,selected)=>``;
function today(){const d=new Date();return `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}-${String(d.getDate()).padStart(2,'0')}`}
function render(){document.documentElement.lang=lang;document.title=`${titles[lang][pages.indexOf(page)]} | Suave Dental · Newark`;document.body.innerHTML=renderPage(page,lang);document.querySelector('.menu-btn').addEventListener('click',e=>{const button=e.currentTarget;const open=button.getAttribute('aria-expanded')==='true';button.setAttribute('aria-expanded',String(!open));document.querySelector('.navigation').classList.toggle('is-open',!open)});document.querySelectorAll('[data-lang]').forEach(b=>b.addEventListener('click',()=>{capture();lang=b.dataset.lang;try{localStorage.setItem('suave-language',lang)}catch{}render();document.querySelector(`[data-lang="${lang}"]`).focus()}));if(page==='contact')initForm()}
function capture(){const form=document.querySelector('#booking-form');if(!form)return;for(const [key,value] of new FormData(form).entries())if(key in formData)formData[key]=value.trim()}
function initForm(){const form=document.querySelector('#booking-form');form.addEventListener('submit',e=>{e.preventDefault();capture();if(!validate())return;if(step<4){step++;renderStep(true)}else{step=5;renderStep(true)}});document.querySelector('#back').addEventListener('click',()=>{capture();step=Math.max(0,step-1);renderStep(true)});renderStep()}
function validate(){let error='';if(step===1){const selected=new Date(formData.date+'T12:00:00');if(!formData.date||formData.dateli.classList.toggle('complete',i<=step));document.querySelector('.form-actions').hidden=step===5;document.querySelector('#back').hidden=step===0;document.querySelector('#next').innerHTML=step===4?tr('Probar solicitud de cita','Test appointment request'):tr('Continuar →','Continue →');
if(step===0)target.innerHTML=``;
if(step===1)target.innerHTML=``;
if(step===2)target.innerHTML=``;
if(step===3)target.innerHTML=``;
if(step===4){const rows=[[tr('Paciente','Patient'),formData.patient==='new'?tr('Nuevo','New'):tr('Existente','Existing')],[tr('Visita','Visit'),reasonLabel(formData.reason)],[tr('Fecha preferida','Preferred date'),formData.date],[tr('Horario','Time'),timeLabel(formData.time)],[tr('Nombre','Name'),formData.name],[tr('Teléfono','Phone'),formData.phone],[tr('Correo','Email'),formData.email||'—'],[tr('Seguro','Insurance'),insuranceLabel(formData.insurance)]];target.innerHTML=`
${tr('Revisa tu solicitud de prueba','Review your test request')}
${rows.map(([a,b])=>`
${a}
${escapeHTML(b)}
`).join('')}
${tr('Al continuar, solo verás cómo termina el formulario. No se enviará ninguna solicitud.','Continuing only demonstrates the end of the form. No request will be sent.')}
`}
if(step===5)target.innerHTML=`
✓
${tr('Así de fácil será pedir tu cita.','That’s how simple requesting a visit will be.')}
${tr('Has completado la demostración. No se enviaron datos y no se reservó ninguna cita. Para reservar una cita real, llama a recepción.','You’ve completed the demonstration. No information was sent and no appointment was booked. To book a real visit, call our front desk.')}