jQuery(function($){
'use strict';
document.querySelectorAll('form.booking_form').forEach(function(form){
var input=$(form).find('.tm_booking_date');
var picker=input.data('daterangepicker');
var dateBlock=form.querySelector('.details-aside-content__datapicker');
if(!picker||!dateBlock){ return; }
var title=document.createElement('label');
title.className='sabine-booking-field-label'; title.htmlFor=input.attr('id'); title.textContent='Pickup & return dates';
dateBlock.before(title);
input.attr('aria-label', 'Pickup and return dates');
var fields=document.createElement('div'); fields.className='sabine-time-fields';
dateBlock.after(fields);
function timeField(label, field, selected){
var wrapper=document.createElement('label'); wrapper.className='sabine-time-field';
var text=document.createElement('span'); text.textContent=label;
var select=document.createElement('select'); select.className='sabine-time-select'; select.setAttribute('aria-label', label);
for (var hour=0;hour<24;hour++){ for(var minute=0;minute<60;minute+=15){
var value=String(hour).padStart(2,'0')+':'+String(minute).padStart(2,'0');
select.add(new Option(value,value));
}}
var exact=selected||'09:00';
if(!Array.from(select.options).some(function(option){ return option.value===exact; })){ select.add(new Option(exact,exact)); }
select.value=exact;
wrapper.append(text,select); fields.append(wrapper);
select.addEventListener('change',function(){
var parts=select.value.split(':');
var date=(field==='start_time'?picker.startDate:picker.endDate).clone().hour(Number(parts[0])).minute(Number(parts[1]));
if(field==='start_time'){ picker.setStartDate(date); }else{ picker.setEndDate(date); }
form.querySelector('[name="'+field+'"]').value=select.value;
if(form.querySelector('[name="start_date"]').value&&form.querySelector('[name="end_date"]').value){ $(form).trigger('change'); }});
return select;
}
var pickup=timeField('Pickup time', 'start_time', picker.startDate.format('HH:mm'));
var dropoff=timeField('Return time', 'end_time', picker.endDate.format('HH:mm'));
input.on('apply.daterangepicker',function(event,p){
pickup.value=p.startDate.format('HH:mm');
dropoff.value=p.endDate.format('HH:mm');
});
var location=form.querySelector('[name="location"]'), returnLocation=form.querySelector('[name="dropoff_location"]');
[[location,'Pickup location'],[returnLocation,'Return location']].forEach(function(pair){
if(pair[0]){ var label=document.createElement('label');label.className='sabine-booking-field-label';label.textContent=pair[1];pair[0].id='sabine-'+pair[0].name+'-'+form.getAttribute('data-id');label.htmlFor=pair[0].id;pair[0].before(label); }});
});
$(document).on('show.daterangepicker', '.tm_booking_date', function(event,picker){
picker.container.find('.drp-calendar.left .hourselect').attr('aria-label','Pickup hour');
picker.container.find('.drp-calendar.left .minuteselect').attr('aria-label','Pickup minute');
picker.container.find('.drp-calendar.right .hourselect').attr('aria-label','Return hour');
picker.container.find('.drp-calendar.right .minuteselect').attr('aria-label','Return minute');
});
});