
var menus_shown = Array();
var root_elm = false;
var root_adjust = false;

if(!Array.indexOf){
  Array.prototype.indexOf = function(obj){
   for(var i=0; i<this.length; i++){
    if(this[i]==obj){
     return i;
    }
   }
   return -1;
  }
}


function showMenu(event, elm, menuID, attachPosLeft, attachPosTop)
{
  

//   
  var idx = menus_shown.indexOf("submenu_"+menuID);


  
  var d= document.getElementById("submenu_"+menuID);
  if (!d) return;
  
 
  d.style.position="absolute";

  d.style.left=elm.offsetLeft+"px";
  if (attachPosLeft=="right") {
    d.style.left=elm.offsetLeft+elm.offsetWidth+"px";
  }
  d.style.top=elm.offsetTop+"px";
  if (attachPosTop=="bottom") {
    d.style.top=elm.offsetTop+elm.offsetHeight+"px";
  }
  
  d.style.display="block";
  
  if (idx<0) {
    menus_shown[menus_shown.length]="submenu_"+menuID;
  }

//   var dbg = document.getElementById("debug");
//   dbg.innerHTML+="<hr>ShowMenu<hr>MS: " + menus_shown + "<br>";

  if (root_elm) {
      root_elm.className="menu_item_selected";
  }
  
}


function hideMenu(event, elm, menuID)
{
  
  if(!event) var event = window.event
  
  if (!root_elm) {
    var trig = elm.getAttribute("id");
    
    if (trig && trig.indexOf("menu_")==0) {
      root_adjust = elm.className;
      elm.className="menu_item_selected";
      root_elm = elm;
    }
  }
  
  var d= document.getElementById("submenu_"+menuID);
  if (!d) return;
  

  var relTarg = event.relatedTarget || event.toElement;

  if (relTarg) {
  var obj = relTarg.parentNode;
  var menu_id = relTarg.getAttribute("id");

//   while (!menu_id) {
//     if (!relTarg.parentNode) break;
//     relTarg = relTarg.parentNode;
//     
//     menu_id = relTarg.getAttribute("id");
//     
//   }

  if (!menu_id) {
      //try 2 more parent nodes
      menu_id = obj.getAttribute("id");
      if (!menu_id) {
		  obj = obj.parentNode;
		  menu_id = obj.getAttribute("id");
      }
  }
  }
//   var dbg = document.getElementById("debug");
// 	dbg.innerHTML="<hr>hideMenu<hr>ReltargID: "+ relTarg.id + "<BR>Parent: " + obj.id + "<BR>ID: " + menu_id + "MenuID: "+menuID + "<br>MS: " + menus_shown + "<br>";
  


  var doHide = true;

  if (menu_id && menu_id.indexOf("submenu") == 0) {
	menu_id=menu_id.split("_");

	
    

	if (menu_id[1]==menuID) {
	    doHide=false;
	}
	var idx_req = menus_shown.indexOf("submenu_"+menuID);
	var idx_curr = menus_shown.indexOf("submenu_"+menu_id[1]);
	if (idx_curr > idx_req) doHide=false;
  }

  if (doHide) {
       var idx = menus_shown.indexOf("submenu_"+menuID);

       menus_shown.splice(idx, menus_shown.length-idx+1);

       d.style.display="none";
       
       if (menus_shown.length<1) {
	 
		  root_elm.className=root_adjust;
		  root_elm=false;
      }
  } 
  

}
