var highlightedMenuItemClassName = "activeTop"
var highlightedSubmenuItemClassName = "activeSub"
var closedSubmenuClassName = "subClosed"
var openSubmenuClassName = "subOpened"

function SubmenuItem(theParent, itemSource) {
    var parent = theParent
    var instance = itemSource
    var pageLink = itemSource.getElementsByTagName("A")[0]
    
    this.isActive = function() {
        return pageLink.href == document.location.href
    }
    
    this.findActiveItem = function() {
        if (this.isActive()) {
            return this
        } else {
            return null
        }
    }
    
    this.highlight = function() {
        instance.className = highlightedSubmenuItemClassName
        pageLink.className = highlightedSubmenuItemClassName
        parent.highlight()
    }
}

function MainMenuItem(itemSource) {
    var instance = itemSource
    var pageLink = itemSource.getElementsByTagName("A")[0]
    var submenuInstance
    var subitems
    
    submenuInstance = instance.getElementsByTagName("UL")[0]
    
    
    if (typeof submenuInstance == "undefined") {
        submenuInstance = null
        subitems = null
    } else {
        subitems = new Array()
        var candidates = submenuInstance.childNodes
        for (var i = 0; i < candidates.length; i++) {
            var candidate = candidates[i]
            if (candidate.nodeType == 1
                && candidate.tagName == "LI")
            {
                subitems[subitems.length] = new SubmenuItem(
                        this,
                        candidate)
            }
            submenuInstance.className = closedSubmenuClassName
        }
    }
    
    function openSubmenu() {
        if (submenuInstance != null) {
            submenuInstance.className = openSubmenuClassName
        }
    }
    
    this.isActive = function() {
        return pageLink.href == document.location.href
    }
    
    this.findActiveItem = function() {
        if (this.isActive()) {
            return this
        } else if (subitems != null) {
            var activeItem = null
            for (var i = 0; i < subitems.length; i++) {
                activeItem = subitems[i].findActiveItem()
                if (activeItem != null) {
                    break
                }
            }
            return activeItem
        } else {
            return null
        }
    }

    this.highlight = function() {
        instance.className = highlightedMenuItemClassName
        pageLink.className = highlightedMenuItemClassName
        openSubmenu()
    }
}

function MainMenu(theHighlightedClassName, 
                  theHighlightedSubitemClassName) 
{
    var instance = document.getElementById("menu_left")
    var items = new Array()
    
    var candidates = instance.childNodes
    for (var i = 0; i < candidates.length; i++) {
        var candidate = candidates[i]
        if (candidate.nodeType == 1
            && candidate.tagName == "LI")
        {
            items[items.length] = new MainMenuItem(
                    candidate,
                    theHighlightedClassName, 
                    theHighlightedSubitemClassName)
        }
    }
    
    function findActiveItem() {
        var activeItem = null
        for (var i = 0; i < items.length; i++) {
            activeItem = items[i].findActiveItem()
            if (activeItem != null) {
                break
            }
        }
        return activeItem
    }
    
    findActiveItem().highlight()
}

onload = function() {
   var menu_left = new MainMenu()
}