l.style.color = l.fontColorHilite;
  }
}function selectTreeItem(l)
{
  var s = window.selectedTreeItem;
  if (s)
  {
    if (l == s) return;
    s.style.backgroundColor = s.saveBgColor;
    s.style.backgroundColor = s.saveBgColor;
    if (!s.childTree) s.img.src = s.icons[0] || s._icons[0];
    s.isSelected = false;
  }  if (l)
  {
    l.saveBgColor = l.style.backgroundColor;
    l.saveBgColor = l.style.backgroundColor;
    l.style.backgroundColor = l.selectedBgColor;
    l.style.backgroundColor = l.selectedBgColor;
    l.isSelected = true;
    window.selectedTreeItem = l;
  }
    hiliteTreeItem(l);
}function onTreeItemUp(e, isIcon, isDrag)
{
  e = e || window.Event || window.event;
  if (e.which > 1) return false;
  document.saveMousemove = document.onmousemove;
  document.onmousemove = mouseTracker;
  var a = window.activeTreeItem;
  if (window.tDrag)
  {
    if (tDrag.dragLayer) isDrag = fOnTreeItemUp(e, a);
  }
  if (a && !isDrag)
  {
    if (a.isSelected)
      onTreeFolder(a);
    if (isIcon)
    {
    }
    else if (a.action)
    {
      selectTreeItem(a);
      window.saveActiveTreeItem = a;
      setTimeout('window.saveActiveTreeItem.parentElement.Tree.onTreeItemAction();', 2);
    }
    else
    {
      selectTreeItem(a);
    }
    hiliteTreeItem();
  }
  window.inactiveTreeItem = activeTreeItem;
  window.activeTreeItem = a;
}function onTreeItemAction(e, l)
{
  l = l || this;
  if (!window.saveActiveTreeItem) return;
  if (saveActiveTreeItem.action)
  {
    eval(saveActiveTreeItem.action + "");
  }
  else if (l.id)
  {
    if (l.id.indexOf("treeItem") != -1) eval(l.action +"");
  }
  window.saveActiveTreeItem = null;
}function onTreeFolder(l)
{
  document.onmousemove = mouseTracker;
  l = l || window.activeTreeItem;
  if (!l.childTree) return;
  if (!l.childTree.treeLayer)
    l.childTree.writeTree();  var childTreeLayer = l.childTree.treeLayer;
  var childTree = l.childTree;
  var parentTree = l.parentElement.Tree;
  childTreeLayer.parentTree = parentTree;
  childTreeLayer.zIndex = l.zIndex +1; //bring folders fwd for now...
  if (childTree.isOpen)
  {
    l.img.src = l.icons[1];
    if (l.openerImg)
    l.openerImg.src = l.openFolderIcons[0];    closeChildTree(childTree);
  }
  else
  {
    childTree.isOpen = true;
    l.img.src = l.icons[3];
    if (l.openerImg)
      l.openerImg.src = l.openFolderIcons[1];
    if (parentTree)
    {
      childTreeLayer.style.visibility = "inherit";
      if (!childTreeLayer.onmouseover)
    buildTree(childTree);
      childTree.treeLayer.style.pixelLeft = parentTree.treeLayer.style.pixelLeft + 20;
      childTree.treeLayer.style.pixelTop = parentTree.treeLayer.style.pixelTop + l.style.pixelTop + l.style.pixelHeight + childTree.itemBorder;
    }    adjustParentTree(childTree);
    adjustChildTree(childTree);
    activeTreeLayers[childTreeLayer.id] = childTreeLayer;
  }  window.activeTreeLayer = childTreeLayer;
}function closeChildTree(tree)
{
  if (!tree) return;
  tree.isOpen = false;
  if (tree.treeLayer)
    tree.treeLayer.style.visibility = "hidden";  adjustChildTree(tree);
  adjustParentTree(tree);
  activeTreeLayers[tree.id] = null;
}function adjustParentTree(tree)
{
  if (!tree)
    return;  tree = tree.Tree || tree;
  var treeLayer = tree.treeLayer || tree;
  var p = treeLayer.parentTree;  if (!p)
    return;  if (!p.itemLayers)
    return;  var l = p.treeLayer;
  if (!l)
    return;  for (var i=0; i<p.itemLayers.length; i++)
  {
    if (p.itemLayers.length > 0)
{
      if (i>0)
  {
        p.itemLayers[i].style.pixelTop = p.itemLayers[i-1].style.pixelTop + p.itemLayers[i-1].style.pixelHeight;
        if (p.itemLayers[i-1].childTree && !p.itemLayers[i-1].isDeleted)
{
          if (p.itemLayers[i-1].childTree.isOpen)
  {
            p.itemLayers[i-1].childTree.treeLayer.style.pixelTop = p.itemLayers[i-1].childTree.parentFolder.parentElement.style.pixelTop + p.itemLayers[i-1].childTree.parentFolder.style.pixelTop + p.itemLayers[i-1].childTree.parentFolder.style.pixelHeight;
            p.itemLayers[i].style.pixelTop += p.itemLayers[i-1].childTree.treeLayer.style.pixelHeight;
            for (var j in p.itemLayers[i-1].childTree.childTrees)
{
              if (p.itemLayers[i-1].childTree.childTrees[j].isOpen) adjustChildTree(p.itemLayers[i-1].childTree);
            }
          }
        }
      }
      p.itemLayers[i].style.visibility = "inherit";
    }
  }  if (l.lastLayer)
  {
    l.style.pixelHeight = l.lastLayer.style.pixelTop +20;
    if (l.lastLayer.childTree)
{
      if (l.lastLayer.childTree.isOpen)
  {
        l.lastLayer.childTree.treeLayer.style.pixelTop = l.lastLayer.childTree.parentFolder.parentElement.style.pixelTop + l.lastLayer.childTree.parentFolder.style.pixelTop + l.lastLayer.childTree.parentFolder.style.pixelHeight;
        l.style.pixelHeight += l.lastLayer.childTree.treeLayer.style.pixelHeight;
      }
    }
  }
  else
  {
    l.style.pixelHeight = 0;
  }
  adjustParentTree(l);
}function adjustChildTree(tree)
{
  if (!tree)
    return;

解决方案 »

  1.   

    tree = tree.Tree || tree;
      var l = tree.treeLayer;  if (!l)
        return;  if (!tree.itemLayers)
        return;  for (var i=0; i<tree.itemLayers.length; i++)
      {
        if (!tree.itemLayers[i].childTree)
    {
        }
    else if (!tree.itemLayers[i].childTree.treeLayer || tree.itemLayers[i].isDeleted)
    {
        }
    else if (tree.itemLayers[i].childTree)
    {
          tree.itemLayers[i].childTree.treeLayer.style.pixelTop = tree.itemLayers[i].childTree.parentFolder.parentElement.style.pixelTop + tree.itemLayers[i].childTree.parentFolder.style.pixelTop + tree.itemLayers[i].childTree.parentFolder.style.pixelHeight;
          tree.itemLayers[i].childTree.treeLayer.zIndex = l.zIndex +1; //bring folders fwd for now...
          if (l.style.visibility != "inherit")
            tree.itemLayers[i].childTree.treeLayer.style.visibility = "hidden";
          else if (tree.itemLayers[i].childTree.isOpen)
            tree.itemLayers[i].childTree.treeLayer.style.visibility = "inherit";
        }
        adjustChildTree(tree.itemLayers[i].childTree);
      }
    }function handleTreeContainer(e, container)
    {
    }function setTreeItemProps(l, label, action, icons, img, fontSize, fontColor, fontColorHilite, selectedBgColor, mouseover, childTree)
    {
        l.label = label;
        l.action = action;
        //l.fontSize = fontSize || 14;
        l.fontSize = 2;
        l.fontColor = fontColor;
        l.fontColorHilite = fontColorHilite;
        l.selectedBgColor = selectedBgColor;
        if (childTree)
    {
          l.childTree = childTree;
          l.childTree.parentFolder = l;
        }
        l.icons = icons;
        l.img = img;
        l.onmouseover = mouseover;
    }function buildTree(tree, x, y, child)
    {
      tree = tree || this;
      if (!tree.treeLayer)
        writeTree(tree);  var l = tree.treeLayer;
      if (!l)
        return;  var items = new Array();
      for (var i=0; i<l.children.length; i++) items[i] = l.children[i];
      tree.itemLayers = items;
      var container = l.Tree.container;
      var actions = l.Tree.actions;
      var proto = l.Tree.protoTree;
      l.onmouseover = setActiveTree;
      l.Tree.childTrees = new Array();
      l.style.pixelWidth = proto.treeWidth || 200;
      l.style.pixelHeight = proto.treeHeight || 200;
      for (var i=0; i < l.children.length; i++)
      {
        child = l.children[i];
        child.pos = i;
        var childTree=null, icons=null, img=null;
        if (child.innerHTML.indexOf("treeFolderImg") > -1)
    {
          childTree = container.trees[child.id.substring(child.id.indexOf(":")+1)];
          l.Tree.childTrees[l.Tree.childTrees.length] = childTree;
          icons = l.Tree.icons[i] || l.Tree.protoTree.folderIcons;
          img = child.document.images["treeFolderImg:" + child.id];
          if (child.innerHTML.indexOf("treeOpenerImg") > -1)
      {
            child.openerImg = child.document.images["treeOpenerImg:" + child.id];
            child.openFolderIcons = proto.openFolderIcons;
          }
        }
    else
    {
          icons = l.Tree.icons[i] || l.Tree.protoTree.itemIcons;
          img = child.document.images["treeItemImg:" + child.id];
        }
        setTreeItemProps(child,(l.Tree.items[i].label || l.Tree.items[i]),actions[i],icons,img,(l.Tree.fontSizes[i] || proto.fontSize), (l.Tree.fontColors[i] || proto.fontColor),proto.fontColorHilite,proto.selectedBgColor,onTreeItemOver,childTree);
        child.style.pixelLeft = child.style.pixelWidth + 2;
        child.style.pixelLeft = child.style.pixelWidth + 3;
        child.style.pixelWidth = proto.treeItemWidth || 100;
        child.style.pixelHeight = proto.treeItemHeight || 20;
        if (i>0)
    {
          child.style.pixelLeft = l.children[i-1].style.pixelLeft;
          child.style.pixelTop = l.children[i-1].style.pixelTop + l.children[i-1].style.pixelHeight + proto.itemBorder;
          var w = l.children[i-1].style.pixelLeft + l.children[i-1].style.pixelWidth;
          if (child.style.pixelWidth < w) child.style.pixelWidth = w;
        }
        child.style.visibility = "inherit";
      }  if (l.children.length == 1)
      {
        l.lastLayer = null;
        l.style.pixelHeight = 20;
      }
      else
      {
        l.lastLayer = child;
        child.isLastLayer = true;
        l.style.pixelHeight = child.style.pixelTop + child.style.pixelHeight;
        l.style.pixelWidth = child.style.pixelLeft + child.style.pixelWidth;
      }
      l.style.pixelLeft = x || 0;
      l.style.pixelTop = y || 0;
      l.onmousedown = onTreeItemDown;
      l.onmouseout = onTreeItemOut;
      if (container.style.visibility != "inherit")
      {
        container.style.pixelWidth = window.activeTreeLayer.style.pixelWidth +2;
        container.style.pixelHeight = window.activeTreeLayer.style.pixelHeight +2;
        container.style.visibility = "inherit";
      }
    }function showTree(tree, x, y)
    {
      tree = tree || this;
      if (!tree.treeLayer)
        writeTree(tree);  var l = tree.treeLayer;
      if (!l)
        return;  window.activeTreeLayer = l;
      window.activeTreeLayers[l.id] = l;
      if (l.parentElement)
      {
        if (x) l.parentElement.style.pixelLeft = x || 0;
        if (y) l.parentElement.style.pixelTop = y || 0;
        window.activeTreeLayer.style.pixelLeft = 1;
        window.activeTreeLayer.style.pixelTop = 1;
      }  if (!l.onmouseover)
        buildTree(l.Tree);
      l.style.visibility = "inherit";
    }function setActiveTree(e, l)
    {
      window.activeTreeLayer = l || this;
    }function mouseTracker(e)
    {
      e = e || window.Event || window.event;
      window.pageX = e.pageX || e.clientX;
      window.pageY = e.pageY || e.clientY;
    }function setTreeMouseTracker()
    {
      document.onmousemove = this.mouseTracker;
    }function onTreeItemDown(e, l)
    {
      e = e || window.Event || window.event;
      l = l || window.activeTreeItem;
      if (!l)
        return false;  if (e.which > 1)
      {
        if (l.parentElement.Tree.protoTree.onTreeRightDown)
      l.parentElement.Tree.protoTree.onTreeRightDown(e, l);
        return false;
      }
      else if (window.Features)
      {
        return fOnTreeItemDown(e, l);
      }
      return true;
    }function setMouseUps(name, func)
    {
      window.saveMouseUps = window.saveMouseUps || new Array();
      window.saveMouseUps[name] = func;
      

  2.   

    if (window.onmouseup && window.onmouseup != handleMouseUps)
        window.saveMouseUps[onmouseup] = onmouseup;
      if (document.onmouseup && document.onmouseup != handleMouseUps)
        window.saveMouseUps[document.onmouseup] = document.onmouseup;
      document.onmouseup = handleMouseUps;
    }function handleMouseUps(e)
    {
      for (var i in window.saveMouseUps)
      {
        if (typeof(saveMouseUps[i]) == "function" && saveMouseUps[i] != window.hideMenu)
      saveMouseUps[i](e);
      }
      if (window.hideMenu)
        hideMenu(e); //backwards compat.
    }if (document.all)
    {
      if (!document.all["rootContainer"])
        document.writeln('<SPAN ID="rootContainer" STYLE="position:absolute;visibility:hidden"></SPAN>');
      if (!document.all["dragContainer"])
        document.writeln('<SPAN ID="dragContainer" STYLE="position:absolute;visibility:hidden"></SPAN>');
    }// we expand the 'tree' to the node by 'treeParams'
    // 'treeParams' must like 'AAAA->BBBB->CCCC'..
    // we can parse the strings from the 'treeParams' string,
    // and we expand the tree with these strings labelled in tree
    function expandTo(tree,treeParams)
    {
    var i;
    var pos;
    var strs = new Array();for (i=0; ((pos=treeParams.search("->"))!=-1);i++)
        {
        strs[i] = treeParams.substr(0,pos);
        treeParams = treeParams.replace(strs[i]+"->","");
        }
    if (treeParams != "")
        strs[i] = treeParams;var treeItem = tree;
    for (i=0; i<strs.length; i++)
        {
        var treeItem = getTreeItem(treeItem,strs[i]);
        if (treeItem==null || treeItem.items==null)
            break;
        }
    }// find a item in tree items which label is == str;
    // if the found item is a tree, we expand the item;
    // if the found item is a string, we navigate the right frame to the actionURL.;
    // at last return the found item;
    function getTreeItem(tree, str)
    {
    if (tree && tree.items)
        {
        var i;
        for (i=0; i<tree.items.length; i++)
            {
            var iTree = tree.items[i];
            var iLabel = (iTree.items ? iTree.label:iTree);
            if (iLabel == str)
                {
                var l;
                if (iTree.items)
                    l = document.all("treeItem"+i+":"+iTree.id,0);
                else
                    {
                    l = document.all("treeItem"+i+":"+iTree,0);
                    selectTreeItem(l);
                    var action = tree.actions[i];
                    eval(action);
    /*
    //                action = action.replace("goURL('","");
    //                action = action.replace("')","");                // xxxx:here is hack ,we use the static name 'top.main.rf',;
                    // maybe some problem will happens someday because right frame name isn't always equals 'rf'
                    top.main.rf.location.href = action;
    */
                    }            onTreeFolder(l,true);
                return iTree;
                }
            }
        }return null;
    }