// UJ
//amilyen mely egy megjeleno szint, vagyis az ikonok magassaga
var deep = 21;
var maxheight = 0;
var maxwidth = 0;
var maxlength = 0;
var title = '';
var footer = '';
var p_x = 0;
var saveState = false;

var ns4 = false;
if (document.all) {
    if(!document.getElementById) {
	document.getElementById = function(id) {
	    return document.all[id];
	}
    }
}
else if(!document.getElementById && !document.all) { 
    document.getElementById = function(id) {
	return document[id];
    }
} 
else if (parseFloat(navigator.appVersion) < 5) {
    ns4 = true;
    document.getElementById = function(id) {
	//	s = '.layers[\'player\'].layers[\'menu'+id+'\']';
	s = '.layers[\'player\'].layers[\'pplayer\'].layers[\'menu'+id+'\']';
	return eval("document"+s);
    }
}


function setSaveState (val) {
    saveState = val;
}

// /UJ

function changeMenu(id,imgid,img1,img2) {
    if (!ns4) {
	var tmpimg = new Image();
	if (document.getElementById(id)) {
	    if (document.getElementById(id).style.display=='block') {
		document.getElementById(id).style.display='none';
		tmpimg.src="/treeimages/"+img1;
	    } else {
		document.getElementById(id).style.display='block';
		tmpimg.src="/treeimages/"+img2;
	    }
	    document[imgid].src=tmpimg.src;
	}
	id = id.substring(4);//'menu'+divnumber -> divnumber 
    } else {
	var tmpimg = new Image();
	var divend = false;
	var show = true;
	if (document.getElementById(id)) {
	    if (document.getElementById(id).visibility=='show') {
		show = false;
		tmpimg.src="/treeimages/"+img1;
	    } else {
		tmpimg.src="/treeimages/"+img2;
	    }
	    document['tree'+imgid].src=tmpimg.src;
	}
	var div_to_show = indexDiv[id];
	for (var k=id; k<items.length && !divend; k++) {
	    if ((indexDiv[k] != div_to_show) && (diffs[k] < 0)) {
		divend = true;
	    } else {
		if (document.getElementById(k)) {
		    if (document.getElementById(k).visibility=='show') {
			document.getElementById(k).visibility='hide';
			//ha van gyereke, akkor kepcsere
			if (diffs[k+1] > 0) {
			    var tmp2 = new Image();
			    tmp2.src = "/treeimages/"+img1;
			    document["tree"+k].src=tmp2.src;
			} 
		    } else if (indexDiv[k] == div_to_show) {
			document.getElementById(k).visibility='show';
		    }
		} 
	    }
	}
	drawTree();
    }
    manageOpenIndexes(id);
}

var lastlevel = -1;
var maxlevel = 0;
var cnt=0;
var lasts = new Array();
var items = new Array();
var diffs = new Array();
var dots = new Array();
//ebben taroljuk feltolteskor veremszeruen az aktualis div-eket
var divStack = new Array();
var debug = "Ns4 is "+ns4+"\n";
debug += "Version: "+parseFloat(navigator.appVersion);
dots[-1]=new Array(); dots[-1][0]=0;
// melyik indexu item melyik div-en van
var indexDiv = new Array();
// melyik indexu izeket kell nyitva tartani
var openedIndex = new Array();

function addItem(level, type, linktext, link, stil, target, status, email) {
    items[cnt]=new Array();
    items[cnt][0]=level;
    items[cnt][1]=type;
    items[cnt][2]=linktext;
    items[cnt][3]=link;
    items[cnt][4]=stil;
    items[cnt][5]=target;
    items[cnt][6]=email;
    if (status && status == "active") {
	//    openedIndex.push(cnt);
	l = openedIndex.length;
	openedIndex[l] = cnt;
    }
    // a dots-ban tartjuk azt, hogy az i. szinten hol kell fugg. vonalat huzni
    dots[cnt]=new Array();
    for (var v=0; v<level; v++) {
	dots[cnt][v]=0;
    }
    // felfele vonal:
    for (var i=cnt-1; i>lasts[level]; i--) {
	if (dots[i][level]==0 || dots[i][level]==1) {
	    dots[i][level]=1;
	}
    }
    lasts[level]=cnt;
    if (level < lastlevel) {
	for (var t=0; t<lastlevel-level; t++) {
	    lasts[level+t]=cnt;
	}
    }
    
    //diffs
    if (lastlevel != -1) {
	diffs[cnt]=level-lastlevel;
    }
    lastlevel=level;
    if (level > maxlevel) {
	maxlevel = level;
    }
    if (items[cnt][2].length > maxlength) {
	maxlength = items[cnt][2].length;
    }
    cnt++;
}

