﻿function createPaxRooms(options) {
    var textPaxRooms = { "es": { "adtLabel": "Adultos",
        "cnnLabel": "Niños",
        "ageLabel": "Edad",
        "ageLabelMessage": "años",
        "roomLabel": "Habitación"
    },
        "pt": { "adtLabel": "Adultos",
            "cnnLabel": "Crianças",
            "ageLabel": "Idade",
            "ageLabelMessage": "anos",
            "roomLabel": "Quarto"
        }
    };
    var ContainerPaxRooms = $(document.createElement("div")).addClass("containerPaxRooms");
    var titlesPassangerSelectionBox = $(document.createElement("div"))
                                                                    .addClass("containerTitlesPaxRooms");
    var lblBoxAdtSelectionBox = $(document.createElement("div"))
                                                                    .addClass("lblpassangersAdtSelection")
                                                                    .html(textPaxRooms[options.lan]["adtLabel"] + "<span class='message'>(" + options.cnnAge + "+)</span>");
    var lblBoxCnnSelectionBox = $(document.createElement("div"))
                                                                    .addClass("lblpassangersCnnSelection")
                                                                    .html(textPaxRooms[options.lan]["cnnLabel"] + "<span class='message'>(0-" + options.cnnAge + ")</span>");
    var lblBoxCnnAgeSelectionBox = $(document.createElement("div"))
                                                                    .addClass("lblpassangerscnnAgeSelection")
                                                                      .html(textPaxRooms[options.lan]["ageLabel"] + "<span class='message'>(" + textPaxRooms[options.lan]["ageLabelMessage"] + ")</span>");
    titlesPassangerSelectionBox.append(lblBoxAdtSelectionBox);
    titlesPassangerSelectionBox.append(lblBoxCnnSelectionBox);
    titlesPassangerSelectionBox.append(lblBoxCnnAgeSelectionBox);
    ContainerPaxRooms.append(titlesPassangerSelectionBox);
    for (var i = 0; i < options.maxRoomsQuantity; i++) {
        var containerDivRoomPassangers = $(document.createElement("div")).addClass("roomPassangersBox");
        var roomNumber = i + 1;
        var lblRoom = $(document.createElement("label"))
                                                            .addClass("lblRoomNumber")
                                                            .html(textPaxRooms[options.lan]["roomLabel"] + " " + roomNumber);
        var containerSelectAdt = $(document.createElement("div"))
                                                            .addClass("passangersAdtBox");
        var selectAdt = $(document.createElement("select"))
                                                            .change(function(e) {
                                                                changeAdt(this, options);
                                                            })
                                                            .addClass("passangersAdtSelection")
                                                            .append(generateOptions(options.maxPaxRoom, 2, 1));
        containerSelectAdt.append(selectAdt);
        var containerSelectCnn = $(document.createElement("div"))
                                                            .addClass("passangersCnnBox");
        var selectCnn = $(document.createElement("select"))
                                                            .change(function(e) {
                                                                changeCnn(this, options);
                                                            })
                                                            .addClass("passangersCnnSelection")
                                                            .append(generateOptions(options.maxCnnRoom, 0, 0));
        containerSelectCnn.append(selectCnn);
        var containerSelectCnnAge = $(document.createElement("div"))
                                                            .addClass("passangersCnnAgeBox");
        for (var j = 0; j < options.maxCnnRoom; j++) {
            containerSelectCnnAge.append($(document.createElement("select"))
                                                            .addClass("passangersCnnAgeSelection")
                                                            .append(generateOptions(options.cnnAge, "?", 0)));
        }

        containerDivRoomPassangers.append(lblRoom);
        containerDivRoomPassangers.append(containerSelectAdt);
        containerDivRoomPassangers.append(containerSelectCnn);
        containerDivRoomPassangers.append(containerSelectCnnAge);
        ContainerPaxRooms.append(containerDivRoomPassangers);
    }
    return ContainerPaxRooms;
}
function changeAdt(obj, options) {
    var cnnSelect = $(obj).parent().next().find(".passangersCnnSelection");
    var valueCnnSelected = cnnSelect.val();
    var cant = options.maxPaxRoom - $(obj).val();
    if (cant == 0) {
        cnnSelect.attr("disabled", "disabled");

        cnnSelect.val(0);
    }
    else {
        cnnSelect.removeAttr("disabled");
        cnnSelect.html("");
        cnnSelect.append(generateOptions(cant, 0, 0));
        cnnSelect.val(valueCnnSelected);
    }
}
function changeCnn(obj, options) {
    //**Reduce la cantidad de adultos**//
    var adtSelect = $(obj).parent().prev().find(".passangersAdtSelection");
    var valueAdtSelected = adtSelect.val();
    var cant = options.maxPaxRoom - $(obj).val();
    adtSelect.html("");
    adtSelect.append(generateOptions(cant, 2, 1));
    adtSelect.val(valueAdtSelected);
    //**muestra los edades de niño**//
    showCnnAge(obj);
    if ($(".passangersCnnAgeSelection:visible").length > 0) {
        $(".lblpassangerscnnAgeSelection").show();
    }
    else {
        $(".lblpassangerscnnAgeSelection").hide();

    }
}
function showCnnAge(obj) {
    var cant = $(obj).val();
    var container = $(obj).parent().next();
    $(".passangersCnnAgeSelection:gt(" + (cant - 1) + ")", container).hide();
    $(".passangersCnnAgeSelection:lt(" + cant + ")", container).show();
}
function generateOptions(options, defaultOption, minvalue) {
    var returnValue = "";
    if (defaultOption == "?") {
        returnValue += "<option value='-1' selected='selected'>" + defaultOption + "</option>";
    }
    for (i = 0; i <= options; i++) {

        if (i >= minvalue) {
            if (i == defaultOption) {
                returnValue += "<option value='" + i + "' selected='selected'>" + i + "</option>";
            } else {
                returnValue += "<option value='" + i + "'>" + i + "</option>";
            } 
        }
    }
    return returnValue;
}
function createOptionsRooms(options) {
    var textRooms = { "es": { "one": "habitación", "more": "habitaciones", "label": "¿Cuántas habitaciones? " },
        "pt": { "one": "quarto", "more": "quartos", "label": "Quantos quartos? " }
    }
    var containerOptionsRooms = $(document.createElement("div")).addClass("containerRooms");
    var labelOptionsRooms = $(document.createElement("label")).addClass("lblSelectorRooms")
                                                                  .attr("for", "roomSelector")
                                                                  .html(textRooms[options.lan]["label"]);
    var selectOptionsRooms = $(document.createElement("select")).addClass("selectorRooms")
                                                                    .change(function(e) {
                                                                        showRooms(($(this).val()));
                                                                    });

    var currentText;
    for (i = 0; i < options.maxRoomsQuantity; i++) {
        if (i == 0)
        { currentText = textRooms[options.lan]["one"] }
        else { currentText = textRooms[options.lan]["more"] }
        var optionRooms = $(document.createElement("option")).val(i + 1)
                                                            .html((i + 1) + " " + currentText);
        selectOptionsRooms.append(optionRooms);
        selectOptionsRooms.val(options.defaultRoomsQuantity);
    }
    containerOptionsRooms.append(labelOptionsRooms);
    containerOptionsRooms.append(selectOptionsRooms);


    return containerOptionsRooms;
}
function showRooms(cant) {
    $(".roomPassangersBox:gt(" + (cant - 1) + ")").hide();
    $(".roomPassangersBox:lt(" + cant + ")").show();
}
function createPaxCombos(options) {

    $(options.container).append(createOptionsRooms(options));
    $(options.container).append(createPaxRooms(options));
    showRooms(options.defaultRoomsQuantity);


}
function getRoomsDetails() {
    var rooms = $(".selectorRooms").val();
    var adtVisible = $(".passangersAdtSelection", $(".roomPassangersBox:visible"))
    var qtyPax = 0;
    var roomsSerialize = "";
    $.each(adtVisible, function(e) {
        me = $(this);
        qtyPax += parseInt(me.val());
        roomsSerialize += me.val();
        var ageCnnCombos = $(this).parent().next().next().find(".passangersCnnAgeSelection:visible");
        $.each(ageCnnCombos, function(i) {
            qtyPax++;
            roomsSerialize += "-" + $(this).val();
        })
        roomsSerialize += "!";
    })
    var objReturn = new Object();
    objReturn.qtyPax = qtyPax;
    objReturn.roomsSerialize = roomsSerialize;
    objReturn.rooms = rooms;
    return objReturn;
}