HEX
Server: nginx/1.24.0
System: Linux DGT-WORDPRESS-VM-SERVER 6.14.0-1014-azure #14~24.04.1-Ubuntu SMP Fri Oct 3 20:52:11 UTC 2025 x86_64
User: ubuntu (1000)
PHP: 8.4.12
Disabled: NONE
Upload Files
File: /mnt/data/dreamsrent-wp-demo/wp-content/themes/dreamsrent/assets/js/booking.js
/*** Booking Form Functions****/
jQuery(document).ready(function ($) {

    var hourFormat = window.hourFormat;
        var timeFormat = (hourFormat === '12') ? 'hh:mm A' : 'HH:mm';
        var minuteStepping = (hourFormat === '12') ? 10 : 60;


    /**Start Date */
    // Initialize date picker
    $('#startdatePicker').datetimepicker({
        format: 'DD-MM-YYYY',

    });

    $('#startdatePickerhome').datetimepicker({
        format: 'DD-MM-YYYY',

    });

    

    // Initialize time picker
    $('#starttimePicker').datetimepicker({
        format: timeFormat,
        stepping: minuteStepping,

    });

    // Combine date and time and set the result to the output input
    $('#startdatePicker, #starttimePicker').on('dp.change', function () {
        var datestart = $('#startdatePicker').val();
        var timestart = $('#starttimePicker').val();
        var combinedDateTime_start = datestart + ' ' + timestart;
        $('#outputDateTime_start').val(combinedDateTime_start);

        // Set the end time picker value to be the same as the start time picker value
        var startTime = $('#starttimePicker').val();
        if ($('input[name="time-option"]:checked').val() === 'day') {
            $('#endtimePicker').val(startTime);

            // $('#endtimePicker').val($(this).val());
        }
        // $('#endtimePicker').val(startTime);
        hiddenEndTime.value = startTime;
    });

    

    /**End Date */
    $('#enddatePicker').datetimepicker({
        format: 'DD-MM-YYYY',
    });

    // Initialize time picker
    $('#endtimePicker').datetimepicker({
        format: timeFormat,
    });

    if ($('input[name="time-option"]:checked').val() === 'day') {
        $('#starttimePicker').on('dp.change', function () {
            var dateend = $('#enddatePicker').val();
            var timeend = $('#starttimePicker').val();
            var combinedDateTime_end = dateend + ' ' + timeend;
            $('#outputDateTime_end').val(combinedDateTime_end);
        });

    }
    else if ($('input[name="time-option"]:checked').val() === 'hour'){
    // Combine date and time and set the result to the output input
    $('#enddatePicker, #endtimePicker').on('dp.change', function () {
        var dateend = $('#enddatePicker').val();
        var timeend = $('#endtimePicker').val();
        var combinedDateTime_end = dateend + ' ' + timeend;
        $('#outputDateTime_end').val(combinedDateTime_end);
    });

}
    if ($('#startdatePicker').length > 0) {
        $('#startdatePicker').datetimepicker({
            format: 'DD-MM-YYYY',
            icons: {
                up: "fas fa-angle-up",
                down: "fas fa-angle-down",
                next: 'fas fa-angle-right',
                previous: 'fas fa-angle-left'
            },
            minDate: new Date()
        });

        // Update end date placeholder with start date
        // $('#enddatePicker').on('dp.change', function (e) {
        //     $('#enddatePicker').data("DateTimePicker").minDate(e.date);
        //     $('#enddatePicker').val(e.date.format('DD-MM-YYYY'));
        // });

        $('#enddatePicker').on('dp.show', function(e) {
            var startDate = $('#startdatePicker').val();
            $(this).data("DateTimePicker").minDate(startDate);
        });


        $('#starttimePicker').datetimepicker({
            timeFormat: timeFormat,
            interval: 30,
            stepping: minuteStepping,
            change: function(time) {
                // Update hidden input with selected time
                $('#hiddenStartTime').val($(this).val());
            }
        });

        $('#endtimePicker').datetimepicker({
            timeFormat: timeFormat,
            interval: 30,
            stepping: minuteStepping,
            change: function(time) {
                // Update hidden input with selected time
                $('#hiddenEndTime').val($(this).val());
            }
        });

        // Trigger change event on page load to set hidden inputs if there are default values
        $('#starttimePicker').trigger('change');
        $('#endtimePicker').trigger('change');

        // Disable the end time picker so that the user cannot modify its value
        // $('#endtimePicker').prop('disabled', true);
    }

    if ($('#enddatePicker').length > 0) {
        $('#enddatePicker').datetimepicker({
            format: 'DD-MM-YYYY',
            icons: {
                up: "fas fa-angle-up",
                down: "fas fa-angle-down",
                next: 'fas fa-angle-right',
                previous: 'fas fa-angle-left'
            },
        });
    }
});

