var disappeardelay=300  //menu disappear speed onMouseout (in miliseconds)
var enableanchorlink=0 //Enable or disable the anchor link when clicked on? (1=e, 0=d)
var hidemenu_onclick=1 //hide menu when user clicks within menu? (1=yes, 0=no)

var ie5=document.all
var ns6=document.getElementById&&!document.all

function getposOffset(what, offsettype)
{
   var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
   var parentEl=what.offsetParent;
   while (parentEl!=null)
   {
      totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
      parentEl=parentEl.offsetParent;
   }
   return totaloffset;
}

function showhide(obj, e, visible, hidden)
{
   if (ie5||ns6)
      dropmenuobj.style.left=dropmenuobj.style.top=-500
	if (e.type=="click" && obj.visibility==hidden || e.type=="mouseover")
	{
		obj.visibility=visible;
		obj.display='block';
	}
	else
	{
		if (e.type=="click")
		{
			obj.visibility=hidden;
			obj.display='none';
		}
	}
}

function showhide2(obj, e, visible, hidden)
{
   if (ie5||ns6)
      dropmenuobj2.style.left=dropmenuobj2.style.top=-500
	if (e.type=="click" && obj.visibility==hidden || e.type=="mouseover")
	{
		obj.visibility=visible;
		obj.display='block';
	}
	else
	{
		if (e.type=="click")
		{
			obj.visibility=hidden;
			obj.display='none';
		}
	}
}

function iecompattest()
{
   return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function clearbrowseredge(obj, whichedge)
{
   var edgeoffset=0
   if (whichedge=="rightedge")
   {
      var windowedge=ie5 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15
      dropmenuobj.contentmeasure=dropmenuobj.offsetWidth
      if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure)
         edgeoffset=dropmenuobj.contentmeasure-obj.offsetWidth
   }
   else
   {
      var topedge=ie5 && !window.opera? iecompattest().scrollTop : window.pageYOffset
      var windowedge=ie5 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18
      dropmenuobj.contentmeasure=dropmenuobj.offsetHeight
      if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure)
      { //move up?
         edgeoffset=dropmenuobj.contentmeasure+obj.offsetHeight
         if ((dropmenuobj.y-topedge)<dropmenuobj.contentmeasure) //up no good either?
            edgeoffset=dropmenuobj.y+obj.offsetHeight-topedge
      }
   }
   return edgeoffset
}

function dropdownmenu(obj, e, dropmenuID)
{
   if (window.event) event.cancelBubble=true
   else
      if (e.stopPropagation) e.stopPropagation()
   if (typeof dropmenuobj!="undefined") //hide previous menu
   dropmenuobj.style.visibility="hidden"
   if (typeof dropmenuobj2!="undefined") //hide previous menu
   dropmenuobj2.style.visibility="hidden"
   clearhidemenu()
   if (ie5||ns6)
   {
      obj.onmouseout=delayhidemenu
      dropmenuobj=document.getElementById("menu" + dropmenuID)
      if (hidemenu_onclick) dropmenuobj.onclick=function(){dropmenuobj.style.visibility='hidden'}
      dropmenuobj.onmouseover=clearhidemenu
      dropmenuobj.onmouseout=ie5? function(){ dynamichide(event)} : function(event){ dynamichide(event)}
      showhide(dropmenuobj.style, e, "visible", "hidden")
      dropmenuobj.x=getposOffset(obj, "left")
      dropmenuobj.y=getposOffset(obj, "top")

		dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+"px"
		dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+(obj.offsetHeight+5)+"px"
   }
   return clickreturnvalue()
}

function dropdownmenu2(obj, e, dropmenuID)
{
   if (window.event) event.cancelBubble=true
   else
      if (e.stopPropagation) e.stopPropagation()
   if (typeof dropmenuobj2!="undefined") //hide previous menu
	dropmenuobj2.style.visibility="hidden"
   if (ie5||ns6)
   {
      dropmenuobj2=document.getElementById("menu" + dropmenuID)
      if (hidemenu_onclick) dropmenuobj2.onclick=function(){dropmenuobj2.style.visibility='hidden'}
      dropmenuobj2.onmouseover=clearhidemenu
      dropmenuobj2.onmouseout=ie5? function(){ dynamichide(event)} : function(event){ dynamichide(event)}
      showhide2(dropmenuobj2.style, e, "visible", "hidden")
      dropmenuobj2.x=getposOffset(obj, "left")
      dropmenuobj2.y=getposOffset(obj, "top")
      var winW = 0;
		//See if we are off the browser edge, and move left if so
		if (parseInt(navigator.appVersion)>3)
		{
			if (navigator.appName=="Netscape")
			{
				winW = window.innerWidth;
			}
			if (navigator.appName.indexOf("Microsoft")!=-1)
			{
				winW = document.body.offsetWidth;
			}
		}

		dropmenuobj2.style.left=dropmenuobj2.x-clearbrowseredge(obj, "rightedge")+(obj.parentNode.offsetWidth+4)+"px"
		dropmenuobj2.style.top=dropmenuobj2.y-clearbrowseredge(obj, "bottomedge")+"px"
		if ((parseInt(dropmenuobj2.style.left.toString().replace("px", "")) + dropmenuobj2.offsetWidth)+10>winW)
		{
			//Here we've hit a situation where the DIV is offscreen, so we need to re-adjust its location
			var parentEl=obj.offsetParent;
			var newOffset = 0;
			while (parentEl!=null)
			{
				newOffset = newOffset+parentEl.offsetLeft;
				parentEl=parentEl.offsetParent;
			}
			var currWidth = dropmenuobj2.offsetWidth;  //Store to use in a second
			dropmenuobj2.style.left = (newOffset - dropmenuobj2.offsetWidth) + "px";
			if (currWidth != dropmenuobj2.offsetWidth)  //re-evaluate the situation after moving
			{
				dropmenuobj2.style.left = (newOffset - dropmenuobj2.offsetWidth) + "px";
			}
		}
   }
   return clickreturnvalue()
}

function clickreturnvalue()
{
   if ((ie5||ns6) && !enableanchorlink) return false
   else return true
}

function contains_ns6(a, b)
{
   while (b.parentNode)
      if ((b = b.parentNode) == a) return true;
   return false;
}

function dynamichide(e)
{
   if (ie5&&!dropmenuobj.contains(e.toElement))
      delayhidemenu()
   else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
      delayhidemenu()
}

function delayhidemenu()
{
   if (typeof dropmenuobj2!="undefined")
   {
		delayhide=setTimeout("dropmenuobj.style.visibility='hidden';dropmenuobj2.style.visibility='hidden'",disappeardelay)
	}
	else
	{
		delayhide=setTimeout("dropmenuobj.style.visibility='hidden'",disappeardelay)
	}
}

function clearhidemenu()
{
   if (typeof delayhide!="undefined")
   clearTimeout(delayhide)
}
