var menuShowDelay=100;
var menuHideDelay=100;
var menuTimerShow=null;
var menuTimerHide=null;

var menuClicking=false;

var menuStack=new Array();

function initMenus()
{
}

function menuItemOver(menuItem)
{
 var subMenu=getSubMenu(menuItem);
 if(subMenu!=null)
 {
  menuStack.push(subMenu);
 }
 menuItem.style.backgroundColor="#EFEFEF";
 getMenuItemLink(menuItem).style.color="#000000";
 window.clearTimeout(menuTimerShow);
 menuTimerShow=window.setTimeout("menuShowTimeOut()",menuShowDelay);
}

function menuItemOut(menuItem)
{
 var subMenu=getSubMenu(menuItem);
 if(subMenu!=null)
 {
  menuStack.pop();
 }
 menuItem.style.backgroundColor="#86BCB4";
 getMenuItemLink(menuItem).style.color="#FFFFFF";
 window.clearTimeout(menuTimerHide);
 menuTimerHide=window.setTimeout("menuHideTimeOut()",menuHideDelay);
}

function menuItemClick(menuItem)
{
 if(menuClicking==false)
 {
  menuClicking=true;
  var link=getMenuItemLink(menuItem);
  if(link!=null)
  {
   location.href=link.href;
  }
 }
}

function getMenuElements(node,mask,searchInChildNodes)
{
 var regExp=new RegExp(mask,"");
 var i=0;
 var j=0;
 var result=new Array();
 var subResult=new Array();
 if(node==null)
 {
  return null;
 }
 else
 {
  for(i=0;i<node.childNodes.length;i=i+1)
  {
   if(node.childNodes[i].nodeName=="DIV")
   {
    if(regExp.test(node.childNodes[i].id)==true)
    {
     result[result.length]=node.childNodes[i];
    }
    if(searchInChildNodes==true)
    {
     subResult=getMenuElements(node.childNodes[i],mask,true);
     if(subResult!=null)
     {
      for(j=0;j<subResult.length;j=j+1)
      {
       result[result.length]=subResult[j];
      }
     }
    }
   }
  }
  return result;
 }
}

function getMenuItems(menu)
{
 return getMenuElements(menu,"^menuitem[0-9]*$",false);
}

function getSubMenu(menuItem)
{
 var subMenus=getMenuElements(menuItem,"^menu[0-9]*$",false);
 return subMenus[0];
}

function getMenuItemLink(menuItem)
{
 var i=0;
 for(i=0;i<menuItem.childNodes.length;i=i+1)
 {
  if(menuItem.childNodes[i].nodeName=="A")
  {
   return menuItem.childNodes[i];
  }
 }
 return null;
}

function getMenuElementType(node)
{
 var r=new RegExp("^(menuitem|menu)([0-9]*)$","");
 var a=node.id.match(r);
 return a[1];
}

function getMenuElementCode(node)
{
 var r=new RegExp("^(menuitem|menu)([0-9]*)$","");
 var a=node.id.match(r);
 return a[2];
}

function menuInStack(menu)
{
 var i=0;
 for(i=0;i<menuStack.length;i=i+1)
 {
  if(menuStack[i]==menu)
  {
   return true;
  }
 }
 return false;
}

function showMenu(menu)
{
 if(menu!=null)
 {
  if(getMenuElementCode(menu).length==2)
  {
   menu.style.left=getAbsoluteLeft(menu.parentNode)+"px";
   menu.style.top=(getAbsoluteTop(menu.parentNode)+menu.parentNode.offsetHeight)+"px";
  }
  else
  {
   menu.style.left=(getAbsoluteLeft(menu.parentNode)+menu.parentNode.offsetWidth)+"px";
   menu.style.top=getAbsoluteTop(menu.parentNode)+"px";
  }
  menu.style.display="block";
 }
}

function hideMenu(menu)
{
 var menuItems=null;
 if(menu!=null)
 {
  menu.style.display="none";
  /*menuItems=getMenuItems(menu);
  if(menuItems!=null)
  {
   for(i=0;i<menuItems.length;i=i+1)
   {
    hideMenu(getSubMenu(menuItems[i]));
   }
  }*/
 }
}

function menuShowTimeOut()
{
 var subMenus=getMenuElements(document.getElementById("menu"),"^menu[0-9]*$",true);
 var i=0;
 for(i=0;i<subMenus.length;i=i+1)
 {
  if(menuInStack(subMenus[i])==true && (subMenus[i].style.display=="" || subMenus[i].style.display==null || subMenus[i].style.display=="none"))
  {
   showMenu(subMenus[i]);
  }
 }
}

function menuHideTimeOut()
{
 var subMenus=getMenuElements(document.getElementById("menu"),"^menu[0-9]*$",true);
 var i=0;
 for(i=0;i<subMenus.length;i=i+1)
 {
  if(menuInStack(subMenus[i])==false && (subMenus[i].style.display=="" || subMenus[i].style.display==null || subMenus[i].style.display=="block"))
  {
   hideMenu(subMenus[i]);
  }
 }
}

function getAbsoluteLeft(obj)
{
 var par=null;
 var left=obj.offsetLeft;
	while(obj.offsetParent!=null)
	{
		par=obj.offsetParent;
		left=left+par.offsetLeft;
		obj=par;
	}
	return left;
}

function getAbsoluteTop(obj)
{
 var par=null;
 var top=obj.offsetTop;
	while(obj.offsetParent!=null)
	{
		par=obj.offsetParent;
		top=top+par.offsetTop;
		obj=par;
	}
	return top;
}
