$(window).load(function() {
	searchEventHandler.init(document.forms.search);
	
	// mache das die links im iframe im parent geöffnet werden, damit man nicht die seite in einer seite hat
	$("#searchres").contents().find("a").each(function() {
		this.target = "_top";
	});
});

var searchEventHandler =
{
	default_queryterm: { en: "Enter search term", de: "Ihr Suchbegriff" },
	lang: "en",
	form: null,
	textfield: null,
	
	/**
		EventHandler Interface
		delegiert die Events an die eingentlichen handler-Funktionen
	
		@return false falls Event unterbrochen wurde, sonst true
	*/
	handleEvent: function(Event)
	{
		var rv = true;
		switch (Event.type)
		{
			case "focus":
				this.onfocus(Event);
				break;
			
			case "blur":
				this.onblur(Event);
				break;
			
			case "submit":
				// nur submit event muss ggf. abgebrochen (canceled) werden
				rv = this.onsubmit(Event);
				break;
			
			case "unload":
				this.unload();
				break;
		}
		return rv;
	},
	
	/**
		initialisiere und setze event handler für das formular
	*/
	init: function(aForm)
	{
		if (!aForm || typeof(aForm.submit) == "undefined")
		{
			return;
		}
		
		this.form = aForm;
		this.textfield = aForm.q;
		
		this.lang = getDocLang();
		this.textfield.value = this.default_queryterm[this.lang];
		
		$(this.textfield).focus(jQuery.proxy(searchEventHandler, "handleEvent"));
		$(this.textfield).blur(jQuery.proxy(searchEventHandler, "handleEvent"));
		$(this.form).submit(jQuery.proxy(searchEventHandler, "handleEvent"));
		
		// do not leak .... http://www.reigndropsfall.net/2011/01/05/internet-explorer-event-handler-leaks/
		$(window).unload(jQuery.proxy(searchEventHandler, "handleEvent"));	// ist glaube ich gar nicht nötig
	},
	/**
		entferne alle gesetzten event handler
	*/
	unload: function()
	{
		$(this.textfield).unbind("focus", searchEventHandler.handleEvent);
		$(this.textfield).unbind("blur", searchEventHandler.handleEvent);
		$(this.form).unbind("submit", searchEventHandler.handleEvent);
		$(window).unbind("unload", searchEventHandler.handleEvent);
		delete(this.textfield);
		delete(this.form);
	},
	
	/**
		leert Textfeld beim anklicken, wenn Standardtext enthalten ist
	*/
	onfocus: function(aEvent)
	{
		var target = (aEvent.target) ? aEvent.target : aEvent.srcElement;
		if (target.value == this.default_queryterm[this.lang])
		{
			target.value = '';
		}
	},
	
	/**
		setzt Standardtext wieder, wenn Textfeld verlassen wird und leer ist
	*/
	onblur: function(aEvent)
	{
		var target = (aEvent.target) ? aEvent.target : aEvent.srcElement;
		if (!target.value)
		{
			target.value = this.default_queryterm[this.lang];
		}
	},
	/**
		verhindere absenden, wenn Textfeld leer ist oder den Standardtext enthält
		@return true, wenn Textfeld leer ist oder Standardtext enthält; sonst false
	*/
	onsubmit: function(aEvent)
	{
		if (!this.textfield.value || this.textfield.value == this.default_queryterm[this.lang])
		{
			return false;	// verhindere absenden
		}
		return true;	// erlaube absenden
	}
}
