var ularray = new Array();
var liarray = new Array();
var head="display:''"

function foldtreeinit(menuid)
{
  var i;
  var j;
  var node;
  var child;
  var parent;

  // if the browser doesn't even support
  // document.getElementById, give up now.
  if (!document.getElementById)
  {
    return true;
  }

  // check for downlevel browsers
  // Opera 6, IE 5/Mac are not supported

  var version;
  var offset;

  offset = navigator.userAgent.indexOf('Opera');
  if (offset != -1)
  {
    version = parseInt('0' + navigator.userAgent.substr(offset + 6), 10);
    if (version < 7)
    {
      return true;
    }
  }

  offset = navigator.userAgent.indexOf('MSIE');
  if (offset != -1)
  {
    if (navigator.userAgent.indexOf('Mac') != -1)
    {
      return true;
    }
  }

  var menudiv = document.getElementById(menuid);
  if (!menudiv) return true;

  processTree(menudiv);

  foldtreecookiereader();

  return true;
}

function processTree(item)
{
  if (!item.childNodes || item.childNodes.length == 0) return;

  for (var cindex=0; cindex < item.childNodes.length; cindex++)
  {
    var child = item.childNodes[cindex];
    if (child.nodeName == "LI")
    {
      // Iterate things in this LI
      var gcul = null;
      for (var gcindex=0; gcindex < child.childNodes.length; gcindex++)
      {
        var grandchild = child.childNodes[gcindex];
        if (grandchild.nodeName == "UL")
        {
          gcul = grandchild;
          processTree(grandchild);
        }
      }
      if (gcul)
      {
        child.style.listStyleImage="url(/images/fold.gif)";
        addEventListener(child, gcul);
      }
      else
      {
        child.style.listStyle = "none";
      }
    }
    else
    {
      processTree(child);
    }
  }
}

function addEventListener(li, ul)
{
  li.onclick = function (e)
  {
    var display = ul.style.display;

    var i;
    var child;
    var node;
    var iscontained=0;

    // Try to identify the actual object we clicked in.
    if (!e)
    {
      if (window)
        if (window.event);
          e = window.event;
    }

    if (e)
    {
      if (e.target)
        node = e.target;
      else if (e.srcElement)
        node = e.srcElement;
      else
        node = this;
    }
    else
    {
      node = this;
    }

    // OK, now we have the node.  What is it.
    if (node.nodeName == "LI")
    {
      iscontained=1;
    }
    else
    {
      while (node.parentNode) {
        if (node.nodeName == "UL" || node.nodeName == "LI")
        {
          iscontained=(node.nodeName == "UL")? 1 : 0;
          break;
        }
        node = node.parentNode;
      }
    }

    // If this isn't part of the menu control structure
    // return telling the processing to be done elsewhere.
    if (!iscontained)
    {
      return true;
    }

    if (display == 'none')
    {
      li.style.listStyleImage="url(/images/open.gif)";
      ul.style.display="block";
    }
    else
    {
      li.style.listStyleImage="url(/images/fold.gif)";
      ul.style.display="none";
    }

    checkit();
    return false;
  };

}

function foldtreecookiereader()
{
  var menudiv = document.getElementById('newnavdiv');

  if (!menudiv) return;

  processTreeCookie(menudiv);

  var cookievalue = ndeReadCookie("rjs-navhistory", false);
  if (cookievalue != '')
  {
    var openresults=unescape(cookievalue).split(" ")
    for (i=0 ; i < openresults.length ; i++)
    {
      var j = openresults[i];
      if (j < ularray.length)
      {
        // Now we open up the ones we have found in the cookie.
        //
        ularray[j].style.display='block';
        liarray[j].style.listStyleImage = "url(/images/open.gif)";
      }
    }
  }
}

function processTreeCookie(item)
{
  if (!item.childNodes || item.childNodes.length == 0) return;

  for (var cindex=0; cindex < item.childNodes.length; cindex++)
  {
    var child = item.childNodes[cindex];
    if (child.nodeName == "LI")
    {
      // Iterate things in this LI
      var gcul = null;
      for (var gcindex=0; gcindex < child.childNodes.length; gcindex++)
      {
        var grandchild = child.childNodes[gcindex];
        if (grandchild.nodeName == "UL")
        {
          gcul = grandchild;
          processTreeCookie(grandchild);
        }
      }
      if (gcul)
      {
        var len = ularray.length;
        ularray[len] = gcul;
        liarray[len] = child;

        // When we are building the list we will make them closed initially.
        //
        gcul.style.display='none';
        child.style.listStyleImage = "url(/images/fold.gif)";
      }
    }
    else
    {
      processTreeCookie(child);
    }
  }
}

function checkit()
{
  var openones='';
  for (var i=0; i < ularray.length; i++)
  {
    if (ularray[i].style.display=='block')
    {
      openones=openones + " " + i;
    }
  }
  ndeCreateCookie("rjs-navhistory", openones, 365, false);
}
