/**************************************************************************
	Copyright (c) 2001 Geir Landrö (drop@destroydrop.com)
	JavaScript Tree - www.destroydrop.com/hugi/javascript/tree/
	Version 0.96	

	This script can be used freely as long as all copyright messages are
	intact.
**************************************************************************/

// Arrays for nodes and icons
var nodes		  = new Array();;
var openNodes	= new Array();
var icons		  = new Array(6);
var elozo		  = new Object();
var volt		  = false;
var voltmar   = new Array();
var elozoobj  = new Object();
var aktobj    = new Object();
var mmobj			= new Object();
var kinyit;
var magassag2;


// Loads all icons that are used in the tree
function preloadIcons() 
  {
  icons[0] = new Image();
  icons[0].src = "img/plusz.gif";
  icons[1] = new Image();
  icons[1].src = "img/plusbottom.gif";
  icons[2] = new Image();
  icons[2].src = "img/minusz.gif";
  icons[3] = new Image();
  icons[3].src = "img/minusbottom.gif";
  icons[4] = new Image();
  icons[4].src = "img/folder.gif";
  icons[5] = new Image();
  icons[5].src = "img/folderopen.gif";
  }

// Create the tree
function createTree(arrName, startNode, openNode, jmagassag) 
  {
  nodes = arrName;
  kinyit=openNode;
  magassag2=jmagassag;
  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("|");
	    if (nodeValues[3].length!="")
	      {
	      //document.l.menu_link.value='" + nodeValues[3] + "';\"
				document.write("<table cellpadding=0 cellspacing=0 border=1 ondblclick=\"oc(" + nodeValues[0] + ", 0);\" onmouseover=\"window.status='" + nodeValues[2] + "';return true;\" onmouseout=\"window.status=' ';return true;\"><tr><td>");
 	      document.write(nodeValues[2]+"222");
				document.write("</td></tr></table>");
  	  	}
  	  else
 	     document.write(nodeValues[2]);
	   } 
	  //else 
	  //document.write("<img src=\"img/base.gif\" align=\"absbottom\" alt=\"\" />Menürendszer<br />");
	  var recursedNodes = new Array();
	  addNode(startNode, recursedNodes);
    
    //raall(openNode);
    
    }
  }

// Returns the position of a node in the array
function getArrayId(node) 
  {
  for (i=0; i<nodes.length; i++) 
    {
	var nodeValues = nodes[i].split("|");
	if (nodeValues[0]==node) 
	  return i;
	}
  }

// Puts in array nodes that will be open
function setOpenNodes(openNode) 
  {
  for (i=0; i<nodes.length; i++) 
    {
    var nodeValues = nodes[i].split("|");
		if (nodeValues[0]==openNode) 
	  	{
	 	 openNodes.push(nodeValues[0]);
	 	 setOpenNodes(nodeValues[1]);
	 	 }
		} 
  }

// Checks if a node is open
function isNodeOpen(node) 
  {
  for (i=0; i<openNodes.length; i++)
    if (openNodes[i]==node) 
	  return true;
  return false;
  }

// Checks if a node has any children
function hasChildNode(parentNode) 
  {
  //alert(parentNode);
  for (i=0; i< nodes.length; i++) 
    {
	var nodeValues = nodes[i].split("|");
	if (nodeValues[1] == parentNode) 
	  return true;
	}
  return false;
  }

// Checks if a node is the last sibling
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;
  }

// Adds a new node in the tree
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]);

		  // Write out line & empty icons
			mnev="tabla"+nodeValues[0];
			if (kinyit==nodeValues[0])
				document.write("<table id="+mnev+" cellpadding=0 cellspacing=0 width=248 class=kiemelt_tabla onclick=\"javascript: kijelol(this); \" onmouseover=\"javascript: this.className= 'keretes';\" onmouseout=\"javascript: this.className= 'kiemelt_tabla';\" style='cursor:hand'><tr height=20>");
			else
				document.write("<table id="+mnev+" cellpadding=0 cellspacing=0 width=248 class=nemkeretes onclick=\"javascript: kijelol(this); \" onmouseover=\"javascript: this.className= 'keretes';\" onmouseout=\"javascript: this.className= 'nemkeretes';\" style='cursor:hand'><tr height=20>");
 		  szeles=12;
			
 		  for (g=0; g<recursedNodes.length; g++) 
	  	  {
				if (recursedNodes[g] == 1)
				  szeles+=20;
				else  
				  szeles+=20;
				}
	 		// put in array line & empty icons
			document.write("<td class=menu1 width="+szeles+" aling=right>");
	  	if (ls) 
	    	recursedNodes.push(0);
	  	else 
	    	recursedNodes.push(1);
	 		// Write out join icons
		  if (hcn) 
		    {
				if (ls) 
		  		{
		  		document.write("<img id=\"join" + nodeValues[0] + "\" src=\"img/");
		  		//alert(nodeValues[0]);
			  	if (ino)
			    	document.write("minusz");
			  	else
			    	document.write("plusz");
				  document.write(".gif\" width=11 height=11 align=\"right\" alt=\"Nyitás-zárás\" onclick=\"javascript: oc(" + nodeValues[0] + ", 0);\" /></a>");
			  	} 
				else 
			  	{
		  		document.write("<img id=\"join" + nodeValues[0] + "\" src=\"img/");
				  if (ino) 
			  	  document.write("minusz");
			  	else 
			    	document.write("plusz");
			  	document.write(".gif\" width=11 height=11 align=\"right\" alt=\"Nyitás-zárás\" onclick=\"javascript: oc(" + nodeValues[0] + ", 0);\" /></a>");
		  		}
		    } 
		  else 
	  	  {
				document.write("<img src=img/ures.gif width=11 height=11 align=right style='cursor:default' >");
				}
      document.write("</td>");

