var g_ls_timeoutDelay 			= 500;
var g_ls_timeoutId 				= false;
var g_LanguagePicker			= null;

function getAvailableLangArray()
{
	var availableLangArray 	= null;

	if("languageInitiatedCallback" in window)
		availableLangArray 	= xmlString2Array(languageInitiatedCallback());
	else
		availableLangArray 	= xmlString2Array('[["Deutsch","DE","DE"],["English","EN","GB"]]'); // für neue Language ["Sprachname","NameLanguagefile","Flaggenname (/images)"]
		
	return availableLangArray;
}

function languagePickerTimeout()
{
	g_ls_timeoutId = setTimeout('g_LanguagePicker.closeDialog();',g_ls_timeoutDelay);
}

function cLanguagePickerCtrl(currentLang)
{
	cLanguagePickerCtrl.currentLang 	= currentLang;
}

cLanguagePickerCtrl.c_bDisplayed 		= false;
cLanguagePickerCtrl.c_languageListPrefix= 'LS_';
cLanguagePickerCtrl.sListId 			= cLanguagePickerCtrl.c_languageListPrefix + 'container';

cLanguagePickerCtrl.initAsList = function()
{
	g_LanguagePicker 				= new cLanguagePickerCtrl(g_js_currentLanguage);
	g_LanguagePicker.bListDisplayed = false
	g_LanguagePicker._printAsList();
}

cLanguagePickerCtrl.init = function()
{
	g_LanguagePicker 				= new cLanguagePickerCtrl(g_js_currentLanguage);
	g_LanguagePicker.bListDisplayed = false
	g_LanguagePicker._createDIV();
}

cLanguagePickerCtrl.prototype.openDialog = function(event, target)
{
	this.sInputId 					= target;

	if(this.bListDisplayed)
		this.closeDialog();

	var hInput 						= document.getElementById(this.sInputId);
	var hContainer 					= document.getElementById(cLanguagePickerCtrl.sListId);

	var nTop 						= cDomObject.getOffsetParam( hInput, 'offsetTop');
	var nLeft 						= cDomObject.getOffsetParam( hInput, 'offsetLeft');

	hContainer.style.top 			= nTop 	+ hInput.offsetHeight +'px';
	hContainer.style.left 			= nLeft + 'px';

	hContainer.style.visibility 	= 'visible';
	hContainer.style.display 		= 'block';

	this.bListDisplayed 			= true;
}

cLanguagePickerCtrl.prototype.closeDialog = function()
{
	var hContainer 						= document.getElementById(cLanguagePickerCtrl.sListId);

	if(hContainer != null)
	{
		hContainer.style.visibility 	= 'hidden';
		hContainer.style.display 		= 'none';

		var hCP							= hContainer.hLanguagePicker;
		hCP.bListDisplayed				= false;
	}
}

cLanguagePickerCtrl.prototype._createDIV = function()
{
	var hContainer 					= document.createElement('DIV');
	hContainer.id 					= cLanguagePickerCtrl.sListId;

	hContainer.style.position 		= 'absolute';
	hContainer.style.visibility 	= 'hidden';

	hContainer.style.borderLeft 	= '#5F858F 1px solid';
	hContainer.style.borderRight 	= '#5F858F 1px solid';
	hContainer.style.borderBottom 	= '#5F858F 1px solid';

	hContainer.style.background 	= '#FFFFFF';
	hContainer.style.left 			= '0px';
	hContainer.style.top 			= '0px';

	hContainer.hLanguagePicker	 	= this;

	hContainer.onmouseout			= function () { languagePickerTimeout(); };
	hContainer.onmouseover			= function () { if (g_ls_timeoutId) clearTimeout(g_ls_timeoutId); };

	hContainer.innerHTML 			= '<table border="0" width="76" bgcolor="#FFFFFF" cellspacing="0" cellpadding="0">'+
									  ' 	<tr>'+
									  '			<td id="id_languageContainer" width="100%"></td>' +
									  '		</tr>'+
									  '</table>';

	document.body.appendChild(hContainer);

	this.buildLanguageSelector(true);
	this.updatePopper();
}

cLanguagePickerCtrl.prototype._printAsList = function()
{
	var languageSelector			= $('id_languageSelector');

	if(languageSelector != null)
	{
		var hContainer 					= document.createElement('DIV');
		hContainer.id 					= cLanguagePickerCtrl.sListId;

		hContainer.style.position 		= 'relative';
		hContainer.style.visibility 	= 'visible';

		//hContainer.style.background 	= '#AAAAAA';
		hContainer.style.left 			= '0px';
		hContainer.style.top 			= '0px';
		hContainer.style.width 			= '76px';
		
		hContainer.hLanguagePicker	 	= this;

		//bgcolor="#FFFFFF"
		hContainer.innerHTML			= '<table border="0" width="76px" cellspacing="0" cellpadding="0"><tr><td id="id_languageContainer" align="right"></td></tr></table>';
		
		languageSelector.appendChild(hContainer);

		this.buildLanguageSelectorAsList(true);
	}
//	else
//		alert("HTML Elment mit ID: id_languageSelector nicht gefunden!");
}

