var iMenu_cnt = 'elements';
var iMenu = new Array();
var iMenu_openId = null;
var iMenu_width = 100;
var small_offset = 0;
var anchor_height = 20;
var current_height = 0;
var current_top = 0;
var padding_top = 33;
var iMenu_init = false;

var mx = 0;
var my = 0;
//http://www.quirksmode.org/js/findpos.html
function findPos(obj)
{
	var curleft = curtop = 0;

	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);

		return [curleft,curtop];
	}
}
//http://www.quirksmode.org
function mouseMove(e) {
	var posx = 0;
	var posy = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) 	{
		posx = e.pageX;
		posy = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
	}

	if (iMenu_openId != null) {
		//check if it's needed to be close (only height check)
		if (posy > current_height + current_top + padding_top || posy < current_top - padding_top) {
			closeiMenu();
		}
	}

}



function addMenuItem(obj, cap, url)
{
	//find obj
	var i = 0;
	for (i=0; i<iMenu.length; i++)
		if (iMenu[i][0] == obj)
			break;

	if (i == iMenu.length) {
		iMenu[i] = new Array();
		iMenu[i][0] = obj;
		iMenu[i][1] = new Array();
	}
	var len = iMenu[i][1].length;
	iMenu[i][1][len] = new Array();
	iMenu[i][1][len][0] = cap;
	iMenu[i][1][len][1] = url;
}


function openiMenu(obj)
{
	if (!iMenu_init)
		return;
	var i, j;
	var oldId = iMenu_openId;
	//closeiMenu();		//fix this if multiple menus - Liran


	if (obj == oldId)
		return;


	for (i=0; i<iMenu.length; i++)
		if (iMenu[i][0] == obj)
			break;

	if (i == iMenu.length)
		return false;

	//build the menu

	var menu = document.createElement('div');
	for (j=0; j<iMenu[i][1].length; j++) {
		var anc = document.createElement('a');
		anc.setAttribute("href", iMenu[i][1][j][1]);
		anc.innerHTML = iMenu[i][1][j][0];
		anc.className = 'menu_pop';
		menu.appendChild(anc);
	}

	par = document.getElementById(iMenu[i][0]);
	pos = findPos(par);
	menu.style.width = par.style.width;
	menu.style.position = "absolute";

	menu.style.left = pos[0] + small_offset + "px";
	menu.style.top = pos[1]  + "px";
	current_height = anchor_height * (j+1);
	current_top = pos[1];


	menu.style.display = "block";
	menu.className = 'menu_div ' + iMenu[i][0];

	iMenu_openId = iMenu[i][0];


	var cnt = document.getElementById(iMenu_cnt);

	cnt.appendChild(menu);

	return false;
}

function closeiMenu()
{
	if (iMenu_openId == null)
		return;

	var elm = document.getElementById(iMenu_cnt);
	var all = elm.childNodes;
	for(var i=all.length-1; i>=0; i--) {

		elm.removeChild(all[i]);
	}

	iMenu_openId = null;

}


function fireBugDump()
{
	var i;
	var j;
	for (i=0; i<iMenu.length; i++) {
		console.log("Menu item " + i + " object list:")
		for (j=0; j<iMenu[i][1].length; j++) {
			console.log("-> " + iMenu[i][1][j][0] + "  URL: " + iMenu[i][1][j][1]);
		}
	}
}


function iMenu_start()
{
	iMenu_init = true;
	document.onmousemove = mouseMove;
}
