function AvailabilityModel(){const e=this;e.checkInDate=ko.observable(new Date),e.checkOutDate=ko.observable(new Date),e.guests=ko.observable(1),e.price=ko.observable(),e.unavailableDates=ko.observableArray([]),e.getUnavailableDates=async()=>{const t=new Date,i=new Date;i.setFullYear(t.getFullYear()+2);const n={checkin:t.toISOString().split("T")[0],checkout:i.toISOString().split("T")[0]};try{const t=await fetch(`/rooms/${ROOM_ID}/unavailability`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});if(!t.ok)throw new Error("Failed to check availability");const i=await t.json();console.log(i),e.unavailableDates(i)}catch(e){console.error("Error checking availability:",e)}},e.checkAvailability=async()=>{const t={checkin:ko.unwrap(e.checkInDate),checkout:ko.unwrap(e.checkOutDate),guests:ko.unwrap(e.guests)};try{const i=await fetch(`/rooms/${SLUG}/availability`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok)throw new Error("Failed to check availability");const n=await i.json();if(n.rental){const t=n.rental;t.price&&e.price(t.price)}}catch(e){console.error("Error checking availability:",e)}},e.inlinePicker=null,e.popupPicker=null,e.initLitepickers=function(){const t=t=>{const i=t.format("YYYY-MM-DD");return e.unavailableDates().some(e=>"string"==typeof e?e===i:!(!e.start||!e.end)&&(i>=e.start&&i<=e.end))};e.getUnavailableDates();const i=i=>new Litepicker({...i,format:"YYYY-MM-DD",singleMode:!1,numberOfMonths:2,numberOfColumns:2,minDate:new Date,lockDays:e.unavailableDates(),tooltipText:{one:"night",other:"nights"},tooltipNumber:e=>e-1,setup:i=>{i.on("selected",(n,a)=>{const o=[];let c=n.clone();for(;c.isBefore(a,"day");)o.push(c.clone()),c.add(1,"day");o.some(t)?i.clearSelection():(e.checkInDate(n.format("YYYY-MM-DD")),e.checkOutDate(a.format("YYYY-MM-DD")),e.syncDatePickers(),e.checkAvailability())})}});e.inlinePicker=i({element:document.getElementById("availability-picker-inline"),parentEl:document.getElementById("litepicker-inline-container"),inlineMode:!0}),e.popupPicker=i({element:document.getElementById("availability-picker-popup"),inlineMode:!1}),e.unavailableDates.subscribe(t=>{e.inlinePicker&&e.inlinePicker.setOptions({lockDays:t}),e.popupPicker&&e.popupPicker.setOptions({lockDays:t})})},e.syncDatePickers=function(){const t=e.checkInDate(),i=e.checkOutDate();if(t&&i){const n=new Date(t),a=new Date(i);if(e.popupPicker){const t=e.popupPicker.getStartDate()?.getTime(),i=e.popupPicker.getEndDate()?.getTime();t===n.getTime()&&i===a.getTime()||e.popupPicker.setDateRange(n,a,!0)}if(e.inlinePicker){const t=e.inlinePicker.getStartDate()?.getTime(),i=e.inlinePicker.getEndDate()?.getTime();t===n.getTime()&&i===a.getTime()||e.inlinePicker.setDateRange(n,a,!0)}}},e.guests.subscribe(t=>{e.checkAvailability()}),e.checkAvailability()}function BookingModel(){this.availabilityModel=new AvailabilityModel}const SLUG=window.location.pathname.split("/").filter(Boolean).pop(),bookingsView=new BookingModel;document.addEventListener("DOMContentLoaded",()=>{ko.applyBindings(bookingsView,document.getElementById("root")),bookingsView.availabilityModel.initLitepickers()});