cLanguagePickerCtrl.prototype.buildLanguageSelectorAsList = function(excludeCurrentLanguage)
{
	var current_lang					= cLanguagePickerCtrl.currentLang;
	var tdContainer						= $('id_languageContainer');

	var availableLangArray				= getAvailableLangArray();
	var c_availableLangArray			= availableLangArray.length;

	if(c_availableLangArray > 0)
	{
		var tableInner					= document.createElement("TABLE");
		var bodyInner					= document.createElement("TBODY");

		var lval 						= '';
		var label						= '';

		var link						= document.createElement("A");
			link.href					= '#';
			link.style.cursor			= 'pointer';
			link.className				= 'font_1';
			link.style.textDecoration	= 'none';

		var flag						= document.createElement("IMG");
			flag.src					= "images/flags/";
			flag.width					= '19';
			flag.height					= '11';
			flag.border					= '0';
			flag.title					= label;

		var trInner						= document.createElement("TR");
		var tdFlag						= document.createElement("TD");

		var aClone,imgClone,tdClone;

		for(var i=0; i < c_availableLangArray; i++)
		{
			label 					= availableLangArray[i][0];
			lval 					= availableLangArray[i][1];
			flagval					= availableLangArray[i][2];

			tdClone					= tdFlag.cloneNode(true);
			imgClone				= flag.cloneNode(true);

			if(!excludeCurrentLanguage || lval != current_lang)
			{
				aclone 					= link.cloneNode(true);
				aclone.onclick			= new Function("changeLanguage('"+lval+"')");

				var src					= imgClone.src;
				imgClone.src			+= flagval.toLowerCase()+".gif";
				imgClone.title			= label;

				aclone.appendChild(imgClone);
				tdClone.appendChild(aclone);
			}
			else
			{
				var src					= imgClone.src;
				imgClone.src			+= flagval.toLowerCase()+".gif";
				imgClone.title			= label;

				tdClone.appendChild(imgClone);
			}

			trInner.appendChild(tdClone);
		}

		bodyInner.appendChild(trInner);

		tableInner.appendChild(bodyInner);
		tdContainer.appendChild(tableInner);
	}
}

cLanguagePickerCtrl.prototype.buildLanguageSelector = function(excludeCurrentLanguage)
{
	var current_lang					= cLanguagePickerCtrl.currentLang;

	var tdContainer						= $('id_languageContainer');

	var availableLangArray				= getAvailableLangArray();
	var c_availableLangArray			= availableLangArray.length;

	if(c_availableLangArray > 0)
	{
		var tableInner					= document.createElement("TABLE");
		var bodyInner					= document.createElement("TBODY");

		var lval 						= '';
		var label						= '';

		var link						= document.createElement("A");
			link.href					= '#';
			link.style.cursor			= 'pointer';
			link.className				= 'font_1';
			link.style.textDecoration	= 'none';

		var flag						= document.createElement("IMG");
			flag.src					= "images/flags/";
			flag.width					= '19';
			flag.height					= '11';
			flag.border					= '0';
			flag.title					= label;

		var trInner						= document.createElement("TR");

		var tdLabel						= document.createElement("TD");
			tdLabel.width				="100%";
			tdLabel.align				="left";

		var tdFlag						= document.createElement("TD");
			tdFlag.style.paddingLeft	= '3px';
			tdFlag.style.paddingRight	= '9px';

		var aClone,labelClone,flagClone,trClone,imgClone;

		for(var i=0; i < c_availableLangArray; i++)
		{
			label 					= availableLangArray[i][0];
			lval 					= availableLangArray[i][1];
			flagval					= availableLangArray[i][2];

			if(!excludeCurrentLanguage || lval != current_lang)
			{
				aclone 					= link.cloneNode(true);
				aclone.onclick			= new Function("changeLanguage('"+lval+"')");
				aclone.appendChild(document.createTextNode(label));

				trClone					= trInner.cloneNode(true);

				labelClone				= tdLabel.cloneNode(true);
				labelClone.appendChild(aclone);

				flagClone				= tdFlag.cloneNode(true);
				imgClone				= flag.cloneNode(true);

				var src					= imgClone.src;
				imgClone.src			+= flagval.toLowerCase()+".gif";
				imgClone.title			= label;
				flagClone.appendChild(imgClone);

				trClone.appendChild(labelClone);
				trClone.appendChild(flagClone);
				bodyInner.appendChild(trClone);
			}
		}

		tableInner.appendChild(bodyInner);
		tdContainer.appendChild(tableInner);
	}
}

cLanguagePickerCtrl.prototype.updatePopper = function()
{
	var current_lang	= cLanguagePickerCtrl.currentLang;

	var link 			= $('id_popper_label');
	var flag 			= $('id_popper_flag');

	if(link != null && flag != null)
	{
		var availableLangArray			= getAvailableLangArray();
		var c_availableLangArray		= availableLangArray.length;

		if(c_availableLangArray > 0)
		{
			for(var i=0; i < c_availableLangArray; i++)
			{
				label 					= availableLangArray[i][0];
				lval 					= availableLangArray[i][1];
				flagval					= availableLangArray[i][2];

				if(lval == current_lang)
				{
					link.innerHTML		= label;
					flag.src 			= "images/flags/"+flagval.toLowerCase()+".gif";
				}
			}
		}
	}
}

if( window.attachEvent )
{
	window.attachEvent( 'onload', cLanguagePickerCtrl.initAsList )
}
else if( window.addEventListener )
{
	window.addEventListener( 'load', cLanguagePickerCtrl.initAsList, false )
}