var tID = null;
var mb = null;

function resetTimer()
{
  clearTimeout(tID);
  tID = setTimeout("executeTimer()",1000);
}

function executeTimer()
{
  HideMenu();
}

function getAbsLeft(elm)
{
  if (!elm && this) elm = this;
  var nLeftPos = elm.offsetLeft;
  var pElm = elm.offsetParent;
  while (pElm)
  {                                       
    nLeftPos += pElm.offsetLeft;  
    pElm = pElm.offsetParent;
  }
  return nLeftPos;                           
}

function getAbsTop(elm)
{
  if (!elm && this) elm = this;
  var nTopPos = elm.offsetTop;
  var pElm = elm.offsetParent;
  while (pElm)
  {
    nTopPos += pElm.offsetTop;
    pElm = pElm.offsetParent;
  }
  return nTopPos;
}

function InitMenu()
{
  if (!document.getElementById && !document.childNodes)
  {
    return;
  }	
  document.body.onclick = HideMenu;
  mb = document.getElementById("mb");
  var bar,menu,item,menuItem = null;
  for (var i=0;i<mb.childNodes.length;i++)
  {
    bar = mb.childNodes[i];
   if (bar.nodeType == 3) continue;
    bar.onmouseout = resetTimer;
    bar.onmouseover = new Function("ShowMenu(\""+bar.id+"\")");
    if (bar.getAttribute("cmd")) bar.onclick = new Function("Do(\""+bar.id+"\")");
    menu = document.getElementById(bar.getAttribute("menu"));
    if (menu)
    {
      menu.onmouseout = resetTimer;
	  menu.style.visibility = "hidden";
      for (var j=0;j<menu.childNodes.length;j++)
      {
        item = menu.childNodes[j];
       if (item.nodeType == 3) continue;
		menuItem = document.getElementById(item.id);
        if (menuItem.getAttribute("menu")) FindSubMenu(menuItem.getAttribute("menu"));
        if (menuItem.getAttribute("cmd")) menuItem.onclick = new Function("Do(\""+menuItem.id+"\")");
        menuItem.onmouseover = new Function("highlight(\""+item.id+"\")");
      }	
    }
  }
}  	

function FindSubMenu(subMenu)
{
  var item = null;
  var menu = document.getElementById(subMenu);
  if (menu)
  {
    menu.onmouseout = resetTimer;
    menu.style.visibility = "hidden";
    for (var i=0;i<menu.childNodes.length;i++)
    {
	  item = menu.childNodes[i];
      if (item.nodeType == 3) continue;
      if (item.getAttribute("menu")) FindSubMenu(item.getAttribute("menu"));
      if (item.getAttribute("cmd"))  item.onclick = new Function("Do(\""+item.id+"\")");
	  item.onmouseover = new Function("highlight(\""+item.id+"\")");
    }  
  } 
}

function ShowMenu(obj)
{
  clearTimeout(tID);
  HideMenu(mb);
  if (obj != null && obj.length){
     obj = document.getElementById(obj);
     if (obj.getAttribute("cmd")) window.status = obj.getAttribute("cmd");
     var menu = document.getElementById(obj.getAttribute("menu"));
     var bar = document.getElementById(obj.id);
     if (bar.getAttribute("cmd")){
       if (bar.getAttribute("cmd").indexOf("http://") > -1)window.status = bar.getAttribute("cmd");
       else window.status = window.location.protocol + "//" + window.location.host + bar.getAttribute("cmd")
      }
     else	
       window.status = "";
     bar.className="bo";
     if (menu)
     {
       menu.style.visibility = "visible";
       menu.style.top =  (getAbsTop(obj) + 1) + "px";
       menu.style.left = (getAbsLeft(obj) + obj.offsetWidth + 5) + "px";
     }  
  } 
}
   
function highlight(obj)
{
  clearTimeout(tID);
  obj = document.getElementById(obj);
  var PElement = document.getElementById(obj.parentNode.id);
  for (var i=0;i<PElement.childNodes.length;i++)
  {
    var elm = PElement.childNodes[i];
	elm.className = "mi";
  }
  obj.className="io";
  if (obj.getAttribute("cmd")){
   if (obj.getAttribute("cmd").indexOf("http://") > -1)window.status = obj.getAttribute("cmd");
   else window.status = window.location.protocol + "//" + window.location.host + obj.getAttribute("cmd")
  }
    
  else	
    window.status = "";
  ShowSubMenu(obj);
}
   
function Do(obj)
{
  var target = document.getElementById(obj).getAttribute("target");
  var cmd = document.getElementById(obj).getAttribute("cmd");	
  if (target != null && target.constructor == String)window.open(cmd,target);
  else window.location = cmd;
}
   
function HideMenu(obj)
{
  if (!obj || obj.tagName != "DIV") obj = mb;
  for (var i=0;i<obj.childNodes.length;i++)
  {
    var child = obj.childNodes[i];
	if (child.nodeType == 3) continue;
    if (child.className == "bo") document.getElementById(child.id).className = "b";
    var childMenu = document.getElementById(child.getAttribute("menu"));
    if (childMenu) 
	{
	  if (childMenu.hasChildNodes())
	  { 
        for (var j=0;j<childMenu.childNodes.length;j++)
		{
          var tElm = childMenu.childNodes[j]; 
          if (tElm.nodeType == 3) continue;
          if (tElm.className == "io") tElm.className = "mi";
		}
        HideMenu(childMenu);
		childMenu.style.visibility = "hidden";
	    window.status = "";
	  }
    }
  }
}

function ShowSubMenu(obj)
{
  var PMenu = obj.parentNode;
  HideMenu(PMenu);
  var menu = document.getElementById(obj.getAttribute("menu"));
  if (menu)
  {
    menu.style.visibility = "visible";
    menu.style.top = (obj.offsetTop + PMenu.offsetTop) + "px";
    menu.style.left = (PMenu.offsetLeft + obj.offsetWidth + 3) + "px";
  }
}   

window.onload = InitMenu;