/*
 * Dynamic Menu
 * Written by Andy Peatling - http://www.cssdev.com/
 * April 1, 2006.
 * Modified by Leon van de Pavert <leon@idbbn.fi> 2008-09-17
 * abandoned inline style manipulation in favour of swapping classNames and let CSS do the other magic.
 * uses normal, parent, current, expand classes on <li> tags and uses the cascading properties of css
 */
//addLoadEvent(collapseMenu);
//addLoadEvent(prepareMenu);

function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}
function openMainMenuPath(path) {
	var liIdPrefix="m";
	var ulIdPrefix="s";

	var pathArray = path.split(",");
	for (var item in pathArray)
	{
		pathArray[item]="'"+liIdPrefix+pathArray[item]+"'";
	}

	for(var i=pathArray.length-2;i<pathArray.length;i++) {
		var selectedMenu = eval("document.getElementById("+pathArray[i]+")");
		if(selectedMenu) {
			selectedMenu.className = "menuSelected";
		}
	}
}
function openMenuPath(node,path) {
	if(!path) {
		return false;
	} else {
		var liIdPrefix="m";
		var ulIdPrefix="s";
		var ulPathArray = new Array();
		var liPathArray = new Array();
		var pathArray = path.split(",");
		for (var item in pathArray)
		{
			ulPathArray[item]="'"+ulIdPrefix+pathArray[item]+"'";
			liPathArray[item]="'"+liIdPrefix+pathArray[item]+"'";
		}
	}
	if (!document.getElementById) return false;
	if (!document.getElementById("subMenu")) return false;
	if (!node) node = document.getElementById("subMenu");
	if (node.childNodes.length > 0) {
		for (var i=0; i<node.childNodes.length; i++) {
			var child = node.childNodes[i];
			for(var a=0;a<pathArray.length-2;a++) {
				var x = eval("document.getElementById("+ulPathArray[a]+")");
				var y = eval("document.getElementById("+liPathArray[a]+")");
				if(x) {
					if (child.id == x.id ) {
						if(child.nodeName == "UL") {
							var oldClasses = String(child.className);
							oldClasses = oldClasses.replace(/normal/g,"current");
							oldClasses = oldClasses.replace(/parent/g,"expand");
							child.className = oldClasses;
						}
					}
				}
				if(y) {
					if (child.id == y.id ) {
						if(child.nodeName == "LI") {
							var oldClasses = String(child.className);
							oldClasses = oldClasses.replace(/normal/g,"current");
							oldClasses = oldClasses.replace(/parent/g,"expand");
							child.className = oldClasses;
							if (child.id == liPathArray[0].replace(/\'/g,""))
							{
								child.firstChild.className = "current";
							}
						}
					}
				}
			}
			openMenuPath(child,path);
		}
	}
}
function collapseMenu(node) {
	if (!document.getElementById) return false;
	if (!document.getElementById("subMenu")) return false;
	if (!node) node = document.getElementById("subMenu");
	if (node.childNodes.length > 0) {
		for (var i=0; i<node.childNodes.length; i++) {
			var child = node.childNodes[i];
			if (child.nodeName == "UL" && child.className != "expand") {
				var oldClasses = String(child.className);
				child.className = "normal " + oldClasses;
			}
			collapseMenu(child);
		}
	}
}
function prepareMenu() {
	if (!document.getElementById || !document.getElementsByTagName) return false;
	if (!document.getElementById("subMenu")) return false;
	var links = document.getElementById("subMenu").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 toggleMenu(node, link) {
	if (!document.getElementById) return false;
	if (!link) return false;
	if (!node) location.href = link.href;
	// Collapse all nodes, and only show clicked node (when clicking top level of menu)
	if (node.parentNode.parentNode.id == "subMenu") {
		hideTopLevels();
	}
	if (node.className == "") {
		Effect.Fade(node, {duration: 0.3});
	} else {
		Effect.Appear(node, {duration: 0.3});
	}
}
function hideTopLevels() {
	if (!document.getElementById) return false;
	if (!(node = document.getElementById("subMenu"))) 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.className == "normal") {
						Effect.Fade(grandchild, {duration: 0.2});
					}
				}
			}
		}
	}
}
