/**
 * Abstract Javascript class for the language selector.
 */
LanguageSelector = {

	selector: null,
	trigger: null,
	timeoutId: null,
	inputQ: null,
	
	/**
	 * Opens the lanugage selector.
	 */
	open: function(trigger)
	{
		/* remember that IE has odd event handling */
		if (window.event)
		{
			LanguageSelector.trigger = window.event.srcElement;
		}
		else if (trigger)
		{
			LanguageSelector.trigger = trigger;
		}
		
		LanguageSelector.selector = document.getElementById('language-selector');
		LanguageSelector.inputQ = document.getElementById('search-q');
		LanguageSelector.button = LanguageSelector.inputQ.nextSibling.nextSibling;
		
		/* if the trigger or selector loses focus, close selector */
		LanguageSelector.trigger.onmouseout = LanguageSelector.close;
		LanguageSelector.selector.onmouseout = LanguageSelector.close;
		
		/* if you move your mouse over the selector, abort the close call */
		LanguageSelector.selector.onmouseover = LanguageSelector.clearTimeout;
		LanguageSelector.trigger.onmouseover = LanguageSelector.clearTimeout;
		
		/* hide quick search field */
		LanguageSelector.inputQ.style.display = 'none';
		
		/* show language selector */
		LanguageSelector.selector.style.visibility = 'visible';
	},
	
	/**
	 * Create a new timeout for closing the language selector.
	 */
	close: function()
	{
		LanguageSelector.timeoutId = window.setTimeout('LanguageSelector.doClose();', 500);
	},
	
	/**
	 * Actually closes the language selector.
	 */
	doClose: function()
	{
		/* show quick search field */
		LanguageSelector.inputQ.style.display = 'inline';
		
		/* hide language selector */
		LanguageSelector.selector.style.visibility = 'hidden';
		
		/* remove mouse handlers of the selector */
		LanguageSelector.selector.onmouseover = null;
		LanguageSelector.selector.onmouseout = null;
		
		/* remove onmouseout handler for the trigger */
		LanguageSelector.trigger.onmouseover = LanguageSelector.open;
		LanguageSelector.trigger.onmouseout = null;
	},
	
	/**
	 * Clear the timout for closing the language selector.
	 */
	clearTimeout: function()
	{
		window.clearTimeout(LanguageSelector.timeoutId);
	}
};