jQuery(function($){
'use strict';
var formats={
'MM/DD/YYYY': 'm/d/Y', 'DD/MM/YYYY': 'd/m/Y',
'MM-DD-YYYY': 'm-d-Y', 'DD-MM-YYYY': 'd-m-Y',
'MM.DD.YYYY': 'm.d.Y', 'DD.MM.YYYY': 'd.m.Y'
};
function check(form){
var sequence=(form.data('min-days-sequence')||0) + 1;
var start=form.find('.start_date').val(), end=form.find('.end_date').val();
form.data('min-days-sequence', sequence).data('min-days-checked', 'pending');
form.trigger('tmbooking:validation');
form.find('.min-days-error').remove();
if(!start||!end){ return; }
$.ajax({
url: tm_booking_min_days.url,
type: 'POST',
data: {
action: 'tmbooking_check_min_days', nonce: tm_booking_min_days.nonce,
post_id: form.data('id'), start_date: start, end_date: end,
date_format: formats[tm_booking_min_days.date_format_setting]||'d/m/Y'
}}).done(function(response){
if(sequence!==form.data('min-days-sequence')){ return; }
var data=response&&response.data;
var passed = !!(response&&response.success&&data&&data.meets_requirement===true);
form.data('min-days-checked', passed ? 'passed':'failed');
form.find('.min-days-info').toggle(!passed).toggleClass('warning', !passed);
if(!passed){
var message=data&&data.message ? data.message:'Unable to validate the rental duration. Please try again.';
var error=$('<div class="min-days-error">');
if(data&&data.message_parts){
error.text(data.message_parts.first).append($('<br>')).append(document.createTextNode(data.message_parts.second));
}else{ error.text(message); }
form.find('.min-days-info-container').append(error);
}
form.trigger('tmbooking:validation');
}).fail(function(){
if(sequence!==form.data('min-days-sequence')){ return; }
form.data('min-days-checked', 'error');
form.find('.min-days-info-container').append($('<div class="min-days-error">').text('Unable to validate the rental duration. Please try again.'));
form.trigger('tmbooking:validation');
});
}
$(document).on('change', 'form.booking_form', function(){ check($(this)); });
$('form.booking_form').each(function(){
var form=$(this);
if(form.find('.start_date').val()&&form.find('.end_date').val()){ check(form); }});
});