function showTree() {
    maxheight = deep*items.length;
    maxwidth = deep*(maxlevel+1) + maxlength*7;
    if (ns4) {
	writeParentLayer();
    } else {
	writeTitle();
    }

  diffs[items.length]=0-diffs[items.length-1];
  //  alert(diffs);
  var dl = dots.length;
  for (var i=0; i<items.length; i++) {
      // write div if necessary
      if (ns4) { // for ns4, write always divs
	  if (items[i][0]==0) {
	      divStack[divStack.length] = i;
	      writeDiv(i,'treemenu');
	  } else if (diffs[i]>0) {
	      divStack[divStack.length] = i;
	      writeDiv(i,'treesub');
	  } else {
	      writeDiv(i,'treesub');
	  }
      } else {
	  if (items[i][0]==0) {
	      divStack[divStack.length] = i;
	      writeDiv(i,'treemenu');
	  } else if (diffs[i]>0) {
	      divStack[divStack.length] = i;
	      writeDiv(i,'treesub');
	  } 
      }
      indexDiv[indexDiv.length] = divStack[divStack.length-1];
      // write vdots
      for (var j=0; j<dots[i].length; j++) {
	  if (dots[i][j]==1) {
	      writeVdot();
	  } else {
	      writeSpacer();
	  }
      }
      // write the icons
      var firsticon, secondicon;
      if (items[i][1]=='folder') {
	  var fel=1; var le=1;
	  if (dots[i-1] && dots[i-1][items[i][0]] == 0) {
	      fel=0;
	  }
	  if ((dots[i+1] == null) || (dots[i+1][items[i][0]] == 0)) {
	      le=0;
	  }
	  if ((diffs.length > i+2) && (diffs[i+1]>0)) {
	      firsticon='closed'+fel+le;
	      secondicon='open'+fel+le;
	  } else {
	      if (diffs[i+1]<0) {
		  le=0;
	      }
	      firsticon='emptyfolder'+fel+le;
	      secondicon='emptyfolder'+fel+le;
	  }
	  //} else if (items[i][1]=='item') {
      } else {
	  var fel=1; var le=0;
	  if (items[i+1] && items[i+1][0] == items[i][0]) {
	      le = 1;
	  }
	  //firsticon='file'+fel+le;
	  firsticon=items[i][1]+fel+le;
	  //secondicon='file'+fel+le;
	  secondicon=items[i][1]+fel+le;
      } //else {
      // firsticon='spacer';
      //  secondicon='spacer';
      //}
      writeIconLink(i+1, i, firsticon, secondicon);
      writeItemLink(items[i][2],items[i][3],items[i][4],items[i][5],items[i][6]);

      // close divs
      if (ns4) { //for ns4, close always
	  writepDiv();
	  if (diffs[i+1]<0) {
	      for (var r=diffs[i+1]; r<0; r++) {
		  divStack.length--;
	      }
	  }
      } else {
	  if (items[i][0]==0) {
	      writepDiv();
	  } else if (diffs[i+1]<0) {
	      for (var r=diffs[i+1]; r<0; r++) {
		  writepDiv();
		  divStack.length--;
	      }
	  }
      }
  }
  if (ns4) {
      writeParentLayerEnd();
  } else {
      writeFooter();
  }

  //  alert(debug);
  openIndexes();
  //  document.forms[1].elements[0].value=debug;
}

// UJ

