 var menuID=0;
 var RootMenuIDName='';
 var submenu_id='';
 var iBody = document.body;
 var document_base = '';
 var preffix_nbsp = 3;
 var suffix_nbsp = 3;
 var convert_spaces = true;
 var active_menu_id = null;
 var active_root_menu = null;

 var IE4plus = false;
 var NS6plus = false;
 var Opera   = false;

 if (navigator.userAgent.indexOf('Opera') > 0)
  Opera = true;

 if (!Opera)
 {
  if (document.all)
   IE4plus = true;
  else
   if (document.childNodes)
    NS6plus = true;
 }

 gotlayers = IE4plus || NS6plus;

 var DisplayToUse = (IE4plus)? 'inline' : 'block';

 function makeArray()
 {
  this.length = makeArray.arguments.length;
  for (var i=0;i<this.length;i++)
    this[i]=makeArray.arguments[i];
 }

 function newMenu(__caption,__url,__target,__class,__bgcolor,__h_pos,__v_pos,__orient,__submenu)
 {
  this.id=menuID;
  menuID++;
  if (convert_spaces)
   this.caption = __caption.replace(/\ /g,'&nbsp;');
  else
   this.caption = __caption;

  this.menu = RootMenuIDName;
  this.submenu_id = submenu_id;
  this.url = __url;
  this.target = __target;
  this.css = __class;
  this.h_pos = __h_pos;
  this.v_pos = __v_pos;
  this.orient = __orient;
  this.submenu = __submenu;
  this.bgcolor = __bgcolor;
  return this;
 }

 function build_menu(__class,__root,__level,__vis)
 {
  if (__root==null) __root=main_menu;
  if (__level==null) __level='';
  ret='<table id=menu'+__level+' border=0 cellspacing=0 cellpadding=0 class='+__class+'  style="';
  if ((__level!=null) && (__level!=0)) ret+='position:absolute;';
  if (__vis!=null) ret+='display:none;';
  ret+='">\n';

  _class=__class;
  for (var i=0;i<__root.length;i++)
  {
   __class=__root[i].css;
   if ((__root[0].orient=='vertical') || (i==0))
    ret+='<tr class='+__class+'>';
   var __caption='';
   for (j=0;j<preffix_nbsp;j++)
    __caption+='&nbsp;';
   __caption+= __root[i].caption;
   for (j=0;j<suffix_nbsp ;j++)
    __caption+='&nbsp;';
   ret+='<td id=menuitem'+__root[i].id+' onMouseOver="javascript:menu_over('+__root[i].id+',GetElement(document,\'menuitem'+__root[i].id+'\'),'+__root[i].menu+');" onMouseOut="javascript:menu_out('+__root[i].id+',GetElement(document,\'menuitem'+__root[i].id+'\'),'+__root[i].menu+');" class='+__root[i].css+'><table class=inner_'+__class+' width=100% cellspacing=0 cellpadding=0 border=0><tr><td width=100% class='+__class+'><a class='+__root[i].css+' href="javascript:menu_navigate('+__root[i].id+',GetElement(document,\'menuitem'+__root[i].id+'\'),'+__root[i].menu+');">'+__caption+'</a></td>';
   if (__root[i].submenu!=null) ret+='<td align=right class='+__class+'>'+__root[i].submenu_id+'</td>';
   ret+='</tr></table></td>';
   if ((__root[0].orient=='vertical') || (i==__root.length-1))
    ret+='</tr>\n';
  }
  ret+='</table>\n';

  for (var i=0;i<__root.length;i++)
  if (__root[i].submenu!=null)
  {
   ret+=build_menu(__root[i].submenu[0].css,__root[i].submenu,__root[i].id,'hidden');
  }

  return ret;
 }

 function find_menu_by_id(__id,__root)
 {
  if (__root==null) __root=main_menu;
  for(var i=0;i<__root.length;i++)
  {
   if (__root[i].id==__id)
    return __root[i]
   else
   {
    if (__root[i].submenu!=null)
     if (ret=find_menu_by_id(__id,__root[i].submenu))
      return ret;
   }
  }
  return false;
 }

 function layerObject(layerName)
 {
  return GetElement(document,layerName).style;
 }

 function menu_navigate(__id,__sender,__menu)
 {
  hide_menu(__menu);
  menu_item=find_menu_by_id(__id,__menu);
  if (menu_item)
  {
   if (menu_item.url!='')
   {
    document.location=document_base + menu_item.url;
   }
  }
 }

 function hide_menu(__root)
 {
  if (__root==null) __root=main_menu;
  for(var i=0;i<__root.length;i++)
  {
   if (__root[i].submenu!=null)
   {
    layerObject('menu'+__root[i].id).display='none';
    layerObject('menuitem'+__root[i].id).backgroundColor='';
    hide_menu(__root[i].submenu);
   }
  }
 }

 function is_child(__parent,__child)
 {
  if (__parent.submenu!=null)
  {
   for(var i=0;i<__parent.submenu.length;i++)
    if (__parent.submenu[i]==__child) return true;
  }
  return false;
 }

 function find_parrent(__child,__root)
 {
  if (__root==null) __root=main_menu;
  var i=__child.id;
  do
  {
   i++;
   while ((find_menu_by_id(i,__root).submenu==null) && (i<menuID))
    i++;
   if ((i==__child.id) || (i>=menuID)) break;
  }
  while (!is_child(find_menu_by_id(i,__root),__child))
  return find_menu_by_id(i,__root);
 }

 function show_menu(__id,__root)
 {
  if (__root==null) __root=main_menu;
  var menu_item = find_menu_by_id(__id,__root);
  var __parent;
  if (__parent=find_parrent(menu_item,__root))
  {
   if (__parent.submenu!=null)
   {
    layerObject('menu'+__parent.id).display=DisplayToUse;
    layerObject('menuitem'+__parent.id).backgroundColor=__parent.bgcolor;
    show_menu(__parent.id,__root);
   }
  }
 }

 function menu_pos(__menuitem,__sender)
 {
  if (IE4plus) return menu_pos_IE4plus(__menuitem,__sender)
  if (NS6plus) return menu_pos_NS6plus(__menuitem,__sender)
 }

 function getOffsetTop(el) {
   var y;
   y = el.offsetTop;
   if (el.offsetParent != null)
     y += getOffsetTop(el.offsetParent);
   return y;
 }

 function getOffsetLeft(el){
   var y;
   y = el.offsetLeft;
   if (el.offsetParent != null)
     y += getOffsetLeft(el.offsetParent);
   return y;
 }

 function menu_pos_NS6plus(__menuitem,__sender)
 {
  this._left=getOffsetLeft(__sender);
  this._top=getOffsetTop(__sender);

  if (__menuitem.h_pos!='left')
    this._left = this._left + __sender.offsetwidth +2 ;
  else
    this._left = this._left + 2;

  if (__menuitem.v_pos!='top')
   this._top = this._top + __sender.offsetheight;
  else
   this._top = this._top + __sender.offsetheight;
  return this;
 }


 function menu_pos_IE4plus(__menuitem,__sender)
 {
  var rcts;
  rcts = __sender.getClientRects();
  this._left=0;
  this._top=0;
  if (__menuitem.h_pos!='left')
  {
   l = rcts[0].right;
   for (i=1;i<rcts.length;i++)
    l=Math.max(l,rcts[i].right);
   l=l+iBody.scrollLeft-2-50;
   this._left=l;
  }
  else
  {
   l = rcts[0].left;
   for (i=1;i<rcts.length;i++)
    l=Math.min(l,rcts[i].left);
   l=l+iBody.scrollLeft;
   this._left=l;
  }

  if (__menuitem.v_pos!='top')
  {
   t = rcts[0].bottom;
   for (i=1;i<rcts.length;i++)
    t=Math.max(l,rcts[i].bottom);
   t=t+iBody.scrollTop;
   this._top=t;
  }
  else
  {
   t = rcts[0].top;
   for (i=1;i<rcts.length;i++)
    t=Math.min(l,rcts[i].top);
   t=t+iBody.scrollTop-3;
   this._top=t;
  }
  return this;
 }

 function menu_over(__id,__sender,__root)
 {
  menu_item=find_menu_by_id(__id,__root);
  if (menu_item)
  {
    hide_menu(__root);
   __sender.style.backgroundColor=menu_item.bgcolor;
   show_menu(__id,__root);
   active_menu_id = menu_item;
   active_root_menu = __root;
   if (menu_item.submenu!=null)
   {
    var pos=menu_pos(menu_item,__sender);
    var lo=layerObject('menu'+__id);
    lo.display=DisplayToUse;
    if (NS6plus)
    {
     lo.position='absolute';
     lo.zindex='10';
    }
    lo.left = pos._left+'px';
    lo.top =  pos._top+'px';
   }
  }
 }

 function menu_out(__id,__sender,__root)
 {
  active_menu_id = null;
  active_root_menu = null;
  menu_item=find_menu_by_id(__id,__root);
  if ((menu_item) && (menu_item.submenu==null))
  {
   __sender.style.backgroundColor='';
  }
 }

 function GetElement(element, id)
 {
  return IE4plus?document.all[id]:element.getElementById(id);
 }

