﻿//TODO:poner los datos correspondientes sin el Hardcode
var vPais = 1;
var iDiasAnticipo = 1;
var sDefaultValueOrigen;
var sDefaultTextOrigen;

//basta de Harcode
var CantHabitaciones = 4;
var CantPersPorHab = 4;


function setHotelRest() {

    if (validateParamsNewSearch() == false)
        return;

    var form = document.getElementById("frmHotelesMain");

    setPasajeros(document.getElementById("BHH").value);

    window.location = buildParams();


}

function buildParams() {
    return UrlBasePath + document.getElementById("buscadorHotelesDestinationLocation1").value + '/' + getFormatedDate(document.getElementById("buscadorHotelesFechaSalida").value) + '/' + getFormatedDate(document.getElementById("buscadorHotelesFechaRegreso").value) + "/" + document.getElementById("txtHBB").value + "/" + (document.getElementById("nombreHotel").value?"#n="+document.getElementById("nombreHotel").value:"");
}

function setPasajeros(cantHabitacion) {



    //inicializo IDs
    var idADT = "BHH";
    var idCNN = "BHB";
    var idEdades = "BHY";
    //Auxiliares
    var adt;
    var cnnQuantity;
    var aEdades = new Array();
    var rooms = "";
    for (i = 1; i <= cantHabitacion; i++) {
        if (i > 1)
            rooms = rooms + "!";
        adt = document.getElementById(idADT + i).value;
        rooms = rooms + adt;

        for (j = 0; j <= document.getElementById(idCNN + i).value; j++) {
            if (document.getElementById(idEdades + i + j) != null) {
                var age = document.getElementById(idEdades + i + j).value;
                if (age != "?") {
                    rooms = rooms + "-" + age;
                }
            }
        }

    }

    document.getElementById("txtHBB").value = rooms;
}

//Limitador de cantidad de Ninios
function actualizarCombosHotelesNinios(i) {

    var Adultos;
    var Ninios;
    var Edad;
    var cant;
    var Nselected;

    Adultos = document.getElementById('BHH' + i);
    Ninios = document.getElementById('BHB' + i);
    cant = CantPersPorHab - 1 - Adultos.selectedIndex;
    Nselected = Ninios.selectedIndex;

    if (cant == 0) {
        Ninios.selectedIndex = 0;
        Ninios.disabled = true;
    }
    else {
        Ninios.disabled = false;
        Ninios.length = 0;
        if (Adultos.selectedIndex == 0) {
            cant = CantPersPorHab - 1;
        }
        for (var j = 0; j <= cant; j++) {
            Ninios.options[j] = new Option(j, j);
        }
        Ninios.selectedIndex = Nselected;
    }


}
//FIN Limitador de cantidad de Ninios

//Limitador de cantidad de Adultos
function actualizarCombosHotelesAdultos(i) {

    var Adultos;
    var Ninios;
    var cant;
    var Aselected;

    Adultos = document.getElementById('BHH' + i);
    Ninios = document.getElementById('BHB' + i);
    cant = CantPersPorHab - Ninios.selectedIndex;
    Aselected = Adultos.selectedIndex;

    Adultos.length = 0;
    for (var j = 1; j <= cant; j++) {
        Adultos.options[j - 1] = new Option(j, j);
    }

    Adultos.selectedIndex = Aselected;

}
//FIN Limitador de cantidad de Adultos


function loadScript(name, path, callBack) {
    var head = document.getElementsByTagName('head')[0];
    var scriptTag;
    scriptTag = document.createElement("script");
    scriptTag.id = name;
    scriptTag.src = path;
    scriptTag.type = "text/javascript";
    if (callBack != undefined) {
        scriptTag.onload = scriptTag.onreadystatechange = callBack;
    }
    head.appendChild(scriptTag);
}

function loadCss(path, callBack) {
    var scriptTag;
    var head = document.getElementsByTagName('head')[0];
    scriptTag = document.createElement("link");
    scriptTag.rel = "stylesheet";
    scriptTag.href = path;
    scriptTag.type = "text/css";
    if (callBack != undefined) {
        scriptTag.onload = scriptTag.onreadystatechange = callBack;
    }
    head.appendChild(scriptTag);
}


function getDefaultAutocompleteValues() {
    return (new Array(LocationDesc, Location));

}

function getDefaultCheckinValues() {
    var spDesde;
    if (Checkin == null)
        return null;
    spDesde = Checkin.split(/-/ig);
    if (spDesde.length != 3)
        return null;

    if (spDesde[0].toString().length != 4)
        return null;

    return spDesde;
}

