var menus = new Array();
var TIMEOUT_MAX = 5;
var timeout = TIMEOUT_MAX;
var selectedMenu = null;

function null_timeout()
{
	timeout = TIMEOUT_MAX;
}

function timer_handler()
{
	if (timeout < 0)
	{
		if (selectedMenu != null)
		{
			selectedMenu.style.visibility = 'hidden';
			selectedMenu = null;
		}
	}
	else
		timeout --;
}

function menuitem_click(link)
{
	document.location.replace(link);
	document.location.reload();
}

function generate_menus()
{
	for (var i = 0; i < menus.length; i ++)
	{
		var menu = document.createElement('div');
		menu.id = menus[i][0];
		menu.style.width = '170px';
		menu.style.visibility = 'hidden';
		menu.style.position = 'absolute';
		menu.style.top = '0px';
		menu.style.left = '0px';
		menu.style.zOrder = 1000 + i;
		
		var table = document.createElement('table');
		table.className = 'dropdown-menu';
		table.cellSpacing = '1px';
		table.cellPadding = '0px';
		table.width = '170px';
		
		var items = menus[i][2];
		for (var j = 0; j < items.length; j ++)
		{
			var d = document.createElement('div');
			d.className = 'menuitem-out';
			
			var text = document.createTextNode(items[j][0]);
			var a = document.createElement('a');
			a.href = items[j][1];
			a.appendChild(text);
			
			d.appendChild(a);

			d.onmouseover = function() {
				null_timeout();
				this.className = 'menuitem-over';
			}
			
			d.onmouseout = function() {
				this.className = 'menuitem-out';
			}
						
			var row = table.insertRow(table.rows.length);
			var cell = row.insertCell(0);
			cell.width = '100%';
			cell.noWrap = true;
			cell.appendChild(d);
		}
		
		menu.appendChild(table);
		document.body.appendChild(menu);
	}
}

function create_menu(menu_id, parent_menu_id)
{
	var menu = new Array(menu_id, parent_menu_id, new Array());	
	
	menus.push(menu);
	
	return menu_id;
}

function add_item(menu_id, caption, link)
{
	var items = null;
	for (var i = 0; i < menus.length; i ++)
		if (menu_id == menus[i][0])
		{
			items = menus[i][2];
			break ;
		}

	if (items != null)
	{
		var item = new Array(caption, link);
		items.push(item);
	}
}

function show_menu(menu_id, o)
{
	var menu = document.getElementById(menu_id);
	
	var left = o.offsetLeft;
	var top = o.offsetTop + o.offsetHeight;
	var p = o.offsetParent;
  	while (p != null)
	{
  		left += p.offsetLeft;
		top += p.offsetTop;
		p = p.offsetParent;
  	}	
	
	if (selectedMenu != null)
		selectedMenu.style.visibility = 'hidden';
	
	selectedMenu = menu;
	timeout = TIMEOUT_MAX;
	
	menu.style.top = top + 'px';
	menu.style.left = left + 'px';
	menu.style.visibility = 'visible';
}

function hide_menu(menu_id)
{
	var menu = document.getElementById(menu_id);
	menu.style.visibility = 'hidden';
}

function hide_selected_menu()
{
	if (selectedMenu != null)
	{
		selectedMenu.style.visibility = 'hidden';
		selectedMenu = null;
	}
}

window.setInterval(timer_handler, 500);
