// Globale Variable wo ich mich im Array befinde (nur wegen Performance!!!)
		var gl_wegA = new Array(5);
		var gl_selA = new Array(5);
		// alles Vorbelegen
		for(i = 0; i < 5; i++){
			gl_wegA[i] = -1;
			gl_selA[i] = -1;   
		}
				
		// Globale Variablen mit den DOM-Objekten der Auswahlboxen
		var gl_ComboboxenA = new Array(5);		
		gl_ComboboxenA[0] = null;		
		gl_ComboboxenA[1] = null;
		gl_ComboboxenA[2] = document.zimmersuchformular.dsb_ORTSKENNZAHL_Stadt;
		gl_ComboboxenA[3] = document.zimmersuchformular.dsb_ORTSKENNZAHL_Gebiet;
		gl_ComboboxenA[4] = document.zimmersuchformular.dsb_ORTSKENNZAHL_Ort;
		
		function setOrte(knotenA,ebeneI,clearB){
			if(clearB == true){
				// Alle unterauswahlboxen löschen
				for(i = ebeneI; i < 5; i++){
					if(gl_ComboboxenA[i] != null){
						gl_ComboboxenA[i].options.length = 0;			
						var NeuerEintrag = new Option(gl_alleS, gl_ortseinschr, false, false);
						gl_ComboboxenA[i].options[gl_ComboboxenA[i].length] = NeuerEintrag;											
					}
				}
				setOrte(knotenA,ebeneI, false);  // Nochmal ohne löschen!
			} else {
				//Rekursives Setzen der Auswahlpunkte
				for(var i=0; i < knotenA.length; i++){					
					var NeuerEintrag = new Option(knotenA[i].nameS, knotenA[i].ortskennzahlS, false, false);
					
					if(gl_ComboboxenA[ebeneI] != null){
						gl_ComboboxenA[ebeneI].options[gl_ComboboxenA[ebeneI].length] = NeuerEintrag;
					

						if(gl_aktS == knotenA[i].ortskennzahlS){
						//var aktortS = knotenA[i].ortskennzahlS;
						//if(gl_aktS.length){
							//alert(gl_aktS + "-" + aktortS + " " + gl_aktS.indexOf(aktortS))
							//if(0 == gl_aktS.indexOf(aktortS)){
								gl_ComboboxenA[ebeneI].selectedIndex = gl_ComboboxenA[ebeneI].length - 1;
							//}
						}
					}	
					setOrte(knotenA[i].eA,ebeneI+1, false);
				}
			}
		}
		
		function change(ebeneI){						
			if(gl_ComboboxenA[ebeneI] == null){
				// irgendetwas stimmt hier nicht!
			} else {				
				var idx = gl_ComboboxenA[ebeneI].selectedIndex;		
				var value = gl_ComboboxenA[ebeneI].options[idx].value;
				var name = gl_ComboboxenA[ebeneI].options[idx].text;												
				
				// Alle ausgewählt?	
				if(idx == 0 && value == gl_ortseinschr){
					// Alle!					
					// das Globale Array aktualisieren
					gl_wegA[ebeneI] = -1;
					gl_selA[ebeneI] = -1;
										
					// schauen wie weit ich zurück muss wenn vorgänger auch alle gewählt hat.
					var zurueckI = 0;
					for(var i=ebeneI-1; i >= 0; i--){
						if(gl_selA[i] == -1){
							zurueckI++;
						} else {
							break;						
						}
					}					
					// zurückgehen und Knoten finden ab dem ich starte
					for(var i=0, orteA = oA; i < (ebeneI - zurueckI); i++){
						// Den richtigen Knoten bestimmen!
						orteA = orteA[gl_wegA[i]].eA;
					}					
					setOrte(orteA,ebeneI -zurueckI,true);
					
				} else {
					// Einer					
					// Position im Array wiederfinden
					var posA = ortAPos(oA,ebeneI,value,name);
					posA.reverse();  // richtige Richtung!
					// die Kinder vom Ausgewählten Knoten
					for(var i=0, orteA = oA; i < posA.length; i++){
						// Den richtigen Knoten bestimmen!
						orteA = orteA[posA[i]].eA;
						// Globale Variablen Füllen 
						gl_wegA[i] = posA[i];
					}
					
					// das Globale Array aktualisieren
					gl_wegA[ebeneI+1] = -1;
					gl_selA[ebeneI+1] = -1;
					gl_wegA[ebeneI] = posA[ebeneI];
					gl_selA[ebeneI] = posA[ebeneI];
					
					setOrte(orteA,ebeneI+1,true);					
				}
				
			}
			
		}

		// Rekursives durchlaufen des Arrays bis ich den Passenden Eintrag gefunden habe
		function ortAPos(ort, ebeneI,value,name){
			if(ebeneI == 0){
				// schauen ob er passt!
				for(var i=0; i < ort.length; i++){
					if(ort[i].nameS == name && ort[i].ortskennzahlS == value){
						var retval = new Array();
						retval.push("" + i);
						return retval;
					}
				}
			} else {
				var retval = null;
				for(var i=0; i < ort.length; i++){
					if(ort[i].eA != 0){				
						if(null != (retval = ortAPos(ort[i].eA, ebeneI-1,value,name))){
							retval.push(i);					
							return retval;						
						}
					}									
				}
			}
		}
		
		function disableuselesscontrols(){
			for(i = 0; i < 5; i++){
				if(gl_ComboboxenA[i] != null){
					if(2 == gl_ComboboxenA[i].options.length){			
						gl_ComboboxenA[i].disabled = true;
						gl_ComboboxenA[i].selectedIndex = 1; 
					}
				}
			}
		}

		setOrte(oA,0,true);
		disableuselesscontrols();