function getDefaultCheckoutValues() {
    var spHasta;
    if (Checkout == null)
        return null;
    spHasta = Checkout.split(/-/ig);
    if (spHasta.length != 3)
        return null;

    if (spHasta[0].toString().length != 4)
        return null;

    return spHasta;
}


function setCheckInCheckOut() {
    var spCheckin = getDefaultCheckinValues();
    var spCheckout = getDefaultCheckoutValues();
    if (spCheckin != null) {
        $('#buscadorHotelesFechaSalida').val((spCheckin[2] * 1) + "/" + (spCheckin[1] * 1) + "/" + spCheckin[0]);
        $('#buscadorHotelesDiaDesde').val(spCheckin[2]);
        $('#buscadorHotelesMesDesde').val(spCheckin[1]);
        $('#buscadorHotelesAnioDesde').val(spCheckin[0]);
    }



    if (spCheckout != null) {
        $('#buscadorHotelesFechaRegreso').val((spCheckout[2] * 1) + "/" + (spCheckout[1] * 1) + "/" + spCheckout[0]);
        $('#buscadorHotelesDiaHasta').val(spCheckout[2]);
        $('#buscadorHotelesMesHasta').val(spCheckout[1]);
        $('#buscadorHotelesAnioHasta').val(spCheckout[0]);
    }

}

function setHotelName() {
    if (HotelName != "") {
        $('#nombreHotel').val(HotelName);
        document.getElementById('eleccionBuscarPorNombre').checked = true;
        selHotel();
    }

}

function LoadSettings() {
    var spDesde;
    var spHasta;
    var sp;
    var i;
    var j;
    var autoVal = getDefaultAutocompleteValues();
    setCheckInCheckOut();
    setHotelName();
    vPais = $('#ltIdiomaCalendariosp').text(); 
    prepareInput(vPais, 'buscadorHotelesFechaSalida', 0, 1, null, 'buscadorHotelesFechaSalida', 'buscadorHotelesFechaRegreso', iDiasAnticipo, 'buscadorHotelesDepartureDate1', 'dd/mm/aaaa', 'buscadorHotelesDiaDesde', 'dd', 'buscadorHotelesMesDesde', 'mm', 'buscadorHotelesAnioDesde', 'aaaa');
    prepareButton(vPais, 'buscadorHotelesCalFechaSalida', 'buscadorHotelesFechaSalida', 0, 1, null, 'buscadorHotelesFechaSalida', 'buscadorHotelesFechaRegreso', iDiasAnticipo, 'buscadorHotelesDepartureDate1', 'dd/mm/aaaa', 'buscadorHotelesDiaDesde', 'dd', 'buscadorHotelesMesDesde', 'mm', 'buscadorHotelesAnioDesde', 'aaaa');
    prepareInput(vPais, 'buscadorHotelesFechaRegreso', 0, 1, null, 'buscadorHotelesFechaSalida', 'buscadorHotelesFechaRegreso', iDiasAnticipo, 'buscadorHotelesDepartureDate2', 'dd/mm/aaaa', 'buscadorHotelesDiaHasta', 'dd', 'buscadorHotelesMesHasta', 'mm', 'buscadorHotelesAnioHasta', 'aaaa');
    prepareButton(vPais, 'buscadorHotelesCalFechaRegreso', 'buscadorHotelesFechaRegreso', 0, 1, null, 'buscadorHotelesFechaSalida', 'buscadorHotelesFechaRegreso', iDiasAnticipo, 'buscadorHotelesDepartureDate2', 'dd/mm/aaaa', 'buscadorHotelesDiaHasta', 'dd', 'buscadorHotelesMesHasta', 'mm', 'buscadorHotelesAnioHasta', 'aaaa');


    globalac.language = Language;

    globalac.hotels = new DespegarAutCompCompleter("buscadorHotelesDescripcionDestinationLocation1", completerPopupWrapAC, completerPopdownWrapAC, "dapopupac", "arrPlace", airportSelected, "buscadorHotelesDestinationLocation1", autoVal[0], autoVal[1]);
    createLocatorAC();
    llenarCombosHoteles();
    document.getElementById('buscadorHotelesEdadTitulo').style.visibility = 'hidden';
    document.getElementById('buscadorHotelesEdadAnios').style.visibility = 'hidden';
    for (var i = 1; i <= CantHabitaciones; i++) {
        resetHotelesHab(i+'');
    }
    //distro
    //distro $('#BHH').val(distro.length);
    displayHotelesHab();

    /*for (i = 0; i < distro.length; i++) {
        $('#BHH' + (i + 1).toString()).val(distro[i].Adults);

        $('#BHB' + (i + 1).toString()).val(distro[i].Children.length);
        if (distro[i].Children.length > 0) {
            EdadesHotelesNinios((i + 1));
            for (j = 0; j < distro[i].Children.length; j++)
                $('#BHY' + (i + 1).toString() + (j + 1).toString()).val(distro[i].Children[j]);
        }

    }*/
    initCalendarEventsTrier();

}




