﻿// variable para validar los días de estancia máxima
var estanciaMax = 15;


// función que crea un calendario para los campos fecha entrada y fecha salida
function crearCalendario(identrada, idsalida) {
    $(identrada).datepicker({
        dateFormat: 'dd/mm/yy',
        minDate: 0,
        onSelect: function(dateText, inst) {
            var arrayFecha = dateText.split('/');
            var mesEntrada = arrayFecha[1];
            if (mesEntrada.substring(0, 1) == "0") {
                mesEntrada = mesEntrada.replace("0", "");

            }
            mesEntrada = parseInt(mesEntrada) - 1;
            var f = new Date(arrayFecha[2], mesEntrada, arrayFecha[0]);
            var fMinSalida = new Date();
            fMinSalida.setTime(f.getTime() + (1 * 24 * 60 * 60 * 1000));
            var fMaxSalida = new Date();
            fMaxSalida.setTime(f.getTime() + (estanciaMax * 24 * 60 * 60 * 1000));
            $(idsalida).datepicker("option", "minDate", fMinSalida);
            $(idsalida).datepicker("option", "maxDate", fMaxSalida);
            var dia = fMinSalida.getDate();
            if (dia.toString().length < 2)
                dia = "0" + dia;
            var mes = fMinSalida.getMonth() + 1;
            if (mes.toString().length < 2)
                mes = "0" + mes;
            var anho = fMinSalida.getFullYear();
            $(idsalida).val(dia + "/" + mes + "/" + anho);
        }
    });

    $(idsalida).datepicker({ dateFormat: 'dd/mm/yy' });
    var arrayFecha = $(identrada).val().split('/');
    var mesEntrada = arrayFecha[1];
    if (mesEntrada.substring(0, 1) == "0") {
        mesEntrada = mesEntrada.replace("0", "");
    }
    mesEntrada = parseInt(mesEntrada) - 1;
    var f = new Date(arrayFecha[2], mesEntrada, arrayFecha[0]);
    var fMinSalida = new Date();
    fMinSalida.setTime(f.getTime() + (1 * 24 * 60 * 60 * 1000));
    var fMaxSalida = new Date();
    fMaxSalida.setTime(f.getTime() + (estanciaMax * 24 * 60 * 60 * 1000));
    $(idsalida).datepicker("option", "minDate", fMinSalida);
    $(idsalida).datepicker("option", "maxDate", fMaxSalida);
}

// funcion que muestra un calendario
function mostrarCalendario(idInputCalendario) {
    $(idInputCalendario).datepicker('show')
}

// función que crea un campo autocomplete
function crearAutoCompletar(idDestino, idHiddenDestino) {
    $.widget("custom.catcomplete", $.ui.autocomplete, {
        _renderMenu: function(ul, items) {
            var self = this,
				        currentCategory = "";
            $.each(items, function(index, item) {
                if (item.category != currentCategory) {
                    ul.append("<li class='ui-autocomplete-category'>" + item.category + "</li>");
                    currentCategory = item.category;
                }
                self._renderItem(ul, item);
            });
        }
    });

    // inicializar autocompletar
    var listaAutomplete = [];
    $(idDestino).catcomplete({
        delay: 0,
        minLength: 3,
        source: function(request, response) {
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "http://www.buscadestinos.com/SwDatos.asmx/GetDestinos",
                dataType: "json",
                data: "{ term: '" + request.term + "'}",
                success: function(respuestaJson, ui) {
                    listaAutomplete = respuestaJson.d;
                    response(respuestaJson.d);
                }
            });
        },
        select: function(event, ui) {
            $(idDestino).val(ui.item.label);
            $(idHiddenDestino).val(ui.item.value);
            return false;
        },
        change: function(event, ui) {
            var dstValido = false;
            for (i = 0; i < listaAutomplete.length; i++) {
                if (listaAutomplete[i].label == $(idDestino).val())
                    dstValido = true;
            }
            if (!dstValido) {
                //$("#destino_f").val("");
                //alert("Mal");
                $(idDestino).val("");
                $(idHiddenDestino).val("");
            }
            else {
                //alert("Ben");
                $(idDestino).val(ui.item.label);
                $(idHiddenDestino).val(ui.item.value);
            }

            return false;
        },
        focus: function(event, ui) {
            $(idDestino).val(ui.item.label);
            $(idHiddenDestino).val(ui.item.value);
            return false;
        }
    });
}



