﻿var numRooms = 0;
var numRoomsActive = 0;
var hasRoomValues = false;
var minNumRooms = 1;
var totalChieldren = 0;
var totalAdults = 0;
var strRoomsParameter = '';
var isFormValid = true;
var strMsgErro = '';
var strMsgErroRooms = '';
var _strDefaultReserveType = '';
var _roomsQuery = '';
$(function () {

    $('[id$=pnlErrorRooms]').hide();
    _roomsQuery = $.trim(roomConfigQuery).split(' ');
    templateRoom = $('#containerRoom').html();
    $('#containerRoom').empty();

    $("#show-more-options").click(function () {
        $(".search-modal-more-options").fadeIn();
    });

    $("#search-modal-more-options-close").click(function () {
        $(".search-modal-more-options").fadeOut();
    });

    $("#show-modal-rooms").click(function () {
        $(".search-modal-rooms").fadeIn();
    });

    if (typeof (hotelParameter) != 'undefined' && hotelParameter != null) {
        numRoomsActive = hotelParameter.RoomInfo.length;
    }

    if (!hasRoomValues) {
        numRooms = numRoomsActive = 1;
        SetRoomList(maxNumRooms);
    }

    $('[id$=txtDescription]').change(function () {
        if ($('[id$=txtDestinations_hdfIata]').val() != '' && $('[id$=txtDestinations_hdfIata]').val() != 'undefined') {
            $('[id$=pnlError]').hide();
        }
    });

    $("#salvar").click(function () {
        isFormValid = true;
        SaveRoomOptions();
        if (isFormValid) {
            strMsgErroRooms = '';
            $(".search-modal-rooms").fadeOut();
        }
    });
    $("#btn-cancel-more-options").click(function () {
        $(".search-modal-more-options").fadeOut();
    });

    $("#btn-cancel-room").click(function () {
        $(".search-modal-rooms").fadeOut();
    });

    $("#clear-form-more-options").click(function () {
        $('[id$=txtHotelName]').val(resourcesHotels.optional);
        $('[id$=ddlReserveType]').val(_strDefaultReserveType);
        $('[id$=ddlReserveType]').siblings('span').text(_strDefaultReserveType);
    });

    $("#clear-form-rooms").click(function () {
        for (var index = 1; index <= maxNumRooms; index++) {
            $('#containerRoomItem' + index).hide();
            $(".set-total-adults" + index).siblings('span').text("1");
            $(".set-total-adults" + index).val("1");
            $(".show-childen-combo-age" + index).val("0");
            $(".show-childen-combo-age" + index).siblings('span').text("0");
            $(".show-childen-combo-age" + index).click();
            $('[id$=pnlErrorRooms]').hide();
            $('[id$=pnlError]').hide();
            for (var i = 1; i <= 4; i++) {
                $('.childen-' + index + i).siblings('span').text("--");
                $('.childen-' + index + i).val("--");
                $('#childen-' + index + i).removeClass('field-alert');
                $('#childen-' + index + i).hide();

            }
            numRooms = 0;
            AddRoom();
            isFormValid = true;
        }
    });
   
     if (typeof (hotelParameter) != 'undefined' && hotelParameter != null) {
        GenerateRoomsFromQuery();
     }
     else
         SaveRoomOptions();
});

 function EnumBedRoomType() {
     this.CASAL = 0;
     this.TWIN = 1;
     this.NAPLY = 2;
 }

 var enumBedRoomType = new EnumBedRoomType();

