// menu array
var menu = new Array();

// timeout in ms
var timeOut = 0;

// timeout identifier
var timeOutId = 0;

// visible menu id
var visibleMenuId = 0;

// menu prefix
var menuPref = 'menu_';

// menu links prefix
var menuLinkPref = 'menu_link_';

// mouse over flag
var isMouseOver = false;

function setHideTimeout(nodeId) {
	timeOutId = window.setTimeout('hideObj("' + nodeId + '")', timeOut);
}

function initMenu() {
	
	menu = new Array();
	menuLinks = new Array();
	divs = document.getElementsByTagName('div');
	anchors = document.getElementsByTagName('a');
	
	var j=0;
	for (var i=0; i<divs.length; i++) {
		if (divs[i].id.indexOf(menuPref)!=-1) {
			menu[divs[i].id.substring(menuPref.length)] = divs[i];
		}
	}
	
	var j=0;
	for (var i=0; i<anchors.length; i++) {
		if (anchors[i].id.indexOf(menuLinkPref)!=-1) {
			menuLinks[anchors[i].id.substring(menuLinkPref.length)] = anchors[i];
		}
	}
	
	/*
	for (var nodeId in menu) {
		menu[nodeId].onmouseover = function () {
			window.clearTimeout(timeOutId);
			isMouseOver = true;
		}
		menu[nodeId].onmouseout = function () {
			window.clearTimeout(timeOutId);
			isMouseOver = false;
			setHideTimeout(this.id.substring(menuPref.length));
		}
	}
	*/
	
	for (var nodeId in menuLinks) {
		if (menu[nodeId]) { 
			/*
			menuLinks[nodeId].onmouseover = function () {
				showMenu(this.id.substring(menuLinkPref.length));
			}
			*/
			menuLinks[nodeId].onclick = function () {
				id = this.id.substring(menuLinkPref.length);
				if (id != visibleMenuId) {
					showMenu(id);
				} else {
					hideMenu(id);
				}
			}
			/*
			menuLinks[nodeId].onmouseout = function () {
				hideMenu(this.id.substring(menuLinkPref.length));
			}
			*/
		}
	}
	
}

function centeringMenu() {
	var mainTable = document.getElementById('container');
	for (var nodeId in menu) {
		menu[nodeId].style.left = (mainTable.offsetWidth - menu[nodeId].offsetWidth)/2 + 'px';
	}
}

function showMenu(nodeId) {
	window.clearTimeout(timeOutId);
	hideObj(visibleMenuId);
	showObj(nodeId);
}

function hideMenu(nodeId) {
	window.clearTimeout(timeOutId);
	setHideTimeout(nodeId);
}

function hideObj(nodeId) {
	
	// prop
	if (menuLinks[nodeId] && selectedNodeId != nodeId) menuLinks[nodeId].className = '';
	
	obj = document.getElementById(menuPref + nodeId);
	if (obj && !isMouseOver) {
		obj.style.visibility = 'hidden';
		visibleMenuId = 0;
	}
	
}

function showObj(nodeId) {
	
	// prop
	if (selectedNodeId != nodeId) menuLinks[nodeId].className = 'selected';
	
	obj = document.getElementById(menuPref + nodeId);
	if (obj) {
		obj.style.visibility = 'visible';
		visibleMenuId = nodeId;
	}
	
}

function showMenuLvl4(id) {
	obj = document.getElementById(id);
	if (obj) {
		obj.style.display = (obj.style.display=='none') ? 'block' : 'none';
	}
}