// Bilder
this.plus = new Image(); 
this.minus = new Image;
this.plus.src = "../modules/Organigramm/img/smallplus.gif";
this.minus.src = "../modules/Organigramm/img/minus.gif";

// mode: "show" or "hide"
this.mode = "show";

// found: 0
this.found = 0;
 
/**
** gesamtes Organigramm zeigen / verstecken
** @access public
** @return void
**/
	this.showHideOrganigramm = function (){
	$('organigramm').style.display = 'none';
	$('progress').style.display = 'block';
	var me = this;
	window.setTimeout(function(){me.showHideOrganigrammDoIt();},500);
	}

/**
** gesamtes Organigramm zeigen / verstecken
** @access public
** @return void
**/
	this.showHideOrganigrammDoIt = function (){
	$('msg').firstChild.nodeValue = '';
	document.forms.frm1.seekperson.value = "";
		var x = $('organigramm').childNodes;
	for(i=0;i < x.length;i++){
		if(x[i].nodeName == "DIV"){
    		this.showHide2(x[i].getAttribute('id'));
  		}
	}
	$('organigramm').style.display = 'block';
	$('progress').style.display = 'none';		
	this.toggleMode((this.mode == "show") ? "hide" : "show"); 
	}
	
/**
** eine Ebene zeigen / verstecken
** abh�ngig von Ebenenzustand
** @access public
** @return void
**/
this.showHide = function(id){
 	var img = document.images[id];
 	if(img && img.src == this.minus.src){
		this.hide(id);
	}
	else{
		this.show(id);
	}
}

/**
** eine Ebene zeigen
** @access private
** @return void
**/
this.show = function(id){
	this.toggleMode("hide");
	this.showRecursive(id);
	}

/**
** eine Ebene rekursiv zeigen
** @access private
** @return void
**/
this.showRecursive = function(id){
	var div = document.getElementById(id);
	var x = div.childNodes;
	var i = 0;
	var img = document.images[id];
	while(i < x.length){
		if(x[i].nodeName == "DIV"){
	    	var vclass = "visible";
	    	if(x[i].getAttribute('name') == 'person' ||
	    		x[i].getAttribute('name') == 'persondetail')
	      	vclass = "visible9";
	    	this.setClass(x[i],vclass);
	    	if(img){
        		img.src = this.minus.src;
        	}
	   	//show rekursiv weiter
		   if(document.forms["frm1"].openmode[0].checked){   
		   	y = x[i].childNodes;
		      for(j=0;j < y.length;j++){
		      	if(y[j].nodeName == "DIV"){
		            this.showRecursive(x[i].getAttribute('id'));
		            continue;
		         }
		      }
		   }
   	}
 		i++;
	}
	}

/**
** eine Ebene verstecken
** @access private
** @return void
**/
this.hide = function(id){
	this.hideRecursive(id);
	var allHidden = true;
	
	// test, ob alles geschlossen ist
	var div = document.getElementById('organigramm');
	var x = div.childNodes;
	for(i=0;i < x.length;i++){
		if(x[i].nodeName == "DIV"){
			if(document.images[x[i].getAttribute('id')].src == this.minus.src){
    			allHidden = false;
    			break;
    		}
    	}
   }
	if(allHidden){
		this.toggleMode("show");
	}
	}

/**
** eine Ebene rekursiv verstecken
** @access private
** @return void
**/
this.hideRecursive = function(id){
	var div = document.getElementById(id);
	var x = div.childNodes;
	var i = 0;
	var img = document.images[id];
	while(i < x.length){
		if(x[i].nodeName == "DIV"){
	    	this.setClass(x[i],"hidden")
	    	if(img){
        		img.src = this.plus.src;
        	}
	   	
	   	//hide rekursiv weiter
	   	y = x[i].childNodes;
	      for(j=0;j < y.length;j++){
	      	if(y[j].nodeName == "DIV"){
	            this.hideRecursive(x[i].getAttribute('id'));
	            continue;
	         }
	      }
   	}
 		i++;
	}
	}

/**
** eine Ebene zeigen / verstecken
** abh�ngig von Klasseneigenschaft
** @access public
** @return void
**/
this.showHide2 = function(id){
	var div = document.getElementById(id);
	var x = div.childNodes;
	var i = 0;
	var img = document.images[id];
	while(i < x.length){
		if(x[i].nodeName == "DIV"){
	    	var vclass = "visible";
	    	if(x[i].getAttribute('name') == 'persondetail'){
	    		this.setClass(x[i],'hidden');
	    	}
	    	else{
		    	if(x[i].getAttribute('name') == 'person')
		      	vclass = "visible9";
        		if(this.mode == "show"){
					this.setClass(x[i],vclass);
					if(img){
		        		img.src = this.minus.src;
		        	}
		   	}
				else{
					this.setClass(x[i],'hidden');
					if(img){
		        		img.src = this.plus.src;
		        	}
		   	}
		   }

		   if(document.forms["frm1"].openmode[0].checked || 
		   	this.mode == "hide"){    
		   	y = x[i].childNodes;
		      for(j=0;j < y.length;j++){
		      	if(y[j].nodeName == "DIV"){
		            this.showHide2(x[i].getAttribute('id'));
		            continue;
		         }
		      }
		   }
   	}
 		i++;
	}
	}

