`;
for (let i = 0; i < firstDay; i++) {
grid.innerHTML += ``;
}
for (
let day = 1;
day <= daysInMonth;
day++
) {
const dateObject =
new Date(year, month, day);
const today =
new Date();
today.setHours(0, 0, 0, 0);
const isPast =
dateObject < today;
const dateString =
`${day} ${monthNamesShort[month]} ${year}`;
const selected =
input &&
input.value === dateString;
const classes = ['cal-day'];
if (isPast) {
classes.push('disabled');
}
if (selected) {
classes.push('selected');
}
grid.innerHTML += `
${day}
`;
}
}
function selectMultiCityDate(index, dateString) {
if (!multiCityLegs[index]) return;
multiCityLegs[index].depart =
dateString;
const input =
document.getElementById(
`mc-depart-${index}`
);
if (input) {
input.value = dateString;
}
closePopups();
/*
* Keep the following legs sensible:
* if a later leg is now before this leg,
* move it forward rather than leaving
* an impossible itinerary.
*/
}
function nextMultiCityMonth(index) {
const current =
multiCityCalendarMonths[index] ?? 7;
if (current >= 11) return;
multiCityCalendarMonths[index] =
current + 1;
renderMultiCityCalendar(index);
}
function prevMultiCityMonth(index) {
const current =
multiCityCalendarMonths[index] ?? 7;
if (current <= 0) return;
multiCityCalendarMonths[index] =
current - 1;
renderMultiCityCalendar(index);
}