var btnDescargarPDF = document.getElementById('btn-descargar-pdf');
var buscadorNodosInput = document.getElementById('buscador-nodos-input');
var buscadorNodosBtn = document.getElementById('btn-buscador-nodos');
var limpiadorBuscadorNodos = document.getElementById('limpiador-buscador-nodos');
var buscadorNodosURL = document.getElementById('buscador-nodos-url');
var filtrosAutomaticos = 0;
var restringir = 1;
function toggleFiltrosNodos(btn) {
    $('.contenedor-filtros').slideToggle(function() {
        if ($(btn).hasClass('btn-cerrar-filtros') && $('.contenedor-filtros').is(':visible') === false) {
            $("html, body").animate({
                scrollTop: $('header').outerHeight() + $("#resultados-modos").position().top + $("#resultados-modos").outerHeight()
            });
        }
    });
}
function aplicarFiltrosNodos() {
    var urlInicial = $('#url-inicial').val();
    var urlFiltros = $('#url-filtros').val();
    var urlFiltrosTexto = $('#url-filtros-texto').val();
    var urlDefinitiva = new String();
    var filtros = new String();
    var contadorFiltrosNodos = 0;
    $('.contenedor-filtros .filtro').each(function(index, element) {
        var caracteristica = $(this).prop('id');
        var nodeName = $(this).prop('nodeName');
        switch (nodeName) {
            case 'SELECT':
                var valor = $(this).val();
                if (valor != '') {
                    filtros = filtros + caracteristica + ':' + valor + ';';
                    contadorFiltrosNodos++;
                }
                break;
            case 'INPUT':
                var type = $(this).prop('type');
                if (type === 'checkbox') {
                    if ($(this).is(':checked')) {
                        filtros = filtros + caracteristica + ';';
                        contadorFiltrosNodos++;
                    }
                }
                break;
        }
    });
    if (contadorFiltrosNodos > 0) {
        filtros = filtros.slice(0, -1);
        if (buscadorNodosInput && buscadorNodosInput.value.trim().length > 0) {
            urlDefinitiva = urlFiltrosTexto + '&nod_filtros=' + filtros + '&filtro=' + buscadorNodosInput.value;
        } else {
            urlDefinitiva = urlFiltros + '_' + filtros + '_nn';
        }
		window.location.href = urlDefinitiva;
    } else {
		window.location.href = urlInicial + '_nn';
    }
}
    
    function generarFiltros () {
        $('.contenedor-filtros .filtro').attr('disabled', true);
    
        var configuracionFiltros = new ConfiguracionFiltros();
        consultarFiltros(configuracionFiltros);
        pintarNuevosFiltros();
        activarFiltros();
    }
    
    function ConfiguracionFiltros () {
        this.id = $('#id-nodo').val();
    
        var filtros = new String();
        $('.contenedor-filtros .filtro').each(function(index, element) {
            var caracteristica = $(this).prop('id');
    
            var nodeName = $(this).prop('nodeName');
            switch (nodeName) {
                case 'SELECT':
    
                    var valor = $(this).val();
                    if (valor != '') {
                        filtros = filtros + caracteristica + ':' + valor + ';';
                    }
    
                    break;
    
                case 'INPUT':
    
                    var type = $(this).prop('type');
    
                    if (type === 'checkbox') {
    
                        if ($(this).is(':checked')) {
                            filtros = filtros + caracteristica + ';';
                        }
    
                    }
    
                    break;
            }
        });
    
        this.filtros = filtros;
    }
    
    var nuevosFiltros = new Array();
    function consultarFiltros (config) {
        $.ajax({
            type: 'POST',
            dataType: 'JSON',
            url: 'ControlNodos',
            async: false,
            data: {
                tabla: 1,
                estado: 3,
                id_nodo: config.id,
                nod_filtros: config.filtros
            },
            success: function(response) {
                nuevosFiltros = response.filtros;
            },
            error: function(response) {
                console.log('error AJAX');
                console.log(response);
            }
        });
    }
    
    function pintarNuevosFiltros () {
        for (var i = 0; i < nuevosFiltros.length; i++) {
            var filtro = nuevosFiltros[i];
    
            if (filtro.tipo === 0) {
                // Checkbox
                var seleccionado = filtro.valores[0].seleccionado;
    
                if (seleccionado === 0) {
                    $('#' + filtro.id_caracteristica + '.filtro').attr('checked', false);
                } else if (seleccionado === 1) {
                    $('#' + filtro.id_caracteristica + '.filtro').attr('checked', true);
                }
    
                $('#' + filtro.id_caracteristica + '.filtro').attr('disabled', false);
    
            } else {
                // Desplegable
    
                var htmlSelect = '';
    
                if (filtro.valores.length > 0) {
    
                    for (var j = 0; j < filtro.valores.length; j++) {
                        var option = filtro.valores[j];
    
                        if (option.seleccionado === 0) {
                            htmlSelect = htmlSelect + '';                        
                        } else {
                            htmlSelect = htmlSelect + '';
                        }
    
                    }
    
                    $('#' + filtro.id_caracteristica + '.filtro').html(htmlSelect).attr('disabled', false);
                } else {
                    $('#' + filtro.id_caracteristica + '.filtro').html(htmlSelect);
                }
    
            }
        }
    }
    
	