function llenarCombosHoteles() {

    var Habitaciones = document.getElementById('BHH');
    var Adultos;
    var Ninios;
    var Edad;    

    for (var i = 1; i <= CantHabitaciones; i++)
        Habitaciones.options[i - 1] = new Option(i, i);

    for (var i = 1; i <= CantHabitaciones; i++) {

        Adultos = document.getElementById('BHH' + i);
        Ninios = document.getElementById('BHB' + i);

        for (var j = 1; j <= CantPersPorHab; j++)
            Adultos.options[j - 1] = new Option(j, j);

        for (var j = 0; j <= (i == 1 ? CantPersPorHab - 2 : CantPersPorHab-1); j++)
            Ninios.options[j] = new Option(j, j);


        for (var j = 1; j <= CantPersPorHab; j++) {

            Edad = document.getElementById('BHY' + i + j);

            Edad.options[0] = new Option('?', '?');

            for (var k = 0; k <= 11; k++)
                Edad.options[k + 1] = new Option(k, k);

        }
    }

}


function resetHotelesHab(i) {

    for (var j = 1; j <= 7; j++) {
        document.getElementById('buscadorHotelesHabitacion' + i + 'Edad' + j).style.display = 'none';
    }
    if (i == 1)
        document.getElementById('BHH' + i).value = '2';
    else
        document.getElementById('BHH' + i).value = '1';
    document.getElementById('BHB' + i).value = '0';
    for (j = 1; j < 7; j++)
        document.getElementById('BHY' + i.toString() + j.toString()).value = '?';

}
function displayHotelesHab() {

    var iBHH = document.getElementById('BHH').value;
    document.getElementById('buscadorHotelesHabitacion1Container').style.display = '';
    for (var i = 2; i <= CantHabitaciones; i++) {
        document.getElementById('buscadorHotelesHabitacion'+i+'Container').style.display = iBHH < i ? 'none' : '';
    }

    if (ocultarEdad2()) {

        document.getElementById('buscadorHotelesEdadTitulo').style.visibility = 'hidden';
        document.getElementById('buscadorHotelesEdadAnios').style.visibility = 'hidden';

    }
    else {

        document.getElementById('buscadorHotelesEdadTitulo').style.visibility = 'visible';
        document.getElementById('buscadorHotelesEdadAnios').style.visibility = 'visible';

    }

}


function EdadesHotelesNinios(i) {

    var iBHB = document.getElementById('BHB' + i).value;

    document.getElementById('buscadorHotelesHabitacion' + i + 'Edad1').style.display = iBHB < 1 ? 'none' : '';
    document.getElementById('buscadorHotelesHabitacion' + i + 'Edad2').style.display = iBHB < 2 ? 'none' : '';
    document.getElementById('buscadorHotelesHabitacion' + i + 'Edad3').style.display = iBHB < 3 ? 'none' : '';
    document.getElementById('buscadorHotelesHabitacion' + i + 'Edad4').style.display = iBHB < 4 ? 'none' : '';
    document.getElementById('buscadorHotelesHabitacion' + i + 'Edad5').style.display = iBHB < 5 ? 'none' : '';
    document.getElementById('buscadorHotelesHabitacion' + i + 'Edad6').style.display = iBHB < 6 ? 'none' : '';
    document.getElementById('buscadorHotelesHabitacion' + i + 'Edad7').style.display = iBHB < 7 ? 'none' : '';

    if (ocultarEdad()) {
        document.getElementById('buscadorHotelesEdadTitulo').style.visibility = 'hidden';
        document.getElementById('buscadorHotelesEdadAnios').style.visibility = 'hidden';
    }
    else {
        document.getElementById('buscadorHotelesEdadTitulo').style.visibility = 'visible';
        document.getElementById('buscadorHotelesEdadAnios').style.visibility = 'visible';
    }


    actualizarCombosHotelesAdultos(i);
}

function ocultarEdad() {

    var limit;
    limit = parseInt(document.getElementById('BHH').value);

    for (var j = 1; j <= limit; j++) {
        for (var k = 1; k <= 4; k++) {
            if (document.getElementById('buscadorHotelesHabitacion' + j + 'Edad' + k).style.display == ''
					|| document.getElementById('buscadorHotelesHabitacion' + j + 'Edad' + k).style.visibility == 'visible') {
                return false;
            }
        }
    }

    return true;
}

