/* Author: Evgeny Burzak <fly-xATmailDOTruDELETE> */
/* Version : 0.2 */


function MenuInit () 
{
	openedNodes = Array();
	openedLevels = Array ();
	showTimeOut = false;
	topNode = "";
	openedNode = Array ();
	clicked = false;

	els = document.getElementsByTagName("div");
	tm = 0;
	openedNodes[1] = Array ();
	for(var i=0; i < els.length; i++) {
		var el_class = els.item(i).className
		if (el_class == 'menu-level1' || el_class == 'menu-level1-act') {
			openedNodes[1][tm] = els.item(i)
			tm++;
		}
		else if (el_class.indexOf("menu-level2") > -1 || el_class.indexOf("menu-level3") > -1)
			els.item(i).style.display = "none";
	}
}

function ShowMenuByTimer (id, level) 
{
	var opened = false;
	for (var i=0; i<openedLevels.length; i++)
		if (openedLevels[i] == id)
			opened = true;
	
	if (!opened) {
			alert (openedLevels.toString());
		ClearMenuTimer ();
		showTimeOut=setTimeout ("ShowMenu('"+id+"',"+level+")", 1000);
	}
}
function ClearMenuTimer ()
{
	if (showTimeOut) clearTimeout (showTimeOut);
}

function ShowMenu (id, level) 
{
	var trace = "";
	if (false && openedNodes)
	{
		for (var l=1; l<openedNodes.length; l++)
		{
			trace += "level: " + l + "\n";
			if (openedNodes[l])
				for (var h=0; h<openedNodes[l].length; h++)
				{
					trace += "  node: " + openedNodes[l][h].id + "\n"
				}
		}
		alert (id + ", level: " + level + "\n\n" + trace);
	}
	
	if (id == openedNode[level])
		return;
	else
		openedNode[level] = id

	if (clicked)
		return;

	if (openedNodes && openedNodes[level]) {
		for (var i=0; i<openedNodes[level].length; i++)
		{
//        setTimeout ('openedNodes['+level+']['+i+'].style.display = "none"', (i+1)*50);
			openedNodes[level][i].style.display = "none";
		}
		openedNodes[level] = Array ();
		openedLevels[level] = null;
	}

	if (level == 2 && openedNodes) {
		openedNode = Array ();
		for (var l=2; l<openedNodes.length; l++)
			if (openedNodes[l])
				for (var h=0; h<openedNodes[l].length; h++)
					openedNodes[l][h].style.display = "none";
		/* it clear menu array at all, so for implementation open/close main menu branch (level 1)
		   it is needed for review code
		*/
		openedNodes = Array();
	}
	
	var els = document.getElementsByTagName("div");
	var tm = 0;
	for(var i=0; i < els.length; i++) {
		if (els.item(i).id.indexOf(id+"-") === 0) {
			if (!openedNodes[level]) openedNodes[level] = Array ();
			openedNodes[level][tm] = els.item(i)
			setTimeout ('ShowItem('+level+','+tm+',"'+id+'")', (tm+1)*40);
			tm++;
		}
	}
}

function ShowItem (level, index, id)
{
	openedNodes[level][index].style.display = "block";
	if (level == 1)
		openedLevels = Array (id);
	else
		openedLevels[level] = id;
}

function HideItem (level, index, id)
{
	openedNodes[level][index].style.display = "none";
	openedLevels[level] = null;
}


function HideMenu (id, level) 
{
	var els = document.getElementsByTagName("div");
	var tm = 0;
	for(var i=0; i < els.length; i++) {
		if (els.item(i).id.indexOf(id+"-") === 0) {
			if (!openedNodes[level]) openedNodes[level] = Array ();
			openedNodes[level][tm] = els.item(i)
			setTimeout ('HideItem('+level+','+tm+',"'+id+'")', (tm+1)*40);
			tm++;
		}
	}
}
