// Made by Almajaro 2004

// Opbouw van de tree.js
// Folder (Level, Naam, Target, Link);   * Target en Link zijn optioneel
// Item   (Level, Target, Naam, Link);

Pad = "http://www.biljartschool.nl/"; // Pad waar de images en de astree.js ten opzichte van de tree.js staan.
DocImg = true; // Bij 'true' laat hij kleine pics zien bij doc, xls, pdf en ppt links. Anders 'false'.

Level       = -1;
VorigeItem  = "f";
VorigeLevel = -1;
KlikNr      = -1;

ActiveFolder = new Array();
AF = 0;

Graphics = new Array();
Folders = new Array();

Node     = new Array();
Lijn     = new Array();
KlikPath = new Array();

// Preloaden van Images die realtime veranderen
asmnode = new Image()
asmnode.src = Pad + "asmnode.gif";
aspnode = new Image()
aspnode.src = Pad + "aspnode.gif";
asfolderclosed = new Image()
asfolderclosed.src = Pad + "asfolderclosed.gif";
asfolderopen = new Image()
asfolderopen.src = Pad + "asfolderopen.gif";
asmlastnode = new Image()
asmlastnode.src = Pad + "asmlastnode.gif";
asplastnode = new Image()
asplastnode.src = Pad + "asplastnode.gif";

OF = "";
OFPlaats = document.location + "";
OFPlaats1 = OFPlaats.indexOf("?")
if (OFPlaats1 != -1)
{ OF = OFPlaats.substr(OFPlaats1 + 1, OFPlaats.length - OFPlaats1 - 1); }

document.onselectstart = new Function ("return false");

function nodeCheckLastNode()
{
  for (var y = (x + 1); y < Node.length; y++)
  {
    if (Node[y].Level === this.Level) { return false; };
    if (Node[y].Level < this.Level) { return true; };
  }
  return true;
}

function nodeCheckLine()
{
  for (var y = 1; y < (Level - 1); y++)
  {
    if (Lijn[y] === "true")
    { CreateImage("asvertline"); }
    else
    { CreateImage("asblank"); }
  }
}

function CreateImage(Img)
{
  Plaatje = document.createElement("img");
  Plaatje.src = Pad + Img + ".gif";
  ActiveFolder[AF].appendChild(Plaatje);
}

function CreateSpecialImage(Img, nr)
{
  Plaatje = document.createElement("img");
  Plaatje.src = Img;
  Plaatje.onclick = function() { OpenClose(nr); }
  return ActiveFolder[AF].appendChild(Plaatje);
}

function nodeFolderMaak()
{
  var xNr = x;

  if (x > 0)
  {
    this.CheckLine();

    if (this.CheckLastNode())
    {
      Graphics["nodeimg" + x] = CreateSpecialImage(asplastnode.src, xNr);
      Lijn[this.Level - 1] = "false";
    }
    else
    {
      Graphics["nodeimg" + x] = CreateSpecialImage(aspnode.src, xNr);
    }
  }

  Graphics["folderimg" + x] = CreateSpecialImage(asfolderclosed.src, xNr);

  if ((this.Url === "undefined") || (this.Url === ""))
  { this.Element = document.createElement("font"); }
  else
  {
    this.Element = document.createElement("a");
    this.Element.href = this.Url;
    this.Element.target = this.Target;
  }

  this.Element.onclick = function() { OpenClose(xNr); }
  this.Element.className = "Folder";
  Tekst = ActiveFolder[AF].appendChild(this.Element);

  Tekst = ActiveFolder[AF].appendChild(this.Element);
  Tekst.appendChild(document.createTextNode(this.Naam));

  ActiveFolder[AF].appendChild(document.createElement("br"));

  this.Element = document.createElement("div");
  this.Element.style.display = "none";
  this.Element.id = "node" + xNr;

  this.Object = ActiveFolder[AF].appendChild(this.Element);
  Folders["node" + xNr] = this.Object;
  AF = this.Level;
  ActiveFolder[AF] = this.Object;
}

function nodeItemMaak()
{
  this.CheckLine();

  if (this.CheckLastNode()) { CreateImage("aslastnode"); }
  else { CreateImage("asnode"); }

  CreateImage("asbullet");

  if ((this.Url === "undefined") || (this.Url === ""))
  { this.Element = document.createElement("font"); }
  else
  {
    this.Element = document.createElement("a");
    this.Element.href = this.Url;
    this.Element.target = this.Target;
  }

  this.Element.className = "Item";
  
  Tekst = ActiveFolder[AF].appendChild(this.Element);
  Tekst.appendChild(document.createTextNode(this.Naam));

  Ext = (this.Url.substr(this.Url.length - 3, 3)).toLowerCase()
  if ((DocImg) && ((Ext === "doc") || (Ext === "ppt") || (Ext === "pdf") || (Ext === "xls")))
  { CreateImage("as" + Ext); }

  ActiveFolder[AF].appendChild(document.createElement("br"));
}

