PageSourceSearch

https://www.nirvanabeauty.com.au/wp-content/cache/flying-press/97f6e4301c2c.avdp-availability-core.js

js nirvanabeauty.com.au collected 2026-09-26 18:47:04 UTC 9,518 bytes, 36 lines download raw bytes

1(function(global){'use strict';var AVDPAvailabilityCore={};function parseFlexibleDate(dateStr,format){if(!dateStr)return null;var parsedDate;var parts;var isDayFirst=format&&/^d[\/\-\.]m[\/\-\.]Y/.test(format);if(!isDayFirst){parsedDate=new Date(dateStr);if(isNaN(parsedDate.getTime())){parsedDate=new Date(dateStr.replace(/\//g,'-'))}
2if(!isNaN(parsedDate.getTime())){return parsedDate}}
3parts=dateStr.split(/[-\/.]/);if(parts.length>=3){if(isDayFirst){parsedDate=new Date(parseInt(parts[2],10),parseInt(parts[1],10)-1,parseInt(parts[0],10))}else if(parts[0].length===4){parsedDate=new Date(parseInt(parts[0],10),parseInt(parts[1],10)-1,parseInt(parts[2],10))}else if(parts[2].length===4){parsedDate=new Date(parseInt(parts[2],10),parseInt(parts[1],10)-1,parseInt(parts[0],10))}}
4return parsedDate||new Date(NaN)}
5function getFirstAvailableDate(config){var dayMap=['sunday','monday','tuesday','wednesday','thursday','friday','saturday'];var weekly=config.weekly_hours||{};var disabledDates=config.disabledDates||[];var exemptedDates=config.exemptedDates||[];var noticeMinutes=parseInt(config.minimum_notice,10)||0;var bookingType=config.booking_type||'fixed';var startDate=new Date();startDate.setTime(startDate.getTime()+(noticeMinutes*60*1000));for(var i=0;i<365;i++){var checkDate=new Date(startDate);checkDate.setDate(startDate.getDate()+i);var dayName=dayMap[checkDate.getDay()];var dateStr=checkDate.getFullYear()+'-'+String(checkDate.getMonth()+1).padStart(2,'0')+'-'+String(checkDate.getDate()).padStart(2,'0');if(exemptedDates.indexOf(dateStr)!==-1){return checkDate}
6if(disabledDates.indexOf(dateStr)!==-1){continue}
7if(weekly[dayName]){var dayConfig=weekly[dayName];var isEnabled=dayConfig.enabled===!0||dayConfig.enabled===1||dayConfig.enabled==='1'||dayConfig.enabled==='true';if(bookingType==='daily'){if(isEnabled){return checkDate}}else{if(isEnabled&&dayConfig.slots&&dayConfig.slots.length>0){var isStartDay=(checkDate.getFullYear()===startDate.getFullYear()&&checkDate.getMonth()===startDate.getMonth()&&checkDate.getDate()===startDate.getDate());if(isStartDay){var candidateSlots=calculateSlots(checkDate,config);var remaining=filterTodaySlots(candidateSlots,0,startDate);if(remaining.length===0){continue}}
8return checkDate}}}}
9return new Date()}
10function calculateSlotsFromCustomRange(date,start,end,config){var allowed=[];var step=parseInt(config.step,10)||30;var bufferBefore=parseInt(config.buffer_before,10)||0;var bufferAfter=parseInt(config.buffer_after,10)||0;var totalCycle=bufferBefore+step+bufferAfter;var startParts=start.split(':');var endParts=end.split(':');var startMins=(parseInt(startParts[0],10)*60)+parseInt(startParts[1],10);var endMins=(parseInt(endParts[0],10)*60)+parseInt(endParts[1],10);var isCross=endMins<startMins;var limit=isCross?1440:endMins;for(var slotStart=startMins+bufferBefore;slotStart+step<=limit;slotStart+=totalCycle){var h=Math.floor(slotStart/60);var m=slotStart%60;allowed.push(String(h).padStart(2,'0')+':'+String(m).padStart(2,'0'))}
11if(isCross){for(var slotStart=bufferBefore;slotStart+step<=endMins;slotStart+=totalCycle){var h=Math.floor(slotStart/60);var m=slotStart%60;var timeStr=String(h).padStart(2,'0')+':'+String(m).padStart(2,'0');if(allowed.indexOf(timeStr)===-1){allowed.push(timeStr)}}}
12allowed.sort();return allowed}
13function calculateSlots(date,config){var y=date.getFullYear();var m=String(date.getMonth()+1).padStart(2,'0');var d=String(date.getDate()).padStart(2,'0');var dateStr=y+'-'+m+'-'+d;var allowedDatesWithTimes=config.allowed_dates_with_times||[];for(var i=0;i<allowedDatesWithTimes.length;i++){var allowedDate=allowedDatesWithTimes[i];if(allowedDate.date===dateStr&&allowedDate.start&&allowedDate.end){return calculateSlotsFromCustomRange(date,allowedDate.start,allowedDate.end,config)}}
14var dayMap=['sunday','monday','tuesday','wednesday','thursday','friday','saturday'];var dayName=dayMap[date.getDay()];var weekly=config.weekly_hours;if(!weekly||!weekly[dayName]){return[]}
15var dayConfig=weekly[dayName];var isEnabled=dayConfig.enabled===!0||dayConfig.enabled===1||dayConfig.enabled==='1'||dayConfig.enabled==='true';if(!isEnabled){return[]}
16var slotsData=dayConfig.slots;if(!slotsData||slotsData.length===0){return[]}
17var allowed=[];var step=parseInt(config.step,10)||30;var bufferBefore=parseInt(config.buffer_before,10)||0;var bufferAfter=parseInt(config.buffer_after,10)||0;var totalCycle=bufferBefore+step+bufferAfter;slotsData.forEach(function(slotRange){var startParts=slotRange.start.split(':');var endParts=slotRange.end.split(':');var startMins=(parseInt(startParts[0],10)*60)+parseInt(startParts[1],10);var endMins=(parseInt(endParts[0],10)*60)+parseInt(endParts[1],10);var isCross=endMins<startMins;var limit=isCross?1440:endMins;for(var slotStart=startMins+bufferBefore;slotStart+step<=limit;slotStart+=totalCycle){var h=Math.floor(slotStart/60);var m=slotStart%60;allowed.push(String(h).padStart(2,'0')+':'+String(m).padStart(2,'0'))}});var yestDate=new Date(date);yestDate.setDate(date.getDate()-1);var yestDayName=dayMap[yestDate.getDay()];if(weekly[yestDayName]&&weekly[yestDayName].enabled&&weekly[yestDayName].slots){weekly[yestDayName].slots.forEac
17h(function(slotRange){var startParts=slotRange.start.split(':');var endParts=slotRange.end.split(':');var startMins=(parseInt(startParts[0],10)*60)+parseInt(startParts[1],10);var endMins=(parseInt(endParts[0],10)*60)+parseInt(endParts[1],10);if(endMins<startMins){for(var slotStart=bufferBefore;slotStart+step<=endMins;slotStart+=totalCycle){var h=Math.floor(slotStart/60);var m=slotStart%60;var timeStr=String(h).padStart(2,'0')+':'+String(m).padStart(2,'0');if(allowed.indexOf(timeStr)===-1){allowed.push(timeStr)}}}})}
18allowed.sort();return allowed}
19function canStartSequentialBooking(startDate,minDays,config){if(!minDays||minDays<=0){return!0}
20var disabledWeekDays=(config.disabledWeekDays||[]).map(function(d){return parseInt(d,10)});var blockedDates=config.disabledDates||[];var exemptedDates=config.exemptedDates||[];var current=new Date(startDate);current.setHours(0,0,0,0);for(var i=0;i<minDays;i++){var y=current.getFullYear();var m=String(current.getMonth()+1).padStart(2,'0');var d=String(current.getDate()).padStart(2,'0');var dateStr=y+'-'+m+'-'+d;var dayOfWeek=current.getDay();if(exemptedDates.indexOf(dateStr)!==-1){current.setDate(current.getDate()+1);continue}
21if(disabledWeekDays.indexOf(dayOfWeek)!==-1){return!1}
22if(blockedDates.indexOf(dateStr)!==-1){return!1}
23current.setDate(current.getDate()+1)}
24return!0}
25function validateSequence(startDate,endDate,config){var disabledWeekDays=(config.disabledWeekDays||[]).map(function(d){return parseInt(d,10)});var blockedDates=config.disabledDates||[];var exemptedDates=config.exemptedDates||[];var current=new Date(startDate);current.setHours(0,0,0,0);var end=new Date(endDate);end.setHours(0,0,0,0);while(current<=end){var y=current.getFullYear();var m=String(current.getMonth()+1).padStart(2,'0');var d=String(current.getDate()).padStart(2,'0');var dateStr=y+'-'+m+'-'+d;var dayOfWeek=current.getDay();if(disabledWeekDays.indexOf(dayOfWeek)!==-1){current.setDate(current.getDate()+1);continue}
26if(exemptedDates.indexOf(dateStr)!==-1){current.setDate(current.getDate()+1);continue}
27if(blockedDates.indexOf(dateStr)!==-1){return{valid:!1,blockedDate:dateStr}}
28current.setDate(current.getDate()+1)}
29return{valid:!0,blockedDate:null}}
30function countAvailableDays(startDate,endDate,config){var disabledDates=config.disabledDates||[];var disabledWeekDays=(config.disabledWeekDays||[]).map(function(d){return parseInt(d,10)});var exemptedDates=config.exemptedDates||[];var count=0;var current=new Date(startDate);current.setHours(0,0,0,0);var end=new Date(endDate);end.setHours(0,0,0,0);while(current<=end){var y=current.getFullYear();var m=String(current.getMonth()+1).padStart(2,'0');var d=String(current.getDate()).padStart(2,'0');var dateStr=y+'-'+m+'-'+d;var dayOfWeek=current.getDay();var isAvailable;if(exemptedDates.indexOf(dateStr)!==-1){isAvailable=!0}else if(disabledDates.indexOf(dateStr)!==-1){isAvailable=!1}else if(disabledWeekDays.indexOf(dayOfWeek)!==-1){isAvailable=!1}else{isAvailable=!0}
31if(isAvailable){count++}
32current.setDate(current.getDate()+1)}
33return count}
34function filterTodaySlots(slots,noticeMinutes,now){if(!slots||slots.length===0)return slots;var reference=now instanceof Date?now:new Date();var minAvailableTime=new Date(reference.getTime()+((noticeMinutes||0)*60*1000));if(minAvailableTime.getDate()!==reference.getDate()||minAvailableTime.getMonth()!==reference.getMonth()||minAvailableTime.getFullYear()!==reference.getFullYear()){return[]}
35var minMins=(minAvailableTime.getHours()*60)+minAvailableTime.getMinutes();return slots.filter(function(timeStr){var parts=timeStr.split(':');var slotMins=(parseInt(parts[0],10)*60)+parseInt(parts[1],10);return slotMins>=minMins})}
36AVDPAvailabilityCore.parseFlexibleDate=parseFlexibleDate;AVDPAvailabilityCore.getFirstAvailableDate=getFirstAvailableDate;AVDPAvailabilityCore.calculateSlots=calculateSlots;AVDPAvailabilityCore.calculateSlotsFromCustomRange=calculateSlotsFromCustomRange;AVDPAvailabilityCore.canStartSequentialBooking=canStartSequentialBooking;AVDPAvailabilityCore.validateSequence=validateSequence;AVDPAvailabilityCore.countAvailableDays=countAvailableDays;AVDPAvailabilityCore.filterTodaySlots=filterTodaySlots;if(typeof module!=='undefined'&&module.exports){module.exports=AVDPAvailabilityCore}else{global.AVDPAvailabilityCore=AVDPAvailabilityCore}})(typeof window!=='undefined'?window:this)

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.