/*** Booking Form Functions****/

jQuery(document).ready(function($) {

    // $('.dsrent_pickup_loc').on('change', function() {
    //     var selectedLocation = $(this).val();
    //     $('#dsrent_pickup_loc_hidden').val(selectedLocation);
    // });

    $(document).ready(function () {
        // Check if the location is selected from the session and set the hidden input value
        var selectedLocation = $('.dsrent_pickup_loc').val();
        var selectedOption = $('.dsrent_pickup_loc option:selected');
    
        // Check if selectedOption has a value and set the hidden field
        if (selectedOption.length > 0 && selectedOption.is(':selected')) {
            $('#dsrent_pickup_loc_hidden').val(selectedOption.val());
        } else {
            $('#dsrent_pickup_loc_hidden').val(selectedLocation);
        }
    
        // On change event for the location select input
        $('.dsrent_pickup_loc').on('change', function () {
            var selectedLocation = $(this).val();
            $('#dsrent_pickup_loc_hidden').val(selectedLocation);
        });
    });

    $(document).ready(function () {
        // Check if the location is selected from the session and set the hidden input value
        var selectedLocation = $('.dsrent_pickoff_loc').val();
        var selectedOption = $('.dsrent_pickoff_loc option:selected');
    
        // Check if selectedOption has a value and set the hidden field
        if (selectedOption.length > 0 && selectedOption.is(':selected')) {
            $('#dsrent_pickoff_loc_hidden').val(selectedOption.val());
        } else {
            $('#dsrent_pickoff_loc_hidden').val(selectedLocation);
        }
    
        // On change event for the location select input
        $('.dsrent_pickoff_loc').on('change', function () {
            var selectedLocation = $(this).val();
            $('#dsrent_pickoff_loc_hidden').val(selectedLocation);
        });
    });
    
    $(document).ready(function () {
        // Add click event to the search button
        $('.search-button').on('click', function (e) {
            e.preventDefault(); // Prevent default form submission
    
            const pickupDate = $('#startdatePickerhome').val();
            const returnDate = $('#enddatePickerHome').val();
    
            if (pickupDate && returnDate) {
                // Convert DD-MM-YYYY to YYYY-MM-DD for valid date comparison
                const pickupDateParts = pickupDate.split('-');
                const returnDateParts = returnDate.split('-');
    
                const pickupDateFormatted = new Date(`${pickupDateParts[2]}-${pickupDateParts[1]}-${pickupDateParts[0]}`);
                const returnDateFormatted = new Date(`${returnDateParts[2]}-${returnDateParts[1]}-${returnDateParts[0]}`);
    
                if (returnDateFormatted <= pickupDateFormatted) {
                    alert('Return Date must be greater than Pickup Date.');
                    return; // Stop form submission
                }
            } else {
                // alert('Error: Both Pickup Date and Return Date are required.');
                // return; // Stop form submission
            }
    
            // If validation passes, submit the form
            $(this).closest('form').submit();
        });
    });
    

    // $('.dsrent_pickoff_loc').on('change', function() {
    //     var selectedLocation2 = $(this).val();
    //     $('#dsrent_pickoff_loc_hidden').val(selectedLocation2);
    // });

    jQuery(document).ready(function($) {
        $('input[name="time-option"]').on('change', function() {
          $('#startdatePicker').val('');
          $('#enddatePicker').val('');
          $('#starttimePicker').val('');
          $('#endtimePicker').val('');
        });
      });
});


