// alert("geht");
function toggleCollapsibleEntry(h5) {

    li = h5.parentNode;

    var d = li.getElementsByTagName("DIV")[0];
    var newStyle = (d.style.display == "block" ? "none" : "block");
    d.style.display = newStyle;

    var itemDIV = li.getElementsByTagName("DIV")[0];
    itemDIV.style.display = newStyle;

    nested = itemDIV.childNodes;

    for (var i = 0; i < nested.length; i++) {

        nestedItem = nested[i];
        if (nestedItem.style) {
            nestedItem.style.display = newStyle;
        }
    }

    var span = h5.getElementsByTagName("SPAN")[0];

    if (newStyle == 'block') {
        span.style.background = "url(../Documents/bwmExpanderMinus.gif) no-repeat scroll 0px 4px transparent";
    } else {
        span.style.background = "url(../Documents/bwmExpanderPlus.gif) no-repeat scroll 0px 4px transparent";
    }

}

var debugStr = "";

function addCollapsibleToggles() {
    var uls = document.getElementsByTagName("UL");
    for (var i = 0; i < uls.length; i++) {
        if (uls[i].className == "collapsible") {
            var ul = uls[i];

            var h5s = ul.getElementsByTagName("H5");

            for (var l = 0; l < h5s.length; l++) {

                var h5 = h5s[l];

                if (h5.innerHTML.indexOf("<span") < 0 && h5.innerHTML.indexOf("<SPAN") < 0) {

                    h5.onclick = function() {
                        toggleCollapsibleEntry(this)
                    }

                    h5.innerHTML = "<span style='background:url(../Documents/bwmExpanderPlus.gif) no-repeat scroll 0px 4px transparent;'>&nbsp;</span><p class='headingText'>" + h5.innerHTML + "</p>";

                }
            }
        }
    }
}

/* Start of Glossary Stuff */

var SelectorsList = new Array();
var SelectorListPopulated = false;



function getSelectors() {
    var lis = document.getElementById('glossarySelector').getElementsByTagName("SPAN");
    var prevSelector = null;

    for (var i = 0; i < lis.length; i++) {

        var nextSelector = (i < lis.length - 1 ? lis[i + 1].innerHTML : null);
        SelectorsList[lis[i].innerHTML] = {
            previous: prevSelector,
            next: nextSelector
        }
        prevSelector = lis[i].innerHTML;
    }

}


function setGlossary(letter) {

    if (!SelectorListPopulated) getSelectors();

    p = SelectorsList[letter].previous
    n = SelectorsList[letter].next

    if (p == null) {
        leftLink = "<span>&nbsp;</span>";
    } else {
        leftLink = "<span class='leftFooter' onclick='setGlossaryTop(\"" + p + "\")'>" + p + "</span>";
    }

    if (n == null) {
        rightLink = "";
    } else {
        rightLink = "<span class='rightFooter' onclick='setGlossaryTop(\"" + n + "\")'> " + n + "</span>";
    }

    var footer = "<hr /><div id='glossaryFooter'>" + leftLink + "<span class='middleFooter'> <a id='linkGlossaryTop' href='#glossaryTop'>zum Anfang</a></span>" + rightLink + "</div>";

    if (document.getElementById('glossary' + letter)) {
        bodytext = document.getElementById('glossary' + letter).innerHTML
    } else {
        bodytext = "No entries found";
    }

    document.getElementById('glossaryDisplayArea').innerHTML = bodytext + footer;

    var spans = document.getElementById('glossarySelector').getElementsByTagName("SPAN");
    for (var i = 0; i < spans.length; i++) {
        if (spans[i].innerHTML == letter) spans[i].className = "selected";
        else spans[i].className = "";
    }
}

function setGlossaryTop(letter) {
    setGlossary(letter);
    document.getElementById("linkGlossaryTop").click();
}

function getGlossary(letterSpan) {
    //  alert("getGlossary(" +letterSpan +")");

    letter = letterSpan.innerHTML;
    setGlossary(letter);
}



function initGlossarySelectors() {
    // alert("initGlossarySelectors");
    var ul = document.getElementById('glossarySelector');
    ul.getElementsByTagName("LI")[0].className = "first";

    var h5s = ul.getElementsByTagName("span");
    for (var l = 0; l < h5s.length; l++) {
        var h5 = h5s[l];
        h5.onclick = function() {
            getGlossary(this)
        }
    }
}
/*
var urlStr = window.location.href.substring(window.location.href.indexOf("/Pages/"), window.location.href.indexOf(".aspx"));
urlStr = urlStr.substring(7,1000);
alert(urlStr);
*/

function jumpTo(label) {
    var urlStr = window.location.href.split("/").pop().split(".")[0];
    if (urlStr == "glossary") {
        var letter = label.substr(0, 1);
        letter = letter.toUpperCase();
        setGlossary(letter);
        var container = document.getElementById('glossaryDisplayArea');
        if (container) {
            var headings = container.getElementsByTagName("a");
            for (var h in headings) {
                if (headings[h].name == label) {
                    var n = headings[h];
                    do n = n.nextSibling;
                    while (n && n.nodeType != 1);
                    n.scrollIntoView(true);
                }
            }
        } else {
            alert("No glossary found");

        }
    } else {
        window.location = "glossary.aspx#" + label;
    }
}


/*
function jumpTo(label) {
    var urlStr = window.location.href.substring(window.location.href.indexOf("/Pages/"), window.location.href.indexOf(".aspx"));
    urlStr = urlStr.substring(7, 1000);
    // alert("test");
    if (urlStr == "glossary") {
        var letter = label.substr(0, 1);
        letter = letter.toUpperCase();
        setGlossary(letter);

        var container = document.getElementById('glossaryDisplayArea');
        if (container) {
            var headings = container.getElementsByTagName("a");
            // .getAttribute("name")
            for (var h in headings) {
                //  alert(headings[h].innerText);
                if (headings[h].name == label) {
                    //  alert("name gefunden : "+label);
                    // alert("offsetTop : " + headings[h].offsetTop);
                    // var offsety = 0;
                    //  alert(headings[h].nextSibling.offsetTop);

                    // var posy = headings[h].nextSibling.offsetTop;
                    // window.scrollTo(0, posy);
                    headings[h].nextSibling.scrollIntoView(true);

                    // window.scrollTo(0, posy+422);
                }
            }
        } else {
            alert("No glossary found");

        }
    } else {
        window.location = "glossary.aspx#" + label;
    }
}
*/
function checkHash() {
    if (document.location.hash) {
        jumpTo(document.location.hash.substring(1, 100));
    }
}


/* End of Glossary Stuff */