function comprobarDescargaPDF() {
    var boton = this;
    var id = $(this).data('id-nodo');
    $(boton).attr('disabled', true).text('Generando fichero...');
    var interval = setInterval(function(){
        $.ajax({
            type: 'POST',
            dataType: 'JSON',
            url: 'ControlNodos',
            async: false,
            data: {
                tabla: 1,
                estado: 4,
                id_nodo: id
            },
            success: function(response) {
                if (response === 0) {
                    clearInterval(interval);
                    $(boton).attr('disabled', false).text('Descargar');
                }
            },
            error: function(error) {
                console.log(error);
            }
        });
    }, 2000);
}
// Cargando
var filtrosActivados = false;
function activarFiltros() {
    $('.contenedor-filtros.cargando').removeClass('cargando');
    filtrosActivados = true;
}
function desactivarFiltros() {
    $('.contenedor-filtros.cargando').addClass('cargando');
    filtrosActivados = false
}
var filtroActivo = false;
function actualizarEstadoFiltros () {
    $('.contenedor-filtros .filtro').each(function () {
        if (this.value !== '') {
            filtroActivo = true;
            return false;
        }
    });
}
// Handler de eventos
function buscadorNodosHandler() {
    var valor = buscadorNodosInput.value.trim();
    var minLength = 2;
    var maxLength = 60;
    var regexp = new RegExp("^[ 0-9-A-ZÑÁÉÍÓÚ*/.]{2," + maxLength + "}$");
    if ((valor.toUpperCase().search(regexp))!=0){
        modalAviso("La referencia debe tener una longitud mínima de 2 caracteres y solo puede contener letras y números...", function () {
            buscadorNodosInput.select();
        });
        return;
    }
    window.location.href = buscadorNodosURL.value + '&filtro=' + valor;
}
function limpiadorBuscadorNodosHandler() {
    window.location.href = buscadorNodosURL.value;
}
// Eventos
if (btnDescargarPDF) {
    btnDescargarPDF.addEventListener('click', comprobarDescargaPDF);
}
if (restringir === 1 && filtrosAutomaticos === 0) {
    $('.contenedor-filtros .filtro').change(function() {
        generarFiltros();
    });
}
    
window.addEventListener('load', function () {
    actualizarEstadoFiltros();
    if (filtroActivo) {
        activarFiltros();
    }
});
$(document).ready(function() {
    if (restringir === 1 && $('#nod-filtros').val() != undefined && $('#nod-filtros').val().length > 0) {
        generarFiltros();
    } else {
        activarFiltros();
    }
});
if (buscadorNodosBtn) {
    buscadorNodosBtn.addEventListener('click', buscadorNodosHandler);
}
if (buscadorNodosInput) {
    buscadorNodosInput.addEventListener('keypress', function(e) {
        if (e.keyCode === 13) {
            buscadorNodosHandler();
        }
    });
}
if (limpiadorBuscadorNodos) {
    limpiadorBuscadorNodos.addEventListener('click', limpiadorBuscadorNodosHandler);
}