<!--
////////////////////////////////////////////////////////////////////
// copyright: SYSTOR AG - Switzerland
// author: Christian Hauser - IT assistance - info@itassistance.ch
// date: 03.09.99 12:35
// change: 03.09.99 12:35
////////////////////////////////////////////////////////////////////
// Global variables
alllinklistID = 0
key = 0
totalheight = 0
alllinklist = new Array()
nextkeys = new Array()

////////////////////////////////////////////////////////////////////
// "true" will write the HTML Code as Dynamic HTML. Requires file_tree_writer.js 
// when "false" you dont need to import file_tree_writer.js in the main document
dhtmlmodus = false

////////////////////////////////////////////////////////////////////
// routines to prepare the array of file trees with 
// an array of elements and its array of records:
// level|folder|linkstyle|description|link|alllinklistID|key|isopen|lastnode|children"
function initialize()
  { nlinklist = alllinklist[alllinklistID].length
    for (key=0; key < nlinklist; key++)
      { dataready = alllinklist[alllinklistID][key].split("|")
        dataready[5] = 0
        dataready[6] = 0
        dataready[7] = true
        dataready[8] = true
        dataready[9] = new Array()
        alllinklist[alllinklistID][key] = dataready
        if (alllinklist[alllinklistID][key][0]>0)
          { lastlevel = dataready[0] - 1
            for (i=key-1; i>=0; i--)
               if (alllinklist[alllinklistID][i][0]==lastlevel)
                  { nchildren = alllinklist[alllinklistID][i][9].length
                    if (nchildren)
                      { lastnchildren = nchildren -1
                        checknode = alllinklist[alllinklistID][i][9][lastnchildren]
                        alllinklist[alllinklistID][checknode][8] = false
                      }
                    alllinklist[alllinklistID][i][9][nchildren] = key
                    i=0
                  }
          }
      }
    if (dhtmlmodus) write(alllinklistID)
    // close the whole tree
    if (ie) clickOnNode(alllinklistID,0)
    // open the root folder
    if (ie) if (ONSTARTVISIBLE) clickOnNode(alllinklistID,0)
    // increments the array id of all file trees
    alllinklistID++
  }

////////////////////////////////////////////////////////////////////
// routines for the structure in use

function stateObjects(linklistID)
  { nodeobjnew = new Image()
    iconobjnew = new Image()
    if (!alllinklist[linklistID]) alert(linklistID)
    nLinks = alllinklist[linklistID].length
    nChildren = alllinklist[linklistID][key][9].length
    if (ie)
      { mainobj = doc.all["folder"+linklistID+"_"+key+"ie"]
        mainobjstyle = mainobj.style
        totalheight = mainobj.offsetTop + mainobj.offsetHeight
      }
    if (ns)
      { mainobj = doc["folder"+linklistID+"_"+key+"ns"]
        mainobjstyle = mainobj
        totalheight = mainobj.top + mainobj.clip.height
      }
    
    flag = 0
    for (i=key+1; i<nLinks; i++)
      { if (ie)
          { thisobj = doc.all["folder"+linklistID+"_"+i+"ie"]
            thisobjstyle = thisobj.style
            thisheight = thisobj.offsetHeight
          }
        if (ns) 
          { //thisobj = doc["folder"+linklistID+"_"+i+"ns"]
            //thisobjstyle = thisobj
            //thisheight = thisobj.clip.height 
          }
        if (alllinklist[linklistID][i][0]>alllinklist[linklistID][key][0] && !flag)
          { if (alllinklist[linklistID][key][7])
              { thisobjstyle.visibility = vishid
                alllinklist[linklistID][i][7] = false
                thisobjstyle.top = totalheight
                if(alllinklist[linklistID][i][1]==1) switcher(linklistID,true,i)
              }
            else
              { for (localkey=0; localkey < nChildren; localkey++)
                  { if (i==alllinklist[linklistID][key][9][localkey])
                      { thisobjstyle.top = totalheight
                        totalheight = totalheight + thisheight
                        thisobjstyle.visibility = visvis
                      }
                  }
              }
          }
        else
          { flag = 1
            if (thisobjstyle.visibility == visvis )
              { thisobjstyle.top = totalheight
                totalheight = totalheight + thisheight
              }
          }
      }     
    switcher(linklistID,alllinklist[linklistID][key][7],key)
    alllinklist[linklistID][key][7] = (alllinklist[linklistID][key][7])? false:true
    return true
  }

function switcher(linklistID,openclose,thiskey)
  { if (ie)
      { if (TREEVISIBLE && thiskey!=0) nodeobj = doc["node"+linklistID+"_"+thiskey]
        iconobj = doc["icon"+linklistID+"_"+thiskey]
      }
    if (ns)
      { //if (TREEVISIBLE && thiskey!=0) nodeobj = doc["folder"+linklistID+"_"+thiskey+"ns"].doc["node"+linklistID+"_"+thiskey]
        //mainobj.visibility = "hide"
        //alert(mainobj.name)     
        //iconobj =  mainobj.document["icon0_0"]// mainobj.document["icon"+linklistID+"_"+thiskey]
        //alert (iconobj)
        //pictarget = "icon"+linklistID+"_"+thiskey
        //target = document[pictarget]
        //iconobj  = upiconobj.document.icon0_1
        //alert (upiconobj+iconobj) still working on picobj Netscape!!!
      }
    if (openclose)
      { if (alllinklist[linklistID][key][8]) nodeobjnew.src = ICONPATH+"tree_plastnode.gif"
        else nodeobjnew.src = ICONPATH+"tree_pnode.gif"
        iconobjnew.src = ICONPATH+"icon_folder_close_out.gif"
      }
    else
      { if (alllinklist[linklistID][key][8]) nodeobjnew.src = ICONPATH+"tree_mlastnode.gif"
        else nodeobjnew.src = ICONPATH+"tree_mnode.gif"
        iconobjnew.src = ICONPATH+"icon_folder_open_out.gif"
      }
    if (TREEVISIBLE) nodeobj.src = nodeobjnew.src
    iconobj.src = iconobjnew.src
  }

////////////////////////////////////////////////////////////////////
// Events

function clickOnFolder(linklistID,objID)
  { key = objID
    if (!alllinklist[linklistID][key][7])
      clickOnNode(linklistID,objID)
    return
  }

function clickOnNode(linklistID,objID)
  { key = objID
    if (ie) oldwindowheight = document.all.thisdoc.offsetHeight
    stateObjects(linklistID) //open<->close
    if (AUTOCLOSE && alllinklist[linklistID][objID][7] && key>0)
      { thislevel = alllinklist[linklistID][objID][0]
      	if (nextkeys[thislevel])
          { if (key != nextkeys[thislevel] && alllinklist[linklistID][nextkeys[thislevel]][7])
              { key = nextkeys[thislevel]
      	        window.setTimeout("stateObjects("+linklistID+")",3)
      	      }
      	  }
        nextkeys[alllinklist[linklistID][objID][0]] = objID
      }
    if (ie) if (oldwindowheight < totalheight) window.scrollTo(0,totalheight)
  }

//-->
