var SFMenu = new Object();

SFMenu.onMouseOver = function()
{
  this.className +=" over";
}

SFMenu.onMouseOverRoot = function()
{
  var i, c, node, iframe, ul;

  this.className +=" over";

  for (i = 0, c = this.childNodes.length; i < c; i++)
  {
    node = this.childNodes[i];
    if (node)
    {
      if (node.nodeName == "IFRAME")
      {
        iframe = node;
      }
      else if (node.nodeName == "UL")
      {
        ul = node;
      }
    }
    
    if (ul && iframe)
    {
      iframe.style.width = ul.offsetWidth+"px";
      iframe.style.height = ul.offsetHeight+"px";
      iframe.style.left = ul.offsetLeft+"px";
      iframe.style.top = ul.offsetTop+"px";
      iframe.style.display = "block";
    }
  }
}

SFMenu.onMouseOut = function()
{
  this.className = this.className.replace(/\s*over$/, "");
}

SFMenu.onMouseOutRoot = function()
{
  var i, c, node;

  this.className = this.className.replace(/\s*over$/, "");
  
  for (i = 0, c = this.childNodes.length; i < c; i++)
  {
    node = this.childNodes[i];
    if (node)
    {
      if (node.nodeName == "IFRAME")
      {
        node.style.display = "none";
      }
    }
  }
}

SFMenu.init = function(ulId)
{
  var navRoot;
  if (document.getElementById)
  {
    navRoot = document.getElementById(ulId);
    SFMenu.initIter(navRoot, true);
  }
}

SFMenu.initIter = function(navRoot, isRoot)
{
  var i, c, j, d;

  for (i = 0, c = navRoot.childNodes.length; i < c; i++)
  {
    node = navRoot.childNodes[i];
    if (node.nodeName=="LI")
    {
      if (isRoot)
      {
        node.onmouseover = SFMenu.onMouseOverRoot;
        node.onmouseout = SFMenu.onMouseOutRoot;
      }
      else
      {
        node.onmouseover = SFMenu.onMouseOver;
        node.onmouseout = SFMenu.onMouseOut;
      }

      for (j = 0, d = node.childNodes.length; j < d; j++)
      {
        if (node.childNodes[j] && (node.childNodes[j].nodeName == "UL"))
        {
          SFMenu.initIter(node.childNodes[j], false);
        }
      }
    }
  }
}