//eredeti helye a kiírásnak
		  if (nodeValues[3].length!="" && hcn)
	  	  {
	 	    document.write("<td width=160 align=left onmouseover=\"window.status='" + nodeValues[2] + "';return true;\" onmouseout=\"window.status=' ';return true;\" class=td1>");
		    document.write("<a href=\"javascript:oc(" + nodeValues[0] + ", 0);document.l.menu_link.value='" + nodeValues[0] + "';document.l.submit();\">");
		    document.write(nodeValues[2]);
	  	  document.write("</a></td>");
        }
      else if (nodeValues[3].length!="" && !hcn)
	  	  {
	 	    document.write("<td width=160 onmouseover=\"window.status='" + nodeValues[2] + "';return true;\" onmouseout=\"window.status=' ';return true;\"  class=td1>");
	 	    document.write("<a href=\"javascript:document.l.menu_link.value=" + nodeValues[0] + ";document.l.submit();\">");
		    document.write(nodeValues[2]);
	  	  document.write("</a></td>");
        }
		  else
		    document.write(nodeValues[2]);

  		document.write("</td></tr></table>");
			mk=0;
/*			if (kinyit==nodeValues[0])
			  mk=1;
  		eval("hatter('"+mnev+"',"+mk+");");*/
			
	  	if (hcn) 
		    {
				document.write("<div id=\"div" + nodeValues[0] + "\"");
				//alert("div-"+nodeValues[0]);
				if (!ino) 
				  document.write(" style=\"display: none;\"");
				document.write(">");
				addNode(nodeValues[0], recursedNodes);
				document.write("</div>");
				}
		  recursedNodes.pop();
		  
		  }
		}
  }

// Opens or closes a 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[2].src;
		else 
	  	theJoin.src = icons[2].src;
		theDiv.style.display = '';
		} 
  else 
    {
		if (bottom==1) 
	  	theJoin.src = icons[0].src;
		else 
	  	theJoin.src = icons[0].src;
		theDiv.style.display = 'none';
		}
  }

// Push and pop not implemented in IE(crap!    don´t know about NS though)
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;
  }

function fixmenu(menu, start, nyit)
  {
  var behuz=0;
  document.write("<table>");
  for (i=0;i<menu.length;i++)	
  	{
  	var elemek = menu[i].split("|");
  	var mmid = elemek[0];
  	var kell=1;
  	k=0;
  	while (k<voltmar.length && kell!=0)
  	  {
  	  if (voltmar[k]==mmid)
  	    kell=0;
  	  k++;
  	  }
  	voltmar[voltmar.length+1]=mmid;  
  	if (kell==1)
  	  {  
  	  var mLink = elemek[0];
  	  var mSzoveg = elemek[2];
  	  document.write("<tr><td>");
  	  if (mLink.length!=0)
  	    document.write("<a href=\"javascript:document.l.menu_link.value='"+mLink+"';document.l.submit();\" onmouseover='window.status=' class=menu>");
  	  document.write(mSzoveg);
  	  if (mLink.length!=0)
  	    document.write("</a>");
   	  document.write("</td></tr>")	
   	  gyerek(menu,mmid,behuz+1);
   	  }  
    }
  document.write("</table>");
  }

function gyerek(menu,felettes, behuz)
  {
  var ll;
  for (ll=0;ll<menu.length;ll++)
    {
  	var elemek = menu[ll].split("|");
    if (elemek[1]==felettes)
      {
	  	var mmid = elemek[0];
  		var kell=1;
  		k=0;
  		while (k<voltmar.length && kell!=0)
  	  	{
  	  	if (voltmar[k]==mmid)
  	    	kell=0;
  	  	k++;
  	  	}
  		voltmar[voltmar.length+1]=mmid;  
  		if (kell==1)
  	  	{  
  	  	var mLink = elemek[0];
  	  	var mSzoveg = elemek[2];
  	  	document.write("<tr><td>");
  	  	if (mLink.length!=0)
  	    	document.write("<a href=\"javascript:document.l.menu_link.value='"+mLink+"';document.l.submit();\" onmouseover='window.status=' class=menu>");
  	  	for (lk=0;lk<behuz;lk++)
  	  	  document.write("&nbsp;&nbsp;&nbsp;&nbsp;");
  	  	document.write(mSzoveg);
  	  	if (mLink.length!=0)
	  	    document.write("</a>");
	   	  document.write("</td></tr>")	
    	  gyerek(menu,mmid, behuz+1);
   	  	}
      }
    }	
  }
  
