﻿// JavaScript Document

function daysInMonth(month, year) {
    return 32 - new Date(year, month, 32).getDate();
}

function checkInDate_onchange() {
    var ONE_DAY_IN_MILLISECONDS = 86400000;
    var checkInDate = getCheckInDate();
    if (checkInDate != null) {
        setCheckInDate(checkInDate);
        var checkOutDate = getCheckOutDate();
        if (checkOutDate == null || checkInDate >= checkOutDate) {
            setCheckOutDate(new Date(checkInDate.getTime() + ONE_DAY_IN_MILLISECONDS));
        }
    }
    if (document.forms["fmReservas"].elements["vfCheckInDataDia"].selectedIndex == 0
  		&& document.forms["fmReservas"].elements["vfCheckInDataMes"].selectedIndex == 0) {
        document.forms["fmReservas"].elements["vfCheckInDataDia"].selectedIndex = 0;
        document.forms["fmReservas"].elements["vfCheckInDataMes"].selectedIndex = 0;
    }
}


function checkOutDate_onchange() {
    var ONE_DAY_IN_MILLISECONDS = 86400000;
    var checkOutDate = getCheckOutDate();
    if (checkOutDate != null) {
        setCheckOutDate(checkOutDate);
        var checkInDate = getCheckInDate();
        if (checkInDate == null || checkInDate >= checkOutDate) {
            setCheckInDate(new Date(checkOutDate.getTime() - ONE_DAY_IN_MILLISECONDS));
        }
    }
    if (document.forms["fmReservas"].elements["vfCheckOutDataDia"].selectedIndex == 0
  		&& document.forms["fmReservas"].elements["vfCheckOutDataMes"].selectedIndex == 0) {
        document.forms["fmReservas"].elements["vfCheckOutDataDia"].selectedIndex = 0;
        document.forms["fmReservas"].elements["vfCheckOutDataMes"].selectedIndex = 0;
    }
}

function getDate(daySelectBox, monthAndYearSelectBox) {
    var date = null;
    if (daySelectBox.selectedIndex != 0 && monthAndYearSelectBox.selectedIndex != 0) {
        var dateArray = monthAndYearSelectBox.value.split("/");
        var day = Math.min(daySelectBox.value, daysInMonth(dateArray[0] - 1, dateArray[1]));
        date = new Date(dateArray[1], dateArray[0] - 1, day);
    }
    return date;
}


function getCheckInDate() {
    var daySelectBox = document.forms["fmReservas"].elements["vfCheckInDataDia"];
    var monthAndYearSelectBox = document.forms["fmReservas"].elements["vfCheckInDataMes"];
    return getDate(daySelectBox, monthAndYearSelectBox);
}


function getCheckOutDate() {
    var daySelectBox = document.forms["fmReservas"].elements["vfCheckOutDataDia"];
    var monthAndYearSelectBox = document.forms["fmReservas"].elements["vfCheckOutDataMes"];
    return getDate(daySelectBox, monthAndYearSelectBox);
}


function setDate(daySelectBox, monthAndYearSelectBox, dateField, date) {
    var x = 0;
    while (x < daySelectBox.length) {
        if (daySelectBox.options[x].value == date.getDate()) {
            daySelectBox.selectedIndex = x;
            x = daySelectBox.length;
        }
        else {
            x++;
        }
    }
    x = 0;
    var monthYear = (date.getMonth() + 1) + "/" + date.getFullYear();
    while (x < monthAndYearSelectBox.length) {
        if (monthAndYearSelectBox.options[x].value == monthYear) {
            monthAndYearSelectBox.selectedIndex = x;
            x = monthAndYearSelectBox.length;
        }
        else {
            x++;
        }
    }
    dateField.value = (date.getMonth() + 1) + "/" + date.getDate() + "/" + date.getFullYear();
}


function setCheckInDate(date) {
    var checkInDateField = document.forms["fmReservas"].elements["vfCheckInData"];
    var daySelectBox = document.forms["fmReservas"].elements["vfCheckInDataDia"];
    var monthAndYearSelectBox = document.forms["fmReservas"].elements["vfCheckInDataMes"];
    setDate(daySelectBox, monthAndYearSelectBox, checkInDateField, date);
}


function setCheckOutDate(date) {
    var checkOutDateField = document.forms["fmReservas"].elements["vfCheckOutData"];
    var daySelectBox = document.forms["fmReservas"].elements["vfCheckOutDataDia"];
    var monthAndYearSelectBox = document.forms["fmReservas"].elements["vfCheckOutDataMes"];
    setDate(daySelectBox, monthAndYearSelectBox, checkOutDateField, date);
}