//For control the nav sub menu system.
//For the group type menu, groupdropmenuobj is for it. for the menuitem type menu,dropmenuobj for it.

var hidendelay=500;  //submenu hidden speed on Mouse move out menu (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 previousdropmenuID='';

var ie5=document.all;
var ns6=document.getElementById&&!document.all;

function getOffset(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 getMenuItemOffset(what, offsettype){

  //var rightwedge = cleargroupmenuwindowedge(what.offsetParent , "rightedge" );
  
  //alert ("rightwedge:  " +  rightwedge);
  
  var leftAdd = 40;
  var topAdd  = -6;
  
  
  var totaloffset=(offsettype=="left")? (what.offsetLeft + leftAdd) : what.offsetTop + topAdd;
  //alert ("totaloffset:  " +  totaloffset);
  
  var parentEl=what.offsetParent;
  while (parentEl!=null){
    totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft + leftAdd : totaloffset+parentEl.offsetTop + topAdd;
    parentEl=parentEl.offsetParent;
  }
  //alert ("totaloffset:  " +  totaloffset);
  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;
  else if (e.type=="click")
    obj.visibility=hidden;
}

function showhidegroupmenu(obj, e, visible, hidden){
  if (ie5||ns6)
    groupdropmenuobj.style.left=groupdropmenuobj.style.top=-500;
  if (e.type=="click" && obj.visibility==hidden || e.type=="mouseover")
    obj.visibility=visible;
  else if (e.type=="click")
    obj.visibility=hidden;
}

function iecompattest(){
  return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function clearwindowedge(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){ //need to move up?
      edgeoffset=dropmenuobj.contentmeasure+obj.offsetHeight
    if ((dropmenuobj.y-topedge)<dropmenuobj.contentmeasure) //up no good either or not?
      edgeoffset=dropmenuobj.y+obj.offsetHeight-topedge
    }
  }
  return edgeoffset
}

function cleargroupmenuwindowedge(obj, whichedge){
  var edgeoffset=0
  if (whichedge=="rightedge"){
    var windowedge=ie5 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15
    groupdropmenuobj.contentmeasure=groupdropmenuobj.offsetWidth
    if (windowedge-groupdropmenuobj.x < groupdropmenuobj.contentmeasure)
      edgeoffset=groupdropmenuobj.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
    groupdropmenuobj.contentmeasure=groupdropmenuobj.offsetHeight
    if (windowedge-groupdropmenuobj.y < groupdropmenuobj.contentmeasure){ //need to move up?
      edgeoffset=dropmenuobj.contentmeasure+obj.offsetHeight
    if ((dropmenuobj.y-topedge)<dropmenuobj.contentmeasure) //up no good either or not?
      edgeoffset=groupdropmenuobj.y+obj.offsetHeight-topedge
    }
  }
  return edgeoffset
}

function setGroupMenuSubMenu(obj, e, dropmenuID){
  if (window.event) event.cancelBubble=true
  else if (e.stopPropagation) e.stopPropagation()
  
  if (typeof groupdropmenuobj!="undefined") //hide previous higlight menu
  {
     groupdropmenuobj.style.visibility="hidden"
     previousDropMenu = getPreviousDropMenu();
      //alert(" typeofpreviousDropMenu:" + (typeof previousDropMenu) );
      if (typeof previousDropMenu != "undefined"){
        previousDropMenu.style.visibility="hidden";
      }
  }
  
  clearhidemenu()
  
  if (ie5||ns6){
    obj.onmouseout=delayhidegroupmenu
    groupdropmenuobj=document.getElementById(dropmenuID)
    if (hidemenu_onclick) groupdropmenuobj.onclick=function(){groupdropmenuobj.style.visibility='hidden'}
    groupdropmenuobj.onmouseover=clearhidemenu
    groupdropmenuobj.onmouseout=ie5? function(){ hidegroupmenuonfly(event)} : function(event){ hidegroupmenuonfly(event)}
    showhidegroupmenu(groupdropmenuobj.style, e, "visible", "hidden")
    groupdropmenuobj.x=getOffset(obj, "left")
    groupdropmenuobj.y=getOffset(obj, "top")
    groupdropmenuobj.style.left=groupdropmenuobj.x-cleargroupmenuwindowedge(obj, "rightedge")+"px"
    groupdropmenuobj.style.top=groupdropmenuobj.y-cleargroupmenuwindowedge(obj, "bottomedge")+obj.offsetHeight+"px"
  }
  return clickreturnvalue()
}

