﻿


var daysInMonthArray = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

function isLeapYear(inputYear) {
    if (inputYear % 400 == 0 || (inputYear % 4 == 0 && inputYear % 100 != 0)) return true;
    return false;
}

function dateChanged(ctl, source) {
    var dayCtl = $('#' + ctl + 'Day');
    var monthYearCtl = $('#' + ctl + 'MonthYear');
    var calendarCtl = $('#' + ctl + 'Date');

    if (source == 'calendar') {
        var selectedDate = calendarCtl.datepicker('getDate');
        populateDatesCtls(ctl, selectedDate);
    }
    else {
        var dateString = (monthYearCtl.val() + '-' + dayCtl.val()).split('-');

        if (isLeapYear(dateString[0]))
            daysInMonthArray[1] = 29;

        if (daysInMonthArray[dateString[1] - 1] != dayCtl.val()) {
            if (daysInMonthArray[dateString[1] - 1] < dayCtl.val()) {
                dayCtl.val(daysInMonthArray[dateString[1] - 1]);
                dateString = (monthYearCtl.val() + '-' + dayCtl.val()).split('-');
            }
            populateDatesCtls(ctl, new Date(dateString[0], dateString[1] - 1, dateString[2]));
        }

        var selectedDate = new Date(dateString[0], dateString[1] - 1, dateString[2]);
        calendarCtl.datepicker('setDate', selectedDate);
    }

    var startDate = $('#startDate').datepicker('getDate');
    var endDate = $('#endDate').datepicker('getDate');
    if (endDate <= startDate) {
        startDate.setHours(24);
        $('#endDate').datepicker('setDate', startDate);
        populateDatesCtls('end', startDate);
    }    
}

function populateDatesCtls(ctl, date) {
    var dayCtl = $('#' + ctl + 'Day');
    var monthYearCtl = $('#' + ctl + 'MonthYear');

    dayCtl.empty();
    monthYearCtl.empty();

    for (var y = (new Date()).getFullYear(); y <= date.getFullYear() + 1; y++) {
        for (var m = 1; m <= 12; m++) {
            monthYearCtl.append("<option value='" + y + "-" + m + "'>" + monthNamesShort[m - 1] + " " + String(y).substr(2, 2) + "</option>");
        }
    }
    var currentMonth = date.getMonth() + 1;
    monthYearCtl.val(date.getFullYear() + '-' + currentMonth);

    if (isLeapYear(date.getFullYear()))
        daysInMonthArray[1] = 29;

    for (var day = 1; day <= daysInMonthArray[currentMonth - 1]; day++) {
        var selected = (day == date.getDate() ? " selected='1'" : "");
        dayCtl.append("<option value='" + day + "'" + selected + ">" + day + "</option>");
    }
    dayCtl.val(date.getDate());
}

function setPrValue() {
    if ($("#children").val() == 0) {
        $("#pr").val($("#adults").val());
        return;
    }
    var pr = $("#adults").val() + "a";
    for (var i = $("#children").val(); i > 0; i--) {
        pr += "1c";
    }

    $("#pr").val(pr.substr(0, pr.length - 1));
}

$(document).ready(function() {
    $("#startDate").datepicker({
        showOn: 'button',
        buttonImage: '/media/HotelBox_Calendar.png',
        buttonImageOnly: true,
        dateFormat: 'yy-mm-dd',
        monthNamesShort: monthNamesShort,
        monthNames: monthNames,
        dayNamesMin: dayNamesMin,
        onSelect: function(text) { dateChanged('start', 'calendar'); }
    });

    $("#endDate").datepicker({
        showOn: 'button',
        buttonImage: '/media/HotelBox_Calendar.png',
        buttonImageOnly: true,
        dateFormat: 'yy-mm-dd',
        monthNamesShort: monthNamesShort,
        monthNames: monthNames,
        dayNamesMin: dayNamesMin,
        onSelect: function(text) { dateChanged('end', 'calendar'); }
    });

    var initDate = new Date();
    populateDatesCtls('start', initDate);
    $("#startDate").datepicker('setDate', initDate);

    initDate.setHours(24);
    populateDatesCtls('end', initDate);
    $('#endDate').datepicker('setDate', initDate);

    for (var i = 0; i <= 10; i++) {
        if (i > 0) {
            $("#adults").append("<option value=" + i + ">" + i + "</option>");
        }
        $("#children").append("<option value=" + i + ">" + i + "</option>");
    }

    $("#adults").change(setPrValue);
    $("#children").change(setPrValue);
});

