var visibleMenu = new Array (), visibleCount = 0;
var timeoutID = 0;

function Trace (a)
{
  if (GetObjectByRef == null)
    return;
  GetObject ("info").innerHTML += a + " / ";
}

function GetObject (a)
{
  if (GetObjectByRef == null)
    return null;
  if (SupportLayers ())
  {
    var result = GetObjectByRef (a);
    if (result == undefined)
      result = document.layers ["LoMenu"].layers [a];
    if (result == undefined)
      result = null;
    return result;
  }
  return GetObjectByRef (a);
}

function GetEvent ()
{
  if (IEVersion () > 300)
    return event.srcElement;
}

function Reset ()
{
  visibleCount = 0;
}

function doClearTimeout ()
{
  if (timeoutID > 0)
  {
    
    clearTimeout (timeoutID);
    timeoutID = 0;
  } // if
}

function hideActiveMenu (stopMenu)
{
  var menu;
  doClearTimeout ();
  while (visibleCount > 0)
  {
    --visibleCount;
    menu = visibleMenu [visibleCount];
    if (menu.id == stopMenu)
    {
      ++visibleCount;
      break;
    }
    if (SupportLayers ())
    {
      menu.visibility="hide";
    }
    else if (menu.style != null)
    {
      menu.style.display="none";
    }
  } // while
}

function hideUpTo (stopMenu)
{
  doClearTimeout ();
  if (stopMenu != "")
  {
    var menu, i;
    for (i = visibleCount - 1; i > 0; )
    {
      --i;
      menu = visibleMenu [i];
      if (menu.id == stopMenu)
      {
        hideActiveMenu(stopMenu);
        //initHideMenuTimeout (stopMenu);
        return;
      }
    } // while
  } // if
}

function getTopMenu ()
{
  if (visibleCount == 0)
    return NULL;
  else
    return visibleMenu [visibleCount - 1];
}

function addVisibleMenu (menu)
{
  visibleMenu [visibleCount++] = menu;
}

function showMenu (topMenu, parentObj, nm, doPosition, leftOffset)
{
  if (arguments.length == 1)
  {
    hideUpTo ("idMenu" + topMenu);
    return;
  }
  if (GetObjectByRef == null)
   return;
  if (typeof (topMenu) == "string")
    hideActiveMenu ("idMenu" + topMenu);
  else
    hideActiveMenu ("");
  var oWorkItem=GetObject("idMenu" + nm);
  var supportLayers = SupportLayers ();
  if (getTopMenu != oWorkItem)
  {
    addVisibleMenu (oWorkItem);
  } // if
  var parent, positionLeft;
  if (oWorkItem.style != null)
  {
    if (doPosition)
    {
      parent = parentObj;
      if (typeof (leftOffset) == "number")
        positionLeft = leftOffset;
      else
        positionLeft = -40;
      while (parent)
      {
        if (parent.name != "skip")
          positionLeft += parent.offsetLeft;
        parent = parent.parentElement;
      }

      oWorkItem.style.left = positionLeft;
      if (IEVersion () > 0)
        oWorkItem.style.top = parentObj.offsetTop + parentObj.offsetHeight + 10;
    }
    if (supportLayers)
    {
      oWorkItem.visibility="show";
    }
    else
    {
      oWorkItem.style.display="";
    }
  }
}

function hideMenu ()
{
  initHideMenu ();
}

function initHideMenu ()
{
  doClearTimeout ();
  timeoutID = window.setTimeout("doHideMenu();", 1000);
}

function initHideMenuTimeout (nm)
{
  doClearTimeout ();
  timeoutID = window.setTimeout("hideActiveMenu('" + nm + "');", 2000);
}

function setImage (obj, nm)
{
  hideActiveMenu ("");
  obj.src = nm;
}

function doHideMenu ()
{
  hideActiveMenu ("");
}

function CMenuProp ()
{
  this.menuClass = "MenuItem";
  this.refClass = "Menu";
  this.itemClass = "NavigationItem1";
  this.target = "";
  this.leftOffset = 0;
  this.subOffsetX = -80;
}

function CMenuItem ()
{
  this.content = "";
  this.menu = "";
  this.name = "";
}

function CMenu ()
{
  this.menus = new Array ();
  this.full = false;
  this.horizontal = true;
  this.baseFolder = "";
  this.offsetX = 0;
  this.width = 0;
  this.offsetY = 20;
  return this;
}

CMenu.prototype.setMenuFull=function (set)
{
  this.full = set;
}

CMenu.prototype.setHorizontal=function (set)
{
  this.horizontal = set;
}

CMenu.prototype.setOffsetX=function (set)
{
  if (SupportLayers ())
    set -= 180;
  //this.offsetX = set;
  this.width = set;
}