/*
function setMainMenuSubMenu(obj, e, dropmenuID){
  if (window.event) event.cancelBubble=true
  else if (e.stopPropagation) e.stopPropagation()
  
  if (typeof dropmenuobj!="undefined") //hide previous higlight menu
    dropmenuobj.style.visibility="hidden"
  
  clearhidemenu()
  
  if (ie5||ns6){
    obj.onmouseout=delayhidemenu
    dropmenuobj=document.getElementById(dropmenuID)
    if (hidemenu_onclick) dropmenuobj.onclick=function(){dropmenuobj.style.visibility='hidden'}
    dropmenuobj.onmouseover=clearhidemenu
    dropmenuobj.onmouseout=ie5? function(){ hideonfly(event)} : function(event){ hideonfly(event)}
    showhide(dropmenuobj.style, e, "visible", "hidden")
    dropmenuobj.x=getOffset(obj, "left")
    dropmenuobj.y=getOffset(obj, "top")
    dropmenuobj.style.left=dropmenuobj.x-clearwindowedge(obj, "rightedge")+"px"
    dropmenuobj.style.top=dropmenuobj.y-clearwindowedge(obj, "bottomedge")+obj.offsetHeight+"px"
  }
  return clickreturnvalue()
}
*/

function setMenuItem(obj, e, dropmenuID){
  if (window.event) event.cancelBubble=true
  else if (e.stopPropagation) e.stopPropagation()
  
  if (typeof dropmenuobj!="undefined") //hide previous higlight menu
    {//dropmenuobj.style.visibility="hidden"
      //alert("previousdropmenuID:" + previousdropmenuID);
      previousDropMenu = getPreviousDropMenu();
      //alert(" typeofpreviousDropMenu:" + (typeof previousDropMenu) );
      if (typeof previousDropMenu != "undefined"){
        previousDropMenu.style.visibility="hidden";
      }
    }
  clearhidemenu();
  
  if (ie5||ns6){
    //obj.onmouseout=delayhidemenu
    dropmenuobj=document.getElementById(dropmenuID)
    if (hidemenu_onclick) dropmenuobj.onclick=function(){dropmenuobj.style.visibility='hidden'}
    dropmenuobj.onmouseover=clearhidemenu
    dropmenuobj.onmouseout=ie5? function(){ hideonfly(event)} : function(event){ hideonfly(event)}
    showhide(dropmenuobj.style, e, "visible", "hidden")
    dropmenuobj.x=getMenuItemOffset(obj, "left")
    dropmenuobj.y=getMenuItemOffset(obj, "top")
    dropmenuobj.style.left=dropmenuobj.x-clearwindowedge(obj, "rightedge")+"px"
    dropmenuobj.style.top=dropmenuobj.y-clearwindowedge(obj, "bottomedge")+obj.offsetHeight+"px"
  }
  
  previousdropmenuID = dropmenuID;
  
  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 hideonfly(e){
  if (ie5&&!dropmenuobj.contains(e.toElement))
    delayhidemenu()
  else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
    delayhidemenu()
}

function hidegroupmenuonfly(e){
  if (ie5&&!groupdropmenuobj.contains(e.toElement))
    delayhidegroupmenu()
  else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
    delayhidegroupmenu()
}

function delayhidegroupmenu(){
  delayhide=setTimeout("groupdropmenuobj.style.visibility='hidden'",hidendelay)
  
}

function delayhidemenu(){
  delayhide=setTimeout("dropmenuobj.style.visibility='hidden'",hidendelay)
  previousDropMenu = getPreviousDropMenu();
      //alert(" typeofpreviousDropMenu:" + (typeof previousDropMenu) );
      if (typeof previousDropMenu != "undefined"){
        previousDropMenu.style.visibility="hidden";
      }
}

function clearhidemenu(){
  if (typeof delayhide!="undefined")
    clearTimeout(delayhide)
}

function getPreviousDropMenu(){
  if (previousdropmenuID != '')
    return document.getElementById(previousdropmenuID);
}