// funciones para las edades de los niños
function ActualizarNinos(idHabitaciones, idNumAdultos, idNumNinos, idEdadesNinos, idDivEdadesNinos) {
    var numHab = $(idHabitaciones).val();
    var numAdultos = $(idNumAdultos).val();
    var ninosPosibles = 4 - numAdultos;
    if (numHab > 2 && numAdultos < 2)
        ninosPosibles--;
    $(idNumNinos).html("");
    for (i = 0; i <= ninosPosibles; i++) {
        if (i == 0)
            $(idNumNinos).append("<option value='" + i + "' selected='selected'>" + i + "</option>'");
        else
            $(idNumNinos).append("<option value='" + i + "'>" + i + "</option>'");
    }
    // campo oculto de edades
    $(idEdadesNinos).val("");
    // esconder div de edades    
    $(idDivEdadesNinos).hide();
}

function ActualizarHiddenEdades(idEdadesNinos, idDivEdadesNinos) {
    $(idEdadesNinos).val("");
    var edadesAux = "";
    jQuery.each($(idDivEdadesNinos + " > .iSelect"), function(i, val) {
        if (edadesAux == "")
            edadesAux = val.value;
        else
            edadesAux += ";" + val.value;
    });
    $(idEdadesNinos).val(edadesAux);
}

function ActualizarDivEdades(idNumNinos, idHabitaciones, idDivEdadesNinos, idEdadesNinos) {
    var numNinos = $(idNumNinos).val();
    var numHab = $(idHabitaciones).val();
    numNinos = numNinos * numHab;
    if (numNinos == 0) {
        //$(idDivEdadesNinos).css("visibility", "hidden");
        $(idDivEdadesNinos).hide('slow');
        $(idEdadesNinos).val("");
    } else {
        //$(idDivEdadesNinos).css("visibility", "visible");
        $(idDivEdadesNinos).show('slow');
        $(idDivEdadesNinos).html("");
        $(idEdadesNinos).val("");
        $(idDivEdadesNinos).append("<label class='iLabel'>Edades de los niños</label><br />");
        for (i = 0; i < numNinos; i++) {
            $(idDivEdadesNinos).append("<select class='iSelect'><option value='0'>0</option><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option><option value='11'>11</option><option value='12'>12</option></select>");
            ActualizarHiddenEdades(idEdadesNinos, idDivEdadesNinos);
        }
        $(idDivEdadesNinos + " > .iSelect").change(function() {
            ActualizarHiddenEdades(idEdadesNinos, idDivEdadesNinos);
        });
    }
}

// función que calcula el número de días entre dos fechas 
function DiasEstancia(entrada, salida) {
    arrayAux = entrada.split('/');
    var mesEntrada = arrayAux[1];
    if (mesEntrada.substring(0, 1) == "0") {
        mesEntrada = mesEntrada.replace("0", "");
    }
    mesEntrada = parseInt(mesEntrada) - 1;
    fEntrada = new Date(arrayAux[2], mesEntrada, arrayAux[0]);
    arrayAux = salida.split('/');
    var mesSalida = arrayAux[1];
    if (mesSalida.substring(0, 1) == "0") {
        mesSalida = mesSalida.replace("0", "");
    }
    mesSalida = parseInt(mesSalida) - 1;
    fSalida = new Date(arrayAux[2], mesSalida, arrayAux[0]);
    difMilisec = fSalida.getTime() - fEntrada.getTime();
    // devolver los días de la diferencia
    var dias = difMilisec / 1000 / 60 / 60 / 24;
    dias = parseInt(dias);
    return dias;
}

// fuinción que valida los campos de una búsqueda de disponibilidad Con
function validarBuscarCon(idDestino, idFentrada, idFsalida, idForm) {
    destino = jQuery.trim($(idDestino).val());
    codigoDestino = jQuery.trim($("#ctl00_bodyContent_codigo_destino").val());
    if (destino == "" || codigoDestino == "") {
        alert("Por favor indica el destino u hotel que quieres buscar.");
        return false;
    }
    entrada = $(idFentrada).val();
    salida = $(idFsalida).val();
    if (entrada != "" && salida != "") {
        if (DiasEstancia(entrada, salida) > estanciaMax) {
            alert("La estancia debe ser inferior a 15 dias");
            return false;
        }
    } else {
        alert("Las fechas de entrada y salida no pueden estar vacías");
        return false;
    }
    $("#dialogBuscando").dialog('open');
    $(idForm).submit();
}