CMenu.prototype.setOffsetY=function (set)
{
  if (SupportLayers ())
    set += 20;
  this.offsetY = set;
}

CMenu.prototype.setBase=function (bsFolder)
{
  this.baseFolder = bsFolder;
}

function CMenuResult ()
{
  this.content = "";
  this.menu = "";
}

CMenu.prototype.getContent=function (menu)
{
  var suffix, i, c, p;
  if (SupportLayers ())
    suffix = "</layer>";
  else
    suffix = "</span>";
  c = this.menus.length;
  for (i = 0; i < c; ++i)
  {
    p = this.menus [i];
    if (p.content != "")
      menu.content += p.content;
    if (p.menu != "")
      menu.menu += p.menu + suffix;
   }
}

CMenu.prototype.construct=function (menuName)
{
  var menu, menuContent;
  if (GetObjectByRef)
    menu = GetObject (menuName);
  menuContent = new CMenuResult ();
  this.getContent (menuContent);
  if (this.full && IEVersion () > 300)
    menu.innerHTML = "<table border=0 width=\"100%\" class=\"Navigation1\" ><tr>" + menuContent.content + "</tr></table>" + menuContent.menu;
  else if (NSVersion () >= 500 || IEVersion () > 0)
    menu.innerHTML = "<table border=0><tr>" + menuContent.content + "</tr></table>" + menuContent.menu;
  else if (NSVersion () >= 400)
  {
    document.layers ["L" + menuName].document.write ("<table border=0><tr>" + menuContent.content + "</tr></table>" + menuContent.menu);
    document.layers ["L" + menuName].document.close ();
  }//if
  this.offsetX = 0;
  this.width = 0;
  this.offsetY = 60;
  /*
  var t;
  t = menu.innerHTML.replace (/&/g, "&amp;");
  t = t.replace (/</g, "&lt;");
  t = t.replace (/>/g, "&gt;<br />");
  GetObject ("info").innerHTML = t;
  */
}

CMenu.prototype.FindMenu=function (menuName)
{
  var i;
  for (i = this.menus.length; i > 0;)
  {
    --i;
    if (this.menus [i].name == menuName)
    {
      return this.menus [i];
    }
  }
  var newMenu = new CMenuItem;
  newMenu.name = menuName;
  this.menus [this.menus.length] = newMenu;
  return newMenu;
}

var thisMenu = new CMenu ();

function getFullRef (parentMenu, menuName, href, title, prop)
{
  if (href.substring(0,7) != "http://")
    href = thisMenu.baseFolder + href;

  var titleContent;

  var doPosition = "", leftOffset = "";
  if (SupportLayers ())
  {
    if (parentMenu == "")
    {
      doPosition = ", false, -40";
    }
  }
  else
  {
    if (IEVersion () > 300)
    {
      doPosition = ", true ";
      if (prop.leftOffset == "")
        leftOffset = ", -40 ";
      else
        leftOffset = ", " + prop.leftOffset;
    }
    else 
    {
      doPosition = ", false ";
      leftOffset = ", -40 ";
    }
    if (parentMenu == "")
    {
      if (IEVersion () > 300)
      {
        doPosition = ", true ";
        if (prop.leftOffset == "")
          leftOffset = ", -40 ";
        else
          leftOffset = ", " + prop.leftOffset;
      }
      else 
      {
        doPosition = ", false ";
        leftOffset = ", -40 ";
      }
    } // iff
  } // if

  if (href == "")
    if (SupportLayers ())
      return thisMenu.baseFolder + "#";
    else
      return title;
  else if (SupportLayers ())
    return "<a class=\"" + prop.refClass + "\" href=\"" + href + "\"  >" + title + "</a>";
  else if (menuName == "")
    return "<a class=\"" + prop.refClass + "\" onmouseOver=\"showMenu('" + parentMenu + "');\" onmouseOut=\"hideMenu();\" href=\"" + href + "\"  >" + title + "</a>";
  else 
    return "<a class=\"" + prop.refClass + "\" href=\"" + href + "\" " + prop.target + " onmouseOver=\"showMenu('" + parentMenu + "', this, '" + menuName + "'" + doPosition + leftOffset + ");\" onmouseOut=\"hideMenu();\"  >" + title + "</a>"
}

