//Wird von der bremen.aspx verwendet

var toggleOnlyLevel2 = false;

function refresh() {
    var i, j, trs = document.getElementsByTagName("input");

    for (var i = 0; i < trs.length; ++i) {
        j = trs[i].id.indexOf(".chk");
        if (j > 0 && trs[i].checked == false) {
            show("tr", trs[i].id.slice(0, j), false)
            show("div", trs[i].id.slice(0, j), false)
        }
    }
}


function show(tag, name, vis) {
    var trs = document.getElementsByTagName(tag);
    vis = vis ? "" : "none";
    for (var i = 0; i < trs.length; ++i)
        if (0 == trs[i].id.indexOf(name + "." + tag + "."))
        trs[i].style.display = vis;
}

function init_toggle(IDs) {
    var ids = IDs.split(";");
    for (var i = 0; i < ids.length; ++i) {
        toggle(ids[i]);

        document.getElementById("ico" + ids[i]).src = "/bib/img/toc2-path-h1-c.gif";
    }
}

function expandElement(element) {
    if (element.style.display) {
        element.style.display = "";

        var ico = $get("ico" + element.id);
        if (ico) ico.src = "/bib/img/toc2-path-h1-o.gif";
    }
}

function collapseElement(element) {
    if (!element.style.display) {
        element.style.display = "none";

        var ico = $get("ico" + element.id);
        if (ico) ico.src = "/bib/img/toc2-path-h1-c.gif";
    }
}

function toggleElement(id) {
    var o = $get(id);
    if (o.style.display) {
        expandElement(o);
    }
    else {
        collapseElement(o);
    }
}

function toggle(id) {
    if (toggleOnlyLevel2) {
        var descendants = getDescendantsByTagName($get(id), 'UL');

        for (var i = 0; i < descendants.length; i++) {
            var descendant = descendants[i];

            toggleElement(descendant.id);
        }
    }
    else {
        toggleElement(id);
    }
    return false;
}


// === Funktionen werden momentan nur für BeckOnline-Kommentar benutzt
// === zum Ein-/Ausblenden der Detail-Bereiche

var idPre = new Array("dtlA", "dtlD");

function dtlToggle(aid) {
    var link = document.getElementById(aid);
    var content = document.getElementById(idPre[1] + link.id.substring(idPre[0].length));
    
    if (content.style.display == "") {
        content.style.display = "none";
        link.innerHTML = "Details &ouml;ffnen";
    } else {
        content.style.display = "";
        link.innerHTML = "Details schlie&szlig;en";
    }
}

function dtlClose() {
    var divs = document.getElementsByTagName("div");

    var hit = /span +class=["']?hit["']?/gi;
    var hash = new RegExp("<a +name=[\"']?" + window.location.hash.substring(1) + "[\"']?>", "ig");

    for (var i = 0; i < divs.length; ++i)
        if (idPre[1] == divs[i].id.substring(0, idPre[1].length)) {
        dtlToggle(idPre[0] + divs[i].id.substring(idPre[1].length));
        if (hit.test(divs[i].innerHTML) || hash.test(divs[i].innerHTML))
            dtlToggle(idPre[0] + divs[i].id.substring(idPre[1].length));
    }
}


// === Funktionen werden momentan nur für Gesetzesübersichten (im Inhalt) benutzt
// === zum Ein-/Ausblenden der Detail-Bereiche

function ulClose() {
    var uls = document.getElementsByTagName('ul');
    for (var i = 0; i < uls.length; ++i) {
        if (uls[i].id.substring(0, 5) == "coll_") {
            if (toggleOnlyLevel2 == false || getAncestorByTagName(getAncestorByTagName(uls[i], 'UL'), 'UL') != null) {
                collapseElement(uls[i]);
            }
        }
    }
}

function ulOpen() {
    var uls = document.getElementsByTagName('ul');
    for (var i = 0; i < uls.length; ++i) {
        if (uls[i].id.substring(0, 5) == "coll_") {
            if (toggleOnlyLevel2 == false || getAncestorByTagName(getAncestorByTagName(uls[i], 'UL'), 'UL') != null) {
                expandElement(uls[i]);
            }
        }
    }
}

function getAncestorByTagName(element, tagName) {
    if (element == null)
        return null;

    var current = element.parentNode;

    while (current != null) {
        if (current.tagName == tagName) {
            return current;
        }
        current = current.parentNode;
    }
    return null;
}

function getDescendantsByTagName(element, tagName) {
    var elements = element.getElementsByTagName(tagName);
    var result = new Array();

    if (elements.length == 0) {
        result.push(element);
    }
    else {
        for (var i = 0; i < elements.length; i++) {
            if (getAncestorByTagName(getAncestorByTagName(elements[i], tagName), tagName) != null) {
                result.push(elements[i]);
            }
        }
    }

    return result;
}