/*** Booking form validation ***/
 
function validateForm() {
    // Reset error messages
    document.getElementById("pickup_loc_error").innerHTML = "";
    document.getElementById("dropoff_loc_error").innerHTML = "";
	document.getElementById("pickup_date_error").innerHTML = "";
    document.getElementById("pickup_time_error").innerHTML = "";
    document.getElementById("pickoff_date_error").innerHTML = "";
    document.getElementById("pickoff_time_error").innerHTML = "";
    document.getElementById("min_oneday").innerHTML = "";
    document.getElementById("time_error").innerHTML = "";


    // Get selected values
    const pickupLoc = document.getElementById("dsrent_pickup_loc").value;
    const dropoffLoc = document.getElementById("dsrent_pickoff_loc").value;
    const pickupDate = document.getElementById("startdatePicker").value;
    const dropoffDate = document.getElementById("enddatePicker").value;
    const pickupTimeInput = document.getElementById("starttimePicker");
    const dropoffTimeInput = document.getElementById("endtimePicker");
    var timeOption = document.querySelector('input[name="time-option"]:checked').value;

    const pickupTime = pickupTimeInput.value || pickupTimeInput._flatpickr?.selectedDates[0];
    const dropoffTime = dropoffTimeInput.value || dropoffTimeInput._flatpickr?.selectedDates[0];


    var isValid = true;

    // if (pickupTime >= dropoffTime) {
    //     isValid = false;
    // }

    // if (pickupLoc === "") {
    //     document.getElementById("pickup_loc_error").innerHTML = "Please select a pickup location.";
    //     isValid = false;
    // }
    if (pickupLoc === "") {
        document.getElementById("pickup_loc_error").innerHTML = bookingTranslations.pickup_location_error;
        isValid = false;
    }

    
    if (dropoffLoc === "") {
        document.getElementById("dropoff_loc_error").innerHTML = bookingTranslations.dropoff_location_error;
        isValid = false;
    }

	if (pickupDate === "") {
            document.getElementById("pickup_date_error").innerHTML = bookingTranslations.pickup_date_error;
            isValid = false;
        }

        if (dropoffDate === "") {
            document.getElementById("pickoff_date_error").innerHTML = bookingTranslations.dropoff_date_error;
            isValid = false;
        }
        if (pickupTime === "") {
            document.getElementById("pickup_time_error").innerHTML = bookingTranslations.pickup_time_error;
            isValid = false;
        }

        if (dropoffTime === "") {
            document.getElementById("pickoff_time_error").innerHTML =bookingTranslations.dropoff_time_error;
            isValid = false;
        }

        // if (pickupDate == dropoffDate) {
        //     isValid = false;
        // }
    function parseDateTime(dateStr, timeStr) {
        // First ensure we have valid strings
        if (typeof dateStr !== 'string' || typeof timeStr !== 'string') {
            console.error('Invalid date/time input:', { dateStr, timeStr });
            return null;
        }

        // Split the date string into day, month, year
        const dateParts = dateStr.split('-');
        if (dateParts.length !== 3) {
            console.error('Invalid date format (expected DD-MM-YYYY):', dateStr);
            return null;
        }

        const [day, month, year] = dateParts.map(Number);

        // Parse the time string with proper validation
        let hours = 0, minutes = 0;

        if (typeof timeStr === 'string') {
            const timeParts = timeStr.split(':');
            if (timeParts.length >= 2) {
                hours = parseInt(timeParts[0]) || 0;
                minutes = parseInt(timeParts[1]) || 0;

                // Handle 12-hour format if PM/AM is present
                if (timeStr.toLowerCase().includes('pm') && hours < 12) {
                    hours += 12;
                }
                if (timeStr.toLowerCase().includes('am') && hours === 12) {
                    hours = 0;
                }
            }
        }

        // Create a Date object (months are 0-indexed in JavaScript)
        const dateObj = new Date(year, month - 1, day, hours, minutes);

        // Validate the date object
        if (isNaN(dateObj.getTime())) {
            console.error('Invalid date created from:', { day, month, year, hours, minutes });
            return null;
        }

        return dateObj;
    }
    const pickupDateTime = parseDateTime(pickupDate, pickupTime);
    const dropoffDateTime = parseDateTime(dropoffDate, dropoffTime);

    
    // Calculate difference in milliseconds
    const timeDifference = dropoffDateTime - pickupDateTime;
    const hoursDifference = timeDifference / (1000 * 60 * 60);
       
         if (timeOption === 'day') {
        // Check if rental is less than 24 hours
             console.log(pickupDate, pickupTime,pickupDateTime,dropoffDateTime,pickupDateTime,hoursDifference);
        if (hoursDifference < 24) {
            document.getElementById("min_oneday").innerHTML = bookingTranslations.min_oneday_error;
            isValid = false;
        }
        
        // Check if same day (regardless of time)
        if (pickupDate === dropoffDate) {
            document.getElementById("pickup_date_error").innerHTML = bookingTranslations.pickup_date_error2;
            isValid = false;
        }
    }  else if (timeOption === 'hour') {
            if(pickupDate === dropoffDate){
                if(pickupTime >= dropoffTime) {
                // document.getElementById('pickup_date_error').textContent = 'Pickup and Dropoff dates must be the same for hour rental.';
                document.getElementById("time_error").innerHTML = bookingTranslations.time_error_error2;
                isValid = false;
            } else if (pickupDate !== dropoffDate){
                isValid = true;

            }
            }
        } else {
            document.getElementById('pickup_date_error').textContent = '';
        }

    if (isValid) {
        return true; 
    } else {
        return false; 
    }
}