function nodeTreeMaak()
{
  if (this.Type === "f") // folder
  {
    Level = this.Level;
    if (VorigeItem === "f")
    {
      if (Level <= VorigeLevel)
      {
        for (var y = 0; y <= (VorigeLevel - Level); y++) { AF--; }
      }
    }
    else
    {
      if (Level <= VorigeLevel)
      {
        for (var y = 0; y <= (VorigeLevel - Level - 1); y++) { AF--; }
      }
    }
    KlikPath[this.Level - 1] = x;
    KlikNr = this.Level;
    this.KlikNr = KlikNr;
    for (var i = 0; i < KlikNr; i++)
    { this.KlikPath[i] = KlikPath[i]; }

    VorigeItem = "f";
    VorigeLevel = Level;
    Lijn[this.Level] = "true";
    this.FolderMaak();
  }
  else // item
  {
    Level = this.Level;
    if (VorigeItem === "f")
    {
      if (Level <= VorigeLevel )
      {
        for (var y = 0; y <= (VorigeLevel - Level - 2); y++) { AF--; }
      }
    }
    else
    {
      if (Level <= VorigeLevel )
      {
        for (var y = 0; y <= (VorigeLevel - Level - 1); y++) { AF--; }
      }
    }
    VorigeItem = "i";
    VorigeLevel = Level;
    this.ItemMaak();
  }
}

function OpenSpecial(OpenF)
{
  for (x = Node.length - 1; x > 0; x--)
  { if ((Node[x].Type == "f") && (Folders["node" + x].style.display == "block")) { OpenClose(x + ""); } }

  for (x = Node.length - 1; x > 0; x--)
  {
    if (Node[x].Type == "f")
    {
      OFNaam = Node[x].Naam;
      do {
        OFNaam = OFNaam.replace(" ","")
        OFNaam = OFNaam.replace("&","")
      } while (OFNaam.indexOf(" ") > -1);
      if (OFNaam == OpenF)
      {
        if (Node[x].Url != "") window.open(Node[x].Url, Node[x].Target);
        for (y = 1; y < Node[x].KlikNr; y++)
        { OpenClose(Node[x].KlikPath[y]); }
      }
    }
  }
}

function OpenClose(FolderNr)
{
  if (Folders["node" + FolderNr].style.display == "block")
  {
    Folders["node" + FolderNr].style.display = "none";
    Graphics["folderimg" + FolderNr].src = asfolderclosed.src;
    if (FolderNr != "0")
    {
      Plaatje = Graphics["nodeimg" + FolderNr].src;
      if (Plaatje.substr(Plaatje.length - 11, 11) == "asmnode.gif")
      { Graphics["nodeimg" + FolderNr].src = aspnode.src; }
      else
      { Graphics["nodeimg" + FolderNr].src = asplastnode.src; }
    }
  }
  else
  {
    Folders["node" + FolderNr].style.display = "block";
    Graphics["folderimg" + FolderNr].src = asfolderopen.src;
    if (FolderNr != "0")
    {
      Plaatje = Graphics["nodeimg" + FolderNr].src;
      if (Plaatje.substr(Plaatje.length - 11, 11) == "aspnode.gif")
      { Graphics["nodeimg" + FolderNr].src = asmnode.src; }
      else
      { Graphics["nodeimg" + FolderNr].src = asmlastnode.src; }
    }
  }
}

function ObjNode(Level, Naam, Target, Url, Type)
{
  this.Level = Level + "";
  this.Target = Target + "";
  this.Naam = Naam + "";
  this.Url = Url + "";
  this.Type = Type;
  this.KlikPath = new Array();
}
ObjNode.prototype.FolderMaak = nodeFolderMaak;
ObjNode.prototype.ItemMaak = nodeItemMaak;
ObjNode.prototype.TreeMaak = nodeTreeMaak;
ObjNode.prototype.CheckLastNode = nodeCheckLastNode;
ObjNode.prototype.CheckLine = nodeCheckLine;

function Initialize()
{
  ASTree = document.createElement("div");
  ASTree.className = "Astree";
  ActiveFolder[AF] = document.body.appendChild(ASTree);

  for (x = 0; x < Node.length; x++) { Node[x].TreeMaak(); }
  OpenClose("0");
  if (OF != "") { OpenSpecial(OF); }
}

function Folder()
{
  for (var x = 0; x < 4; x++) { if (arguments[x] == null) arguments[x] = ""; }
  Node.push(new ObjNode(arguments[0], arguments[1], arguments[2], arguments[3], "f"));
}

function Item()
{
  for (var x = 0; x < 4; x++) { if (arguments[x] == null) arguments[x] = ""; }
  Node.push(new ObjNode(arguments[0], arguments[2], arguments[1], arguments[3], "i"));
}
