!function(t){var o=function(o,s){var i,e,n,r,a=!1,c=!1,f=!1,p={},l={to:"top",offset:0,effectsOffset:0,parent:!1,classes:{sticky:"sticky",stickyActive:"sticky-active",stickyEffects:"sticky-effects",spacer:"sticky-spacer"},isRTL:!1,handleScrollbarWidth:!1},d=function(t,o,s){var i={},e=t[0].style;s.forEach((function(t){i[t]=void 0!==e[t]?e[t]:""})),t.data("css-backup-"+o,i)},m=function(t,o){return t.data("css-backup-"+o)};const u=()=>{if(r=b(i,"width"),n=i.offset().left,e.isRTL){const t=e.handleScrollbarWidth?window.innerWidth:document.body.offsetWidth;n=Math.max(t-r-n,0)}};var h=function(){p.$spacer=i.clone().addClass(e.classes.spacer).css({visibility:"hidden",transition:"none",animation:"none"}),i.after(p.$spacer)},y=function(){p.$spacer.remove()},k=function(){d(i,"unsticky",["position","width","margin-top","margin-bottom","top","bottom","inset-inline-start"]);const t={position:"fixed",width:r,marginTop:0,marginBottom:0};t[e.to]=e.offset,t["top"===e.to?"bottom":"top"]="",n&&(t["inset-inline-start"]=n+"px"),i.css(t).addClass(e.classes.stickyActive)},v=function(){i.css(m(i,"unsticky")).removeClass(e.classes.stickyActive)},b=function(t,o,s){var i=getComputedStyle(t[0]),e=parseFloat(i[o]),n="height"===o?["top","bottom"]:["left","right"],r=[];return"border-box"!==i.boxSizing&&r.push("border","padding"),s&&r.push("margin"),r.forEach((function(t){n.forEach((function(o){e+=parseFloat(i[t+"-"+o])}))})),e},w=function(t){var o=p.$window.scrollTop(),s=b(t,"height"),i=innerHeight,e=t.offset().top-o,n=e-i;return{top:{fromTop:e,fromBottom:n},bottom:{fromTop:e+s,fromBottom:n+s}}},g=function(){v(),y(),a=!1,i.trigger("sticky:unstick")},$=function(){var t=w(i),o="top"===e.to;if(c){(o?t.top.fromTop>e.offset:t.bottom.fromBottom<-e.offset)&&(p.$parent.css(m(p.$parent,"childNotFollowing")),i.css(m(i,"notFollowing")),c=!1)}else{var s=w(p.$parent),a=getComputedStyle(p.$parent[0]),f=parseFloat(a[o?"borderBottomWidth":"borderTopWidth"]),l=o?s.bottom.fromTop-f:s.top.fromBottom+f;(o?l<=t.bottom.fromTop:l>=t.top.fromBottom)&&function(){d(p.$parent,"childNotFollowing",["position"]),p.$parent.css("position","relative"),d(i,"notFollowing",["position","inset-inline-start","top","bottom"]);const t={position:"absolute"};if(n=p.$spacer.position().left,e.isRTL){const t=i.parent().outerWidth(),o=p.$spacer.position().left;r=p.$spacer.outerWidth(),n=Math.max(t-r-o,0)}t["inset-inline-start"]=n+"px",t[e.to]="",t["top"===e.to?"bottom":"top"]=0,i.css(t),c=!0}()}},T=function(){var t,o=e.offset;if(a){var s=w(p.$spacer);t="top"===e.to?s.top.fromTop-o:-s.bottom.fromBottom-o,e.parent&&$(),t>0&&g()}else{var n=w(i);(t="top"===e.to?n.top.fromTop-o:-n.bottom.fromBottom-o)<=0&&(u(),h(),k(),a=!0,i.trigger("sticky:stick"),e.parent&&$())}!function(t){f&&-t<e.effectsOffset?(i.removeClass(e.classes.stickyEffects),f=!1):!f&&-t>=e.effectsOffset&&(i.addClass(e.classes.stickyEffects),f=!0)}(t)},B=function(){T()},C=function(){a&&(v(),y(),u(),h(),k(),e.parent&&(c=!1,$()))};this.destroy=function(){a&&g(),p.$window.off("scroll",B).off("resize",C),i.removeClass(e.classes.sticky)},e=jQuery.extend(!0,l,s),i=t(o).addClass(e.classes.sticky),p.$window=t(window),e.parent&&(p.$parent=i.parent(),"parent"!==e.parent&&(p.$parent=p.$parent.closest(e.parent))),p.$window.on({scroll:B,resize:C}),T()};t.fn.sticky=function(s){var i="string"==typeof s;return this.each((function(){var e=t(this);if(i){var n=e.data("sticky");if(!n)throw Error("Trying to perform the `"+s+"` method prior to initialization");if(!n[s])throw ReferenceError("Method `"+s+"` not found in sticky instance");n[s].apply(n,Array.prototype.slice.call(arguments,1)),"destroy"===s&&e.removeData("sticky")}else e.data("sticky",new o(this,s))})),this},window.Sticky=o}(jQuery);
(function(){
'use strict';
var t;
var allActivities=[];
var allAddons=[];
var slotCache={};
var viewStart;
var state={
step: 1,
activity: null,
addons: [],
date: '',
slot: null,
name: '',
email: '',
company: '',
vat: '',
street: '',
number: '',
postcode: '',
city: '',
phone: '',
partySize: 2,
notes: ''
};
var wizard, indicators, steps, prevBtn, nextBtn, submitBtn, errorEl, partyInput;
document.addEventListener('DOMContentLoaded', init);
function init(){
wizard=document.getElementById('sib-wizard');
if(!wizard) return;
t=sibBooking.i18n||{};
indicators=wizard.querySelectorAll('.sib-step-indicator');
steps=wizard.querySelectorAll('.sib-step');
prevBtn=document.getElementById('sib-prev');
nextBtn=document.getElementById('sib-next');
submitBtn=document.getElementById('sib-submit');
errorEl=document.getElementById('sib-error');
partyInput=document.getElementById('sib-party');
syncPartySizeFromInput();
var now=new Date();
now.setHours(0,0,0,0);
var dayOfWeek=now.getDay();
var diff=(dayOfWeek===0) ? 6:dayOfWeek - 1;
viewStart=new Date(now);
viewStart.setDate(viewStart.getDate() - diff);
prevBtn.addEventListener('click', function(e){ e.preventDefault(); goPrev(); });
nextBtn.addEventListener('click', function(e){ e.preventDefault(); goNext(); });
submitBtn.addEventListener('click', function(e){ e.preventDefault(); doSubmit(); });
partyInput.addEventListener('input', onPartySizeChange);
document.getElementById('sib-party-minus').addEventListener('click', function(){
var v=parseInt(partyInput.value)||1;
if(v > 1){ partyInput.value=v - 1; onPartySizeChange(); }});
document.getElementById('sib-party-plus').addEventListener('click', function(){
partyInput.value=(parseInt(partyInput.value)||1) + 1;
onPartySizeChange();
});
document.getElementById('sib-is-business').addEventListener('change', function(){
document.getElementById('sib-business-fields').style.display=this.checked ? '':'none';
this.closest('.sib-business-toggle').classList.toggle('active', this.checked);
});
loadActivities();
}
function syncPartySizeFromInput(){
state.partySize=parseInt(partyInput.value, 10)||1;
if(state.partySize < 1){
state.partySize=1;
partyInput.value=1;
}}
function onPartySizeChange(){
syncPartySizeFromInput();
updateActivityCards();
}
function updateActivityCards(){
var container=document.getElementById('sib-activities');
var cards=container.querySelectorAll('.sib-card');
cards.forEach(function(card, i){
var a=allActivities[i];
if(!a) return;
var minPeople=Number(a.min_people);
var maxPeople=Number(a.max_people);
var tooFew=state.partySize < minPeople;
var tooMany=state.partySize > maxPeople;
var disabled=tooFew||tooMany;
card.classList.toggle('sib-card-disabled', disabled);
if(disabled&&card.classList.contains('selected')){
card.classList.remove('selected');
state.activity=null;
}
var titleEl=card.querySelector('h4');
var reasonEl=titleEl.querySelector('.sib-card-disabled-reason');
if(disabled){
var msg=tooFew
? t.err_party_min.replace('%d', a.min_people)
: t.err_party_max.replace('%d', a.max_people);
if(reasonEl){
reasonEl.textContent=' (' + msg + ')';
}else{
var span=document.createElement('span');
span.className='sib-card-disabled-reason';
span.textContent=' (' + msg + ')';
titleEl.appendChild(span);
}}else if(reasonEl){
reasonEl.remove();
}});
}
function showStep(n){
state.step=n;
steps.forEach(function(s){ s.classList.toggle('active', parseInt(s.dataset.step)===n); });
indicators.forEach(function(ind){
var step=parseInt(ind.dataset.step);
ind.classList.toggle('active', step===n);
ind.classList.toggle('done', step < n);
});
prevBtn.style.display=n > 1 ? '':'none';
nextBtn.style.display=n < 4 ? '':'none';
submitBtn.style.display=n===4 ? '':'none';
hideError();
if(n===2) loadCalendar();
if(n===4) showSummary();
setTimeout(function(){
var rect=wizard.getBoundingClientRect();
var top=rect.top + window.pageYOffset - 20;
window.scrollTo({ top: top, behavior: 'smooth' });
}, 50);
}
function goPrev(){ if(state.step > 1) showStep(state.step - 1); }
function goNext(){
hideError();
var s=state.step;
if(s===1){
state.partySize=parseInt(partyInput.value)||1;
if(state.partySize < 1) return showError(t.err_party_min.replace('%d', '1'));
if(!state.activity) return showError(t.err_select_activity);
if(state.partySize < state.activity.min_people) return showError(t.err_party_min.replace('%d', state.activity.min_people));
if(state.partySize > state.activity.max_people) return showError(t.err_party_max.replace('%d', state.activity.max_people));
showStep(2);
}else if(s===2){
if(!state.date||!state.slot) return showError(t.err_pick_slot);
showStep(3);
}else if(s===3){
state.name=document.getElementById('sib-name').value.trim();
state.email=document.getElementById('sib-email').value.trim();
state.company=document.getElementById('sib-company').value.trim();
state.vat=document.getElementById('sib-vat').value.trim();
state.street=document.getElementById('sib-street').value.trim();
state.number=document.getElementById('sib-number').value.trim();
state.postcode=document.getElementById('sib-postcode').value.trim();
state.city=document.getElementById('sib-city').value.trim();
state.phone=document.getElementById('sib-phone').value.trim();
state.notes=document.getElementById('sib-notes').value.trim();
if(!state.name) return showError(t.err_enter_name);
if(!state.email||state.email.indexOf('@')===-1) return showError(t.err_enter_email);
if(!state.phone) return showError(t.err_enter_phone);
showStep(4);
}}
function monthKey(y, m){ return y + '-' + String(m + 1).padStart(2, '0'); }
function loadCalendar(){
var container=document.getElementById('sib-calendar');
document.getElementById('sib-cal-no-slots').style.display='none';
var viewEnd=new Date(viewStart);
viewEnd.setDate(viewEnd.getDate() + 13);
var months={};
months[monthKey(viewStart.getFullYear(), viewStart.getMonth())]={ y: viewStart.getFullYear(), m: viewStart.getMonth() };
months[monthKey(viewEnd.getFullYear(), viewEnd.getMonth())]={ y: viewEnd.getFullYear(), m: viewEnd.getMonth() };
var keys=Object.keys(months);
var needsFetch=false;
var fetches=[];
keys.forEach(function(k){
if(slotCache[state.activity.id + '_' + k]){
fetches.push(Promise.resolve(null));
}else{
needsFetch=true;
var info=months[k];
fetches.push(api('month-availability?activity_id=' + state.activity.id + '&year=' + info.y + '&month=' + (info.m + 1))
.then(function(data){ slotCache[state.activity.id + '_' + k]=data; })
);
}});
if(needsFetch){
container.innerHTML='<div class="sib-cal-loading"><div class="sib-spinner"></div></div>';
}
Promise.all(fetches).then(function(){
renderCalendar();
});
}
function getSlots(dateStr){
var parts=dateStr.split('-');
var mk=parts[0] + '-' + parts[1];
var cache=slotCache[state.activity.id + '_' + mk];
return (cache&&cache[dateStr])||[];
}
function renderCalendar(){
var months=t.cal_months.split(',');
var days=t.cal_days.split(',');
var container=document.getElementById('sib-calendar');
var noSlotsEl=document.getElementById('sib-cal-no-slots');
var isMobile=window.innerWidth <=600;
var today=new Date(); today.setHours(0,0,0,0);
var todayStr=fmtDate(today.getFullYear(), today.getMonth(), today.getDate());
var viewEnd=new Date(viewStart);
var visibleDays=isMobile ? 3:14;
viewEnd.setDate(viewEnd.getDate() + visibleDays - 1);
var startMonth=months[viewStart.getMonth()];
var endMonth=months[viewEnd.getMonth()];
var titleText;
if(viewStart.getMonth()===viewEnd.getMonth()){
titleText=startMonth + ' ' + viewStart.getFullYear();
}else{
titleText=startMonth.substring(0, 3) + ' – ' + endMonth.substring(0, 3) + ' ' + viewEnd.getFullYear();
}
var price=state.activity ? state.activity.price:0;
var totalPrice=price * state.partySize;
var html='<div class="sib-cal-header">'
+ '<button type="button" class="sib-cal-nav sib-cal-prev">' + t.cal_prev + '</button>'
+ '<div class="sib-cal-title">' + esc(titleText) + '</div>'
+ '<button type="button" class="sib-cal-nav sib-cal-next">' + t.cal_next + '</button>'
+ '</div>';
html +='<div class="sib-cal-grid">';
for (var dh=0; dh < 7; dh++){
html +='<div class="sib-cal-dayhead">' + esc(days[dh]) + '</div>';
}
var hasAny=false;
var visibleCount=isMobile ? 3:14;
for (var i=0; i < 14; i++){
var d=new Date(viewStart);
d.setDate(d.getDate() + i);
var dateStr=fmtDate(d.getFullYear(), d.getMonth(), d.getDate());
var isPast=d < today;
var slots=getSlots(dateStr);
var isWeekend=(d.getDay()===0||d.getDay()===6);
var isSelected=(dateStr===state.date);
var cls='sib-cal-cell';
if(isPast||slots.length===0) cls +=' sib-cal-unavailable';
if(isWeekend) cls +=' sib-cal-weekend';
if(isSelected) cls +=' sib-cal-selected';
if(isMobile&&i >=visibleCount) cls +=' sib-cal-hide-mobile';
if(!isPast&&slots.length > 0) hasAny=true;
html +='<div class="' + cls + '" data-date="' + dateStr + '">';
html +='<div class="sib-cal-day">' + d.getDate() + '</div>';
if(isMobile){
html +='<div class="sib-cal-dayname">' + days[d.getDay()===0 ? 6:d.getDay() - 1] + '</div>';
}
if(!isPast&&slots.length > 0){
html +='<div class="sib-cal-slots">';
slots.forEach(function(sl){
var full=sl.left===0;
var blocked=sl.blocked===true;
var slotCls='sib-cal-slot';
if(blocked){
slotCls +=' sib-cal-slot-blocked';
}else if(full){
slotCls +=' sib-cal-slot-full';
}else if(state.date===dateStr&&state.slot&&state.slot.start===sl.start){
slotCls +=' sib-cal-slot-active';
}
html +='<button type="button" class="' + slotCls + '"' + ((full||blocked) ? ' disabled':'') + ' data-date="' + dateStr + '" data-start="' + sl.start + '" data-end="' + sl.end + '">'
+ sl.start + ' – ' + sl.end
+ '</button>';
});
html +='</div>';
}
html +='</div>';
}
html +='</div>';
container.innerHTML=html;
noSlotsEl.style.display=hasAny ? 'none':'';
container.querySelector('.sib-cal-prev').addEventListener('click', function(){
var minStart=new Date(today);
var dayOfWeek=minStart.getDay();
var diff=(dayOfWeek===0) ? 6:dayOfWeek - 1;
minStart.setDate(minStart.getDate() - diff);
var proposed=new Date(viewStart);
var step=window.innerWidth <=600 ? 3:7;
proposed.setDate(proposed.getDate() - step);
if(proposed >=minStart){
viewStart=proposed;
loadCalendar();
}});
container.querySelector('.sib-cal-next').addEventListener('click', function(){
var step=window.innerWidth <=600 ? 3:7;
viewStart=new Date(viewStart);
viewStart.setDate(viewStart.getDate() + step);
loadCalendar();
});
var slotBtns=container.querySelectorAll('.sib-cal-slot');
slotBtns.forEach(function(btn){
btn.addEventListener('click', function(e){
e.stopPropagation();
slotBtns.forEach(function(b){ b.classList.remove('sib-cal-slot-active'); });
container.querySelectorAll('.sib-cal-cell').forEach(function(c){ c.classList.remove('sib-cal-selected'); });
btn.classList.add('sib-cal-slot-active');
var cell=btn.closest('.sib-cal-cell');
cell.classList.add('sib-cal-selected');
state.date=btn.getAttribute('data-date');
state.slot={
start: btn.getAttribute('data-start'),
end: btn.getAttribute('data-end'),
start_time: btn.getAttribute('data-start') + ':00',
end_time: btn.getAttribute('data-end') + ':00'
};
hideError();
});
});
}
function fmtDate(y, m, d){
return y + '-' + String(m + 1).padStart(2, '0') + '-' + String(d).padStart(2, '0');
}
function loadActivities(){
api('activities').then(function(data){
allActivities=data;
var container=document.getElementById('sib-activities');
container.innerHTML='';
data.forEach(function(a){
var card=document.createElement('div');
card.className='sib-card' + (a.image_url ? ' sib-card-has-image':'');
var imgHtml=a.image_url
? '<div class="sib-card-image"><img src="' + esc(a.image_url) + '" alt="' + esc(a.name) + '"></div>'
: '';
var peopleHtml='';
if(a.show_people){
var peopleText=t.people.replace('%min', a.min_people).replace('%max', a.max_people);
peopleHtml='<span>' + esc(peopleText) + '</span>';
}
card.innerHTML=imgHtml
+ '<div class="sib-card-body">'
+ '<h4>' + esc(a.name) + '</h4>'
+ '<p>' + esc(a.description||'') + '</p>'
+ '<div class="sib-card-meta">'
+ '<span>' + a.duration_minutes + ' ' + esc(t.min) + '</span>'
+ peopleHtml
+ '</div></div>';
card.addEventListener('click', function(){
if(card.classList.contains('sib-card-disabled')) return;
container.querySelectorAll('.sib-card').forEach(function(c){ c.classList.remove('selected'); });
card.classList.add('selected');
state.activity=a;
state.slot=null;
state.date='';
slotCache={};});
container.appendChild(card);
});
syncPartySizeFromInput();
updateActivityCards();
});
api('addons').then(function(data){
allAddons=data;
var wrapper=document.getElementById('sib-addons');
var section=document.querySelector('.sib-addons-section');
if(!wrapper||!section) return;
if(data.length===0){
section.style.display='none';
return;
}
section.style.display='';
wrapper.innerHTML='';
data.forEach(function(addon){
var card=document.createElement('div');
card.className='sib-card sib-addon-card' + (addon.image_url ? ' sib-card-has-image':'');
card.setAttribute('data-addon-id', addon.id);
var imgHtml=addon.image_url
? '<div class="sib-card-image"><img src="' + esc(addon.image_url) + '" alt="' + esc(addon.name) + '"></div>'
: '';
var priceHtml=addon.price > 0
? '<span>+ &euro;' + addon.price.toFixed(2) + ' ' + esc(t.per_person||'p.p.') + '</span>'
: '<span>' + esc(t.free||'Free') + '</span>';
card.innerHTML=imgHtml
+ '<div class="sib-card-body">'
+ '<h4>' + esc(addon.name) + '</h4>'
+ (addon.description ? '<p>' + esc(addon.description) + '</p>':'')
+ '<div class="sib-card-meta">' + priceHtml + '</div>'
+ '</div>'
+ '<div class="sib-addon-check">&#10003;</div>';
card.addEventListener('click', function(){
card.classList.toggle('selected');
var idx=state.addons.indexOf(addon.id);
if(idx===-1){
state.addons.push(addon.id);
}else{
state.addons.splice(idx, 1);
}});
wrapper.appendChild(card);
});
});
}
function showSummary(){
var successEl=document.getElementById('sib-success');
var summaryEl=document.getElementById('sib-summary');
successEl.style.display='none';
submitBtn.style.display='';
summaryEl.style.display='';
var items=[
[t.summary_activity, state.activity.name],
[t.summary_party, state.partySize + ''],
[t.summary_date, state.date],
[t.summary_time, state.slot.start + ' \u2013 ' + state.slot.end],
[t.summary_name, state.name],
[t.summary_email, state.email],
];
if(state.company) items.push([t.summary_company, state.company]);
if(state.vat) items.push([t.summary_vat, state.vat]);
if(state.street){
var addr=state.street + ' ' + state.number + ', ' + state.postcode + ' ' + state.city;
items.push([t.summary_address, addr]);
}
if(state.phone) items.push([t.summary_phone, state.phone]);
if(state.notes) items.push([t.summary_notes, state.notes]);
var activityTotal=state.activity.price * state.partySize;
var addonsTotal=0;
var selectedAddons=[];
allAddons.forEach(function(addon){
if(state.addons.indexOf(addon.id)!==-1){
selectedAddons.push(addon);
addonsTotal +=addon.price * state.partySize;
}});
var grandTotal=activityTotal + addonsTotal;
if(state.activity.price > 0) items.push([t.summary_price, '\u20AC' + activityTotal.toFixed(2)]);
selectedAddons.forEach(function(addon){
items.push(['+ ' + addon.name + ' (' + state.partySize + 'x)', '\u20AC' + (addon.price * state.partySize).toFixed(2)]);
});
if(addonsTotal > 0&&activityTotal > 0){
items.push([t.summary_total||'Totaal', '\u20AC' + grandTotal.toFixed(2)]);
}
var mollieEnabled=parseInt(sibBooking.mollieEnabled);
var depositPercent=parseInt(sibBooking.depositPercent, 10)||25;
var isFullPayment=mollieEnabled&&depositPercent >=100;
var deposit=(mollieEnabled&&grandTotal > 0) ? (grandTotal * depositPercent / 100):0;
var html='<div class="sib-summary-grid">';
items.forEach(function(item){
html +='<div class="sib-summary-item"><span class="sib-summary-label">' + esc(item[0]) + '</span><span class="sib-summary-value">' + esc(item[1]) + '</span></div>';
});
if(deposit > 0){
var depositLabel=isFullPayment
? (t.summary_deposit_full||'Volledige online betaling')
: (t.summary_deposit||'Aanbetaling (%d%%)').replace('%d', depositPercent);
html +='<div class="sib-summary-item sib-summary-deposit"><span class="sib-summary-label">' + esc(depositLabel) + '</span><span class="sib-summary-value">\u20AC' + deposit.toFixed(2) + '</span></div>';
}
html +='</div>';
if(deposit > 0&&!isFullPayment){
html +='<p class="sib-deposit-notice">' + (t.deposit_notice||'Het restbedrag zal worden afgerekend op locatie') + '</p>';
}
summaryEl.innerHTML=html;
if(mollieEnabled){
submitBtn.textContent=t.btn_pay||'Betaal & Bevestig';
}else{
submitBtn.textContent=t.btn_book||'Bevestig Boeking';
}}
function doSubmit(){
hideError();
submitBtn.disabled=true;
submitBtn.textContent=t.btn_booking;
api('bookings', 'POST', {
activity_id: state.activity.id,
booking_date: state.date,
start_time: state.slot.start_time,
customer_name: state.name,
customer_email: state.email,
customer_company: state.company,
customer_vat: state.vat,
customer_street: state.street,
customer_number: state.number,
customer_postcode: state.postcode,
customer_city: state.city,
customer_phone: state.phone,
party_size: state.partySize,
notes: state.notes,
addon_ids: state.addons
}).then(function(data){
var addonsSum=0;
allAddons.forEach(function(a){ if(state.addons.indexOf(a.id)!==-1) addonsSum +=a.price * state.partySize; });
var totalAmount=(state.activity.price * state.partySize) + addonsSum;
window.dataLayer=window.dataLayer||[];
window.dataLayer.push({
event: 'booking_complete',
transaction_id: 'BOOKING-' + data.id,
value: totalAmount,
currency: 'EUR',
booking_id: data.id,
activity: state.activity.name,
party_size: state.partySize,
payment: data.status==='payment_required' ? 'mollie':'none'
});
if(data.status==='payment_required'&&data.checkout_url){
window.location.href=data.checkout_url;
return;
}
document.getElementById('sib-summary').style.display='none';
document.getElementById('sib-success').style.display='';
submitBtn.style.display='none';
prevBtn.style.display='none';
}).catch(function(err){
showError(err.message||t.err_generic);
submitBtn.disabled=false;
submitBtn.textContent=t.btn_confirm;
});
}
function api(endpoint, method, body){
var opts={
method: method||'GET',
headers: {
'Content-Type': 'application/json',
'X-WP-Nonce': sibBooking.nonce
}};
if(body) opts.body=JSON.stringify(body);
return fetch(sibBooking.restUrl + endpoint, opts).then(function(r){
return r.json().then(function(data){
if(!r.ok) throw { message: data.message||'Request failed' };
return data;
});
});
}
function showError(msg){ errorEl.textContent=msg; errorEl.style.display=''; }
function hideError(){ errorEl.style.display='none'; }
function esc(str){
var d=document.createElement('div');
d.textContent=str;
return d.innerHTML;
}})();
(()=>{"use strict";var e,r,a,n={},c={};function __webpack_require__(e){var r=c[e];if(void 0!==r)return r.exports;var a=c[e]={exports:{}};return n[e](a,a.exports,__webpack_require__),a.exports}__webpack_require__.m=n,e=[],__webpack_require__.O=(r,a,n,c)=>{if(!a){var b=1/0;for(o=0;o<e.length;o++){for(var[a,n,c]=e[o],i=!0,t=0;t<a.length;t++)(!1&c||b>=c)&&Object.keys(__webpack_require__.O).every(e=>__webpack_require__.O[e](a[t]))?a.splice(t--,1):(i=!1,c<b&&(b=c));if(i){e.splice(o--,1);var _=n();void 0!==_&&(r=_)}}return r}c=c||0;for(var o=e.length;o>0&&e[o-1][2]>c;o--)e[o]=e[o-1];e[o]=[a,n,c]},__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce((r,a)=>(__webpack_require__.f[a](e,r),r),[])),__webpack_require__.u=e=>635===e?"code-highlight.38ec4828db8d33cccbe9.bundle.min.js":519===e?"video-playlist.d48e1a11007fe8c248f8.bundle.min.js":375===e?"paypal-button.5c63e4c8f36fb06aff31.bundle.min.js":786===e?"86c7dbc8d8e46f0e7ee5.bundle.min.js":857===e?"stripe-button.b7e32b5d713d60752c7e.bundle.min.js":581===e?"progress-tracker.7b160888e308c5f64701.bundle.min.js":961===e?"animated-headline.bc08854fb1e1a80434b2.bundle.min.js":692===e?"media-carousel.87c2cf115553a2c4f709.bundle.min.js":897===e?"carousel.e2af910b095554625156.bundle.min.js":416===e?"countdown.05b148ca20af32fc8e9f.bundle.min.js":292===e?"hotspot.737497535441dc0bc037.bundle.min.js":325===e?"form.cfd61a9174be80f835c6.bundle.min.js":543===e?"gallery.cca2358f59857ce6f62f.bundle.min.js":970===e?"lottie.5ea185196aba9f2de4f4.bundle.min.js":334===e?"nav-menu.3afa8f5eb1fef7c22561.bundle.min.js":887===e?"popup.61d4fcab8891b2e07802.bundle.min.js":535===e?"load-more.7c4417f8a727b79f546f.bundle.min.js":396===e?"posts.844727d8428792223d2f.bundle.min.js":726===e?"portfolio.3d0e387cc28c07bae511.bundle.min.js":316===e?"share-buttons.b99b5ff11c944a3a8ea9.bundle.min.js":829===e?"slides.8e9b74f1b31471377df8.bundle.min.js":158===e?"social.de5cec83bf689b2f1f01.bundle.min.js":404===e?"table-of-contents.86ee3e0cc8c1fff9aab4.bundle.min.js":345===e?"archive-posts.0b71f7023819e3872142.bundle.min.js":798===e?"search-form.9abeafeecde90cf7e0f4.bundle.min.js":6===e?"woocommerce-menu-cart.33fbf47b819947e7a2a7.bundle.min.js":80===e?"woocommerce-purchase-summary.118e54b95a68f0ad8c09.bundle.min.js":354===e?"woocommerce-checkout-page.8391e03a51a57a42528a.bundle.min.js":4===e?"woocommerce-cart.9131ef5e40333f8066dd.bundle.min.js":662===e?"woocommerce-my-account.ab469f426496c628ac6c.bundle.min.js":621===e?"woocommerce-notices.181b8701c45ec5374829.bundle.min.js":787===e?"product-add-to-cart.a4f88a0c19e95b3912b6.bundle.min.js":993===e?"loop.1594a1df76e87a11eda2.bundle.min.js":932===e?"loop-carousel.881847b13e8fe1f8bfc2.bundle.min.js":550===e?"ajax-pagination.505018eb312c83998279.bundle.min.js":727===e?"mega-menu.857df1cf3198ae47b617.bundle.min.js":87===e?"mega-menu-stretch-content.7ed04741ba7d5a80c556.bundle.min.js":912===e?"menu-title-keyboard-handler.b3891112675eb0b0c4d5.bundle.min.js":33===e?"nested-carousel.659b0373371215e60dab.bundle.min.js":225===e?"taxonomy-filter.6526351a1205655def47.bundle.min.js":579===e?"off-canvas.82d118980fb5aa03c82b.bundle.min.js":1===e?"contact-buttons.e1605c5cfaccbff3c14b.bundle.min.js":61===e?"contact-buttons-var-10.11bf4233106e1245bd61.bundle.min.js":249===e?"floating-bars-var-2.5287acd8570f1ce2dde3.bundle.min.js":440===e?"floating-bars-var-3.e9e9c0ea3c6fb0e51c58.bundle.min.js":187===e?"search.3ec7310139d97dd4cece.bundle.min.js":void 0,__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r={},a="elementor-pro:",__webpack_require__.l=(e,n,c,b)=>{if(r[e])r[e].push(n);else{var i,t;if(void 0!==c)for(var _=document.getElementsByTagName("script"),o=0;o<_.length;o++){var d=_[o];if(d.getAttribute("src")==e||d.getAttribute("data-webpack")==a+c){i=d;break}}i||(t=!0,(i=document.createElement("script")).charset="utf-8",__webpack_require__.nc&&i.setAttribute("nonce",__webpack_require__.nc),i.setAttribute("data-webpack",a+c),i.src=e),r[e]=[n];var onScriptComplete=(a,n)=>{i.onerror=i.onload=null,clearTimeout(u);var c=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),c&&c.forEach(e=>e(n)),a)return a(n)},u=setTimeout(onScriptComplete.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=onScriptComplete.bind(null,i.onerror),i.onload=onScriptComplete.bind(null,i.onload),t&&document.head.appendChild(i)}},(()=>{var e;__webpack_require__.g.importScripts&&(e=__webpack_require__.g.location+"");var r=__webpack_require__.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var a=r.getElementsByTagName("script");if(a.length)for(var n=a.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=a[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),__webpack_require__.p=e})(),(()=>{var e={978:0};__webpack_require__.f.j=(r,a)=>{var n=__webpack_require__.o(e,r)?e[r]:void 0;if(0!==n)if(n)a.push(n[2]);else if(978!=r){var c=new Promise((a,c)=>n=e[r]=[a,c]);a.push(n[2]=c);var b=__webpack_require__.p+__webpack_require__.u(r),i=new Error;__webpack_require__.l(b,a=>{if(__webpack_require__.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var c=a&&("load"===a.type?"missing":a.type),b=a&&a.target&&a.target.src;i.message="Loading chunk "+r+" failed.\n("+c+": "+b+")",i.name="ChunkLoadError",i.type=c,i.request=b,n[1](i)}},"chunk-"+r,r)}else e[r]=0},__webpack_require__.O.j=r=>0===e[r];var webpackJsonpCallback=(r,a)=>{var n,c,[b,i,t]=a,_=0;if(b.some(r=>0!==e[r])){for(n in i)__webpack_require__.o(i,n)&&(__webpack_require__.m[n]=i[n]);if(t)var o=t(__webpack_require__)}for(r&&r(a);_<b.length;_++)c=b[_],__webpack_require__.o(e,c)&&e[c]&&e[c][0](),e[c]=0;return __webpack_require__.O(o)},r=self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[];r.forEach(webpackJsonpCallback.bind(null,0)),r.push=webpackJsonpCallback.bind(null,r.push.bind(r))})()})();