function GenerateRoomsFromQuery() {

    if (hotelParameter.RoomInfo != null) {
        var nRooms = hotelParameter.RoomInfo.length;
        for (var i = 1; i < nRooms; i++) {
            AddRoom();
        }

        for (var i = 0; i < nRooms; i++) {
            var room = hotelParameter.RoomInfo[i];
            var roomType = room.BedRoomType;

            switch (roomType) {
                case 0:
                    $(".set-total-adults" + parseInt(i + 1)).siblings('span').text('2-Cama Casal');
                    $(".set-total-adults" + parseInt(i + 1)).val('2-Cama Casal');
                    break;
                case 1:
                    $(".set-total-adults" + parseInt(i + 1)).siblings('span').text('2-Cama Separada');
                    $(".set-total-adults" + parseInt(i + 1)).val('2-Cama Separada');
                    break;
                case 2:
                    $(".set-total-adults" + parseInt(i + 1)).siblings('span').text(room.QuantityAdult);
                    $(".set-total-adults" + parseInt(i + 1)).val(room.QuantityAdult);
                    break;
            }

            var children = room.QuantityKid;

            $(".show-childen-combo-age" + parseInt(i + 1)).val(children);
            $(".show-childen-combo-age" + parseInt(i + 1)).siblings('span').text(children);

            for (var j = 1; j <= 4; j++) {
                if (j <= children) {
                    $(("#childen-" + parseInt(i + 1)) + j).css('display', 'inline-block');
                    var child = room.AgeKid[j-1];
                    $((".childen-" + parseInt(i + 1)) + j).val(child);
                    $((".childen-" + parseInt(i + 1)) + j).siblings('span').text(child);
                }
                else {
                    $(("#childen-" + parseInt(i + 1)) + j).hide();
                }
            }

            SaveRoomOptions();
        }
    }
}


function SaveRoomOptions() {

    totalAdults = 0;
    totalChieldren = 0;
    strRoomsParameter = '';
    for (var i = 1; i <= numRoomsActive; i++) {
        var totalAdultSelect = $(".set-total-adults" + i).val() != null ? $(".set-total-adults" + i).val().split('-') : 0;
        var adults = totalAdultSelect[0];
        var typeBad = totalAdultSelect.length > 1 ? totalAdultSelect[1] == 'Cama Casal' ? "1" : "2" : "0";
        var numAdults = parseInt(adults);
        totalAdults += numAdults;

        var numChieldren = parseInt($(".show-childen-combo-age" + i).val() != resourcesHotels.select ? $(".show-childen-combo-age" + i).val() : 0);
        totalChieldren += numChieldren;

        strRoomsParameter += "r_" + numAdults + '_' + typeBad + '_' + numChieldren;

        var tmpStrChieldrenAges = '';
        for (var index = 1; index <= numChieldren; index++) {
            var chield = $('.childen-' + i + index).val();
            if (chield == '--') {
                isFormValid = false;
                strMsgErroRooms = '<p>' + resourcesHotels.validationKidsAge + '</p>';
                $('#childen-' + i + index).addClass('field-alert');
            }
            else {
                tmpStrChieldrenAges += '_' + chield;
                $('[id$=pnlErrorRooms]').hide();
                $('[id$=pnlError]').hide();
                $('#childen-' + i + index).removeClass('field-alert');
            }
        }
        strRoomsParameter += tmpStrChieldrenAges == '' ? '_0' : tmpStrChieldrenAges;
        strRoomsParameter += '-';
    }

    strRoomsParameter = strRoomsParameter.substr(0, strRoomsParameter.length - 1);

    if (!isFormValid) {
        $('[id$=pnlErrorRooms]').show();
        $('[id$=pnlErrorRooms]').html(strMsgErroRooms);
    }
    var strRooms = numRoomsActive == 1 ? numRoomsActive + ' ' + resourcesHotels.room + ' (' : numRoomsActive + ' ' + resourcesHotels.rooms + ' (';
    var strAdultos = totalAdults == 1 ? totalAdults + ' ' + resourcesHotels.adult : totalAdults + ' ' + resourcesHotels.adults;
    var strChieldren = totalChieldren == 1 ? ' ' + resourcesHotels.and + ' ' + totalChieldren + ' ' + resourcesHotels.child : totalChieldren == 0 ? '' : ' ' + resourcesHotels.and + ' ' + totalChieldren + ' ' + resourcesHotels.children;
    var strLabelRooms = strRooms + strAdultos + strChieldren;
    strLabelRooms += ')';
    $("#show-modal-rooms-label").text(strLabelRooms);
    $(".search-box-rooms").hide();
    hasRoomValues = true;
}

function SetRoomList(numRoom) {
    for (var i = 1; i <= numRoom; i++) {
        var values = {
            index: i
        };
        $('#containerRoom').append($.tmpl(templateRoom, values));

        if ($('#containerRoomItem' + i) != null)
            $('#containerRoomItem' + i).hide();
        if ($('#containerRoomItem' + numRooms) != null)
            $('#containerRoomItem' + numRooms).show();
    }
    ShowAddRemoveRoom();
    hasRoomValues = true;
}

