// tablica nodes i ikon
var nodes              = new Array();
var openNodes          = new Array();
var icons              = new Array(6);


// zaladuj wszystkie ikony ktore sa uzywane w drzewie
function preloadIcons() {
       icons[0] = new Image();
       icons[0].src = "./search/img/plus.gif";
       icons[1] = new Image();
       icons[1].src = "./search/img/plusbottom.gif";
       icons[2] = new Image();
       icons[2].src = "./search/img/minus.gif";
       icons[3] = new Image();
       icons[3].src = "./search/img/minusbottom.gif";
       icons[4] = new Image();
       icons[4].src = "./search/img/folder.gif";
       icons[5] = new Image();
       icons[5].src = "./search/img/folderopen.gif";
}
// tworzenie drzewka
function createTree(arrName, startNode, openNode) {
       nodes = arrName;

       if (nodes.length > 0) {
              preloadIcons();
              if (startNode == null) startNode = 0;
              if (openNode != 0 || openNode != null) setOpenNodes(openNode);
       
              if (startNode !=0) {
                     var nodeValues = nodes[getArrayId(startNode)].split("|");
                     document.write("<a href=\"" + nodeValues[3] + "\" onmouseover=\"window.status='" + nodeValues[2] + "';return true;\" onmouseout=\"window.status=' ';return true;\"><img src=\"./search/img/folderopen.gif\" align=\"absbottom\" alt=\"\" border=0 />" + nodeValues[2] + "</a><br />");
              } 
       
              var recursedNodes = new Array();
              addNode(startNode, recursedNodes);
       }
}
// zwraca pozycje w tablicy
function getArrayId(node) {
       for (i=0; i<nodes.length; i++) {
              var nodeValues = nodes[i].split("|");
              if (nodeValues[0]==node) return i;
       }
}
// wybor rozwiniecia
function setOpenNodes(openNode) {
       for (i=0; i<nodes.length; i++) {
            // return;
              var nodeValues = nodes[i].split("|");
              if (nodeValues[0]==openNode) {
                     openNodes.push(nodeValues[0]);
                     setOpenNodes(nodeValues[1]);
              }
       } 
}
// sprawdz czy node jest rozwiniety
function isNodeOpen(node) {
       for (i=0; i<openNodes.length; i++)
              if (openNodes[i]==node) return true;
       return false;
}
// sprawdz czy node maja dziecie
function hasChildNode(parentNode) {
       for (i=0; i< nodes.length; i++) {
              var nodeValues = nodes[i].split("|");
              if (nodeValues[1] == parentNode) return true;
       }
       return false;
}
// sprawdz czy node jest ostatni
function lastSibling (node, parentNode) {
       var lastChild = 0;
       for (i=0; i< nodes.length; i++) {
              var nodeValues = nodes[i].split("|");
              if (nodeValues[1] == parentNode)
                     lastChild = nodeValues[0];
       }
       if (lastChild==node) return true;
       return false;
}
// dodah nowy none do drzewa
function addNode(parentNode, recursedNodes) {
       for (var i = 0; i < nodes.length; i++) {

              var nodeValues = nodes[i].split("|");
              if (nodeValues[1] == parentNode) {
                     
                     var ls       = lastSibling(nodeValues[0], nodeValues[1]);
                     var hcn       = hasChildNode(nodeValues[0]);
                     var ino = isNodeOpen(nodeValues[0]);

                     // wyswietl linie
                     for (g=0; g<recursedNodes.length; g++) {
                            if (recursedNodes[g] == 1) document.write("<img src=\"./search/img/line.gif\" align=\"absbottom\" alt=\"\" border=0 />");
                            else  document.write("<img src=\"./search/img/empty.gif\" align=\"absbottom\" alt=\"\" />");
                     }

                     //  wsadz do tablicy 
                     if (ls) recursedNodes.push(0);
                     else recursedNodes.push(1);

                     // wyswietl ikonki
                     if (hcn) {
                            if (ls) {
                                   document.write("<a href=\"javascript: oc(" + nodeValues[0] + ", 1);\"><img id=\"join" + nodeValues[0] + "\" border=0 src=\"./search/img/");
                                           if (ino) document.write("minus");
                                          else document.write("plus");
                                   document.write(".gif\" align=\"absbottom\" alt=\"Rozwiń , Zwiń\" /></a>");
                            } else {
                                   document.write("<a href=\"javascript: oc(" + nodeValues[0] + ", 0);\"><img id=\"join" + nodeValues[0] + "\"  border=0 src=\"./search/img/");
                                          if (ino) document.write("minus");
                                          else document.write("plus");
                                   document.write(".gif\" align=\"absbottom\" alt=\"Rozwiń , Zwiń\" /></a>");
                            }
                     } else {
                            if (ls) document.write("<img src=\"./search/img/join.gif\" align=\"absbottom\" alt=\"\" />");
                            else document.write("<img src=\"./search/img/joinbottom.gif\" align=\"absbottom\" alt=\"\" />");
                     }

                     // Start link
                     //document.write("<a href=\"" + nodeValues[4] + "\" onmouseover=\"window.status='" + nodeValues[2] + "';return true;\" onmouseout=\"window.status=' ';return true;\">");
                     
                     // wyswietl folder i ikonke
                     if (hcn) {
                            document.write("<img id=\"icon" + nodeValues[0] + "\" src=\"./search/img/folder")
                                   if (ino) document.write("open");
                            document.write(".gif\" align=\"absbottom\" alt=\"Folder\" />");
                     } else document.write("<img id=\"icon" + nodeValues[0] + "\" src=\"./search/img/page.gif\" align=\"absbottom\" alt=\"Page\" />");
                     
                     // wyswietl opis node
                     document.write(nodeValues[2]);

                     // koniec linku
                     //document.write("</a><br />");
                     document.write("<br />");
                     
                     // jezeli node maja dzieci 
                     if (hcn) {
                            document.write("<div id=\"div" + nodeValues[0] + "\"");
                                   if (!ino) document.write(" style=\"display: none;\"");
                            document.write(">");
                            addNode(nodeValues[0], recursedNodes);
                            document.write("</div>");
                     }
                     
                     // usun pusta lub ostania linie
                     recursedNodes.pop();
              }
       }
}
// otworz lub zamnij node
function oc(node, bottom) {
       var theDiv = document.getElementById("div" + node);
       var theJoin       = document.getElementById("join" + node);
       var theIcon = document.getElementById("icon" + node);
       
       if (theDiv.style.display == 'none') {
              if (bottom==1) theJoin.src = icons[3].src;
              else theJoin.src = icons[2].src;
              theIcon.src = icons[5].src;
              theDiv.style.display = '';
       } else {
              if (bottom==1) theJoin.src = icons[1].src;
              else theJoin.src = icons[0].src;
              theIcon.src = icons[4].src;
              theDiv.style.display = 'none';
       }

}

if(!Array.prototype.push) {
       function array_push() {
              for(var i=0;i<arguments.length;i++)
                     this[this.length]=arguments[i];
              return this.length;
       }
       Array.prototype.push = array_push;
}
if(!Array.prototype.pop) {
       function array_pop(){
              lastElement = this[this.length-1];
              this.length = Math.max(this.length-1,0);
              return lastElement;
       }
       Array.prototype.pop = array_pop;
}