function writeDiv(_id, _class) {
    if (ns4) {
	if (_id >= 0 && _class.length > 0) {
	    document.write('<layer TOP='+0+' LEFT='+0+' id="menu'+_id+'" class="'+_class+'" visibility="hide" z-index=1>\n');
	    debug+='<layer TOP='+0+' LEFT='+0+' id="menu'+_id+'" class="'+_class+'" visibility="hide">\n';
	} else if (_id >= 0) {
	    document.write('<layer TOP='+0+' LEFT='+0+' id="'+_id+'" visibility="hide" z-index=1>\n');
	    debug+='<layer TOP='+0+' LEFT='+0+' id="'+_id+'" visibility="hide" z-index=1>\n';
	} else {
	    document.write('<layer TOP='+0+' LEFT='+0+' visibility="hide" z-index=1>\n');
	    debug+='<layer TOP='+0+' LEFT='+0+' visibility="hide">\n';
	}
    } else {
	if (_id >= 0 && _class.length > 0) {
	    document.write('<div id="menu'+_id+'" class="'+_class+'">\n');
	    debug+='<div id="menu'+_id+'" class="'+_class+'">\n';
	} else if (_id >= 0) {
	    document.write('<div id="'+_id+'">\n');
	    debug+='<div id="'+_id+'">\n';
	} else {
	    document.write('<div>\n');
	    debug+='<div>\n';
	}
    }
}

function writepDiv() {
    if (ns4) {
	document.write('</layer>\n');
	debug+='</layer>\n';
    } else {
	document.write('</div>\n');
	debug+='</div>\n';
    }
}
// /UJ

function writeIconLink(_nextdiv, _cnt, _closed, _open) {
 if (_closed != _open) {
     if ((diffs.length > _cnt+2) && (diffs[_cnt+1]>0)) {
	 if (!ns4) {
	     document.write('<a href=\"\" onClick="changeMenu(\'menu'+_nextdiv+'\',\'tree'+_cnt+'\',\''+_closed+'.gif\',\''+_open+'.gif\'); return false;">' + '<img src="/treeimages/'+_closed+'.gif" border="0" alt="" width="33" height="21" align="middle" hspace="0" vspace="0" name="tree'+_cnt+'" id="tree'+_cnt+'">' + '</a>\n');
	     debug+='<a href=\"\" onClick="changeMenu(\'menu'+_nextdiv+'\',\'tree'+_cnt+'\',\''+_closed+'.gif\',\''+_open+'.gif\'); return false;">' + '<img src="/treeimages/'+_closed+'.gif" border="0" alt="" width="33" height="21" align="middle" hspace="0" vspace="0" name="tree'+_cnt+'" id="tree'+_cnt+'">' +
'</a>\n';
  	 } else {
  	     var onclick = "changeMenu("+_nextdiv+","+_cnt+",\""+_closed+".gif\",\""+_open+".gif\")";
  	     document.write('<a href=\"\" onClick=\''+onclick+'; return false;\'>' + '<img src="/treeimages/'+_closed+'.gif" border="0" alt="" width="33" height="21" align="middle" hspace="0" vspace="0" name="tree'+_cnt+'" id="tree'+_cnt+'">' + '</a>\n');
  	 }
     } else {
	 document.write('<img src="/treeimages/'+_closed+'.gif" border="0" alt="" width="33" height="21" align="middle" hspace="0" vspace="0" name="tree'+_cnt+'" id="tree'+_cnt+'">\n');
	 debug+='<img src="/treeimages/'+_closed+'.gif" border="0" alt="" width="33" height="21" align="middle" hspace="0" vspace="0" name="tree'+_cnt+'" id="tree'+_cnt+'">\n';
     }
 } else {
     document.write('<img src="/treeimages/'+_closed+'.gif" border="0" alt="" width="33" height="21" align="middle" hspace="0" vspace="0" name="tree'+_cnt+'" id="tree'+_cnt+'">\n');
 }
}