function AddRoom() {
    numRooms = numRooms + 1;
    numRoomsActive = numRooms;
    $('#containerRoomItem' + numRooms).show();
    ShowAddRemoveRoom();
}

function RemoveRoom() {
    $('#containerRoomItem' + numRooms).hide();
    numRooms = numRooms - 1;
    numRoomsActive = numRooms;
    ShowAddRemoveRoom();
}

function ShowAddRemoveRoom() {
    if (numRooms == maxNumRooms)
        $('#AddRoom').hide();
    else
        $('#AddRoom').show();
    if (numRooms == minNumRooms)
        $('#RemoveRoom').hide();
    else
        $('#RemoveRoom').show();
}

function SubmitForm() {
    if (!ValidateForm()) {

        $('[id$=pnlError]').show();
        $('[id$=pnlError]').html(strMsgErro);
    }
    else {
        $('[id$=hddUrlRoomConfig]').val(strRoomsParameter);
        if ($('[id$=ddlCidades]').length > 0) {
            clearSelOptions('ddlCidades_Destinations');
            clearSelOptions('ddlPaises_Destinations');
        }

        $('[id$=btnSearchServer]').click();
    }
}

function ValidateForm() {
    strMsgErro = '';
    if ($('[id$=hDestination]').val() == '') {
        strMsgErro = '<p>' + resourcesHotels.validationSelectCity + '</p>';
        isFormValid = false;
    }
    if ($('[id$=txtDestinations_hdfIata]').val() == '') {
        strMsgErro = '<p>' + resourcesHotels.validationSelectCity + '</p>';
        isFormValid = false;
    }
    if (strMsgErroRooms != '') {
        strMsgErro += strMsgErroRooms;
        isFormValid = false;
    }
    if (strMsgErro == '') {
        isFormValid = true;
    }
    return isFormValid;
}

function ClearForm() {    
    ClearFormRooms();
    SaveRoomOptions();
    ClearFormMoreOptions();
    ClearDestionation();
    ClearCategory();
    ClearDate();        
}

function ClearDate() {
    var dateNow = new Date();
    dateNow = dateNow.addDays(minRangeDate);

    var curr_date = dateNow.getDate();
    var curr_month = dateNow.getMonth() + 1;
    var curr_year = dateNow.getFullYear();
    $('[id$=txtDepartureDate_TextBox]').val(curr_date + "/" + curr_month + "/" + curr_year);

    $('[id$=txtNights]').val(maxRangeDate);   
}

function ClearCategory() {
    $('[id$=ddlHotelCategory]').val(resourcesHotels.lblShowAll);
    $('[id$=ddlHotelCategory]').siblings('span').text(resourcesHotels.lblShowAll);
}

function ClearDestionation() {
    $('[id$=txtDestinations_hdfIata]').val('');
    $('[id$=txtDestinations_txtDescription]').val('');
    $('[id$=txtDestinations_txtDescription]').blur();
}

function ClearFormMoreOptions() {
    $('[id$=txtHotelName]').val(resourcesHotels.optional);
    $('[id$=ddlReserveType]').val(_strDefaultReserveType);
    $('[id$=ddlReserveType]').siblings('span').text(_strDefaultReserveType);
}

function ClearFormRooms() {
    for (var index = 1; index <= maxNumRooms; index++) {
        $('#containerRoomItem' + index).hide();
        $(".set-total-adults" + index).siblings('span').text("1");
        $(".set-total-adults" + index).val("1");
        $(".show-childen-combo-age" + index).val("0");
        $(".show-childen-combo-age" + index).siblings('span').text("0");
        $(".show-childen-combo-age" + index).click();
        $('[id$=pnlErrorRooms]').hide();
        $('[id$=pnlError]').hide();
        for (var i = 1; i <= 4; i++) {
            $('.childen-' + index + i).siblings('span').text("--");
            $('.childen-' + index + i).val("--");
            $('#childen-' + index + i).removeClass('field-alert');
            $('#childen-' + index + i).hide();

        }
        numRooms = 0;
        AddRoom();
        isFormValid = true;
    }
}


