    ////////////////////////////////////////////////////////////////////////////
    function TTreeNode_Create(AOwner,ACaption,ARefr)
    {
      function TTreeNode_Tag()
      { var res = '';
        var txt = this.Caption;
        var j   = 0;

        var atrOnClick    = ' onclick="parent.SelectNode(' +"'"+ this.Refr +"'"+ ')" ondblclick="parent.CancelEvent(event)" ';
        var atrHREF       = ' href="nmxPages/' + this.Refr + '"';
        var atrID         = ' id="' + this.Refr + '"';
        var atrFont       = ' id="' + this.Refr + 'Font" '; 
        var tagText       = '<FONT class="nmxAsTreeItemFont" ' + atrFont + '>' + txt + '</FONT>';
        var rtr           = '\n';

        res = res + '  <H1 class="nmxAsTreeItem"><A class="nmxAsTreeRefr" target="nmxMainFrame" ' + atrID + atrHREF + atrOnClick + '>' + tagText + '</A></H1>';
        res = res + rtr ;
       
        if (this.DropedDown && this.HasItems())
        {
          res = res + '<DIV class="nmxAsTreeNode">' + rtr ;
          for (j = 1; j <= this.Items.length; j++)
          res = res + this.Items[j].Tag();
          res = res + '</DIV>' + rtr ;
        }
        return res;
      } //////////////////////////////////////////////////////////////////////////
      function TTreeNode_TreeTag()
      { var res  = '';
        var i    = 0;
        for (i = 1; i <= this.Items.length; i++)
        res = res + this.Items[i].Tag();
        res = '<DIV id="nmxTreeRoot" name="nmxTreeRoot" class="nmxAsTreeRoot">' + res + '</DIV>';
        return res;
      } //////////////////////////////////////////////////////////////////////////
      function TTreeNode_HasItems()
      { var res = (this.Items.length > 0); 
        return res;
      } //////////////////////////////////////////////////////////////////////////
      function TTreeNode_NodeByName(ARefr)
      { var res  = null; 
        var root = this.RootNode();
        for (i = 1; i <= root.Nodes.length; i++)
        if (root.Nodes[i].Refr == ARefr) res = root.Nodes[i];
        return res;
      } //////////////////////////////////////////////////////////////////////////
      function TTreeNode_NodeLavel()
      { var buff = this;  res = -1;
        while (buff.Owner != null) {buff = buff.Owner; res++; }
        return res;
      } //////////////////////////////////////////////////////////////////////////
      function TTreeNode_RootNode()
      { var res = this;
        while (res.Owner != null) res = res.Owner;
        return res;
      } //////////////////////////////////////////////////////////////////////////
      function TTreeNode_FullCaption()
      { var nod = this; res = nod.Caption;

        while (nod.Owner != null  && nod.Owner.Owner != null ) 
        {
         nod = nod.Owner;
         res = nod.Caption + ', <FONT SIZE=-1>' + res + '</FONT>';
        }
        return res;
      } //////////////////////////////////////////////////////////////////////////
      function TTreeNode_ContainNode(ARefr)
      { var r = false;
        var i = 0;
        for (i = 1; i <= this.Items.length; i++)
        if (this.Items[i].Refr == ARefr) r = true;
        return r;
      }//////////////////////////////////////////////////////////////////////////
      function TTreeNode_CreateItems()
      { this.length = 0;
        return this;
      }//////////////////////////////////////////////////////////////////////////
      function TTreeNode_AddItem(ACaption,ARefr)
      { var item = null;
        var root = this.RootNode();
        
        item = new TTreeNode_Create(this,ACaption,ARefr);

        this.Items.length = this.Items.length + 1;
        this.Items[this.Items.length] = item;

        root.Nodes.length = root.Nodes.length + 1;
        root.Nodes[root.Nodes.length] = item;

        return item;
      }//////////////////////////////////////////////////////////////////////////
      this.ActivePage  = '';
      this.DropedPage  = '';
      this.Owner       = AOwner
      this.Caption     = ACaption;
      this.Refr        = ARefr;
      this.Items       = new TTreeNode_CreateItems();

      this.AddItem     = TTreeNode_AddItem;
      this.ContainNode = TTreeNode_ContainNode;
      this.RootNode    = TTreeNode_RootNode;
      this.HasItems    = TTreeNode_HasItems;
      this.NodeLavel   = TTreeNode_NodeLavel;
      this.Tag         = TTreeNode_Tag;
      this.FullCaption = TTreeNode_FullCaption;
      this.DropedDown  = false;
      if (AOwner == null)
      {
        this.DropAll    = false;
        this.StartPage  = 'Blank.html';
        this.Nodes      = new TTreeNode_CreateItems();
        this.NodeByName = TTreeNode_NodeByName;
        this.TreeTag    = TTreeNode_TreeTag;

        this.ActivNodeColor   = "#F08000";
        this.InactivNodeColor = "#888888";
      }
      return this;
    }
    ////////////////////////////////////////////////////////////////////////////
    function OnScroll(b) {}

    function CancelEvent(e)
    {
      e.returnValue=false;
      if (e.cancelable)
      e.preventDefault();
    }

    function SelectNode(ANodeID)
    {
      if (ANodeID == '')
      { Loading = true;
        ANodeID = parent.Tree.StartPage;
      }
      else Loading = false;

      var TreeDoc           = window.parent.TreeView.document;
      var TreeBody          = TreeDoc.getElementById("nmxTreeBody");

      var TreeBodyScrollTop = 0;
      var NewNode           = parent.Tree.NodeByName(ANodeID);
      var OldNode           = parent.Tree.ActiveNode;
      var OldNodeFont       = null;

      if (OldNode != null)
      {
        OldNodeFont = TreeDoc.getElementById(OldNode.Refr+ 'Font'); //   
      }

      if (Loading || NewNode.HasItems() )
      {
        if (TreeBody != null) TreeBodyScrollTop = TreeBody.scrollTop;

        if (!Loading) 
        if (NewNode.HasItems())
        {
          if (NewNode.DropedDown) NewNode.DropedDown = false; else NewNode.DropedDown = true;
        }
        var tagTree = '';
        tagTree = tagTree + parent.Tree.TreeTag();
//        tagTree = tagTree + '<DIV ID="divTreeBottom" NAME="divTreeBottom"></DIV>';

        TreeView.document.body.innerHTML = tagTree;
      }

      /////////////window.parent.frames[1].scroll(0,TreeBodyScrollTop);
      TreeView.scroll(0,TreeBodyScrollTop);

      var NewNodeFont = TreeDoc.getElementById(ANodeID+'Font'); //   

      if (OldNodeFont != null) OldNodeFont.setAttribute("color",parent.Tree.InactivNodeColor); // 
      if (NewNodeFont != null) NewNodeFont.setAttribute("color",parent.Tree.ActivNodeColor  ); // 006020

//      if (OldNodeFont != null) OldNodeFont.setAttribute("color","#888888" ); // 
//      if (NewNodeFont != null) NewNodeFont.setAttribute("color","#F08000"); // 006020

      parent.Tree.ActiveNode = NewNode;

      /////////////// nmxHeadFrame.document.body.innerHTML = NewNode.FullCaption();
      var HeadFrame = window.parent.frames['nmxHeadFrame'];
      if (HeadFrame != null) HeadFrame.document.body.innerHTML = NewNode.FullCaption();

      if (nmxMainFrame != null)
      {
        var MainDoc = nmxMainFrame.document;
        var NewURL  = ANodeID.toUpperCase();
        var OldURL  = MainDoc.URL.toUpperCase();
        if ((NewURL.indexOf('.HTML') == -1)
        && (NewURL.indexOf('WWW.') == -1) ) NewURL = 'BLANK.HTML';
        
        if (OldURL.indexOf(NewURL) == -1 )
        MainDoc.location.replace('nmxPages/' + NewURL);
      }
      
    }