function writeItemLink(_linktext, _link, _stil, _target, _email) {
 var emailstring = '';
 if (_email && _email.length>0) {
    var emailimg = _email.replace(/@/,"=");
    emailstring = ' <a class="treemenu2" href="mailto:'+_email+'?subject=&uuml;gyf&eacute;lmegkeres&eacute;s honlapr&oacute;l"><img src="/img/eml/'+emailimg+'.gif" border="0" alt="'+_email+'"></a>';
 }
 if (_target && _target.length>0) {
   _target=' target="'+_target+'"';
 }
// ha nincs ertelmes link, akkor ne is legyen!
 if ( _link == './?kep=' ) {
    _link = '';
 }
 if (_link && _link.length>0) {
     if (saveState) {
	 var onclickstring = 'showLink(\"'+_link+'\");return false;';
         document.write('<a href="" onclick=\''+onclickstring+'\' class="'+_stil+'"'+_target+'>'+_linktext+'</a>'+emailstring+'<br>');
     } else {
	 document.write('<a href="'+_link+'" class="'+_stil+'"'+_target+'>'+_linktext+'</a>'+emailstring+'<br>');
     }
 } else {
 document.write('<span class="'+_stil+'">'+_linktext+'</span>'+emailstring+'<br>');
 }
 debug+="\n******** "+_linktext+" ********\n";
}

function writeVdot() {
  document.write('<img src="/treeimages/vdots.gif" border="0" alt="" width="20" height="21" align="middle" hspace="0" vspace="0">');
}
function writeSpacer() {
  document.write('<img src="/treeimages/spacer.gif" border="0" alt="" width="20" height="21" align="middle" hspace="0" vspace="0">');
}

function openIndexes() {
    if (ns4) {
	for (var l=0; l<items.length; l++) {
	    if (items[l][0] == 0) {
		if (document.getElementById(l)) {
		    document.getElementById(l).visibility="show";
		}
	    } else if (document.getElementById(l)) {
		document.getElementById(l).visibility="hide";
	    }
	}
    }
    for (j=openedIndex.length-1; j >= 0; j--) {
	var aktindex = openedIndex[j];
	var aktdiv = indexDiv[aktindex];
	var divend = false;
	// UJ
	if (ns4) {
	    //document.getElementById(aktindex).visibility="show";
	    //ns eseteben az osszes tobbit is meg kell meg mutatni, akik
	    //uazon a diven vannak
  	    for (var i=0; i<items.length; i++) {
		if (indexDiv[i] == aktdiv) {
  		    document.getElementById(i).visibility="show";
  		}
  	    }
	} else {
	    document.getElementById("menu"+aktdiv).style.display='block';
	}
	// /UJ
	//kinyitjuk a felette levoket is es kepcsere a felette levo konyvtaraknal
	if (aktindex>0) {
	    var top = false;
	    for (var k=aktindex-1; (k>=0 && !top); k--) {
		if (indexDiv[k]<aktdiv) {
		    aktdiv = indexDiv[k];
		    if (items[k][0]<=items[aktindex][0]) {
		      // UJ
			if (ns4) {
			    var div_to_show = indexDiv[k];
			    for (var l=0; l<items.length; l++) {
				if (document.getElementById(l) 
				    && indexDiv[l] == div_to_show) {
				    document.getElementById(l).
					visibility='show';
				} 
			    }
			} else {
			    document.getElementById("menu"+aktdiv).style.display='block';			      
			}
			// /UJ
			if (items[k][0]<items[aktindex][0]) {
			    //kepcsere
			    aktindex = k;
			    var imgid = "tree"+k;
			    var tmpimg = new Image();
			    var up=1;down=1;
			    if (dots[k-1] && (dots[k-1][items[k][0]] == 0)) {
				up=0;
			    }
			    if (dots[k+1] && dots[k+1][items[k][0]] == 0) {
				down=0;
			    }
			    tmpimg.src="/treeimages/open"+up+down+".gif";
			    document[imgid].src=tmpimg.src;
			}
			if (items[k][0]==0) {
			    //elertunk a tetejere
			    top = true;
			}
		    } else if (items[k][0]==0) {
			//elertunk a tetejere
			top = true;
		    }
		}
	    }      
	}
    }
    //fix layer positions for ns4
    if (ns4) {
	drawTree();
    } else {
	manageAllIndexes();
    }
}

