jQuery.noConflict();
L = new Array();
MaxMenuLength = 3;
MenuShowTimeout = 5000;
for (var j = 1; j <= MaxMenuLength;j++)
{
	L[j] = new Array();
}

mainbrother = undefined;
currentmenu = undefined;
function addHandler(object, event, handler, useCapture)
{
	if (object.addEventListener)
	{
		object.addEventListener(event, handler, useCapture ? useCapture : false);
	}
	else
	if (object.attachEvent)
	{
		object.attachEvent('on' + event, handler);
	}
}

function showmychild(e)
{
	ev = e || window.event;
	if (ev.srcElement)
	{
		if (ev.srcElement.className != "")
		{
			cancelBubbling(e);
			return;
		}
	}
    var level = parseInt(this.className.substr(1));
	currentmenu = jQuery("ul.l" + (level+1),this)[0];
	hidemylevel(level + 1);
	if (currentmenu == undefined)
	{
		return;
	}
	var prnt = currentmenu.parentNode;
	var stop = jQuery("ul")[0];
	while(prnt != stop)
	{
		if (prnt.tagName == "UL")
		{
			hideBrothers(prnt);
		}
		prnt = prnt.parentNode;
	}
	if (currentmenu != undefined)
	{
		currentmenu.style.visibility = "visible";
		jQuery(currentmenu).fadeIn("fast",
		function(x)
		{
			hidemylevel(level + 1);
			if (currentmenu == undefined)
			{
				return;
			}
			var prnt = currentmenu.parentNode;
			var stop = jQuery("ul")[0];
			while(prnt != stop)
			{
				if (prnt.tagName == "UL")
				{
					hideBrothers(prnt);
				}
				prnt = prnt.parentNode;
			}
			var timer = setTimeout(hideAll,MenuShowTimeout);
			clearTimeout(timer);
			setTimeout(hideAll,MenuShowTimeout);
			MenuShowTimeout
		}
		);
	}
	cancelBubbling(e);
}
function hideAll()
{
	for (level = 2; level <= MaxMenuLength;level++)
	for (currlevelmenuindex in L[level])
	{
		var currlevelmenu = L[level][currlevelmenuindex];
		currlevelmenu.style.display = "none";
		currlevelmenu.style.visibility = "hidden";
	}
}
function hideBrothers(x)
{
	var level = parseInt(x.className.substr(1));
	mainbrother = x;
	for (currlevelmenuindex in L[level])
	{
		var currlevelmenu = L[level][currlevelmenuindex];
		if (currlevelmenu != mainbrother)
		{
			currlevelmenu.style.display = "none";
			currlevelmenu.style.visibility = "hidden";
		}
	}
}
function cancelBubbling(event)
{
	event = event || window.event; // fucking IE!!!
	event.cancelBubble = true;
	if (event.stopPropagation)
	{
		event.stopPropagation();
	}
}
function hidemylevel(lvl)
{
	while(lvl <= MaxMenuLength)
	{
		for (currlevelmenuindex in L[lvl])
		{
			var currlevelmenu = L[lvl][currlevelmenuindex];
			if (currlevelmenu != currentmenu)
			{
				currlevelmenu.style.display = "none";
				currlevelmenu.style.visibility = "hidden";
			}
		}
		lvl +=1;
	}
}
function initlevel(level,start)
{
	jQuery("li.l" + level,start)
	.each(
	function (i)
	{
		this.onmouseover = showmychild;
	}
	)
}
function startList()
{
    var bodyroot = jQuery("body");
	for (var i = 1; i <=MaxMenuLength ;i++)
	{
		initlevel(i,bodyroot);
		jQuery("ul.l" + i)
		.each(
		function()
		{
			L[i].push(this);
		}
		);
	}
	bodyroot.bind("click",hideAll);
}
// register initialization
jQuery(startList);