/**
** suchen
** @access public
** @return void
**/
this.seek = function(person){
	document.forms["frm1"].openmode[0].checked = true;
	this.found = 0;
	$('msg').firstChild.nodeValue = "";
	if(person == ""){
		var msg = "Leere Eingabe !??";
		$('msg').firstChild.nodeValue = msg;
		return;
	}
	if(this.trim(person) == ""){
		var msg = "nur Leerzeichen !??";
		$('msg').firstChild.nodeValue = msg;
		return;
	}
	
	$('organigramm').style.display = 'none';
	$('progress').style.display = 'block';
	var me = this;
	window.setTimeout(function(){me.seekDoIt(person);},500);
}

/**
** suchen
** @access public
** @return void
**/
this.seekDoIt = function(person){
		var x = $('organigramm').childNodes;
	for(i=0;i < x.length;i++){
		if(x[i].nodeName == "DIV"){
			if(this.mode == "hide"){
    			this.showHide2(x[i].getAttribute('id'));
    		}
	    	this.showFound(x[i].getAttribute('id'),person);
  		}
	}
	if(this.found == 0){
		this.toggleMode('show');
	}
	else{
		this.toggleMode('hide');
	}
	var msg = this.found + " Treffer für " + person;
	$('msg').firstChild.nodeValue = msg;
	$('organigramm').style.display = 'block';
	$('progress').style.display = 'none';		
}

/**
** Ebenen, die dem Suchkriterium gen�gen
** rekursiv �ffnen
** @access private
** @return void
**/
this.showFound = function(id,find){
	var div = document.getElementById(id);
	var x = div.childNodes;
	var i = 0;
 	
	while(i < x.length){
		if(x[i].nodeName == "DIV"){
	    	var vclass = "visible";
	    	if(x[i].getAttribute('name') == 'persondetail'){
	    		this.setClass(x[i],'hidden');
	    	}
	    	else{
		    	if(x[i].getAttribute('name') == 'person'){
		    		var a = x[i].childNodes;
	      		for(l=0;l < a.length;l++){
	      			if(a[l].nodeName == "A"){
				    		person = a[l].firstChild.data;
				    		if(person.toLowerCase().search(find.toLowerCase()) > -1){
		    					this.found++;
		    					this.setClass(x[i],'visible9');
		    					this.showParent(x[i].parentNode);
			    			}
			    		}
		    		}
		    	}
		   }
	   }
   	y = x[i].childNodes;
      for(j=0;j < y.length;j++){
      	if(y[j].nodeName == "DIV"){
            this.showFound(x[i].getAttribute('id'),find);
            continue;
         }
      }
 		i++;
	}
	}

/**
** parent div Tags rekursiv visible machen
** rekursiv �ffnen
** @access private
** @return void
**/
this.showParent = function(curNode){
	if(curNode.nodeName == "DIV" && curNode.parentNode.getAttribute('id') != 'organigramm'){
			this.setClass(curNode,'visible');
			document.images[curNode.getAttribute('id')].src = this.minus.src;
			this.showParent(curNode.parentNode);
		}
	if(curNode.parentNode.getAttribute('id') == 'organigramm'){
			document.images[curNode.getAttribute('id')].src = this.minus.src;
	}
	}

/**
** parent div Tags rekursiv hidden machen
** rekursiv �ffnen
** @access private
** @return void
**/
this.hideParent = function(curNode){
	if(curNode.nodeName == "DIV" && curNode.parentNode.getAttribute('id') != 'organigramm'){
			this.setClass(curNode,'hidden');
			document.images[curNode.getAttribute('id')].src = this.plus.src;
			this.hideParent(curNode.parentNode);
		}
	if(curNode.parentNode.getAttribute('id') == 'organigramm'){
			document.images[curNode.getAttribute('id')].src = this.plus.src;
	}
	}

/**
** Klasse "strClass" im Objekt "objTag" eintragen
** @access private
** @return void
**/
this.setClass = function(objTag,strClass){
	if(document.all){
		objTag.className = strClass;
	}
	else{
		objTag.setAttribute("class",strClass);
	}
	}

/**
** modus "show" oder "hide" umschalten
** @access private
** @return void
**/
this.toggleMode = function(mode){
	var t = (mode == "show") ? " Alles öffnen" : " Alles schließen"
	document.getElementById('span1').firstChild.nodeValue = t;
	this.mode = mode;
	}
/**
** Hilfsfunktion
** @access private
** @return void
**/
this.trim = function(s) {
		while (s.substring(0,1) == ' ') {
		s = s.substring(1,s.length);
		}
		while (s.substring(s.length-1,s.length) == ' ') {
		 s = s.substring(0,s.length-1);
		}
		return s;
}

this.onChange = function(){
	var div = document.getElementById('organigramm');
	var div1 = document.getElementById('progress');
	//this.setClass(div,'hidden');
	this.setClass(div1,'visible');
}

this.loadData = function(id,div) {
	var param = {};
	param['id'] = id
	new Ajax.Updater(div, '../modules/Organigramm/get.php', {
			parameters: param
		,	method: 'get'
		,	onSuccess: function(transport){}
	});
	$(div).setAttribute("class", "visible9");
}
	