function ocultarEdad2() {


    for (var j = 1; j <= 4; j++) {
        if (document.getElementById('buscadorHotelesHabitacion' + j + 'Container').style.display == '') {
            for (var k = 1; k <= 4; k++) {
                if (document.getElementById('buscadorHotelesHabitacion' + j + 'Edad' + k).style.display == ''
							|| document.getElementById('buscadorHotelesHabitacion' + j + 'Edad' + k).style.visibility == 'visible') {
                    return false;
                }
            }
        }
    }
    return true;
}


function setPasajeros(cantHabitacion, oBuscador) {
    //inicializo IDs
    var idADT = "BHH";
    var idCNN = "BHB";
    var idEdades = "BHY";
    //Auxiliares
    var adt;
    var cnnQuantity;
    var aEdades = new Array();
    var rooms = "";
    for (i = 1; i <= cantHabitacion; i++) {
        if (i > 1)
            rooms = rooms + "!";
        adt = document.getElementById(idADT + i).value;
        rooms = rooms + adt;

        for (j = 0; j <= document.getElementById(idCNN + i).value; j++) {
            if (document.getElementById(idEdades + i + j) != null) {
                var age = document.getElementById(idEdades + i + j).value;
                if (age != "?") {
                    rooms = rooms + "-" + age;
                }
            }
        }

    }

    document.getElementById("txtHBB").value = rooms;
}

function selHotel() {
    if (document.getElementById("eleccionBuscarPorNombre").checked == true)
    { $("#styleName").show(); }

    else {
        $("#styleName").hide();
        $("#nombreHotel").val("");
    }
}

function getDateParse(inputDate) {
    if (inputDate == null)
        return NaN;
    var sp = inputDate.split(new RegExp('/', 'gi'));
    if (sp.length != 3)
        return NaN;

    if (sp[2].toString().length != 4)
        return NaN;
    try
        { return (new Date(sp[2], sp[1] - 1, sp[0])) } catch (e) {
        return NaN;
    }
}

function validateParamsNewSearch() {
    var result = true;
    var texto = "";
    spFrom = $("#buscadorHotelesFechaSalida").val().split(new RegExp('/', 'gi'));
    spTo = $("#buscadorHotelesFechaRegreso").val().split(new RegExp('/', 'gi'));
    var Dfrom = getDateParse($("#buscadorHotelesFechaSalida").val());
    var Dto = getDateParse($("#buscadorHotelesFechaRegreso").val());
    var titulo = $("#lterrordatossp").text().split('-');
    var errordestino = $("#ltErrordestinosp").text().split('-');
    var errorfregreso = $("#ltErrofFregresosp").text().split('-');
    var errorfsalida = $("#ltErrorFsalidasp").text().split('-');
    var errorfimposible = $("#ltErrorFimposiblesp").text().split('-');
    var errorredades = $("#ltErroredadessp").text().split('-');
    texto = titulo[1] + ":\n";
    if ($("#buscadorHotelesDestinationLocation1").val() == "") {
        texto += "-" + errordestino[1] + "\n";
        result = false;
    }

    if (isNaN(Dfrom) == true) {
        texto += "-" + errorfregreso[1] + "\n";
        result = false;
    }

    if (isNaN(Dto) == true) {
        texto += "-" + errorfsalida[1] + "\n";
        result = false;
    }

    if (isNaN(Dfrom) == false && isNaN(Dto) == false) {
        // 3 / 3 / 2009
        Dfrom = new Date(spFrom[2], spFrom[1] - 1, spFrom[0]);
        Dto = new Date(spTo[2], spTo[1] - 1, spTo[0]);

        if (Dfrom > Dto) {
            texto += "-" + errorfimposible[1] + "\n";
            result = false;
        }

    }

    if (checkPassengers($("#BHH").val()) == true) {
        texto += "-" + errorredades[1] + "\n";
        result = false;
    }
    if (result == false) {
        alert(texto);
    }
    return result;
}


function checkPassengers(passengersQuantity) {

    var idADT = "BHH";
    var idCNN = "BHB";
    var idEdades = "BHY";
    var cnn;
    var cnnQuantity;
    var aEdades = new Array();
    var rooms = "";
    for (i = 1; i <= passengersQuantity; i++) {
        cnn = $("#" + idCNN.toString() + i.toString()).val();

        for (j = 1; j <= cnn; j++) {
            var age = $("#" + idEdades + i.toString() + j.toString()).val();
            if (age == "?") {
                return true;
            }

        }


    }
    return false;
}
function getFormatedDate(input) {
    var d = input.split(new RegExp('/', 'gi'));
    return d[2] + "-" + d[1] + "-" + d[0];
}