function list_node(ATreeNode,AListNode)
{ var item = null;
  var node = null;

  var doc  = window.parent.TreeView.document;
//  alert(doc);

  var name = '';
  var refr = '';

  if (ATreeNode == null) ATreeNode = this.Tree;
  if (AListNode == null) AListNode = doc.getElementById("nmxTreeRoot");

  for (var i = 0; i < AListNode.childNodes.length; i++)
  {
    if (AListNode.childNodes[i].className == 'nmxAsTreeItem')
    {
      item = AListNode.childNodes[i];

      if (item.childNodes[0].childNodes[0] != null)
        name = item.childNodes[0].childNodes[0].nodeValue;
      else
        name = item.childNodes[0].nodeValue;

      refr = item.childNodes[0].id;

      if (ATreeNode.RootNode().StartPage == 'Blank.html')
      ATreeNode.RootNode().StartPage = refr;

      node = ATreeNode.AddItem(name,refr);

    }
    if (AListNode.childNodes[i].className == 'nmxAsTreeNode')
    list_node(node,AListNode.childNodes[i]);
  }
}



function init()
{
  list_node(null,null);
//  TreeView.document.body.innerHTML = "";
  SelectNode("");
}

function nmxTopFrameOnLoad(ADefaulFileName)
{
  init();

  var PageFileName = '';

  if ((top.location.href.lastIndexOf("?") > 0)
  &&  (top.location.href.lastIndexOf("HTML") > top.location.href.lastIndexOf("?")))
  {
    PageFileName = top.location.href.substring(top.location.href.lastIndexOf("?")+1,top.location.href.length);
    if ( PageFileName != '' )
    {
      nmxMainFrame.location.replace('nmxPages/' + PageFileName);
      SelectNode( PageFileName );
    } 
  }
  else
  if ( ADefaulFileName != '' )
  {
   SelectNode(ADefaulFileName);
  }
}