//only for navigators like netscape4 and earlier versions
function drawTree() {
    document.layers['player'].visibility='hide';
    document.layers['player'].moveTo(60,230);
    var pos = 30;
    for (var i=0; i<items.length; i++) {
	if (document.getElementById(i).visibility 
	    == "show") {
	    document.getElementById(i).top = pos;
	    document.getElementById(i).left = p_x;
	    pos += deep;
	}
    }
    //    document.layers['player'].resizeBy(0,pos-maxheight);
    //document.layers['player'].layers['pplayer'].resizeBy(0,pos-maxheight);
    //maxheight = pos;
    document.layers['player'].visibility='show';
    //    document.cntd.height = maxheight;
}

function showLink(_link) {
    var copy = _link;
    var copy2 = _link;
    var regexp = /testulet|organigram/;
    if (copy2.match(regexp)) {
    	_link += "";
    } else if ((copy =~ /\?/)) {
	for (var i=0; i<openedIndex.length; i++) {
	    _link += "&openIndex="+openedIndex[i];
	} 
    } else if (openedIndex.length > 0) {
	_link += "?";
	for (var i=0; i<openedIndex.length; i++) {
	    _link += "openIndex="+openedIndex[i];
	    if (i != openedIndex.length-1) {
		_link += "&";
	    }
	} 
    }
    window.location = _link;
}

function manageOpenIndexes(opind) {
    var l = 0;
    if (ns4) {
	openedIndex = new Array();
	for (var i=0; i<items.length; i++) {
	    if (document.getElementById(i).visibility == 'show') {
		openedIndex[l] = i;
		l++;
	    }
	}
    } else {
	if (document.getElementById('menu'+opind) && 
	    document.getElementById('menu'+opind).style.display 
	    == 'block') {
	    openedIndex[openedIndex.length] = opind;
	}   else {
  	    var closeid = 0;
  	    var found = false;
  	    for (i=0; i<openedIndex.length && !found; i++) {
  		if (openedIndex[i] == opind) {
  		    found = true;
  		    closeid = i;
  		}
  	    }
  	    if (found) { //remove former opened index
		openedIndex.splice(closeid,1);
  	    }
  	}
    }

}

//only for !ns4 
function manageAllIndexes() {
    var l = 0;
    // items.length() replaced by items.length --BenPeti/Arpi 2003/10/09
    for (i=0; i<items.length; i++) {
	if (document.getElementById("menu"+i) && 
	    document.getElementById("menu"+i).style.display 
	    == 'block') {
	    openedIndex[l] = i;
	    l++;
	}
    }

}

//only for ns4, 
function getId(_aktdiv, _aktindex) {
    //faszerkezetnek megfelelo tomb osszeallitasa
    var fid = new Array();
    var _id = new Array();
    var index = 0;
    fid[index] = _aktdiv;
    var rundiv = _aktdiv;
    var runlevel = items[_aktindex][0];
    var runindex = _aktindex-1;
    while (runlevel > 1 && runindex >= 0) {
	if (items[runindex][0] < runlevel) {
	    rundiv = indexDiv[runindex];
	    runlevel = items[runindex][0];
	    index++;
	    fid[index] = rundiv;
	}
	runindex--;
    }
    for (i=fid.length-1; i>=0; i--) {
	_id[fid.length-i-1] = fid[i];
    }
    return _id;
}

function inArray(array,item) {
    var found = false;
    for (ind=0; (ind<array.length && !found); ind++) {
	if (item == array[ind]) {
	    found = true;
	}
    }
    return found;
}

function writeParentLayer() {
    var mh = maxheight+40;
    document.write('<layer id="player" height='+mh+' visibility="show" background="/images/tbg.gif">\n');
    document.write('<layer id="pplayer"  height='+mh+' visibility="show" z-index=1>\n');
    document.write(title);
}

function writeParentLayerEnd() {
    document.write(footer);
    document.write('</layer>\n');
    document.write('</layer>\n');
}

function writeTitle() {
    document.write(title);
}

function writeFooter() {
    document.write(footer);
}

function setTitle(t) {
    title = t;
}

function setFooter(t) {
    footer = t;
}

function setLayerX(x) {
    p_x = x;
}


