';
var a=document.createElement('button');a.type='button';a.className='btn';a.textContent='Prossimo disponibile: '+fmt(d.date)+' →';
a.addEventListener('click',function(){sel.date=d.date;if(dateEl)dateEl.value=d.date;renderSlots(d.slots);});
slotsEl.appendChild(a);
} else { slotsEl.innerHTML='Nessuna disponibilità nelle prossime settimane — per favore contattaci.'; }
}).catch(function(){slotsEl.innerHTML='Nessun orario disponibile in quella data — prova un'altra.';});
}
function loadDate(ymd){
sel.date=ymd; sel.time=''; slotsEl.innerHTML='Caricamento…';
fetch(availUrl+'?'+q('&date='+encodeURIComponent(ymd))).then(function(r){return r.json();}).then(function(d){
var slots=(d&&d.slots&&typeof d.slots==='object'&&!Array.isArray(d.slots))?d.slots:{};
if(!Object.keys(slots).length){offerNext(ymd);return;}
renderSlots(slots);
}).catch(function(){slotsEl.innerHTML='Impossibile caricare gli orari.';});
}
function startDate(){
show('date');
slotsEl.innerHTML='Trova orari disponibili…';
fetch(nextUrl+'?'+q()).then(function(r){return r.json();}).then(function(d){
if(d&&d.date){sel.date=d.date;if(dateEl)dateEl.value=d.date;renderSlots(d.slots);}
else{slotsEl.innerHTML='Nessuna disponibilità nelle prossime settimane — per favore contattaci.';}
}).catch(function(){if(dateEl&&dateEl.value)loadDate(dateEl.value);});
}
function loadStaff(){
show('staff'); if(!staffEl)return; staffEl.innerHTML='Caricamento…';
fetch(staffUrl+'?service='+encodeURIComponent(sel.service)+'&location='+encodeURIComponent(sel.location||0)).then(function(r){return r.json();}).then(function(list){
staffEl.innerHTML='';
var any=document.createElement('button');any.type='button';any.className='opt';any.innerHTML='Qualsiasi disponibile
Primo appuntamento libero
';
any.addEventListener('click',function(){sel.provider=0;startDate();});staffEl.appendChild(any);
(list||[]).forEach(function(p){var b=document.createElement('button');b.type='button';b.className='opt';b.innerHTML=''+p.name+'';
b.addEventListener('click',function(){sel.provider=p.id;startDate();});staffEl.appendChild(b);});
if(!list||!list.length){var n=document.createElement('div');n.className='none';n.textContent='Nessun membro del team offre questo ancora.';staffEl.appendChild(n);}
}).catch(function(){staffEl.innerHTML='Impossibile caricare il team.';});
}
function afterService(){ sel.provider=0; if(chooseStaff)loadStaff(); else startDate(); }
root.querySelectorAll('.loc[data-id]').forEach(function(b){b.addEventListener('click',function(){
root.querySelectorAll('.loc').forEach(function(x){x.classList.remove('sel');});b.classList.add('sel');
sel.location=parseInt(b.getAttribute('data-id'),10)||0; root.querySelector('#f-location').value=sel.location; show('service');
});});
root.querySelectorAll('.svc[data-id]').forEach(function(b){b.addEventListener('click',function(){
root.querySelectorAll('.svc').forEach(function(x){x.classList.remove('sel');});b.classList.add('sel');
sel.service=b.getAttribute('data-id');sel.name=b.getAttribute('data-name');
root.querySelector('#f-service').value=sel.service; afterService();
});});
dateEl&&dateEl.addEventListener('change',function(){loadDate(dateEl.value);});
root.querySelectorAll('[data-back]').forEach(function(b){b.addEventListener('click',prev);});
var pre=root.querySelector('.svc[data-pre]'); if(pre&&steps[0]==='service')pre.click();
})();
Valutiamo la tua privacyUtilizziamo i cookie per migliorare la tua esperienza. Puoi accettare tutto, rifiutare quelli non essenziali o scegliere quali categorie consentire. I cookie essenziali sono sempre attivi.
Preferenze cookie
EssenzialeNecessario per il funzionamento del sito. Sempre attivo.
AnaliticaAiutaci a capire come i visitatori utilizzano il sito (ad es. Google Analytics).
MarketingUsato per misurare e mirare alla pubblicità (ad es. Meta Pixel, Google Ads).
Accessibilità
Adatta questo sito per te. Le tue scelte sono memorizzate su questo dispositivo.