function makeMenu (parentMenu, menuName, title, href, prop)
{
  var activeMenu = thisMenu.FindMenu (parentMenu);
  
  var titleContent = getFullRef (parentMenu, menuName, href, title, prop);

  var content;
  if (SupportLayers ())
  {
    if (parentMenu == "")
    {
      activeMenu.content += "<td class=\"" + prop.itemClass + "\" >" + titleContent + "</td>";
      thisMenu.menuIndex = 0;
    }
  }
  else
  {
    var target;
    if (prop.target != "")
      target += " target=\"" + prop.target + "\" ";
    else
      target = "";
    if (parentMenu == "")
    {
      if (IEVersion () > 300)
      {
        content = "<td align=\"center\" class=\"" + prop.itemClass + "\" >";
      }
      else 
      {
        content = "<td align=\"center\" width=\"  " + thisMenu.width + "\" class=\"" + prop.itemClass + "\">";
      }
      content += "<span name=\"skip\" style=\"z-index:100;position:relative;left:5pt;\">" + titleContent + "</span></td>";
      activeMenu.content += content;

      if (menuName != "")
      {
        var menuChild = thisMenu.FindMenu (menuName);
        menuChild.offsetX = thisMenu.offsetX;
      }
      thisMenu.offsetX += thisMenu.width;
    }
    else
    {
      activeMenu.menu += "<p class=\"" + prop.itemClass + "\">" + titleContent + "</p>";
      if (menuName != "")
      {
        var menuChild = thisMenu.FindMenu (menuName);
        menuChild.offsetX = activeMenu.offsetX + prop.subOffsetX;
      }
    }

  } // if
  /*
  if (SupportLayers ())
  {
    thisMenu.offsetX += 10;
  }
  else
  {
    if (SupportLayers ())
    {
      if (thisMenu.menuIndex > 0)
        activeMenu.menu += "<br />";
      activeMenu.menu += "<layer id=\"LMenu" + thisMenu.menuIndex + "\" width=75 onmouseOver=\"showMenu();\" onmouseOut=\"hideMenu();\"><b>&nbsp;<a style=\"text-decoration:none;color:black;\" href=\"" + href + "\"  >" + title + "</a></b></layer>";
      thisMenu.menuIndex++;
    }
    else
    {
      activeMenu.menu += "<p class=\"" + prop.itemClass + "\"><a class=\"" + prop.refClass + "\" onmouseOver=\"showMenu();\" onmouseOut=\"hideMenu();\" href=\"" + href + "\"  >" + title + "</a></p>";
    }
  }
  */
  if (menuName != "")
  {
    var menuChild = thisMenu.FindMenu (menuName);
    if (menuChild.menu == "")
      if (SupportLayers ())
        menuChild.menu = "<layer id=\"idMenu" + menuName + "\" onmouseOver=\"showMenu('" + parentMenu + "');\" onmouseOut=\"hideMenu();\" class=\"" + prop.menuClass + "\" visibility=\"hide\" left=" + menuChild.offsetX  + " top=" + thisMenu.offsetY + " style=\"position:absolute;\" width=75 bgColor=lightblue >";
      else
        //menuChild.menu = "<span onmouseOver=\"showMenu('" + parentMenu + "');\" onmouseOut=\"hideMenu();\" class=\"" + prop.menuClass + "\" style=\"z-index:98;display:none;position:absolute;top:" + thisMenu.offsetY + "pt;left:" + menuChild.offsetX + "px;\" id=\"idMenu" + menuName + "\" >";
        menuChild.menu = "<span class=\"" + prop.menuClass + "\" style=\"z-index:98;display:none;position:absolute;top:" + thisMenu.offsetY + "pt;left:" + menuChild.offsetX + "px;\" id=\"idMenu" + menuName + "\" >";
  }
}

function makeBaseMenu (img, imgWidth, imgHeight, imgPush, hRef)
{
  thisMenu.addActive ();
  thisMenu.content += "<tr><td><a href=\"" + thisMenu.baseFolder + hRef + "\"  target=\"_top\" ><img onmouseOver=\"setImage(this, '" + thisMenu.baseFolder + imgPush + "');\" onmouseOut=\"setImage(this, '" + thisMenu.baseFolder + img + "');\"  src=\"" + thisMenu.baseFolder + img + "\" width=\"" + imgWidth + "\" height=\"" + imgHeight + "\" border=\"0\" /></a></td></tr>";
}

function constructMenu (menuName)
{
  thisMenu.construct (menuName);
}

function SetMenuFull (set)
{
  thisMenu.setMenuFull (set);
}

function SetHorizontal (set)
{
  thisMenu.setHorizontal (set);
}

function SetBase (bsFolder)
{
  thisMenu.setBase (bsFolder);
}

function SetOffsetX (set)
{
  thisMenu.setOffsetX (set);
}

function SetOffsetY (set)
{
  thisMenu.setOffsetY (set);
}

function InitMenu ()
{
  Reset ();
  SetMenuFull (true);
  SetHorizontal (true);
  SetOffsetX (190);
  //SetOffsetY (45);
  window.onresize=doScroll;
}

function doScroll ()
{
 var obj = GetObjectByRef ("oMenu"), objBody = GetObjectByRef ("body");
 if (obj != null && objBody != null)
   obj.style.pixelTop = objBody.scrollTop;
}


