/*
XHTML/CSS/DHTML Semantically correct drop down menu 
Author: Sam Hampton-Smith - Site: http://www.hampton-smith.com
Fehlerbereinigung: W. Zenk - Homepage-Total.de
*/
    var currentMenu = null;
    var mytimer = null;
    var timerOn = false;
    var opera = window.opera ? true : false;

    if (!document.getElementById)
        document.getElementById = function() { return null; }
    
    function initialiseMenu(menue, starter, root) {
//      var menueId = menue.attributes(0).value;
        var leftstarter = false;
    
        if (menue == null || starter == null) return;
            currentMenu = menue;
        starter.onmouseover = function() {
            if (currentMenu) {
                if (this.parentNode.parentNode!=currentMenu) {
                    currentMenu.style.visibility = "hidden";
                }
                if (this.parentNode.parentNode==root) {
                    var tempCurrentMenu = currentMenu
                    while (tempCurrentMenu.parentNode.parentNode!=root) {
                        tempCurrentMenu.parentNode.parentNode.style.visibility = "hidden";
                        tempCurrentMenu = tempCurrentMenu.parentNode.parentNode;
                    }
                }
                currentMenu = null;
                this.showMenu();
                }
        }
        menue.onmouseover = function() {
            if (currentMenu) {
                currentMenu = null;
                this.showMenu();
                }
        }   
    
        starter.showMenu = function() {
            if (!opera) {
                if (this.parentNode.parentNode==root) {
                    menue.style.left = this.offsetLeft + "px";
                    menue.style.top = this.offsetTop + this.offsetHeight + "px";
                }
                else {
                    menue.style.left = this.offsetLeft + this.offsetWidth + "px";
                    menue.style.top = this.offsetTop + "px";
                }
            }
            else {
                if (this.parentNode.parentNode==root) {
                    menue.style.left = this.offsetLeft + "px";
                    menue.style.top = this.offsetHeight + "px";
                }
                else {
                    menue.style.left = this.offsetWidth + "px";
                    menue.style.top = this.offsetTop + "px";
                }
            }
            menue.style.visibility = "visible";
            currentMenu = menue;
        }

        starter.onfocus  = function() {
            starter.onmouseover();
        }
        menue.onfocus     = function() {
        }
        menue.showMenu = function() {
            menue.style.visibility = "visible";
            currentMenu = menue;
            stopTime();
        }
        menue.hideMenu = function()  {
            if (!timerOn) {
                mytimer = setInterval("killMenu('" + this.id + "', '" + root.id + "');", 650); // 700 ####
                timerOn = true;
                for (var x=0;x<menue.childNodes.length;x++) {
                    if (menue.childNodes[x].nodeName=="LI") {
                        if (menue.childNodes[x].getElementsByTagName("UL").length>0) {
                            var menueItem = menue.childNodes[x].getElementsByTagName("UL").item(0);
                            menueItem.style.visibility = "hidden";
                        }
                    }
                }
            }
        }
        menue.onmouseout = function(event) {
            this.hideMenu();
        }
        starter.onmouseout = function() {
            for (var x=0;x<menue.childNodes.length;x++) {
                if (menue.childNodes[x].nodeName=="LI") {
                    if (menue.childNodes[x].getElementsByTagName("UL").length>0) {
                        var menueItem = menue.childNodes[x].getElementsByTagName("UL").item(0);
                        menueItem.style.visibility = "hidden";
                    }
                }
            }
            menue.style.visibility = "hidden";
        }
}
    function killMenu(menue, root) {
        menue = document.getElementById(menue);
        root = document.getElementById(root);
        menue.style.visibility = "hidden";
        for (var x=0;x<menue.childNodes.length;x++) {
            if (menue.childNodes[x].nodeName=="LI") {
                if (menue.childNodes[x].getElementsByTagName("UL").length>0) {
                    var menueItem = menue.childNodes[x].getElementsByTagName("UL").item(0);
                    menueItem.style.visibility = "hidden";
                }
            }
        }
        while (menue.parentNode.parentNode!=root) {
            menue.parentNode.parentNode.style.visibility = "hidden";
            menue = menu.parentNode.parentNode;
        }
        stopTime();
    }
    function stopTime() {
        if (mytimer) {
             clearInterval(mytimer);
             mytimer = null;
             timerOn = false;
        }
    } 

    window.onload = function() {
        var root = document.getElementById("menueList");
        getMenus(root, root);
    }

function getMenus(elementItem, root) {
    var selectedItem;
    var menueStarter;
    var menueItem;
    for (var x=0;x<elementItem.childNodes.length;x++) {
        if (elementItem.childNodes[x].nodeName=="LI") {
            if (elementItem.childNodes[x].getElementsByTagName("UL").length>0) {
                menueStarter = elementItem.childNodes[x].getElementsByTagName("A").item(0);
                menueItem = elementItem.childNodes[x].getElementsByTagName("UL").item(0);
                getMenus(menueItem, root);
                initialiseMenu(menueItem, menueStarter, root);
            }
        }
    }
}
