

/**
 *
 */
var openNode;


var closeTimer;

/**
 *Liste aller ID's der Submenues.
 */
var Submenus = ["section_aktuelles_aktuelles",
    "section_institut_institut",
    "section_praevention_praevention",
    "section_forschung_forschung",
    "section_ausbildung_ausbildung",
    "section_institutsambulanz_institutsambulanz",
    "section_archiv_archiv",
    "section_publikationen_publikationen"];



/**
 *Deklarieren aller globalen Funktionen, sofern diese nicht
 *im Code explizit deklariert werden.
 */
var reopen, openExclusive, interval = 500;



/**
 * Aufgabe dieser Funktion ist das Finden einer speziellen UL-Liste, welche
 * derzeit mittels NAME-Attribut referenziert wird. Dieses funktioniert
 * lediglich mit auf Mozilla basierenden Browsers. Die IE-Familie verweigert an
 * dieser Stelle eine Sache, da ein UL-Element nach HTML-Standard nie ein
 * NAME-Attribut enthalten darf!
 */
function findElement(elementId)
{
    var element = document.getElementById(elementId);
    if(element !== null)
    {
        var children = element.childNodes;
        for(var i = 0; i < children.length; i++)
        {
            if(children[i].nodeName.toUpperCase() == "UL")
            {
                return children[i];
            }
        }
    }
    return null;
}


/**
 * Aufgabe der Funktion ist das Suchen nach einem eventuell
 * beim Laden der Seite bereits geöffneten Submenu. Dieses wird entsprechend global
 * hinterlegt, so dass die späteren Funktionen dieses schließen bzw. wieder öffnen
 * können.
 *
 * @author fpr
 *
 */
function findOpenNode()
{
    for(var i = 0; i < Submenus.length; i++)
    {
        var node = findElement(Submenus[i]);
        var temp = null;
        if(node === null)
        {
            //alert("findOpenNode() => unable to find element with ID "+Submenus[i]+"!!!");
        }
        else
        {
            if(node.currentStyle)
            {
                //temp = node.currentStyle["display"];
                temp = node.currentStyle.display;
            }
            else if(window.getComputedStyle)
            {
                temp = window.getComputedStyle(node, null).getPropertyValue("display");
            }
            if(temp == "block")
            {
                openNode = Submenus[i];
                break;
            }
        }
   }
}


function isSubmenuEmpty(name)
{
    var subMenu = findElement(name);
    return (subMenu.childNodes.length === 0);
}


function waitAndReopen()
{
    clearTimeout(closeTimer);
    if(openNode === undefined || openNode === null)
    {
        reopen();
    }
    else if(isSubmenuEmpty(openNode))
    {
        reopen();
    }
    else
    {
        closeTimer = window.setTimeout("reopen()", interval);
    }
}


function hide(elementName)
{
    var element = findElement(elementName);
    element.style.display = "none";
    if(elementName != openNode)
    {
        var baseNode = findElement(openNode);
        baseNode.style.display = "block";
    }
}


function show(elementName)
{
    clearTimeout(closeTimer);
    var element = findElement(elementName);
    element.style.display = "block";
    if(elementName != openNode)
    {
        var baseNode = findElement(openNode);
        if(baseNode !== null)
        {
            baseNode.style.display = "none";
        }
    }
}





function reopen()
{
    openExclusive(openNode);
}

function openExclusive(hoovered)
{
    clearTimeout(closeTimer);
    var node;
    for(var i = 0; i < Submenus.length; i++)
    {
        node = findElement(Submenus[i]);
        if(node !== null)
        {
            if(hoovered !== null && hoovered.toUpperCase() == Submenus[i].toUpperCase())
            {
                node.style.display = "block";
            }
            else
            {
                node.style.display = "none";
            }
        }
    }
}




