';
var a=document.createElement('button');a.type='button';a.className='btn';a.textContent='Próximo disponível: '+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='Nenhuma disponibilidade nas próximas semanas — entre em contato.'; }
}).catch(function(){slotsEl.innerHTML='Nenhum horário disponível nessa data — tente outra.';});
}
function loadDate(ymd){
sel.date=ymd; sel.time=''; slotsEl.innerHTML='Carregando…';
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='Não foi possível carregar os horários.';});
}
function startDate(){
show('date');
slotsEl.innerHTML='Encontrando horários disponíveis…';
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='Nenhuma disponibilidade nas próximas semanas — entre em contato.';}
}).catch(function(){if(dateEl&&dateEl.value)loadDate(dateEl.value);});
}
function loadStaff(){
show('staff'); if(!staffEl)return; staffEl.innerHTML='Carregando…';
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='Qualquer disponível
Primeiro horário livre
';
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='Nenhum membro da equipe oferece isso ainda.';staffEl.appendChild(n);}
}).catch(function(){staffEl.innerHTML='Não foi possível carregar a equipe.';});
}
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();
})();
Valorizamos sua privacidadeUsamos cookies para melhorar sua experiência. Você pode aceitar tudo, rejeitar o não essencial ou escolher quais categorias permitir. Cookies essenciais estão sempre ativados.
Preferências de cookies
EssencialNecessário para o funcionamento do site. Sempre ligado.
AnáliseAjude-nos a entender como os visitantes usam o site (por exemplo, Google Analytics).
MarketingUsado para medir e segmentar publicidade (por exemplo, Meta Pixel, Google Ads).
Acessibilidade
Ajuste este site para se adequar a você. Suas escolhas são lembradas neste dispositivo.