/*
 * Dynamic Menu
 * Written by Andy Peatling - http://www.cssdev.com/
 * April 1, 2006.
 */

function collapseMenu(menuId, node){
    if (!document.getElementById) 
        return false;
    if (!document.getElementById(menuId)) 
        return false;
    if (!node) 
        node = document.getElementById(menuId);
    
    if (node.childNodes.length > 0) {
        for (var i = 0; i < node.childNodes.length; i++) {
            var child = node.childNodes[i];
            if (child.nodeName == "UL") {
                child.style.display = "none";
            }
            if (child.className == "left_menu lactive" 
                || child.className == "left_submenu lsactive" 
                ||  child.className == "left_subusbmenu lssactive") {
                selectedNodes[selectedNodes.length] = child;
            }
            collapseMenu(menuId, child);
        }
    }
}

function prepareMenu(menuId){
    if (!document.getElementById || !document.getElementsByTagName) 
        return false;
    if (!document.getElementById(menuId)) 
        return false;
    
    var links = document.getElementById(menuId).getElementsByTagName("a");
    for (var i = 0; i < links.length; i++) {
        links[i].onclick = function(){
            toggleMenu(this.parentNode.getElementsByTagName("UL")[0], this.href);
            return false;
        }
    }
}

function expandSelectedNodes(menuId){
    if (!document.getElementById) 
        return false;
	for (var i = 0; i < selectedNodes.length; i++) {
		expandNode(menuId, selectedNodes[i]);
	}
    //selectedNodes.forEach(expandNode);
}

function expandNode(menuId, node){
	var child = node.getElementsByTagName("UL")[0];
	if (child) {
		child.style.display = '';
	}
    if (node.parentNode.id != menuId) {
		var parentUl = node.parentNode;
		if (parentUl) {
			expandNode(menuId, parentUl);
		}
    }
}

function toggleMenu(node, link){
    if (!document.getElementById) 
        return false;
    if (!link) 
        return false;
    if (!node) {
		location.href = link;
		return true;
	}
	
		
    // Collapse all nodes, and only show clicked node (when clicking top level of menu)
    /*
if (node.parentNode.parentNode.id == "menu") {
        hideTopLevels();
    }
*/
    
    if (node.style.display == "") {
        Effect.BlindUp(node, {
            duration: 0.2
        });
    }
    else {
        Effect.BlindDown(node, {
            duration: 0.2
        });
    }
}

function hideTopLevels(){
    if (!document.getElementById) 
        return false;
    if (!(node = document.getElementById("js_left_menu"))) 
        return false;
    
    if (node.childNodes.length > 0) {
        for (var i = 0; i < node.childNodes.length; i++) {
            var child = node.childNodes[i];
            for (var j = 0; j < child.childNodes.length; j++) {
                var grandchild = child.childNodes[j];
                if (grandchild.nodeName == "UL") {
                    if (grandchild.style.display == '') {
                        Effect.BlindUp(grandchild, {
                            duration: 0.2
                        });
                    }
                }
            }
        }
    }
}

var selectedNodes = [];
collapseMenu('js_left_menu');
prepareMenu('js_left_menu');
expandSelectedNodes('js_left_menu');