﻿function BabelWord(strID, strLangID, strWord)
{
	this.strID = (strID != undefined ? strID : "");
	this.strLangID = (strLangID != undefined ? strLangID : "");
	this.strWord = (strWord != undefined ? strWord : "");
}
;

function Babel( arrBabelWords )
{
	this.strLangID = "hu";
	
	this.mapWordsByLangAndID = new Object();
	this.arrChangeListeners = new Array();

	var me = this;

	// Egy  id - nyelv - szo harmast vesz fol a szotarba
	this.AddWord = function(babelWord)
	{
		if(babelWord != null)
		{
			if(me.mapWordsByLangAndID[babelWord.strLangID] == undefined)
			{
				me.mapWordsByLangAndID[babelWord.strLangID] = new Object();
			}
			me.mapWordsByLangAndID[babelWord.strLangID][babelWord.strID] = babelWord.strWord;
		}
	}

	this.Init = function()
	{	
		var i;
		var iLength = (arrBabelWords != null ? arrBabelWords.length : 0);
		
		for(i=0; i<iLength; i++)
		{
			me.AddWord(arrBabelWords[i]);
		}
		
		if(typeof(g_strLangID) != 'undefined')
		{			
			me.strLangID = g_strLangID;
		}
		if (me.mapWordsByLangAndID[me.strLangID] == null)
		{
			me.strLangID = "hu";
		}		
	}

	me.Init();

	this.SetLang = function(strLangID) 
	{
		if(me.strLangID != strLangID)
		{
			me.strLangID	= strLangID;
			var i;
			for(i=0; i < me.arrChangeListeners.length; i++)
			{
				if(me.arrChangeListeners[i] != null)
				{
					me.arrChangeListeners[i]();
				}
			}
		}
	}

	this.GetLang = function()
	{
		return me.strLangID;
	}

	this.GetWord = function(strID, strDefault)
	{
		if ( me.mapWordsByLangAndID 
		  && me.mapWordsByLangAndID[me.strLangID] 
		  && me.mapWordsByLangAndID[me.strLangID][strID] != undefined)
		{
			return me.mapWordsByLangAndID[me.strLangID][strID];
		}
		if(strDefault != null && strDefault != undefined)
			return strDefault;
		return "";
	}

	// Nyelvvaltaskori esemeny

	this.AddListener = function(func)
	{
		var i=0;
		for(i=0; i<me.arrChangeListeners.length; i++)
		{
			if(me.arrChangeListeners[i] == null || me.arrChangeListeners[i] == undefined)
				break;
		}
		me.arrChangeListeners[i] = func;
		return i;
	}

	this.GetListener = function(idListener)
	{
		return me.arrChangeListeners[idListener];
	}

	this.DeleteListener = function(idListener)
	{
		me.arrChangeListeners[idListener] = null;
	}
}
