﻿function reserveArrivalDepartureControls(oArrival,oDepature,oNights) {
    $(document).ready(function() {
        //on arrival date datetime picker close, set the departure date
        var origArrDate = $('#' + oArrival).datetimepicker('getDate');
        var origDepDate = $('#' + oDepature).datetimepicker('getDate');

        //Overwrite arrival datetime picker selection - option
        $('#' + oArrival).datetimepicker('option', {
            onClose: function(dateText, inst) {
                var arrivalDate = $(this).datepicker('getDate');
                if (arrivalDate != null) {
                    var x = new Date(arrivalDate.getFullYear(), arrivalDate.getMonth(), arrivalDate.getDate(), arrivalDate.getHours(), arrivalDate.getMinutes());
                    x.setDate(x.getDate() + 1);

                    //set departure date when it is null value or existing departure date < arrival date
                    var bReset = false;
                    var departureDate = $('#' + oDepature).datepicker('getDate');
                    if (departureDate == null) {
                        bReset = true;
                    } else {
                        if (arrivalDate >= departureDate) bReset = true;
                    }

                    if (bReset) {
                        $('#' + oDepature).datepicker('setDate', new Date(x.getFullYear(), x.getMonth(), x.getDate(), x.getHours(), x.getMinutes()));
                    }

                    if (oNights != null) {
                        SetNights(oArrival, oDepature, oNights);
                        $('#' + oNights).attr("disabled", "");
                    }
                } else if (oNights != null) {
                    $('#' + oNights).attr("disabled", "");
                }
            }
        });

        //[pg-20110913] set the nights value (when departure date changes)
        if (oNights != null) {
            $('#' + oDepature).datetimepicker('option', {
                onClose: function(dateText, inst) {
                    SetNights(oArrival, oDepature, oNights);
                }
            });

            //register nights key events
            $('#' + oNights)
                .keypress(function(e) {
                    return nonfractioninput(e);
                })
                .keyup(function(e) {
                    SetDepartureDate(oArrival, oDepature, oNights);
                });
        }

        //reset datetimepicker value
        $('#' + oArrival).datetimepicker('setDate', origArrDate);
        $('#' + oDepature).datetimepicker('setDate', origDepDate);
    });
}


var CONST_ONE_DAY = (1000 * 60 * 60 * 24);
function SetNights(oArrival, oDepature, oNights) {
    var arrivalDate = $('#' + oArrival).datepicker('getDate');
    var departureDate = $('#' + oDepature).datepicker('getDate');
    if (arrivalDate != null && departureDate != null) {
        var newArrival = new Date(arrivalDate.getFullYear(), arrivalDate.getMonth(), arrivalDate.getDate());
        var newDeparture = new Date(departureDate.getFullYear(), departureDate.getMonth(), departureDate.getDate());
        $('#' + oNights).val((newDeparture - newArrival) / CONST_ONE_DAY);
    }
}

function SetDepartureDate(oArrival, oDepature, oNights) {
    var nights = $('#' + oNights).val();
    var arrivalDate = $('#' + oArrival).datepicker('getDate');
    if (nights != null && arrivalDate != null) {
        if (nights != '' && parseInt(nights, 10) > 0) {
            nights = parseInt(nights, 10);
            var x = new Date(arrivalDate.getFullYear(), arrivalDate.getMonth(), arrivalDate.getDate(), arrivalDate.getHours(), arrivalDate.getMinutes());
            x.setDate(x.getDate() + nights);
            $('#' + oDepature).datepicker('setDate', new Date(x.getFullYear(), x.getMonth(), x.getDate(), x.getHours(), x.getMinutes()));
        } else {
            $('#' + oDepature).datepicker('setDate', '');
        }
    }

    try {
        if (nights != null && nights != '' && parseInt(nights, 10) == 0) $('#' + oNights).val('');
    } catch (e) { }
}


//success reservation - open dialog form
function successReservationDialog(strButtonLabel, strTargetURL) {
    $(document).ready(function() {
        // a workaround for a flaw in the demo system
        $("#dialog:ui-dialog").dialog("destroy");
        $("#dialog-message").dialog({
            height: 200,
            width: 350,
            position: 'center',
            modal: true,
            open: function() {
                $(this).parents(".ui-dialog:first").find(".ui-dialog-titlebar-close").remove();
            },
            buttons: [{
                text: strButtonLabel,
                click: function() {
                        document.location.href = strTargetURL;
                    }
                }]
            });
        });
}


function enableFlightCheck(oReqFlight) {
    var valFlight = document.getElementById(oReqFlight);
    ValidatorEnable(valFlight, true);
}
function disableFlightCheck(oReqFlight) {
    var valFlight = document.getElementById(oReqFlight);
    ValidatorEnable(valFlight, false);
}
