﻿if (typeof(console) == "undefined")
    console = { debug: function(){}, log: function(){} }

// Autorefresca un listado cada "periodo" segundos pulsando el botón de búsqueda del listado.
// Si no se encuentra el botón, se cancela el autorefresco.
// Si existe un chekbox desactivado dentro de un elemento con clase "alternador-autorefresco" no se refresca.
// Parámetros:
//  - periodo: periodo en segundos entre refrescos
//  - identificador: identificador único de este autorefresco
//  - selectorBoton: selector jQuery usado para encontrar el bótón de búsqueda a pulsar
//  - fnSaltar: (opcional) función llamada cada vez que se va a refrescar el listado. Si devuelve true no se realiza ese refresco.
function autorefreso(periodo, identificador, selectorBoton, fnSaltar) {
    fnSaltar = fnSaltar || function() {return false;}
    //console.debug("Estableciendo timer " + identificador + " cada " + periodo + " segundos");
    $(document).stopTime(identificador);
    $(document).everyTime(periodo, identificador, function(){
        // Se busca el botón de búsqueda de la Bolsa de Partes
        var boton = $(selectorBoton);
        
        // Si el botón no existe o se cumple la función de cancelación, se detiene el autorefresco
        if (boton.length == 0) {
            $(document).stopTime(identificador);
        }
        // Si existe y fnSaltar devuelve false, se refresca la Bolsa de Partes (pulsando el botón)
        else if (!fnSaltar()){
            // Se comprueba que no se ha desactivado el autorefresco
            var alternador = $(".alternador-autorefresco :checkbox");
            if (alternador.length > 0 && !alternador.is(":checked"))
                return;

            boton.click();
        }
    });
}

function detenerAutorefresco(identificador) {
    $(document).stopTime(identificador);
}

function autorefrescoBolsaPartes() {
    autorefreso(60 * 1000, 'refrescoBolsaPartes', '#ctl00_MainContent_cmd_Filtrar', 
                function(){ return $(".modalPopup:visible, ventanaCargando_mensaje:visible").length > 0; });
}

function autorefrescoBolsaAvisos() {
    autorefreso(60 * 1000, 'refrescoBolsaAvisos', '#ctl00_MainContent_cmd_Filtrar', 
                function(){ return $("#listado-bolsa-avisos .listado").length > 1 || 
                                   $(".modalPopup:visible, ventanaCargando_mensaje:visible").length > 0; });
}

// Move an element directly on top of another element (and optionally make it the same size)
function Cover(bottom, top, ignoreSize) {
    var location = Sys.UI.DomElement.getLocation(bottom);
    top.style.position = 'absolute';
    top.style.top = location.y + 'px';
    top.style.left = location.x + 'px';
    if (!ignoreSize) {
        top.style.height = bottom.offsetHeight + 'px';
        top.style.width = bottom.offsetWidth + 'px';
    }
}

