(function () { 'use strict'; function updateDepartureDate(arrivalDateField) { const arrivalDate = new Date(arrivalDateField.value); if (isNaN(arrivalDate.getTime())) { return; } const departureDateField = document.querySelector('[name="departure_date"]'); if (!departureDateField) { return; } function updateDepartureDate(date) { departureDateField.value = date; departureDateField.dispatchEvent(new Event('input', {bubbles: true})); } const minNights = Math.max(1, parseInt(departureDateField.dataset.minNights, 10) || 0); arrivalDate.setUTCDate(arrivalDate.getUTCDate() + minNights); const minDate = formatDate(arrivalDate); departureDateField.setAttribute('min', minDate); const departureDate = new Date(departureDateField.value); const validDepartureDate = !isNaN(departureDate.getTime()) if (!validDepartureDate || departureDate < arrivalDate) { updateDepartureDate(minDate); } const maxNights = parseInt(departureDateField.dataset.maxNights, 10) || 0; if (maxNights > 0) { arrivalDate.setUTCDate(arrivalDate.getUTCDate() + maxNights - minNights); const maxDate = formatDate(arrivalDate); departureDateField.setAttribute('max', maxDate); if (validDepartureDate && departureDate >= arrivalDate) { updateDepartureDate(maxDate); } } } function formatDate(date) { return `${date.getFullYear()}-${zeroPad(date.getMonth() + 1)}-${zeroPad(date.getDate())}`; } function zeroPad(num) { return `${num < 10 ? '0' : ''}${num}` } const arrivalDateField = document.querySelector('[name="arrival_date"]'); if (!arrivalDateField) { return; } arrivalDateField.addEventListener('change', function (event) { updateDepartureDate(event.target); }); updateDepartureDate(arrivalDateField); })();