';
var a=document.createElement('button');a.type='button';a.className='btn';a.textContent='Nächste verfügbare: '+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='Keine Verfügbarkeit in den kommenden Wochen – bitte kontaktieren Sie uns.'; }
}).catch(function(){slotsEl.innerHTML='Keine Zeiten an diesem Datum verfügbar – versuchen Sie ein anderes.';});
}
function loadDate(ymd){
sel.date=ymd; sel.time=''; slotsEl.innerHTML='Lädt…';
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='Konnte die Zeiten nicht laden.';});
}
function startDate(){
show('date');
slotsEl.innerHTML='Verfügbare Zeiten werden gesucht…';
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='Keine Verfügbarkeit in den kommenden Wochen – bitte kontaktieren Sie uns.';}
}).catch(function(){if(dateEl&&dateEl.value)loadDate(dateEl.value);});
}
function loadStaff(){
show('staff'); if(!staffEl)return; staffEl.innerHTML='Lädt…';
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='Jeder verfügbar
Erster freier Termin
';
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='Keine Teammitglieder bieten dies bisher an.';staffEl.appendChild(n);}
}).catch(function(){staffEl.innerHTML='Konnte das Team nicht laden.';});
}
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();
})();
Wir schätzen Ihre PrivatsphäreWir verwenden Cookies, um Ihre Erfahrung zu verbessern. Sie können alle akzeptieren, nicht erforderliche ablehnen oder auswählen, welche Kategorien Sie zulassen möchten. Essenzielle Cookies sind immer aktiviert.
Cookie-Einstellungen
EssenziellErforderlich, damit die Website funktioniert. Immer aktiviert.
AnalytikHilft uns zu verstehen, wie Besucher die Website nutzen (z. B. Google Analytics).
MarketingWird verwendet, um Werbung zu messen und zielgerichtet auszuspielen (z. B. Meta Pixel, Google Ads).
Barrierefreiheit
Passen Sie diese Website an Ihre Bedürfnisse an. Ihre Auswahl wird auf diesem Gerät gespeichert.