// Headersearch - Neue Header-Suche, JavaScript Funktionen

// HeaderSearch ist als Class im mootools.js - Stil definiert


var HeaderSearch = new Class({

	// Schlüsseltypen für Objektart und Erwerbsart, für Kommunikation mit dem Questim-Suchbereich

	types:{
		homes:'p', commercial:'g'
	},

	purchases:{
		buy:'k', rent:'m', lease:'p', all:'a'
	},

	initialize:function () {
		this.setObjectType(document.qsearch['art'].value);
		this.setObjectPurchase(document.qsearch['erwerb'].value);
		this.prepareSearchBar();
	},

	// Die Questim-Suchfelder werden so eingestellt, dass sie nicht "von hand" verändert werden können

	prepareSearchBar:function() {
		document.qsearch.action="/";
		/*document.qsearch.art.onfocus = function() {this.blur();}*/
		/*document.qsearch.erwerb.onfocus = function() {this.blur();}*/
		document.qsearch.searchlocation.onfocus = function() {this.blur();}
		document.qsearch.searchcriteria.onfocus = function() {this.blur();}
		document.qsearch.onsubmit = function() {
			document.qsearch.submit();
			return false;
		}
	},

	// Selektiert den Eintrag mit dem Wert "Value" im <select>-Element obj

	setPDValue:function(obj, value) {
		$each(obj.options, function(obj,i) {
			if (obj.value == value) obj.selected = true;
		});
	},

	// Synchronisiert Pulldowns (z.B. das Questim-Pulldown "Erwerbsart" mit dem HeaderSearch-Pulldown "Erwerbsart")
	// pdObj: PulldownObjekt, dass angepasst werden soll
	// transObj: key-Value paare, für die Übersetzung der einzelnen Werte
	// value: Der Wert, der übersetzt werden soll

	synchronizePD:function(pdObj, transObj, value) {
		if (transObj==undefined) {
			this.setPDValue (pdObj, value);
		} else {
			$each(transObj,function(typeTo,typeFrom) {
				if (value==typeFrom) this.setPDValue(pdObj,typeTo);
			},this);
		}
	},

	// Setzt Objekt-Typ und passt Pulldowns an

	setObjectType:function(value) {
		var isCommercial = (value.charAt(0)=="g");
		var displayStyle = (isCommercial) ? "none" : "table-row";
		/*$('roomsrow').setStyle("display",displayStyle);*/
		this.synchronizePD(document.qsearch.art, undefined, value);
		this.fillFields();
	},

	// Setzt Erwerbsart

	setObjectPurchase:function(value) {
		this.synchronizePD(document.qsearch.erwerb, this.purchases, value);
	},

	// Setzt alle Classicsearch-Felder entsprechend der aktuellen Suchangaben

	fillFields:function() {
		var f = document.qsearch;

		// Location-Felder

		var location = f['search[location]'].value;
		/*$('tipp_location').value = location;*/
		$('searchlocation').value = location;

		// Criteria-Feld:

		var criterias=[];

		// Preis:
		var pFrom = f['headersearch[price][from]'].value;
		var pTo = f['headersearch[price][to]'].value;
		if (pFrom!="" && pTo!="") {
			criterias.push(pFrom+" - "+pTo+" "+getText("search_engine","cs_price"));
		} else if (pFrom!="") {
			criterias.push("ab "+pFrom+" "+getText("search_engine","cs_price"));
		} else if (pTo!="") {
			criterias.push("bis "+pTo+" "+getText("search_engine","cs_price"));
		}

		// Größe:

		var sFrom = f['headersearch[size][from]'].value;
		var sTo = f['headersearch[size][to]'].value;
		if (sFrom!="" && sTo!="") {
			criterias.push(sFrom+" - "+sTo+" "+getText("search_engine","cs_size"));
		} else if (sFrom!="") {
			criterias.push("ab "+sFrom+" "+getText("search_engine","cs_size"));
		} else if (sTo!="") {
			criterias.push("bis "+sTo+" "+getText("search_engine","cs_size"));
		}

		// Zimmer: (nur wenn nicht gewerblich)

		if (f['art'].value.charAt(0)!="g") {
			var rFrom = f['headersearch[rooms][from]'].value;
			var rTo = f['headersearch[rooms][to]'].value;
			if (rFrom!="" && rTo!="") {
				criterias.push(rFrom+" - "+rTo+" "+getText("search_engine","cs_rooms"));
			} else if (rFrom!="") {
				criterias.push("from "+rFrom+" "+getText("search_engine","cs_rooms"));
			} else if (rTo!="") {
				criterias.push("bis "+rTo+" "+getText("search_engine","cs_rooms"));
			}
		}

		// Freitext Inhalte
		/*
		var freitext = f['headersearch[text]'].value;
		if (freitext!="") {
			criterias.push(freitext);
		}
		*/
		// Werte in Formularfelder eintragen:

		var criteria = criterias.join(", ");
		/*$('tipp_criteria').value = criteria;*/
		$('searchcriteria').value = criteria;

		/*$('tipps').setStyle('display','block');*/
	},

	// Suchcookies löschen (Suche zurücksetzen)

	deleteSearchCookie:function() {
		var f = document.qsearch;
		var location = f['search[location]'].value;
		if (location.trim()=="") {
			alert(getText("search_engine","cs_nolocation"));
			return false;
		}
		Cookie.remove("location");
		Cookie.remove("criteria");
		Cookie.remove("erwerb");
		Cookie.remove("art");
		return true;
	}

});

var hs = null;

// Klasse wird erst aufgerufen, wenn das Dokument bereit ist:
window.addEvent('domready', function(){
	if ($('headersearchlocation')) {
		hs = new HeaderSearch();
		hs.fillFields();
	}
});
