// Menu ---------------------------------------------------

var clicked = 0; // menu focus control value
var acbutton = null;
var timerID = null;

function tmr(timeout) // timer to correct menu closing
{
	if (timerID != null && clicked == 0 && acbutton != null && navigator.appName.indexOf("Microsoft") < 0)
	{
		acbutton.menu.style.visibility = "hidden";
		acbutton = null;
	}

	timerID = setTimeout("tmr()",timeout);
}

function init_menu()
{
	if (!document.getElementsByTagName) { return; }

	var menu_buttons = document.getElementsByTagName("a");

	for (var n = 0; n < menu_buttons.length; n++)
	{
		var menu_button = menu_buttons[n];

		if (((' '+menu_button.className+' ').indexOf("menuButton") != -1) && (menu_button.id))
		{
			itemevent(menu_button.id+"menu", menu_button);

			menu_button.onmouseover=function(event)
			{
				clicked = 1;

				if (timerID != null) clearTimeout(timerID);
				timerID = null;

				bMouseover(event, this.id+"menu");
			}

			menu_button.onmouseout=function(event)
			{
				if (clicked != 2)
					clicked = 0;

				bMouseout(event);

				if (timerID != null) clearTimeout(timerID);
				tmr(100);
			}
		}
	}
}

function itemevent(menu, button) // for menu items
{
	var tmp = document.getElementById(menu);
	var items = tmp.getElementsByTagName("a");
	var longest = 0;

	for (var i = 0; i < items.length; i++)
	{
		var item = items[i];

		if (item.offsetWidth > longest) // the longest menu item
			longest = item.offsetWidth;

		if (((' '+item.className+' ').indexOf("menuItem") != -1))
		{
			item.onmouseover=function(event)
			{
				clicked = 2;
				if (timerID != null) clearTimeout(timerID);
				tmr(100);
			}

			item.onmouseout=function(event)
			{
				clicked = 0;
			}
		}
	}

	// correct item highlight-row width
	//if (navigator.appName.indexOf("Microsoft") >= 0)
	items[0].style.width = longest + "px";
}

function bMouseover(event, menuId)
{
	var button=null;

	if(navigator.appName.indexOf("Microsoft") >= 0)
		button = window.event.srcElement;
	else
		button = event.currentTarget;

	if (button != acbutton)
	{
		if (acbutton != null)
	    	acbutton.menu.style.visibility = "hidden";

	    button.menu = document.getElementById(menuId);
   		button.menu.onmouseout = bMouseout;
		button.menu.style.left = button.offsetLeft + button.offsetWidth + "px";
  		button.menu.style.top  = button.offsetTop + "px";

  		//if (button.menu.offsetWidth < button.offsetWidth - 20)
  		//	button.menu.style.width = button.offsetWidth - 20 + "px";

		button.menu.style.visibility = "visible";
		acbutton = button;
	}
}

function bMouseout(event)
{
	if (acbutton != null)
	{
		var button = acbutton;
		var el = null;

		var Browser = navigator.appName;

		if(navigator.appName.indexOf("Microsoft") >= 0)
			el = window.event.toElement;
		else
			el = event.relatedTarget;

		if (el != null)
		{
			while (el != null)
			{
				if (el.tagName != null && el.tagName == "SPAN")
					return;

			  	el = el.parentNode;
			}

			button.menu.style.visibility = "hidden";
			acbutton = null;
		}
	}
}
