//---- FUNCIONES PARA EL MANTENIMIENTO DE LA LEYENDA

//Nos permite recuperar el array con las capas seleccionadas por el usuario, 
//para poder posteriormente generar el mapa
function toggleLayers(layers, element) {
    var name;

    if (element.type == 'checkbox') {
        name = element.value;

        if (element.checked)
            layers[name] = true;
        else
            layers[name] = false;
    } else {
        if (element.length == 0) return; // nothing to do

        if (element[0].type == 'checkbox' || element[0].type == 'radio') {
            for (var i = 0; i < element.length; i++) {
                name = element[i].value;
                if (element[i].checked)
                    layers[name] = true;
                else
                    layers[name] = false;
            }

        } else if (element.type == 'select-one' || element.type == 'select-multiple') {

            for (var i = 0; i < element.length; i++) {
                if (element.options[j].value)
                    name = element.options[j].value;
                else
                    name = element.options[j].name;

                if (element.options[j].selected)
                    layers[name] = true;
                else
                    layers[name] = true;
            }

        }
    }
    return layers;
}

function checkLegendControls(scale, activeLayer) {

    checkScale(document.layers.RADIO, scale);
    checkScale(document.layers.CHECKBOX, scale);
    var result = checkActiveLayer(activeLayer);
    hideInfoOptions(document.getElementById(LEGEND + '_container'));
    executeScripts(document.getElementById(LEGEND + '_container'));

    return result;
}

function checkScale(element, scale) {
    for (var i = 0; i < element.length; i++) {
        var maxscaleObj = document.getElementById("maxscale-" + element[i].value);
        var minscaleObj = document.getElementById("minscale-" + element[i].value);

        if (maxscaleObj) {
            if (maxscaleObj.value != -1) {
                if (maxscaleObj.value < scale) {
                    disableLegendControls(element[i]);
                    continue;
                }
            }
        }
        if (minscaleObj) {
            if (minscaleObj.value != -1) {
                if (minscaleObj.value > scale) {
                    disableLegendControls(element[i]);
                    continue;
                }
            }
        }
    }
}

function checkActiveLayer(activeLayer) {
    var element = document.getElementById('layerselector-' + activeLayer);
    if (element) {
        if ((!element.disabled) && (element.checked)) {
            document.getElementById('inforadio-' + activeLayer).checked = true;
            return activeLayer;
        }
    }
    return '';
}

function disableLegendControls(layerSelector) {
    layerSelector.disabled = true;
    var title = document.getElementById("title-" + layerSelector.value);
    title.style.color = "#999999";
    title.onmouseover = function() {
        this.style.textDecoration = 'none'
    };
}

function executeScripts(container) {
    var scripts = container.getElementsByTagName('script');
    var js = '';
    for (var s = 0; s < scripts.length; s++) {
        if (scripts[s].text == null) continue;
        js += scripts[s].text;
    }
    eval(js);
}

//Muestra o no los selectores de capa activa (radio e icono), 
//en funcion del valor de la variable SHOW_LEGEND_INFO_OPTIONS
function hideInfoOptions(legend) {
    if (SHOW_INFO_LEGEND_OPTIONS) {
        var radios = legend.getElementsByTagName('input');
        for (var i = 0; i < radios.length; i++) {
            var idInfoRadio = radios[i].id;
            if (idInfoRadio.slice(0, 9) == 'inforadio') {
                if (document.getElementById(idInfoRadio) != null)
                    document.getElementById(idInfoRadio).style.display = 'block';
                var idInfoIcon = 'infoicon' + idInfoRadio.slice(9, idInfoRadio.length);
                if (document.getElementById(idInfoIcon) != null)
                    document.getElementById(idInfoIcon).style.display = 'block';
            }
        }
    }
}

function hideLayersSelectors(legend) {
    var id;
    var inputs = legend.getElementsByTagName('input');
    for (var i = 0; i < inputs.length; i++) {
        id = inputs[i].id;
        if (id.slice(0, 13) == 'layerselector') {
            if (document.getElementById(id) != null)
                document.getElementById(id).style.display = 'none';
        }
    }
}

function getLegendInfo(layer) {
    var title = document.getElementById("title-" + layer);
    var info = new Array('', '');
    if (title) {
        info[0] = title.innerHTML;
        info[1] = title.title;
    }
    return info;
}