// for radio button
function handlePaymentType(type) {
    // Update the hidden field value based on the selected type
    document.getElementById('dsr_type_deposit_hidden').value = type;
}
    
// Enquiry Us

// document.addEventListener('DOMContentLoaded', function() {
//     const starttimePicker = document.getElementById('starttimePicker');
//     const endtimePicker = document.getElementById('endtimePicker');
//     const hiddenStartTime = document.getElementById('hiddenStartTime');
//     const hiddenEndTime = document.getElementById('hiddenEndTime');

//     starttimePicker.addEventListener('change', function() {
//         hiddenStartTime.value = starttimePicker.value;
//     });

//     endtimePicker.addEventListener('change', function() {
//         hiddenEndTime.value = endtimePicker.value;
//     });
// });

document.addEventListener('DOMContentLoaded', function() {
    const starttimePicker = document.getElementById('starttimePicker');
    const endtimePicker = document.getElementById('endtimePicker');
    const hiddenStartTime = document.getElementById('hiddenStartTime');
    const hiddenEndTime = document.getElementById('hiddenEndTime');

    // console.log(starttimePicker, endtimePicker, hiddenStartTime, hiddenEndTime);

    if (starttimePicker && endtimePicker && hiddenStartTime && hiddenEndTime) {
        starttimePicker.addEventListener('change', function() {
            hiddenStartTime.value = starttimePicker.value;
        });

        endtimePicker.addEventListener('change', function() {
            hiddenEndTime.value = endtimePicker.value;
        });
    } 
});

function updateFormActionAndSubmit(form) {
    const startTime = document.getElementById('hiddenStartTime').value;
    const endTime = document.getElementById('hiddenEndTime').value;

    form.action = form.action.split('?')[0] + '?start_time=' + encodeURIComponent(startTime) + '&end_time=' + encodeURIComponent(endTime);
    return true; // Allow form submission
}


jQuery(document).ready(function($) {

    // $('#endtimePicker').prop('disabled', true);

    $('input[name="time-option"]').on('change', function() {
        if ($(this).val() === 'day') {
            // $('#endtimePicker').prop('disabled', true);
        } else if ($(this).val() === 'hour') {
            $('#endtimePicker').prop('disabled', false);
        }
    });

    $('#starttimePicker').on('change', function() {
        if ($('input[name="time-option"]:checked').val() === 'day') {
            
            // $('#endtimePicker').val($(this).val());
        }
    });
    
});



