
function dropItDown() {
    var dropdown = document.getElementsByTagName("ul");
    for (var i = 0; i < dropdown.length; i++) {
        if (dropdown[i].className != 'menutree') continue;
            dropdown[i].onmouseover = navMouseOver;
            dropdown[i].onmouseout = navMouseOut;
            var listItems = dropdown[i].getElementsByTagName("li");
            //console.log(listItems);
            for (var j = 0; j < listItems.length; j++) {
                var test = listItems[j].getElementsByTagName("ul")[0];
                if (test) {
                    listItems[j].firstChild.onfocus = navMouseOver;
                    listItems[j].relatedItem = test;
                    
                }
            }
    }
}

var currentlyOpenedMenus = new Array();
var currentlyFocusedItem;

function navMouseOver(e) {
    
    var evt = e || window.event;
    var evtTarget = evt.target || evt.srcElement;
    if (evtTarget.nodeName == "UL") return;
    while (evtTarget.nodeName != "LI") {
        evtTarget = evtTarget.parentNode;
        foldMenuIn(evtTarget);
        if (evtTarget.relatedItem && !evtTarget.relatedItem.opened) {
            evtTarget.className = 'highlight';
            evtTarget.relatedItem.className = 'foldout';
            evtTarget.relatedItem.opened = true;
            currentlyOpenedMenus.push(evtTarget.relatedItem);
        }
    }
}

function navMouseOut(e) {
    var evt = e || window.event;
    var relatedNode = evt.relatedTarget || evt.toElement;
    foldMenuIn(relatedNode);
}

function foldMenuIn(targetNode) {
    if (!targetNode) return;
        var newCurrentlyOpenedMenus = new Array();
        for (var i = 0; i < currentlyOpenedMenus.length; i++) {
            if (!containsElement(currentlyOpenedMenus[i],targetNode)) {
                currentlyOpenedMenus[i].className = '';
                currentlyOpenedMenus[i].parentNode.className = '';
                currentlyOpenedMenus[i].opened = false;
        }
            else
                newCurrentlyOpenedMenus.push(currentlyOpenedMenus[i]);
        }
        currentlyOpenedMenus = newCurrentlyOpenedMenus;
    }


function containsElement(obj1,obj2) {
    while (obj2.nodeName != 'HTML') {
        if (obj2 == obj1) return true;
        obj2 = obj2.parentNode;
    }
    return false;
}


dropItDown();
