
 	var actual_element_id = new Array(); 
 
	var actual_tree_offset_rech = new Array(); 
 
    var rech_stack = new Array(); 
    var rech_map = new Array();
    var rech_close_map = new Array();
    
    var tree_rech_prefixes_added = new Array();
    
    var tree_content_store = new Array();


	function build_rech_tree(){
		actual_element_id[actual_tree_number] = 0;
		
		actual_tree_offset_rech[actual_tree_number] = 0;	
	
	    rech_stack[actual_tree_number] = new Object(); 
	    rech_map[actual_tree_number] = new Array();
	    rech_close_map[actual_tree_number] = new Object();
	
		//pos_highlighted = -1;

		document.getElementById('tree_rech').innerHTML = str_replace("tree_root", "tree_root_"+actual_tree_number, tree_content_sav)

		init_tree_rech(actual_tree_number, false);
	}
	
	function rebuild_rech_tree(){
		//pos_highlighted = -1;

		document.getElementById('tree_rech').innerHTML = tree_content_store[actual_tree_number];
		
		//init_tree_rech(actual_tree_number, true);
	}
	
    function init_tree_rech(rech_result_number, prefix_added){

		//array mit allen Baumzeilen
		var elements = document.getElementById("tree_root_"+rech_result_number).getElementsByTagName('div');
		
		var begin_tag = "<div>";
		var end_tag = "</div>";
		
		var i;
		var j=0;
		
		var one_element_content;
		
		var last_actual_element_id = "";

    	for(i=0; i < elements.length; i++){	
    		one_element_content = elements[i].innerHTML;
    
			if(one_element_content!="" && one_element_content.indexOf("list_up")==-1 && one_element_content.indexOf("list_down")==-1){
				var new_id = one_element_content.substring(one_element_content.indexOf('id=')+3, one_element_content.length);
	
				new_id = new_id.substring(0, new_id.indexOf(" "));
				new_id = new_id.replace("\"",""); 
				new_id = new_id.replace("\"","");
				
				if(prefix_added && new_id.split("*")[1]){
					new_id = new_id.split("*")[1];
				}
	
				rech_map[rech_result_number][j] = new_id;
	
				rech_stack[rech_result_number][new_id] = one_element_content;
	
				//jede Baumzeile erh?lt zugewiesen: ihren Nachfolger in geschlossenem Zustand 
				if(last_actual_element_id != "" && last_actual_element_id.indexOf("a_")==-1){
					rech_close_map[rech_result_number][last_actual_element_id] = new_id;
				}
	
				last_actual_element_id = new_id;
				j++;
			}
    	}
    	
    	fill_tree_rech(rech_result_number);
    	
    	switch_trees();
    }
    
    function fill_tree_rech(rech_result_number){
    	do_fill_tree_rech(rech_result_number);

	    //adjust_slider_tree();
    }
    
    function do_fill_tree_rech(rech_result_number){
 
	    var i;	    
	    var j;
	    
	    var prefixes_added;
	   /* 
	    if(tree_rech_prefixes_added[rech_result_number]){
	    	prefixes_added = tree_rech_prefixes_added[rech_result_number];
	    	prefixes_added = false;
	    }
	    else{
	    	prefixes_added = false;	
	    }
	  */  
	    prefixes_added = false;

	    // tree_length: angezeigte L?nge des Baumes
	    tree_length = rech_map[rech_result_number].length;	   	    
	    if (tree_length > tree_max_length){ 
	    	tree_length = tree_max_length;
	    }
	    
	
	    //highlighted-Zeile muss immer sichtbar sein!
	    if(pos_highlighted != -1){
	    	actual_tree_offset_rech[rech_result_number] = pos_highlighted-(tree_max_length-2);
	    	if(actual_tree_offset_rech[rech_result_number]<0){
				actual_tree_offset_rech[rech_result_number]=0;
	    	}
	    }

		tree_entry_max_chars_sav = 4;//minimalste L?nge
	    	      
	    //*************** 1. Schritt: Baumzeilen anlegen
	    
	    //alle Baumelemente befinden sich in 'tree_root' (=Archivnamen-anzeige)
	    var root_element = document.getElementById("tree_root_"+rech_result_number);
	    
	    //alte Baumelemente ignorieren
	    var new_innerHTML = root_element.innerHTML.substring(0,root_element.innerHTML.indexOf("<div"));
	  	    
	    //Sonderfall f?r den IE, der den Quellcode nicht korrekt zur?ckgibt (Case-Sensitivity!)
	    if(new_innerHTML=="") new_innerHTML = root_element.innerHTML.substring(0,root_element.innerHTML.indexOf("<DIV"));

	    var _temp = new_innerHTML.substring(0,new_innerHTML.lastIndexOf("</a"));
	    
	    //Sonderfall f?r den IE
	    if(_temp=="") _temp = new_innerHTML.substring(0,new_innerHTML.lastIndexOf("</A"));

	    var last_close_pos = _temp.lastIndexOf(">");
		_temp = _temp.substring(last_close_pos+1); 
		
		var last_br_pos = 0;
		var _end = "";
		
		if(_temp.length > tree_entry_max_chars) _temp = _temp.substr(0,tree_entry_max_chars-5)+"(...)";//
			
	    new_innerHTML = new_innerHTML.substring(0,last_close_pos+1)+_temp +"</a>";

	    //Anzahl der anzuzeigenden Baumzeilen
	    j=0;
	    
	    if(actual_tree_offset_rech[rech_result_number] > 0){
	        j++;
	    }
	    
	    if ((rech_map[rech_result_number].length - actual_tree_offset_rech[rech_result_number]) > tree_max_length){ 
	    	j++;
	    }
	    
	    //ein div-element pro baumzeile anlegen
	    for(i=0; i<tree_length+j; i++){
	    	new_innerHTML += "<div></div>";
	    }
	    
	    root_element.innerHTML = new_innerHTML;	
	    
	    //*************** 2. Schritt: Baumzeilen f?llen

	    //array mit den leeren "neuen" baumzeilen
	    var elements = document.getElementById('tree_root_'+rech_result_number).getElementsByTagName("div");

	    if(actual_tree_offset_rech[rech_result_number] > 0){
	        elements[0].innerHTML = "<a id='list_up' onmouseup='return false;' onmousedown='return false;' onmouseout='setMouseOverListUp(false);' onmouseover='setMouseOverListUp(true);'><img src='../icons/list_up.gif' /></a>";
	        j=1;
	    }
	    else j=0;

	    var _inner;
	    var _inner_display;
	    var _pos;
	    var _highlighted;
	    var rest;
	    var id_value;
	    var element_rech_count;

	    //xindow.status = "tree_length:"+tree_length;
	    
	    for(i=j; i<tree_length; i++){
	    	if(rech_stack[rech_result_number][rech_map[rech_result_number][i+actual_tree_offset_rech[rech_result_number]]]){
				_inner = rech_stack[rech_result_number][rech_map[rech_result_number][i+actual_tree_offset_rech[rech_result_number]]];

				_inner = _inner.substring(0, _inner.length-5);// "</a>" rausschneiden
				
				_pos = _inner.lastIndexOf("border=\"0\">")+11;//11="border=\"0\">";
	
				if(_pos==10) _pos = _inner.lastIndexOf("border=0")+9;//9="border=0"; 
				
				_inner_display = _inner.substr(_pos);

				if(_inner_display.lastIndexOf("</b></i>")!=-1){
	 				_inner = _inner.substr(0,_pos)+_inner_display.substr(0,_inner_display.lastIndexOf("<")-4);//4=</b><
					_highlighted=1;
				}
				else _highlighted = 0;
	
	    		elements[i+j].innerHTML = _inner;
	    		
				if(_highlighted==1){
					_inner = elements[i+j].innerHTML += "</b></i>";
				}

	    		elements[i+j].innerHTML += "</a>";
	    		
	    		if(elements[i+j].getElementsByTagName('a')[0]){
		    		id_value = elements[i+j].getElementsByTagName('a')[0].id;

					if(id_value.split('*')[1]){
						id_value = id_value.split('*')[1];
					}
					
					element_rech_count = 0;

		    		if(rechergs_pre_store[rech_result_number][id_value]){
		    			element_rech_count += rechergs_pre_store[rech_result_number][id_value].length;
		    		}

				blank_length = 2;

				if(element_rech_count>9) blank_length--;
				if(element_rech_count>99) blank_length--;
		    		
		    		if(element_rech_count > 0){
		    			elements[i+j].getElementsByTagName('span')[0].innerHTML = "<span title='"+lang_show_rechergs+"' style='cursor:pointer;' onClick=\"show_rechergs('"+id_value+"','"+rech_result_number+"')\"><img src='../icons/blank_"+blank_length+".gif' border='none'>("+element_rech_count+")</span";		    		    		
		    		}
		    		else{
		    			elements[i+j].getElementsByTagName('span')[0].innerHTML = "<span><img src='../icons/blank_2.gif' border='none'>(-)</span";		    		    					    				    			
		    		}
	    		}
	    	}
	    }
	    
	    if ((rech_map[rech_result_number].length - actual_tree_offset_rech[rech_result_number]) > tree_max_length){
	    
	    	if(elements[elements.length-1]) elements[elements.length-1].innerHTML = "<a id='list_down' onmouseup='return false;' onmousedown='return false;' onmouseout='javascript: setMouseOverListDown(false);' onmouseover='javascript: setMouseOverListDown(true);'><img src='../icons/list_down.gif' /></a>";
	    	j=0;
	    }
	    else j=1;
	    	    
	    //*************** 3. Schritt: Restplatz auff?llen (baum sollte immer gleichviel Platz einnehmen):
	   
	    new_innerHTML = root_element.innerHTML;
	    
	    rest = tree_max_length - i + j;
	    if ((rech_map[rech_result_number].length - actual_tree_offset_rech[rech_result_number]) <= tree_max_length) rest += actual_tree_offset_rech[rech_result_number];
	    
	    if(rech_map[rech_result_number].length-tree_max_length>0) rest -= rech_map[rech_result_number].length-tree_max_length; 
	    
	    while(rest > 0){
	    	new_innerHTML += "<div><img src='../icons/e2.gif' border='none'></div>";
	    	rest--;
	    }	
	    
	    root_element.innerHTML = new_innerHTML;
	    
	    document.getElementById('tree_root_'+rech_result_number).getElementsByTagName('a')[0].getElementsByTagName('span')[0].innerHTML = "<span onClick=\"show_rechergs('a_"+ar_id+"','"+rech_result_number+"')\">("+rechergs_count[rech_result_number]+")</span>";		    		    		
	    			 

	    //tree_content_store[rech_result_number] = new_innerHTML;
	    
	    tree_content_store[rech_result_number] = document.getElementById('tree_rech').innerHTML;
	    
	    tree_rech_prefixes_added[rech_result_number] = true;
    } 
    
    function rech_tree_statechanged(action, new_inner){
    
	    var begin_tag = "<div>";
	    var end_tag = "</div>";

	    var begin;

	    var end;
	    
	    var new_id;

	    var content;

	    var elements;

	    var temp_map = Array();

	    var i;
	    var j=0;
	    var k;

	    var in_array;

	    var closed_until = 0;

	    var element_id;
	    
	    var element_id_rech;
	    
	    var rech_prefix;

	    for(i=0; i < rech_map[actual_tree_number].length; i++){ 

			element_id_rech = rech_map[actual_tree_number][i];
			
			if(element_id_rech.split("*")[1]){
				rech_prefix = element_id_rech.split("*")[0];
				
				element_id = element_id_rech.split("*")[1];
			}
			else{
				rech_prefix = actual_tree_number;
				
				element_id = element_id_rech;
			}
	
			if(closed_until==element_id){
				closed_until=0;
				//xlert("close reached:"+element_id);
			}
	
			if(element_id != actual_element_id){               
				if(action!="close" || closed_until==0){
					temp_map[j] = element_id_rech;
					j++;
				}
	
			}
			else{
				if(action=="open"){
					var last_actual_element_id = "";
					
					while(new_inner.indexOf(begin_tag) != -1){
						begin = new_inner.indexOf(begin_tag)+begin_tag.length;
						end = new_inner.indexOf(end_tag);
						
						content = new_inner.substr(begin,end-begin);
						
						new_id = content.substring(content.indexOf('id=\"')+4, content.length);
						new_id = new_id.substring(0, new_id.indexOf("\""));
						
						in_array = 0;
						
						for(k=0; k<rech_map[actual_tree_number].length;k++){
							//if(rech_map[actual_tree_number][k] == rech_prefix+"*"+new_id){
							if(rech_map[actual_tree_number][k] == new_id){
								in_array=1;
							}
						}
						
						if(in_array != 1 || new_id == actual_element_id){
						
						    rech_stack[actual_tree_number][new_id] = content;
						
						    //temp_map[j] = rech_prefix+"*"+new_id;
						    temp_map[j] = new_id;
						    j++;
						}
						new_inner = new_inner.substring(end+end_tag.length, new_inner.length);
						
						if(last_actual_element_id != "" && last_actual_element_id != actual_element_id && last_actual_element_id.indexOf("a_")==-1){		
							rech_close_map[actual_tree_number][last_actual_element_id] = new_id;
							//xlert("closed_map set for "+last_actual_element_id+":"+new_id);
						}
						
						rech_close_map[actual_tree_number][new_id] = rech_close_map[actual_tree_number][actual_element_id];
						
						last_actual_element_id = new_id;
				    }			   			    
				}
				else if(action=="close"){
					begin = new_inner.indexOf(begin_tag)+begin_tag.length;
					end = new_inner.indexOf(end_tag);
	
					content = new_inner.substr(begin,end-begin);
	
					rech_stack[actual_tree_number][element_id] = content;
	
					temp_map[j] = element_id_rech;
					j++;
	
					closed_until=rech_close_map[actual_tree_number][element_id];
	
					//xlert("closed until set:"+closed_until);
				}				
			}               
	    }

	    rech_map[actual_tree_number] = temp_map;

	    //altes highlighting ausschalten
	    for(i=0; i<rech_map[actual_tree_number].length; i++){
	    	//if(rech_map[actual_tree_number][i] != rech_prefix+"*"+actual_element_id){
		    if(rech_map[actual_tree_number][i] != actual_element_id){
		    
		    	element_id_rech = rech_map[actual_tree_number][i];

				if(element_id_rech.split("*")[1]){	
					element_id = element_id_rech.split("*")[1];
				}
				else{
					element_id = element_id_rech;
				}		
		    
			    content = rech_stack[actual_tree_number][element_id];
			    content = content.replace('<i><b>','');
			    content = content.replace('</b></i>','');
			    if(content != rech_stack[actual_tree_number][element_id]){
					rech_stack[actual_tree_number][element_id] = content;    	
			    }
		    }
		    else pos_highlighted = (i+1);
	    }
	    
	    //tree_rech_prefixes_added[actual_tree_number] = false;
	    
	    fill_tree_rech(actual_tree_number);	    

	    adjust_treeblock_width_rech();
    } 
    
    function adjust_treeblock_width_rech(){

		write2js_log("ajax_tree_rech - adjust_treeblock_width", "", "adjust");

		tree_entry_max_chars = tree_entry_max_chars_max;
		
		tree_resize_in_progress = 0;
	
		fill_tree_rech(actual_tree_number);
		
		var tree_width = document.getElementById('tree_block_rech').offsetWidth;
		var right_xpos = document.getElementById('right').offsetLeft;
    }      	


