(()=>{"use strict";class e{static instance=null;constructor(){return e.instance||(this.initCount=0,this.initialized=!1,this.refundRulesInitialized=!1,e.instance=this,jQuery(document).ready(()=>{this.init(),window.addEventListener("directorist-reload-plupload",()=>{this.initializeBookingHours();const e=jQuery(".directory_pricing_field").val();jQuery(".directorist-calendar-day:not(.directorist-weekend) .directorist-calendar-price input").val(e);const t=jQuery(".directorist-weekend-price").val();jQuery(".directorist-calendar-day.directorist-weekend .directorist-calendar-price input").val(t),this.submitCalendarUpdatePrice(),this.submitCalendarUpdateUnavDays()})})),e.instance}init(){this.initialized||(this.initializeLicenseHandlers(),this.initializeBookingHours(),this.initializeCalendarAndRefund(),this.initialized=!0)}initializeLicenseHandlers(){const e=(e,t)=>{const o=new FormData,i=jQuery('#directorist_booking_license input[name="directorist_booking_license"]').val();o.append("action",e),o.append("directorist_booking_license",i),jQuery.ajax({method:"POST",processData:!1,contentType:!1,url:bdb_admin__js_obj.ajaxurl,data:o,success:e=>{!0===e.status?(jQuery("#success_msg").remove(),jQuery(`#${t}`).after(`<p id="success_msg">${e.msg}</p>`),location.reload()):(jQuery("#error_msg").remove(),jQuery(`#${t}`).after(`<p id="error_msg">${e.msg}</p>`))},error:e=>{console.error("License action failed:",e),jQuery("#error_msg").remove(),jQuery(`#${t}`).after('<p id="error_msg">An error occurred while processing your request.</p>')}})};jQuery('#directorist_booking_activated input[name="directorist_booking_activated"]').on("change",t=>{t.preventDefault(),e("atbdp_directorist_booking_license_activation","directorist_booking_activated")}),jQuery('#directorist_booking_deactivated input[name="directorist_booking_deactivated"]').on("change",t=>{t.preventDefault(),e("atbdp_directorist_booking_license_deactivation","directorist_booking_deactivated")})}initializeBookingHours(){!function(){let e={};try{const t=jQuery("#bdb_hours").val();t&&(e=JSON.parse(t))}catch(e){console.error("Error parsing booking hours:",e)}(function(e){const t=["monday","tuesday","wednesday","thursday","friday","saturday","sunday"];let o=null;const i=jQuery(".directorist-booking-time-duplicate-dropdown"),r=i.find(".directorist-booking-time-duplicate-dropdown__wrapper"),n=r.find(".directorist-booking-time-duplicate-dropdown__content__inner");function a(e,t,o,i,r){return`\n\t\t\t\t\t<div class="directorist-booking-hour-group">\n\t\t\t\t\t\t<div class="directorist-booking-input">\n\t\t\t\t\t\t\t<input type="time" data-key="${r}" name="bdb[${e}][${t}][start]" \n\t\t\t\t\t\t\t\tclass="directorist-booking-input-item directorist-booking-${o}-start directorist-booking-input-start" \n\t\t\t\t\t\t\t\tid="bdb-${o}-from-${r}" value="${i.start||""}">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="directorist-booking-input-to">To</div>\n\t\t\t\t\t\t<div class="directorist-booking-input">\n\t\t\t\t\t\t\t<input type="time" data-key="${r}" name="bdb[${e}][${t}][close]" \n\t\t\t\t\t\t\t\tclass="directorist-booking-input-item directorist-booking-${o}-close directorist-booking-input-close" \n\t\t\t\t\t\t\t\tid="bdb-${o}-to-${r}" value="${i.close||""}">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<label class="directorist-booking-input-slot" for="bdb-${o}-slots-${r}">\n\t\t\t\t\t\t\t<input type="number" data-key="${r}" name="bdb[${e}][${t}][slots]" \n\t\t\t\t\t\t\tclass="directorist-booking-input-item directorist-booking-${o}-slots directorist-booking-input-slots" \n\t\t\t\t\t\t\tid="bdb-${o}-slots-${r}" value="${i.slots||1}" min="0">\n\t\t\t\t\t\t\t<span>${bdb_add_booking.slots_text}</span>\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<button data-id="${o}" data-key="${r}" class="diretorist-booking-hour-remove" type="button"><i class="las la-trash"></i></button>\n\t\t\t\t\t</div>\n\t\t\t\t`}function c(e){const t=e.offset(),o=jQuery(window).scrollTop(),n=jQuery(window).height(),a=r.outerHeight();i.data("active-button",e);const c=n-(t.top-o+e.outerHeight())>=a;r.css({display:"block",position:"fixed",left:t.left+"px",top:c?t.top-o+e.outerHeight()+5+"px":t.top-o-a-5+"px",zIndex:9999})}function s(){r.hide(),jQuery(".directorist-booking-duplicate-day, #directorist-checkbox-select-all").prop("checked",!1)}function d(){void 0!==jQuery.fn.timepicker?jQuery('input[type="time"]').each(function(){const e=jQuery(this);if(!e.hasClass("timepicker-initialized")){e.addClass("timepicker-initialized"),e.data("TimePicker")&&e.timepicker("destroy");const t=e.val(),o=t||!1,i={timeFormat:"h:mm p",interval:5,minTime:"00:00",maxTime:"23:59",dynamic:!1,dropdown:!0,scrollbar:!0,change:function(t){const o=t?t.getHours().toString().padStart(2,"0")+":"+t.getMinutes().toString().padStart(2,"0"):"";e.val(o),setTimeout(function(){l()},50)}};o&&(i.defaultTime=o),e.timepicker(i),t&&e.timepicker("setTime",t)}}):console.warn("jQuery timepicker plugin not found")}function l(){const e={};t.forEach((t,o)=>{const i=[],r=jQuery(`.directorist-booking-hour-selection-item[data-day="${t}"] .directorist-switch-input`).is(":checked");jQuery(`.directorist-hour-selection-${t} .directorist-booking-hour-group`).each(function(e){const o=jQuery(this);i.push({start:o.find(".directorist-booking-input-start").val()||"",close:o.find(".directorist-booking-input-close").val()||"",slots:parseInt(o.find(".directorist-booking-input-slots").val()||1),id:`${t}ID-${e}`})}),e[o]={enable:r?"yes":""},i.forEach((t,i)=>{e[o][i]=t})}),jQuery("#bdb_hours").val(JSON.stringify(e)),jQuery(document).trigger("booking-hours-updated",[e])}r.on("click",function(e){e.stopPropagation()}),jQuery(window).on("scroll resize",function(){const e=i.data("active-button");e&&r.is(":visible")&&c(e)}),jQuery(document).on("click",".directorist-btn-copy-hours",function(e){e.stopPropagation(),e.preventDefault(),o=jQuery(this).data("source-day"),jQuery(".directorist-booking-duplicate-day").prop("disabled",!1).prop("checked",!1),jQuery(`#directorist-booking-duplicate-${o}`).prop("disabled",!0),jQuery("#directorist-checkbox-select-all").prop("checked",!1),c(jQuery(this)),r.show()}),n.on("change","#directorist-checkbox-select-all",function(e){e.stopPropagation();const t=jQuery(this).prop("checked");jQuery(".directorist-booking-duplicate-day:not(:disabled)").prop("checked",t)}),n.on("change",".directorist-booking-duplicate-day",function(e){e.stopPropagation();const t=jQuery(".directorist-booking-duplicate-day:not(:disabled)").length,o=jQuery(".directorist-booking-duplicate-day:checked").length;jQuery("#directorist-checkbox-select-all").prop("checked",t===o)}),jQuery("#diretorist-booking-btn-copy").on("click",function(i){i.stopPropagation(),function(){if(!o)return;const i=jQuery(".directorist-booking-duplicate-day:checked").map(function(){return t[jQuery(this).data("day-id")]}).get();if(0===i.length)return;const r=[];jQuery(`.directorist-hour-selection-${o} .directorist-booking-hour-group`).each(function(){const e=jQuery(this);r.push({start:e.find(".directorist-booking-input-start").val()||"",close:e.find(".directorist-booking-input-close").val()||"",slots:parseInt(e.find(".directorist-booking-input-slots").val()||1)})}),i.forEach(o=>{const i=t.indexOf(o);e[i]={enable:"yes"},r.forEach((t,o)=>{e[i][o]=t});const n=jQuery(`.directorist-hour-selection-${o}`);n.empty(),r.forEach((e,t)=>{n.append(a(i,t,o,e,t))})}),l(),d(),s()}()}),jQuery(".directorist-booking-duplicate-dropdown-reset").on("click",function(e){e.preventDefault(),e.stopPropagation(),jQuery(".directorist-booking-duplicate-day, #directorist-checkbox-select-all").prop("checked",!1)}),jQuery(document).on("click",function(e){const t=jQuery(e.target);r.is(e.target)||r.has(e.target).length||t.hasClass("directorist-btn-copy-hours")||t.hasClass("directorist-btn--duplicate-time-toggle")||s()}),jQuery(document).on("click",".diretorist-booking-hour-remove",function(){const o=jQuery(this).attr("data-id"),i=parseInt(jQuery(this).attr("data-key")),r=jQuery(this).closest(".directorist-booking-hour-selection-time"),n=jQuery(this).closest(".directorist-booking-hour-group");if(r.find(".directorist-booking-hour-group").length<=1)return;const a=t.indexOf(o);if(e[a]&&e[a][i]){delete e[a][i];const t=[];Object.keys(e[a]).filter(e=>"enable"!==e&&!isNaN(parseInt(e))).sort((e,t)=>parseInt(e)-parseInt(t)).forEach((o,i)=>{t[i]=e[a][o]});const o=e[a].enable;e[a]={enable:o},t.forEach((t,o)=>{e[a][o]=t})}n.remove(),jQuery(`.directorist-hour-selection-${o}`).find(".directorist-booking-hour-group").each(function(e){const i=jQuery(this).find("input"),r=t.indexOf(o);i.each(function(){const t=jQuery(this),o=t.attr("name").replace(/\[\d+\]\[\d+\]/,`[${r}][${e}]`);t.attr("data-key",e),t.attr("id",t.attr("id").replace(/-\d+$/,`-${e}`)),t.attr("name",o)})}),l()}),jQuery(document).on("change input blur",".directorist-booking-input-start, .directorist-booking-input-close, .directorist-booking-input-slots",function(){l()}),jQuery(".directorist-btn-add-hours").off("click"),jQuery(document).off("click",".directorist-btn-add-hours").on("click",".directorist-btn-add-hours",function(o){o.preventDefault();const i=jQuery(this).data("day"),r=jQuery(this).closest(".directorist-booking-hour-selection-item").find(".directorist-booking-day-header-title").attr("data-key"),n=jQuery(`.directorist-hour-selection-${i}`),c=n.find(".directorist-booking-hour-group").length,s={start:"",close:"",slots:1},u=t.indexOf(i);e[u]||(e[u]={enable:"yes"}),e[u][c]=s,n.append(a(r,c,i,s,c)),d(),l()}),t.forEach((t,o)=>{const i=jQuery(`.directorist-hour-selection-${t}`);let r=[],n=!1;if(e&&e[o]){const t=e[o];n="yes"===t.enable,t&&(r=Object.keys(t).filter(e=>"enable"!==e&&!isNaN(parseInt(e))).map(e=>t[e]).sort((e,o)=>parseInt(Object.keys(t).find(o=>t[o]===e))-parseInt(Object.keys(t).find(e=>t[e]===o))))}else n=!1,r=[];!n&&Array.isArray(r)&&r.length>0&&(r=r.map(e=>({...e,start:"00:00"===e.start?"":e.start||"",close:"00:00"===e.close?"":e.close||""}))),i.empty(),0===r.length?i.append(a(o,0,t,{},0)):r.forEach((e,r)=>{i.append(a(o,r,t,e,r))});const c=jQuery(`.directorist-booking-hour-selection-item[data-day="${t}"] .directorist-switch-input`);c.length&&(c.prop("checked",n),c.closest(".directorist-booking-hour-selection-item").find(".directorist-week-day-content").toggleClass("directorist-booking-hour-disabled",!n));const s=jQuery(`.directorist-btn-add-hours[data-day="${t}"]`);s.length&&!s.next(".directorist-btn-copy-hours").length&&s.after(`\n\t\t\t\t\t\t\t<button type="button" class="directorist-btn-copy-hours" data-source-day="${t}">\n\t\t\t\t\t\t\t\t<i class="las la-copy"></i>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t`)}),s(),setTimeout(function(){d()},200),jQuery(".directorist-booking-day-header .directorist-switch-input").off("change").on("change",function(){const e=jQuery(this).is(":checked");jQuery(this).closest(".directorist-booking-hour-selection-item").find(".directorist-week-day-content").toggleClass("directorist-booking-hour-disabled",!e),l()}),l(),jQuery(document).on("submit","form",function(){l()}),jQuery(document).on("click","#publish, #save-post",function(){l()}),jQuery(document).on("DOMNodeInserted",'input[type="time"]',function(){jQuery(this).hasClass("timepicker-initialized")||setTimeout(function(){d()},100)})})(e),setTimeout(function(){jQuery('input[type="time"]').each(function(){const e=jQuery(this),t=e.val();t&&e.hasClass("timepicker-initialized")&&e.data("TimePicker")&&e.timepicker("setTime",t)})},300)}()}initializeCalendarAndRefund(){this.initCount++,jQuery("body").off("click","#directorist-calendar-outer-container span.directorist-calendar-day-date"),jQuery("body").off("click","#directorist-calendar-outer-container .directorist-prev"),jQuery("body").off("click","#directorist-calendar-outer-container .directorist-next"),jQuery("body").off("input",".directorist-calendar-price-money input"),jQuery("body").off("click",".directorist-calendar-price-money__currency-preview"),jQuery("body").off("blur",".directorist-calendar-price-money input"),jQuery("body").off("click",".directorist-calendar-day-date-wrapper-inner"),jQuery("body").off("mouseleave",".directorist-calendar-day-date-wrapper-inner");const e=jQuery(".directory_pricing_field").val();jQuery("body .directorist-calendar-day:not(.directorist-weekend) .directorist-calendar-price input").val(e);const t=jQuery(".directorist-weekend-price").val();jQuery("body .directorist-calendar-day.directorist-weekend .directorist-calendar-price input").val(t),this.submitCalendarUpdateUnavDays(),this.submitCalendarUpdatePrice(),this.updateAllPreviewValues(),jQuery("body").on("click",".directorist-calendar-day-date-wrapper-inner",function(e){jQuery(".directorist-calendar-day-date-wrapper-inner").not(this).removeClass("directorist-calendar-day-focused"),jQuery(this).addClass("directorist-calendar-day-focused")}),jQuery("body").on("mouseleave",".directorist-calendar-day-date-wrapper-inner",function(){jQuery(this).removeClass("directorist-calendar-day-focused")}),jQuery("body").on("input",".directorist-calendar-price-money input",function(){const e=jQuery(this).val();jQuery(this).closest(".directorist-calendar-price").find(".directorist-calendar-price-money__currency-preview .available-price").text(e);const t=jQuery(this).closest(".directorist-calendar-day").data("date"),o=e;let i={};const r=jQuery(".bdb_calender_price").val();r&&(i=jQuery.parseJSON(r)),i[t]=o;const n=JSON.stringify(i);jQuery(".bdb_calender_price").val(n)}),jQuery("body").on("click",".directorist-calendar-price-money__currency-preview",function(){jQuery(this).hide(),jQuery(this).siblings(".directorist-calendar-price-money").show(),jQuery(this).siblings(".directorist-calendar-price-money").find("input").focus()}),jQuery("body").on("blur",".directorist-calendar-price-money input",function(){const e=jQuery(this).closest(".directorist-calendar-price");e.find(".directorist-calendar-price-money").hide(),e.find(".directorist-calendar-price-money__currency-preview").show()}),jQuery("body").on("click","#directorist-calendar-outer-container span.directorist-calendar-day-date",e=>{e.preventDefault();const t=jQuery(e.target).closest(".directorist-calendar-day"),o=t.data("date"),i=jQuery(".bdb_calender_unavailable"),r=t.find(".directorist-calendar-price"),n=t.find(".directorist-calendar-day-date-wrapper-inner");if(t.hasClass("not_active")){t.removeClass("not_active");let e=i.val()||"";e=e.replace(o+"|",""),i.val(e),r.show(),n.find(".directorist-booking-close-day").remove()}else{t.addClass("not_active");let e=i.val()||"";i.val(e+o+"|"),r.hide(),0===n.find(".directorist-booking-close-day").length&&n.append('<div class="directorist-booking-close-day">'+("undefined"!=typeof bdb_booking&&bdb_booking.off_day_text?bdb_booking.off_day_text:"Off-Day")+"</div>")}}),jQuery("body").on("input",".directory_pricing_field",e=>{e.preventDefault();const t=jQuery(e.target).val();jQuery(".directorist-calendar-day:not(.directorist-weekend) .directorist-calendar-price input").val(t),this.submitCalendarUpdatePrice()}),jQuery("body").on("input",".directorist-weekend-price",e=>{e.preventDefault();const t=jQuery(e.target).val();jQuery(".directorist-calendar-day.directorist-weekend .directorist-calendar-price input").val(t),this.submitCalendarUpdatePrice()});const o=document.querySelector("#directorist-calendar-outer-container");if(jQuery("body").on("click","#directorist-calendar-outer-container .directorist-prev",e=>{e.preventDefault();const t=jQuery(e.target).closest(".directorist-prev");if(!t.length)return void console.error("Previous button not found");const i=t.data("prev-month"),r=t.data("prev-year");void 0!==i&&void 0!==r?(o.classList.add("directorist-booking-calender--loader"),this.getCalendar(i,r)):console.error("Month or year data missing:",{month:i,year:r})}),jQuery("body").on("click","#directorist-calendar-outer-container .directorist-next",e=>{e.preventDefault();const t=jQuery(e.target).closest(".directorist-next");if(!t.length)return void console.error("Next button not found");const i=t.data("next-month"),r=t.data("next-year");void 0!==i&&void 0!==r?(o.classList.add("directorist-booking-calender--loader"),this.getCalendar(i,r)):console.error("Month or year data missing:",{month:i,year:r})}),!this.refundRulesInitialized){const e=()=>{const e=jQuery(".directorist-refund-policy-switch .directorist-switch .directorist-switch-input"),t=jQuery(".directorist-booking-refund-policy-wrapper");e.length&&t.length&&(e.is(":checked")?t.addClass("refund-policy-enable"):t.removeClass("refund-policy-enable"))};jQuery("body").off("change",".directorist-refund-policy-switch .directorist-switch .directorist-switch-input"),jQuery("body").off("click",".directorist-booking-refund-policy-wrapper .booking-refund-rules .booking-refund_rules-add"),jQuery("body").off("click",".directorist-booking-refund-policy-wrapper .booking-refund-rules-wrapper .booking-refund-rules-single .booking-refund-rules-single__remove .remove-btn"),jQuery("body").on("change",".directorist-refund-policy-switch .directorist-switch .directorist-switch-input",e);const t=(o=0)=>{if(o>10)return;const i=jQuery(".directorist-refund-policy-switch .directorist-switch .directorist-switch-input"),r=jQuery(".directorist-booking-refund-policy-wrapper");i.length&&r.length?(e(),this.refundRulesInitialized=!0):setTimeout(()=>t(o+1),100)};jQuery(document).ready(()=>{t()})}jQuery("body").on("click",".directorist-booking-refund-policy-wrapper .booking-refund-rules .booking-refund_rules-add",function(e){e.preventDefault(),e.stopPropagation();const t=jQuery(this).siblings(".booking-refund-rules-wrapper").find(".booking-refund-rules-single:first").clone();t.find("input").val("");const o=document.querySelectorAll(".booking-refund-rules-single__day").length;t.find(".booking-refund-rules-single__day input").attr("name",`refund_rules[day][${o}]`),t.find(".booking-refund-rules-single__amount input").attr("name",`refund_rules[amount][${o}]`),jQuery(this).siblings(".booking-refund-rules-wrapper").append(t)}),jQuery("body").on("click",".directorist-booking-refund-policy-wrapper .booking-refund-rules-wrapper .booking-refund-rules-single .booking-refund-rules-single__remove .remove-btn",function(e){e.preventDefault(),e.stopPropagation(),jQuery(this).closest(".booking-refund-rules-wrapper").find(".booking-refund-rules-single").length>1&&jQuery(this).closest(".booking-refund-rules-single").remove()})}submitCalendarUpdateUnavDays(){const e=jQuery(".bdb_calender_unavailable").val();e&&(jQuery(".directorist-calendar-day").removeClass("not_active"),jQuery(".directorist-booking-close-day").remove(),jQuery(".directorist-calendar-price").show(),e.split("|").filter(e=>e).forEach(e=>{const t=jQuery(`td.directorist-calendar-day[data-date='${e}']`);if(t.length){t.addClass("not_active");const e=t.find(".directorist-calendar-price"),o=t.find(".directorist-calendar-day-date-wrapper-inner");e.hide(),0===o.find(".directorist-booking-close-day").length&&o.append('<div class="directorist-booking-close-day">'+("undefined"!=typeof bdb_booking&&bdb_booking.off_day_text?bdb_booking.off_day_text:"Off-Day")+"</div>")}}))}updateAllPreviewValues(){jQuery(".directorist-calendar-price").each(function(){const e=jQuery(this),t=e.find("input").val()||"0";e.find(".directorist-calendar-price-money__currency-preview .available-price").text(t)})}submitCalendarUpdatePrice(){const e=jQuery(".bdb_calender_price").val();if(e){const t=JSON.parse(e);Object.entries(t).forEach(([e,t])=>{if(e){const o=jQuery(`td.directorist-calendar-day[data-date='${e}']`);o.find(".directorist-calendar-price input").val(t),o.find(".directorist-calendar-price-money__currency-preview .available-price").text(t)}})}this.updateAllPreviewValues()}getCalendar(e,t){jQuery.ajax({type:"post",dataType:"json",url:bdb_add_booking.ajax_url,data:{action:"directorist_rent_calendar",month:e,year:t},success:e=>{jQuery("#directorist-calendar-outer").html(e.response);const t=jQuery(".directory_pricing_field").val();jQuery(".directorist-calendar-day:not(.directorist-weekend) .directorist-calendar-price input").val(t);const o=jQuery(".directorist-weekend-price").val();jQuery(".directorist-calendar-day.directorist-weekend .directorist-calendar-price input").val(o),this.submitCalendarUpdatePrice(),this.submitCalendarUpdateUnavDays(),this.updateAllPreviewValues(),document.querySelector("#directorist-calendar-outer-container").classList.remove("directorist-booking-calender--loader")}})}}new e;class t{constructor(){this.formElements={slotText:jQuery("#bdb_slot_available_text"),timeText:jQuery("#bdb_available_time_text"),ticketText:jQuery("#bdb_available_ticket_text")},this.init()}init(){jQuery(()=>{this.handleBookingType(),this.handleSlotStatus(),this.handleDuplicateTime(),this.handleCheckboxes(),this.applyDefaultTexts()})}applyDefaultTexts(){const e="undefined"!=typeof bdb_add_booking&&bdb_add_booking.slot_available_default?bdb_add_booking.slot_available_default:"Slot available",t=this.formElements.slotText;t&&t.length&&!t.val()&&t.val(e)}handleBookingType(){const e=()=>jQuery(".directorist-booking-service"),t=()=>jQuery(".directorist-booking-event"),o=()=>jQuery(".directorist-booking-rental"),i=()=>jQuery(".directorist-booking-guest-reservation"),r=()=>jQuery(".directorist-booking-slot-available-wrapper"),n=()=>jQuery(".directorist-booking-available-time-wrapper"),a=()=>jQuery(".bdb-select-hours-wrapper"),c=()=>{const e=jQuery("#slot_status"),t=jQuery("#time_picker");e.is(":checked")?(r().show(),n().hide(),a().addClass("slots-active"),jQuery(".directorist-booking-input-slot").show()):t.is(":checked")?(n().show(),r().hide(),jQuery(".directorist-booking-input-slot").hide()):(r().show(),n().hide(),a().addClass("slots-active"),jQuery(".directorist-booking-input-slot").show())},s=this.formElements,d=bdb_add_booking.booking_type||[];function l(r){e().hide(),t().hide(),o().hide(),i().hide(),"service"===r&&(e().show(),i().show()),"event"===r&&t().show(),"rent"===r&&(o().show(),i().show())}"all"!==d&&(d.includes("service")?l("service"):d.includes("event")?l("event"):d.includes("rent")&&l("rent")),jQuery(document).on("change","#slot_status, #time_picker",function(){c()}),jQuery(document).on("click",".directorist-booking-radio-tab",function(){setTimeout(()=>{c()},50)}),jQuery(document).on("click",".directorist-btn-add-hours",function(){jQuery("#time_picker").is(":checked")&&setTimeout(()=>{jQuery(".directorist-booking-input-slot").hide()},100)}),jQuery('input[name="bdb_booking_type"]').on("change",function(){l(jQuery(this).data("booking-type"))}),jQuery("#display_slot_available_text").on("change",function(){s.slotText.prop("disabled",!this.checked)}),jQuery("#display_available_time").on("change",function(){s.timeText.prop("disabled",!this.checked)}),jQuery("#display_available_ticket").on("change",function(){s.ticketText.prop("disabled",!this.checked)})}handleSlotStatus(){const e=jQuery("#disable_slot_status"),t=jQuery("#dataDom");e.on("change",()=>jQuery(".bdb-select-hours-wrapper").toggleClass("slots-active")),e.is(":checked")&&jQuery(".bdb-select-hours-wrapper").addClass("slots-active"),jQuery('.directorist-booking-timing-type input[name="bdb_slot_status"]').on("change",function(){jQuery("#slot_status").is(":checked")?t.addClass("directorist-slot-active"):t.removeClass("directorist-slot-active")})}handleDuplicateTime(){const e=document.querySelector(".directorist-btn--duplicate-time-toggle"),t=document.querySelector(".directorist-booking-time-duplicate-dropdown__wrapper");e&&t&&(e.addEventListener("click",e=>{e.preventDefault(),t.classList.toggle("directorist-booking-time-duplicate-dropdown__content--active")}),document.body.addEventListener("click",e=>{!e.target.closest(".directorist-booking-time-duplicate-dropdown")&&t.classList.contains("directorist-booking-time-duplicate-dropdown__content--active")&&t.classList.remove("directorist-booking-time-duplicate-dropdown__content--active")}))}handleCheckboxes(){const e=document.getElementById("directorist-checkbox-select-all"),t=document.getElementsByName("directorist-booking-duplicate-days");e&&e.addEventListener("change",e=>{Array.from(t).forEach(t=>t.checked=e.target.checked)});const o=(e,t,o)=>{const i=()=>{const i=jQuery(e).is(":checked");t.prop("disabled",!i),jQuery(o).toggleClass("directorist-booking-disabled",!i)};jQuery("body").on("change",e,i),jQuery(i),new MutationObserver(i).observe(document.body,{childList:!0,subtree:!0})};o("#display_slot_available_text",this.formElements.slotText,".directorist-booking-slot-available-text"),o("#display_available_time",this.formElements.timeText,".directorist-booking-available-time-text"),o("#display_available_ticket",this.formElements.ticketText,".directorist-booking-available-ticket-text"),(()=>{const e=()=>{const e=jQuery("#bdb_enable_booking").is(":checked");jQuery(".directorist-booking-extras").toggleClass("directorist-booking-disabled",!e)};jQuery("body").on("change","#bdb_enable_booking",e),jQuery(e),new MutationObserver(e).observe(document.body,{childList:!0,subtree:!0})})()}}!function(e){e("#disable_slot_status").on("change",function(){e(".bdb-select-hours-wrapper").toggleClass("slots-active")}),e("#disable_slot_status").is(":checked")&&e(".bdb-select-hours-wrapper").toggleClass("slots-active");const t=bdb_add_booking.booking_type||[];e(document).ready(function(){setTimeout(()=>{const t=e("#slot_status"),o=e("#time_picker");t.is(":checked")?(e(".directorist-booking-slot-available-wrapper").show(),e(".directorist-booking-available-time-wrapper").hide(),e(".bdb-select-hours-wrapper").addClass("slots-active"),e(".directorist-booking-input-slot").show()):o.is(":checked")?(e(".directorist-booking-available-time-wrapper").show(),e(".directorist-booking-slot-available-wrapper").hide(),e(".directorist-booking-input-slot").hide()):(e(".directorist-booking-slot-available-wrapper").show(),e(".directorist-booking-available-time-wrapper").hide(),e(".bdb-select-hours-wrapper").addClass("slots-active"),e(".directorist-booking-input-slot").show())},200)}),e(window).on("load",function(){setTimeout(()=>{const t=e("#slot_status"),o=e("#time_picker");t.length>0&&o.length>0&&(t.is(":checked")?(e(".directorist-booking-slot-available-wrapper").show(),e(".directorist-booking-available-time-wrapper").hide(),e(".bdb-select-hours-wrapper").addClass("slots-active"),e(".directorist-booking-input-slot").show()):o.is(":checked")&&(e(".directorist-booking-available-time-wrapper").show(),e(".directorist-booking-slot-available-wrapper").hide(),e(".directorist-booking-input-slot").hide()))},1e3),setInterval(()=>{const t=e("#slot_status"),o=e("#time_picker");if(t.length>0&&o.length>0){const i=t.is(":checked"),r=o.is(":checked"),n=e(".directorist-booking-input-slot").is(":visible"),a=e(".directorist-booking-available-time-wrapper").is(":visible");i&&!n?(e(".directorist-booking-slot-available-wrapper").show(),e(".directorist-booking-available-time-wrapper").hide(),e(".bdb-select-hours-wrapper").addClass("slots-active"),e(".directorist-booking-input-slot").show()):!r||!n&&a||(e(".directorist-booking-available-time-wrapper").show(),e(".directorist-booking-slot-available-wrapper").hide(),e(".directorist-booking-input-slot").hide())}},2e3),"undefined"!=typeof MutationObserver&&new MutationObserver(t=>{let o=!1;t.forEach(t=>{if("childList"===t.type||"attributes"===t.type){const i=t.target;i&&(i.classList.contains("directorist-booking-timing-type")||"slot_status"===i.id||"time_picker"===i.id||i.classList.contains("directorist-booking-input-slot"))&&(o=!0),"childList"===t.type&&t.addedNodes.length>0&&e("#time_picker").is(":checked")&&t.addedNodes.forEach(t=>{if(1===t.nodeType){const o=e(t);(o.hasClass("directorist-booking-input-slot")||o.find(".directorist-booking-input-slot").length>0)&&(o.find(".directorist-booking-input-slot").hide(),o.hasClass("directorist-booking-input-slot")&&o.hide())}})}}),o&&setTimeout(()=>{const t=e("#slot_status"),o=e("#time_picker");t.is(":checked")?(e(".directorist-booking-slot-available-wrapper").show(),e(".directorist-booking-available-time-wrapper").hide(),e(".bdb-select-hours-wrapper").addClass("slots-active"),e(".directorist-booking-input-slot").show()):o.is(":checked")&&(e(".directorist-booking-available-time-wrapper").show(),e(".directorist-booking-slot-available-wrapper").hide(),e(".directorist-booking-input-slot").hide())},100)}).observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["class","style"]})}),e(window).on("load",function(){function o(){const o={service:e(".directorist-booking-service"),event:e(".directorist-booking-event"),rent:e(".directorist-booking-rental"),guests:e(".directorist-booking-guest-reservation")};"all"!==t&&(t.includes("service")?(o.service.show(),o.guests.show(),o.event.hide(),o.rent.hide()):t.includes("event")?(o.event.show(),o.service.hide(),o.guests.hide(),o.rent.hide()):t.includes("rent")&&(o.rent.show(),o.guests.show(),o.event.hide(),o.service.hide())),[["#display_slot_available_text",e("#bdb_slot_available_text"),".directorist-booking-slot-available-text"],["#display_available_time",e("#bdb_available_time_text"),".directorist-booking-available-time-text"],["#display_available_ticket",e("#bdb_available_ticket_text"),".directorist-booking-available-ticket-text"]].forEach(([t,o,i])=>{e(t).is(":checked")?e(i).removeClass("directorist-booking-disabled"):e(i).addClass("directorist-booking-disabled")});const i=e("#slot_status"),r=e("#time_picker");i.is(":checked")?(e(".directorist-booking-slot-available-wrapper").show(),e(".directorist-booking-available-time-wrapper").hide(),e(".bdb-select-hours-wrapper").addClass("slots-active"),e(".directorist-booking-input-slot").show()):r.is(":checked")?(e(".directorist-booking-available-time-wrapper").show(),e(".directorist-booking-slot-available-wrapper").hide(),e(".directorist-booking-input-slot").hide()):(e(".directorist-booking-slot-available-wrapper").show(),e(".directorist-booking-available-time-wrapper").hide(),e(".bdb-select-hours-wrapper").addClass("slots-active"),e(".directorist-booking-input-slot").show()),e('input[name="bdb_booking_type"]').each((t,i)=>{let r=e(i).data("booking-type");e(i).is(":checked")&&("service"===r&&(o.service.show(),o.guests.show(),o.event.hide(),o.rent.hide()),"event"===r&&(o.event.show(),o.service.hide(),o.guests.hide(),o.rent.hide()),"rent"===r&&(o.rent.show(),o.guests.show(),o.event.hide(),o.service.hide()))}),e('.directorist-booking-timing-type input[name="bdb_slot_status"]').each(()=>{e("#slot_status").is(":checked")?e("#dataDom").addClass("directorist-slot-active"):e("#time_picker").is(":checked")&&e("#dataDom").removeClass("directorist-slot-active")}),e(document).on("click",".directorist-tab-nav__item",function(){setTimeout(()=>{const t=e("#slot_status"),o=e("#time_picker");t.is(":checked")?(e(".directorist-booking-slot-available-wrapper").show(),e(".directorist-booking-available-time-wrapper").hide(),e(".bdb-select-hours-wrapper").addClass("slots-active"),e(".directorist-booking-input-slot").show()):o.is(":checked")&&(e(".directorist-booking-available-time-wrapper").show(),e(".directorist-booking-slot-available-wrapper").hide(),e(".directorist-booking-input-slot").hide())},100)});let n=document.querySelector(".directorist-btn--duplicate-time-toggle"),a=document.querySelector(".directorist-booking-time-duplicate-dropdown__wrapper");n&&a&&(n.addEventListener("click",e=>{e.preventDefault(),a.classList.toggle("directorist-booking-time-duplicate-dropdown__content--active")}),document.body.addEventListener("click",function(e){!e.target.closest(".directorist-booking-time-duplicate-dropdown")&&a.classList.contains("directorist-booking-time-duplicate-dropdown__content--active")&&a.classList.remove("directorist-booking-time-duplicate-dropdown__content--active")}));let c=document.getElementById("directorist-checkbox-select-all"),s=document.getElementsByName("directorist-booking-duplicate-days");function d(e){Array.from(s).forEach(t=>t.checked=e)}c&&c.addEventListener("change",function(){d(this.checked)}),Array.from(s).forEach(e=>{e.addEventListener("change",function(){e.checked||(c.checked=!1),document.querySelectorAll(".directorist-booking-time-duplicate-dropdown__content__inner .directorist-checkbox:not(.directorist-checkbox--select-all) input:checked").length===s.length&&(c.checked=!0)})});let l=document.querySelector(".directorist-booking-duplicate-dropdown-reset");l&&l.addEventListener("click",e=>{e.preventDefault(),d(!1),c.checked=!1})}o(),window.addEventListener("directorist-reload-plupload",o)}),e(function(){function t({checkboxSelector:t,inputToDisable:o,textSelector:i,disabledClass:r}){e("body").on("change",t,function(){o.prop("disabled",!this.checked),e(i).toggleClass(r,!this.checked)}),requestAnimationFrame(()=>{const n=e(t);o.prop("disabled",!n.is(":checked")),e(i).toggleClass(r,!n.is(":checked"))})}e("body").on("change",'input[name="bdb_booking_type"]',function(){const t=e(this).data("booking-type"),o=e(".directorist-booking-service"),i=e(".directorist-booking-event"),r=e(".directorist-booking-rental"),n=e(".directorist-booking-guest-reservation");this.checked&&"service"===t&&(o.show(),n.show(),i.hide(),r.hide()),this.checked&&"event"===t&&(i.show(),o.hide(),n.hide(),r.hide()),this.checked&&"rent"===t&&(r.show(),n.show(),i.hide(),o.hide())}),e("body").on("change",'.directorist-booking-timing-type input[name="bdb_slot_status"]',function(){e("#slot_status").is(":checked")?(e(".directorist-booking-available-time-wrapper").hide(),e(".directorist-booking-slot-available-wrapper").show(),e("#dataDom").addClass("directorist-slot-active")):e("#time_picker").is(":checked")&&(e(".directorist-booking-slot-available-wrapper").hide(),e(".directorist-booking-available-time-wrapper").show(),e("#dataDom").removeClass("directorist-slot-active"))}),t({checkboxSelector:"#display_slot_available_text",inputToDisable:e("#bdb_slot_available_text"),textSelector:".directorist-booking-slot-available-text",disabledClass:"directorist-booking-disabled"}),t({checkboxSelector:"#display_available_time",inputToDisable:e("#bdb_available_time_text"),textSelector:".directorist-booking-available-time-text",disabledClass:"directorist-booking-disabled"}),t({checkboxSelector:"#display_available_ticket",inputToDisable:e("#bdb_available_ticket_text"),textSelector:".directorist-booking-available-ticket-text",disabledClass:"directorist-booking-disabled"}),e("body").on("change","#bdb_enable_booking",function(){e(".directorist-booking-extras").toggleClass("directorist-booking-disabled",!this.checked)}),requestAnimationFrame(()=>{const t=e("#bdb_enable_booking");e(".directorist-booking-extras").toggleClass("directorist-booking-disabled",!t.is(":checked"))})})}(jQuery),new t;const o=function(e){const t="#google-calendar-modal",o="[data-step-content='1']",i="[data-step-content='2']",r="#google-calendar-connect",n="#google-calendar-complete",a="#primary-calendar-dropdown",c="#primary-calendar-menu";let s=1,d=null,l=[],u=null,p=!1,g=!1,b=!1;function h(t){const o=e("#connect-google-calendar"),i=e(".directorist-google-calendar-dropdown-wrapper");t?(o.hide(),i.show()):(o.show(),i.hide(),m())}function m(){e(".directorist-google-calendar-dropdown").removeClass("directorist-google-calendar-dropdown--open")}function _(){if(!p){p=!0;try{sessionStorage.setItem("bdb_gc_connected","1")}catch(e){}if(u)try{u.close()}catch(e){}setTimeout(function(){location.reload()},200)}}function y(t=!1){if(!g){if(b&&l.length>0)return k(l),C(),void(t&&v(2));g=!0,D(!0),e.ajax({url:bdb_google_calendar.ajax_url,type:"POST",data:{action:"bdb_get_google_calendars",nonce:bdb_google_calendar.nonce},success:function(e){g=!1,D(!1),e.success&&e.data.calendars?(l=e.data.calendars,b=!0,l.length>0?(k(l),C(),t&&setTimeout(()=>{v(2)},500)):(E(!0),S("No calendars found in your Google account"))):(E(!0),S(e.data.message||"Failed to fetch calendars"))},error:function(e,t,o){g=!1,D(!1),E(!0),S("Network error. Please try again.")}})}}function f(){confirm("Are you sure you want to disconnect Google Calendar? This will remove all your saved credentials.")&&(T(),e.ajax({url:bdb_google_calendar.ajax_url,type:"POST",data:{action:"bdb_disconnect_google_calendar",nonce:bdb_google_calendar.nonce},success:function(e){P(),e.success?(L("Google Calendar disconnected successfully!"),h(!1),l=[],b=!1,g=!1,d=null,setTimeout(()=>{location.reload()},1500)):S(e.data.message||"Failed to disconnect")},error:function(){P(),S("Network error. Please try again.")}}))}function k(t){const o=e(c);if(o.empty(),E(!1),d=null,!t||0===t.length)return void E(!0);const i=t.filter(function(e){return"owner"===e.accessRole||"writer"===e.accessRole});if(t.forEach(function(e){const t=!0===e.primary,i=e.summary||e.id||"Unnamed Calendar",r=e.id,n=e.accessRole||"reader",a="owner"===n||"writer"===n,c="reader"===n,s=`\n        <div class="directorist-google-calendar-modal__dropdown-item ${t&&a?"directorist-google-calendar-modal__dropdown-item--selected":""} ${c?"directorist-google-calendar-modal__dropdown-item--disabled":""}" \n             data-value="${r}"\n             data-writable="${a}">\n          <span class="directorist-google-calendar-modal__dropdown-email">${i}</span>\n          ${t?'<span class="directorist-google-calendar-modal__dropdown-badge">Primary calendar</span>':""}\n          ${c?'<span class="directorist-google-calendar-modal__dropdown-badge directorist-google-calendar-modal__dropdown-badge--readonly">Read-only</span>':""}\n        </div>\n      `;o.append(s),t&&a&&(d=r,j(i))}),!d&&i.length>0){const t=i[0];d=t.id,j(t.summary||t.id),e(".directorist-google-calendar-modal__dropdown-item").removeClass("directorist-google-calendar-modal__dropdown-item--selected"),e(`.directorist-google-calendar-modal__dropdown-item[data-value="${t.id}"]`).addClass("directorist-google-calendar-modal__dropdown-item--selected")}!function(t){const o=e("#conflict-calendars-container");e("#conflict-calendars-loading").hide(),e("#conflict-calendars-empty").hide(),o.find(".directorist-google-calendar-modal__calendar-option").remove(),t&&0!==t.length?t.forEach(function(e){const t=e.id,i=e.summary||e.id||"Unnamed Calendar",r=!0===e.primary,n=(e.backgroundColor,"reader"===(e.accessRole||"reader")),a="conflict-calendar-"+btoa(t).replace(/[^a-zA-Z0-9]/g,"").substring(0,20),c=r?"checked":"",s=`\n        <div class="directorist-google-calendar-modal__calendar-option ${r?"directorist-google-calendar-modal__calendar-option--checked":""} ${n?"directorist-google-calendar-modal__calendar-option--readonly":""}">\n          <input type="checkbox" \n                id="${a}"\n                data-calendar-id="${t}"\n                class="directorist-google-calendar-modal__checkbox" \n                ${c}>\n          <label for="${a}" class="directorist-google-calendar-modal__calendar-label">\n            <div class="directorist-google-calendar-modal__calendar-icon">\n              <input type="checkbox" class="directorist-google-calendar-modal__icon-checkbox" ${c} aria-hidden="true">\n            </div>\n            <div class="directorist-google-calendar-modal__calendar-content">\n              <h4 class="directorist-google-calendar-modal__calendar-title">\n                ${i}\n                ${r?'<span class="directorist-google-calendar-modal__calendar-badge">Primary</span>':""}\n                ${n?'<span class="directorist-google-calendar-modal__calendar-badge directorist-google-calendar-modal__calendar-badge--readonly">Read-only</span>':""}\n              </h4>\n              <p class="directorist-google-calendar-modal__calendar-description">\n                ${r?"Check your primary calendar for conflicts":n?"Check this read-only calendar for conflicts":"Prevent double bookings with this calendar"}\n              </p>\n            </div>\n          </label>\n        </div>\n      `;o.append(s)}):e("#conflict-calendars-empty").show()}(t)}function v(t){s=t,e(".directorist-google-calendar-modal__step").each(function(){const t=parseInt(e(this).data("step"));e(this).removeClass("directorist-google-calendar-modal__step--active directorist-google-calendar-modal__step--completed"),t<s?e(this).addClass("directorist-google-calendar-modal__step--completed"):t===s&&e(this).addClass("directorist-google-calendar-modal__step--active")}),function(t){const o=e(".directorist-google-calendar-modal__title"),i=e(".directorist-google-calendar-modal__subtitle");1===t?(o.text("Connect Google calendar"),i.text("Configure Google calendar to sync your booking")):2===t&&(o.text("Calendar Setup"),i.text("Configure your booking calendar preference"))}(t),e(".directorist-google-calendar-modal__step-content").removeClass("directorist-google-calendar-modal__step-content--active"),1===t?(e(o).show().addClass("directorist-google-calendar-modal__step-content--active"),e(i).hide(),e("#disconnect-google-calendar").hide(),e(r).show(),e(n).hide()):2===t&&(e(o).hide(),e(i).show().addClass("directorist-google-calendar-modal__step-content--active"),e("#disconnect-google-calendar").show(),e(r).hide(),e(n).show())}function w(){e(".directorist-google-calendar-modal__dropdown").removeClass("directorist-google-calendar-modal__dropdown--open")}function j(t){e(a).find(".directorist-google-calendar-modal__dropdown-text").text(t)}function Q(e){const t=e.closest(".directorist-google-calendar-modal__calendar-option");e.is(":checked")?t.addClass("directorist-google-calendar-modal__calendar-option--checked"):t.removeClass("directorist-google-calendar-modal__calendar-option--checked")}function x(o=1){e(t).fadeIn(300),e("body").addClass("directorist-modal-open"),1===o?(e.ajax({url:bdb_google_calendar.ajax_url,type:"POST",data:{action:"bdb_get_saved_credentials",nonce:bdb_google_calendar.nonce},success:function(t){t.success&&t.data&&(t.data.client_id&&e("#google-api-client-id").val(t.data.client_id),t.data.has_secret&&e("#google-api-secret").attr("placeholder","Already saved (enter new to change)"))},error:function(){}}),setTimeout(()=>{v(o)},50)):2===o&&(y(!1),setTimeout(()=>{v(o)},50))}function C(){e.ajax({url:bdb_google_calendar.ajax_url,type:"POST",data:{action:"bdb_get_calendar_settings",nonce:bdb_google_calendar.nonce},success:function(t){if(t.success&&t.data){if(t.data.calendar_id){d=t.data.calendar_id;const o=l.find(e=>e.id===t.data.calendar_id);o&&(j(o.summary||o.id),e(".directorist-google-calendar-modal__dropdown-item").removeClass("directorist-google-calendar-modal__dropdown-item--selected"),e(`.directorist-google-calendar-modal__dropdown-item[data-value="${t.data.calendar_id}"]`).addClass("directorist-google-calendar-modal__dropdown-item--selected"))}t.data.conflict_calendars&&Array.isArray(t.data.conflict_calendars)&&(e(".directorist-google-calendar-modal__checkbox").prop("checked",!1).each(function(){const t=e(this);Q(t),t.closest(".directorist-google-calendar-modal__calendar-option").find(".directorist-google-calendar-modal__icon-checkbox").prop("checked",!1)}),t.data.conflict_calendars.forEach(function(t){const o=e(`.directorist-google-calendar-modal__checkbox[data-calendar-id="${t}"]`);o.length>0&&(o.prop("checked",!0),Q(o),o.closest(".directorist-google-calendar-modal__calendar-option").find(".directorist-google-calendar-modal__icon-checkbox").prop("checked",!0))}))}},error:function(){}})}function $(){e(t).fadeOut(300),e("body").removeClass("directorist-modal-open"),s=1,d=null,e("#google-api-client-id").val(""),e("#google-api-secret").val(""),j("Select your primary calendar"),e(".directorist-google-calendar-modal__checkbox").prop("checked",!1),e(".directorist-google-calendar-modal__calendar-option").removeClass("directorist-google-calendar-modal__calendar-option--checked"),e(".directorist-google-calendar-modal__icon-checkbox").prop("checked",!1)}function T(t){e(r+", "+n).prop("disabled",!0).append('<span class="spinner"></span>')}function P(){e(r+", "+n).prop("disabled",!1).find(".spinner").remove()}function D(t){const o=e("#calendar-loading"),i=e("#calendar-empty");t?(o.show(),i.hide()):o.hide()}function E(t){const o=e("#calendar-empty"),i=e("#calendar-loading");t?(o.show(),i.hide()):o.hide()}function S(e){alert(e)}function L(t){const o=e(`\n      <div class="directorist-google-calendar-modal__success-notification">\n        <div class="directorist-google-calendar-modal__success-icon">\n          <svg width="12" height="9" viewBox="0 0 12 9" fill="none">\n            <path fill-rule="evenodd" clip-rule="evenodd" d="M11.7613 0.21934C11.9017 0.35996 11.9806 0.55059 11.9806 0.74934C11.9806 0.94809 11.9017 1.13871 11.7613 1.27934L4.5113 8.52934C4.37067 8.66974 4.18005 8.74864 3.9813 8.74864C3.78255 8.74864 3.59192 8.66974 3.4513 8.52934L0.201296 5.27934C0.0688163 5.13716 -0.0033037 4.94912 0.000116305 4.75481C0.0035463 4.56051 0.0822562 4.37513 0.219676 4.23771C0.357086 4.1003 0.542476 4.02159 0.736776 4.01816C0.931076 4.01473 1.11912 4.08686 1.2613 4.21934L3.9813 6.93934L10.7013 0.21934C10.8419 0.0788898 11.0325 0 11.2313 0C11.43 0 11.6207 0.0788898 11.7613 0.21934Z" fill="#1A7F37"/>\n          </svg>\n        </div>\n        <div class="directorist-google-calendar-modal__success-content">\n          <p>${t}</p>\n        </div>\n      </div>\n    `);e(".directorist-google-calendar-modal__content").prepend(o),setTimeout(()=>{o.addClass("directorist-google-calendar-modal__success-notification--show")},100),setTimeout(()=>{o.removeClass("directorist-google-calendar-modal__success-notification--show"),setTimeout(()=>o.remove(),300)},2500)}return{init:function(){e(document).on("click",r,function(t){t.preventDefault(),function(){const t=e("#google-api-client-id").val().trim(),o=e("#google-api-secret").val().trim();t&&o?(T(),e.ajax({url:bdb_google_calendar.ajax_url,type:"POST",data:{action:"bdb_save_google_credentials",nonce:bdb_google_calendar.nonce,client_id:t,client_secret:o},success:function(t){P(),t.success?(T(),e.ajax({url:bdb_google_calendar.ajax_url,type:"POST",data:{action:"bdb_initiate_google_oauth",nonce:bdb_google_calendar.nonce},success:function(e){if(P(),e.success&&e.data.auth_url){const t=600,o=700,i=screen.width/2-t/2,r=screen.height/2-o/2;u=window.open(e.data.auth_url,"Google Calendar OAuth",`width=${t},height=${o},left=${i},top=${r}`);const n=setInterval(function(){u&&u.closed&&(clearInterval(n),_())},500)}else S(e.data.message||"Failed to initiate OAuth")},error:function(){P(),S("Network error. Please try again.")}})):S(t.data.message||"Failed to save credentials")},error:function(){P(),S("Network error. Please try again.")}})):S("Please fill in both Client ID and Secret Key")}()}),e(document).on("click",n,function(t){t.preventDefault(),function(){if(!d)return void S("Please select a primary calendar");const t=[];e(".directorist-google-calendar-modal__checkbox:checked").each(function(){const o=e(this).data("calendar-id");o&&t.push(o)}),T(),e.ajax({url:bdb_google_calendar.ajax_url,type:"POST",data:{action:"bdb_save_calendar_settings",nonce:bdb_google_calendar.nonce,calendar_id:d,conflict_calendars:t},success:function(e){P(),e.success?(L("Calendar setup completed successfully!"),h(!0),setTimeout(()=>{$(),location.reload()},2e3)):S(e.data.message||"Failed to save settings")},error:function(e,t,o){P(),S("Network error. Please try again.")}})}()}),e(document).on("click","#connect-google-calendar",function(t){t.preventDefault(),e(o).show(),e(i).hide(),x(1)}),e(document).on("click","#calendar-setup-btn",function(t){t.preventDefault(),t.stopPropagation(),e(".directorist-google-calendar-dropdown").toggleClass("directorist-google-calendar-dropdown--open")}),e(document).on("click","#calendar-settings-btn",function(t){t.preventDefault(),t.stopPropagation(),m(),e(o).hide(),e(i).show(),x(2)}),e(document).on("click","#disconnect-google-calendar-btn",function(e){e.preventDefault(),e.stopPropagation(),m(),f()}),e(document).on("click","#disconnect-google-calendar",function(e){e.preventDefault(),f()}),e(document).on("click","#google-calendar-cancel",function(e){e.preventDefault(),$()}),e(document).on("click",".directorist-google-calendar-modal__close",function(e){e.preventDefault(),$()}),e(document).on("click",".directorist-google-calendar-modal__overlay",function(e){e.target===this&&$()}),e(document).on("keydown",function(o){"Escape"===o.key&&e(t).is(":visible")&&$()}),e(document).on("click",a,function(t){t.preventDefault(),e(a).closest(".directorist-google-calendar-modal__dropdown").toggleClass("directorist-google-calendar-modal__dropdown--open")}),e(document).on("click",".directorist-google-calendar-modal__dropdown-item",function(t){t.preventDefault();const o=e(this);o.hasClass("directorist-google-calendar-modal__dropdown-item--disabled")||function(t){const o=e(`.directorist-google-calendar-modal__dropdown-item[data-value="${t}"]`);if(!0!==o.data("writable"))return S("Read-only calendars cannot be selected as primary calendar. Please select a writable calendar."),void w();d=t;const i=l.find(e=>e.id===t);i&&(j(i.summary||i.id),e(".directorist-google-calendar-modal__dropdown-item").removeClass("directorist-google-calendar-modal__dropdown-item--selected"),o.addClass("directorist-google-calendar-modal__dropdown-item--selected"),w())}(o.data("value"))}),e(document).on("change",".directorist-google-calendar-modal__checkbox",function(){const t=e(this);Q(t),t.closest(".directorist-google-calendar-modal__calendar-option").find(".directorist-google-calendar-modal__icon-checkbox").prop("checked",t.is(":checked"))}),e(document).on("change",".directorist-google-calendar-modal__icon-checkbox",function(){const t=e(this);t.closest(".directorist-google-calendar-modal__calendar-option").find(".directorist-google-calendar-modal__checkbox").prop("checked",t.is(":checked")).trigger("change")}),e(document).on("click",function(t){e(t.target).closest(".directorist-google-calendar-modal__dropdown").length||e(t.target).closest(c).length||w(),e(t.target).closest(".directorist-google-calendar-dropdown-wrapper").length||m()}),window.addEventListener("message",function(e){"google_calendar_connected"===e.data&&_()}),0!==e("#connect-google-calendar").length&&e.ajax({url:bdb_google_calendar.ajax_url,type:"POST",data:{action:"bdb_get_connection_status",nonce:bdb_google_calendar.nonce},success:function(e){e.success?h(e.data.connected||!1):h(!1)},error:function(e,t,o){h(!1)}}),function(){let o=!1;try{o="1"===sessionStorage.getItem("bdb_gc_connected"),o&&sessionStorage.removeItem("bdb_gc_connected")}catch(e){o=!1}o&&e(t).length&&(h(!0),x(2),L("Google Calendar connected successfully!"),y(!0))}()},show:x,close:$}}(jQuery);window.GoogleCalendarModal=o;const i=function(e){const t="#dcl-claim-modal",o="#bdb_user_refund_form",i="#refund-modal-cancel",r=".at-modal-close",n="#bdb_user_refund_reason",a="#bdb_user_payment_details";let c=!1,s=!1;function d(e){const t=e.val().trim();return e.removeClass("user-refund-modal__textarea--error user-refund-modal__textarea--success"),t?(e.addClass("user-refund-modal__textarea--success"),p(e),!0):(e.addClass("user-refund-modal__textarea--error"),u(e,"Refund reason is required"),!1)}function l(e){const t=e.val().trim();return e.removeClass("user-refund-modal__textarea--error user-refund-modal__textarea--success"),t?(e.addClass("user-refund-modal__textarea--success"),p(e),!0):(e.addClass("user-refund-modal__textarea--error"),u(e,"Payment details are required"),!1)}function u(t,o){const i=`${t.attr("id")}-error`;e(`#${i}`).remove();const r=e(`\n      <div id="${i}" class="user-refund-modal__amount-info user-refund-modal__amount-info--error">\n        <i class="las la-exclamation-triangle"></i>\n        <span>${o}</span>\n      </div>\n    `);t.after(r)}function p(t){const o=t.attr("id");e(`#${o}-error`).remove()}function g(t){const o=e("#bdb_user_refund_submit");if(t)o.data("original-text")||o.data("original-text",o.html()),o.addClass("user-refund-modal__submit-btn--loading"),o.prop("disabled",!0),o.html("Processing...");else{o.removeClass("user-refund-modal__submit-btn--loading"),o.prop("disabled",!1);const e=o.data("original-text");e&&o.html(e)}}function b(){c||(e(t).fadeIn(300),e("body").addClass("directorist-modal-open"),c=!0,setTimeout(()=>{e(n).focus()},300),m())}function h(){e(t).fadeOut(300),e("body").removeClass("directorist-modal-open"),c=!1,m()}function m(){e(o)[0].reset(),e(n).removeClass("user-refund-modal__textarea--error user-refund-modal__textarea--success"),e(a).removeClass("user-refund-modal__textarea--error user-refund-modal__textarea--success"),e(".user-refund-modal__amount-info--error").remove(),_(),g(!1),s=!1}function _(){const t=e(".user-refund-modal__notice");t.length&&(t.html('\n        <i class="las la-info-circle"></i>\n        <span>Please fill in all required fields marked with *</span>\n      '),t.removeClass("user-refund-modal__notice--success user-refund-modal__notice--error"))}return{init:function(){e(document).on("click",t,function(e){e.stopPropagation(),e.stopImmediatePropagation()}),e(document).on("click",t+" *",function(t){const o=e(t.target);o.closest(i).length>0||o.closest(r).length>0||o.closest(".at-modal-close").length>0||o.is(i)||o.is(r)||o.is(".at-modal-close")||(t.stopPropagation(),t.stopImmediatePropagation())}),e(document).on("click",i,function(e){return e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),h(),!1}),e(document).on("click",r,function(e){return e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),h(),!1}),e(document).on("click",t+" .at-modal-close",function(e){return e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),h(),!1}),e(document).on("click",".user-refund-modal__overlay",function(e){e.target===this&&h()}),e(document).on("keydown",function(e){"Escape"===e.key&&c&&h()}),e(document).on("click",t+" [data-modal-close], "+t+" [data-dismiss='modal']",function(e){return e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),h(),!1}),document.addEventListener("click",function(o){const n=e(o.target);if(n.closest(t).length>0){const e=n.closest(i).length>0||n.closest(r).length>0||n.closest(".at-modal-close").length>0||n.is(i)||n.is(r)||n.is(".at-modal-close"),t=o.target.classList.contains("user-refund-modal__overlay");e||t||(o.stopPropagation(),o.stopImmediatePropagation())}},!0),e(document).on("submit",o,function(t){t.preventDefault(),s||(function(){let t=!0;return d(e(n))||(t=!1),l(e(a))||(t=!1),t}()?(g(!0),s=!0,setTimeout(()=>{g(!1),s=!1,function(){const t=e(".user-refund-modal__notice");t.length&&(t.html('\n        <i class="las la-check-circle"></i>\n        <span>Refund request submitted successfully!</span>\n      '),t.removeClass("user-refund-modal__notice--error").addClass("user-refund-modal__notice--success"),t.show().css("opacity","0").animate({opacity:1},300),setTimeout(()=>{_()},4e3))}(),setTimeout(()=>{h()},2e3)},1500)):function(t){console.error("❌ Error:",t);const o=e(".user-refund-modal__notice");o.length&&(o.html(`\n        <i class="las la-exclamation-triangle"></i>\n        <span>${t}</span>\n      `),o.removeClass("user-refund-modal__notice--success").addClass("user-refund-modal__notice--error"),o.show().css("opacity","0").animate({opacity:1},300),setTimeout(()=>{_()},5e3))}("Please fill in all required fields correctly"))}),e(document).on("input blur",n,function(){d(e(this))}),e(document).on("input blur",a,function(){l(e(this))}),e(document).on("keydown",t,function(o){"Tab"===o.key&&function(o){const i=e(t).find('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'),r=i.first(),n=i.last();o.shiftKey&&document.activeElement===r[0]?(o.preventDefault(),n.focus()):o.shiftKey||document.activeElement!==n[0]||(o.preventDefault(),r.focus())}(o)}),e(n).addClass("user-refund-modal__textarea"),e(a).addClass("user-refund-modal__textarea"),e("#bdb_user_refund_amount").addClass("user-refund-modal__input")},show:b,close:h,test:function(){b(),setTimeout(()=>{h()},2e3)}}}(jQuery);window.UserRefundModal=i,jQuery(document).ready(()=>{try{new e,new t,o.init(),i.init()}catch(e){console.error("Error initializing booking modules:",e)}})})();