﻿// 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({ minDate: 1, maxDate: 15, dateFormat: 'dd/mm/yy' });
}

// 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: "../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 da de alta un correo electrónico en la lista de subscripción del boletín
function AltaBoletin(idNewsLetter) {
    correo = jQuery.trim($(idNewsLetter).val());
    if (correo != "") {
        if (mail(correo)) {
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "SwDatos.asmx/AltaBoletin",
                dataType: "json",
                data: "{ email: '" + $("#newsletter_i").val() + "'}",
                success: function(data) {
                    switch (data.d) {
                        case "ok":
                            $("#contenidoBoletin").html("<h3>Gracias!</h3><p>Ahora podrás acceder a todas nuestras ofertas. En breve recibirá nuestro boletín cargado de novedades</p>");
                            break;
                        case "duplicado":
                            $("#contenidoBoletin").html("<h3 class='aviso'>Email Duplicado</h3><p>Tu email ya figura en nuestra base de datos de boletín. No es necesario que lo des de alta de nuevo.</p>");
                            break;
                        case "error":
                            alert("Se ha producido un error en el alta, por favor inténtalo más tarde.");
                            break;
                    }
                },
                error: function(msg) {
                    var s = msg;
                    alert("Error alta boletin");
                }
            });
        } else { alert("El email no es correcto"); }
    }
    else {
        alert("El email no puede estar vacío");
    }
}


// función que valida el formato de un email
function mail(texto) {
    var mailres = true;
    var cadena = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ1234567890@._-";

    var arroba = texto.indexOf("@", 0);
    if ((texto.lastIndexOf("@")) != arroba) arroba = -1;

    var punto = texto.lastIndexOf(".");

    for (var contador = 0; contador < texto.length; contador++) {
        if (cadena.indexOf(texto.substr(contador, 1), 0) == -1) {
            mailres = false;
            break;
        }
    }

    if ((arroba > 1) && (arroba + 1 < punto) && (punto + 1 < (texto.length)) && (mailres == true) && (texto.indexOf("..", 0) == -1))
        mailres = true;
    else
        mailres = false;

    return mailres;
}


// 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();
}

