var registered_menus = new Array();
var tnrpdb_menu_open_img = "/imgs/database/menu_open.gif";
var open_menu = "";


function tnrpdb_inav_init() {
  
}

function top_level_over(tlid) {
  tobj = get_menuobj(tlid);
  hand_pointr(tobj);
}

function top_level_out(tlid) {}

function popover() {
  document.onclick = '';
}

function popout() {
  document.onclick = close_all;
}

function hand_pointr(obj) {
  try {
    obj.style.cursor = "pointer";
  } catch(e) {
  	obj.style.cursor = "hand";
  }
}

function menu_event_handler_click(menu_id, pid) {
  if (open_menu != menu_id) {
    window.setTimeout("menu_open('"+menu_id+"', '"+pid+"');", 20);
  }
}

function menu_open(menu_id, pid) {
  close_all();
  
  menuobj = get_menuobj(menu_id);
  parobj = get_menuobj(pid);
  
  menuobj.style.visibility="visible";
  
  var leftpx = fetch_object_posleft(parobj);
  var toppx = fetch_object_postop(parobj) + parobj.offsetHeight;
  
  menuobj.style.left= leftpx+"px";
  menuobj.style.top= toppx+"px";
  
  document.onclick = close_all;
  
  open_menu = menu_id;
}

function menu_close(menu_id) {
  menuobj = get_menuobj(menu_id);
  
  menuobj.style.visibility="hidden";
  menuobj.style.position = "absolute";

  document.onclick = '';
}

function close_all() {
  if (open_menu != "") {
    for (i = 0; i < registered_menus.length; i++) {
  	  menu_close(registered_menus[i]);
    }
  }
  open_menu = "";
}

function tnrpdb_register_menu(menu_id, kill_link, nowrite) {
  document.getElementById(kill_link).href="#";
  
  registered_menus[registered_menus.length] = menu_id;
  
  if (!nowrite) {
  	document.write('<img src="'+tnrpdb_menu_open_img+'" id="'+menu_id+'_img" alt="" border="0" />');
  }
}


function get_menuobj(menu_id) {
  return document.getElementById(menu_id);
}


function fetch_object_posleft(elm)
{
	var left = elm.offsetLeft;
	while((elm = elm.offsetParent) != null)
	{
		left += elm.offsetLeft;
	}
	return left;
}


function fetch_object_postop(elm)
{
	var top = elm.offsetTop;
	while((elm = elm.offsetParent) != null)
	{
		top += elm.offsetTop;
	}
	return top;
}