jQuery(document).ready(function ($) {
    const timeMonth = $("#time-month");
    const pickupDateInput = $("#startdatePicker");
    const pickupTimeInput = $("#starttimePicker");
    const dropoffDateInput = $("#enddatePicker");
    const dropoffTimeInput = $("#endtimePicker");

    const TimeWeek = $("#time-week");

    // Initialize Bootstrap DateTimePicker with DD-MM-YYYY format
    pickupDateInput.datetimepicker({
        format: "DD-MM-YYYY",
        useCurrent: false
    });

    pickupTimeInput.datetimepicker({
        format: "HH:mm",
        useCurrent: false
    });

    dropoffDateInput.datetimepicker({
        format: "DD-MM-YYYY",
        useCurrent: false
    });

    dropoffTimeInput.datetimepicker({
        format: "HH:mm",
        useCurrent: false
    });

    // Function to update Drop-off Date & Time
    function updateDropoffDateTime() {
        if (timeMonth.is(":checked")) {
            let selectedDate = pickupDateInput.data("DateTimePicker").date();
            let selectedTime = pickupTimeInput.data("DateTimePicker").date();

            if (!selectedDate || !selectedTime) return;

            // Combine Date & Time
            let selectedDateTime = selectedDate.clone().hour(selectedTime.hour()).minute(selectedTime.minute());

            // Add 30 Days
            let newDateTime = selectedDateTime.clone().add(30, "days");

            // Update Drop-off Date & Time
            dropoffDateInput.data("DateTimePicker").date(newDateTime);
            dropoffTimeInput.data("DateTimePicker").date(newDateTime);

            // Disable Drop-off Date & Time fields
            dropoffDateInput.attr("readonly", true);
            dropoffTimeInput.attr("readonly", true);
      
        }  else if (TimeWeek.is(":checked")) {
            let selectedDate = pickupDateInput.data("DateTimePicker").date();
            let selectedTime = pickupTimeInput.data("DateTimePicker").date();

            if (!selectedDate || !selectedTime) return;

            // Combine Date & Time
            let selectedDateTime = selectedDate.clone().hour(selectedTime.hour()).minute(selectedTime.minute());

            // Add 7 Days
            let newDateTime = selectedDateTime.clone().add(7, "days");

            // Update Drop-off Date & Time
            dropoffDateInput.data("DateTimePicker").date(newDateTime);
            dropoffTimeInput.data("DateTimePicker").date(newDateTime);

            // Disable Drop-off Date & Time fields
            dropoffDateInput.attr("readonly", true);
            dropoffTimeInput.attr("readonly", true);
        } else {
            // Enable Drop-off Date & Time fields for other rental types
            dropoffDateInput.attr("readonly", false);
            dropoffTimeInput.attr("readonly", false);
        }   
    }

    // Event listener for Pickup Date or Time change
    $("#startdatePicker, #starttimePicker").on("dp.change", function () {
        updateDropoffDateTime();
    });

    // Event listener for changing Rental Type
    $("input[name='time-option']").on("change", function () {
        updateDropoffDateTime();
    });
});



 


// var startTime = $('#starttimePicker').val();
// $('#endtimePicker').val(startTime);
// hiddenEndTime.value = startTime;

// document.addEventListener('DOMContentLoaded', function() {
//     const insuranceRadios = document.querySelectorAll('.dsrent_insurance_radio');
//     const bookingNotesDiv = document.getElementById('tpl_booking_notes');

//     insuranceRadios.forEach(function(radio) {
//         radio.addEventListener('click', function() {
//             // Hide the booking notes div by default
//             bookingNotesDiv.style.display = 'none';

//             // Check if the clicked radio button's name matches "TPL"
//             if (this.checked && this.dataset.name === 'TPL') {
//                 bookingNotesDiv.style.display = 'block'; // Show if it matches "TPL"
//             }
//         });
//     });
// });