// toggle.js
function isDisplayed(element) {
    var d = element.style.display;
    return !(d == "none" || d == "" || d == null);
}

var bottomTriangle = "&#x25be;";
var rightTriangle = "&#x25b8;";
var shownMarker = "&nbsp;&nbsp;" + rightTriangle;
var hiddenMarker = "&nbsp;&nbsp;" + bottomTriangle;

function getPreviousTag(element, tag) {
    while (true) {
        element = element.previousSibling;
        if (element == null) return null;
        if (element.nodeName == tag) return element;
    }
}

function markAnchor(anchor, marker) {
    if (anchor == null) return;
    var span = anchor.lastChild;

    if (span == null || span.nodeName != 'SPAN') {
        span = document.createElement('span');
        span.style.color = "black";
        span.style.textDecoration = "none";
        anchor.appendChild(span);
    }

    span.innerHTML = marker;
}

function markElement(element, marker) {
    markAnchor(getPreviousTag(element, "A"), marker);
}
        
function hideElement(element) {
    element.style.display = "none";
    markElement(element, hiddenMarker);
}

function showElement(element) {
    element.style.display = "block";
    markElement(element, shownMarker);
}

function hideElementById(id) {
    element = document.getElementById(id);
    if (element != null) hideElement(element);
}

function showElementById(id) {
    element = document.getElementById(id);
    if (element != null) showElement(element);
}

function toggle(id) {
    var element = document.getElementById(id);
    if (isDisplayed(element)) hideElement(element); else showElement(element);
}

