var SuggestRegion = {
	ergebnisse: {},
	auswahl: -1,
	
	
	/**
	* Event: Taste losgelassen
	*        falls Key Up/Key Down -> wähle aus
	*        falls Buchstabe: anfrage
	*/
	search: function(evt) {
		evt = (evt) ? evt : ((event) ? event : null);
		
		// Das Leuchbalkenauswahlmenü wird angezeift und es ist Up gedrückt
		if(evt.keyCode =='38' && SuggestRegion.isDisplayed()) {
			SuggestRegion.mark(SuggestRegion.auswahl-1);
			return false;
		}
		
		
		// Das Leuchbalkenauswahlmenü wird angezeift und es ist Down gedrückt
		if(evt.keyCode =='40' && SuggestRegion.isDisplayed()) {
			SuggestRegion.mark(SuggestRegion.auswahl+1);
			return false;
		}
		
		
		// Das Leuchbalkenauswahlmenü wird angezeift und es ist Enter gedrückt
		if(evt.keyCode =='13' && SuggestRegion.isDisplayed()) {
			SuggestRegion.entered();
			return false;
		}
		
		// Sollte noch etwas altes angezeigt werden, so blende dieses jetzt aus.
		SuggestRegion.fadeOut();
	
	
		// Ist mehr als ein Buchstabe eingegeben, so hole eine Liste
		var anfang = document.getElementById('selectedort').value;
		if(anfang.length > 0) {
			SuggestRegion.suggest(anfang);
			SuggestRegion.auswahl = 0;
		}
		
		return false;
	},
	
	
	/**
	* es wurde Enter gedrückt, derzeit unfertig
	*/
	entered: function() {		
		var sr = SuggestRegion.getSuggestList().childNodes;
		var region_id = sr[SuggestRegion.auswahl].getAttribute('region_id');
		var region_name = sr[SuggestRegion.auswahl].getAttribute('region_name');
		
		SuggestRegion.select(region_id,region_name);
		return false;
	},
	
	/**
	* markiere eine Zeile
	*/
	mark: function(number) {
		var sr = SuggestRegion.getSuggestList().childNodes;
		
		if(number < 0) {
			number = sr.length-1;	
		}
		
		if(number > sr.length-1) {
			number = 0;	
		}
		SuggestRegion.unmarkAll();
		SuggestRegion.auswahl = number;

		sr[number].setAttribute('class','suggestedRegionMarked');
		sr[number].setAttribute('className','suggestedRegionMarked');
	},
	
	/**
	* entmarkiere alle ergebniszeilen
	*/
	unmarkAll: function(number) {
		SuggestRegion.auswahl = -1;
		var sr = SuggestRegion.getSuggestList().childNodes;
		for(i=0;i<sr.length;i++) {
			sr[i].setAttribute('class','suggestedRegion');
			sr[i].setAttribute('className','suggestedRegion');
		}
	},
	
	
	/**
	* Macht den Ajax-Request und speichert das Ergebnis zwischen
	*/
	suggest: function(anfang) {	
		if(SuggestRegion.ergebnisse[anfang]) {
			SuggestRegion.displayResults(SuggestRegion.ergebnisse[anfang]);	
		} else {
			new Ajax.Request('/ajax/index/ajax.suggest.php?q='+anfang, {
				method: 'get',
				onComplete: function(transport) {
					var ergebnis = transport.responseText.evalJSON();
					SuggestRegion.ergebnisse[anfang] = ergebnis;
					SuggestRegion.displayResults(ergebnis);				
				}
			});
		}
	},
	
	/**
	* stellt die Ergebnisse des Ajax requests oder aus dem Cache dar
	*/
	displayResults: function(ergebnis) {
		// BEreich erstellen
		SuggestRegion.fadeOut();
		SuggestRegion.fadeIn();
		
		var ul = SuggestRegion.getSuggestList();
		
		// Keine Ergebnisse
		if(!ergebnis || ergebnis.length==0) {
			var li = document.createElement('li');
			li.style.display = 'block';
			li.setAttribute('class','suggestedRegion');

			var suggestedRegionName = document.createElement('span');
			suggestedRegionName.setAttribute('class','suggestedRegionName');
			suggestedRegionName.setAttribute('className','suggestedRegionName');
			suggestedRegionName.appendChild(document.createTextNode('In dieser Region konnten wir leider keine Ferienwohnungen finden.'));
			li.appendChild(suggestedRegionName);
			
			ul.appendChild(li);
		}
		
		//Die Ergebnisse
		for(i=0;i<Math.min(ergebnis.length,7);i++) {
			var li = document.createElement('li');																	//<li
			li.style.display = 'block';																				//   style=""
			//li.setAttribute('onclick','SuggestRegion.select("'+ergebnis[i].id+'","'+ergebnis[i].region+'")');		//   onClick=""
			li.setAttribute('region_id',ergebnis[i].id);															//   region_id=""
			li.setAttribute('region_name',ergebnis[i].region);														//   region_id=""
			li.setAttribute('class','suggestedRegion');																//   class=""
			li.setAttribute('className','suggestedRegion');																//   class=""
			li.setAttribute('title','Unterkünfte in '+ergebnis[i].region+' suchen');								//   title=""
			li.onclick = SuggestRegion.select;																		//   onClick=""
			li.onmouseover = SuggestRegion.unmarkAll;																//   onmouseover="">
			
			var suggestedRegionName = document.createElement('span');												//	<span
			suggestedRegionName.setAttribute('class','suggestedRegionName');										//      class="">
			suggestedRegionName.setAttribute('className','suggestedRegionName');									//      class="">
			suggestedRegionName.appendChild(document.createTextNode(ergebnis[i].region));							//     blabhlh
			li.appendChild(suggestedRegionName);																	//   </span>

		
			var suggestedRegionObjekte = document.createElement('span');											//  <span
			suggestedRegionObjekte.setAttribute('class','suggestedRegionObjekte');									//     class="">
			suggestedRegionObjekte.setAttribute('className','suggestedRegionObjekte');								//     class="">
			suggestedRegionObjekte.appendChild(document.createTextNode(' ('+ergebnis[i].objekte+')'));				//     blahblah
			li.appendChild(suggestedRegionObjekte);																	//   </span>
			
			li.appendChild(document.createElement('br'));															//   <br/>
			
			//var suggestedRegionPfad = document.createElement('span');												//    <span>
			//suggestedRegionPfad.appendChild(document.createTextNode(ergebnis[i].path));								//    	kgfhklfgh
			//li.appendChild(suggestedRegionPfad);																	//    </span>
			
			ul.appendChild(li);																						//</li>
		}
		
		// Schliessen
		document.getElementById('closeSuggestedRegionen').style.display = 'inline';
		/*var li = document.createElement('li');
		li.style.display = 'block';
		li.setAttribute('class','suggestedRegion');

		var suggestedRegionName = document.createElement('span');
		suggestedRegionName.setAttribute('class','suggestedRegionName');
		suggestedRegionName.appendChild(document.createTextNode('Schliessen'));
		li.appendChild(suggestedRegionName);
		li.onclick = SuggestRegion.fadeOut;
		ul.appendChild(li);
		*/
	},
	
/**
	* macht alle Ergebnisse weg
	*/
	fadeOut: function() {
		SuggestRegion.auswahl = -1;
		var sr = SuggestRegion.getSuggestList();
		if(sr) {
			sr.style.display = 'none';
			sr.innerHTML = '';
			//for(i=0;i<sr.childNodes.length;i++) {
			//	sr.removeChild(sr.childNodes[i]);
			//}
		}
		document.getElementById('suggestRegionDiv').style.display = 'none';
		document.getElementById('closeSuggestedRegionen').style.display = 'none';
	},
	
	/**
	* stellt die Ergebnisse dar
	*/
	fadeIn: function() {
		SuggestRegion.getSuggestList().style.display = 'block';
		document.getElementById('suggestRegionDiv').style.display = 'block';
	},
	
	/**
	* Wählt unwiederruflich aus
	*/
	select: function() {
		var id = this.getAttribute('region_id');
		var region = this.getAttribute('region_name');
		if(id && id!= null) {
			document.getElementById('ort').value=id;
			document.getElementById('selectedort').value=region;
		}
		
		SuggestRegion.fadeOut();
	},
	
	/**
	* Macht die Auswahl rückgängig
	*/
	deselect: function() {
		document.getElementById('SuggestRegionSearch').style.display = 'block';
		
		document.getElementById('SuggestedRegionResult').style.display = 'none';
		document.getElementById('selectedort').value = document.getElementById('SuggestedRegionResultName').firstChild.nodeValue;
		
	},
	
	/**
	* überprüft ob gerade eine Ergebnisliste angezeigt wird oder nicht
	*/
	isDisplayed: function() {
		return (SuggestRegion.getSuggestList().style.display == 'block');
	},
	
	/**
	* gibt den suggestregion-ding zurück
	*/
	getSuggestList: function() {
		return document.getElementById('suggestRegion');
	},
	
	/**
	* überprüft den Status des Suggesters
	*/
	check: function() {
		alert('abgeschickt');
		return false;
	}
}