function CLocalization()
{
	this.languages = new Array();
	
	this.selected = null;
	this.defaultLang = null;
	
	this.detect = function(forced)
	{
		var d = "en"; //default language
		
		var l;
		//var forced = getURLVar("language");
		if(forced)
			l = forced;
		else
		{
			if(navigator.userLanguage)
				l = navigator.userLanguage; //IE
			else
				l = navigator.language; //Other browsers
			
			l = l.split("-");
			l = l[0];
		}

		//set the default
		for(var i = 0; i < this.languages.length; i++)
		{
			if(this.languages[i].language == d)
			{
				this.selected = this.languages[i];
				this.defaultLang = this.selected;
			}
		}
			
		//try to find the language
		for(var i = 0; i < this.languages.length; i++)
		{
			if(this.languages[i].language == l)
			{
				this.selected = this.languages[i];
				return;
			}
		}
	}
	
	this.set = function(language)
	{
		for(var i = 0; i < this.languages.length; i++)
		{
			if(this.languages[i].language == language)
			{
				this.selected = this.languages[i];
				return;
			}
		}
	}
	
	this.get = function(name, params)
	{
		var str1 = this.selected.get(name, params);
		var str2;
		
		if(str1 == null)
		{
			str2 = this.defaultLang.get(name, params);
			
			if(str2 == null)
				return "ERROR: Undefined localization string \""+name+"\".";
			
			return str2;
		}
		else
			return str1;
	}
	
	this.getNumSuffix = function(name, params)
	{
		return this.selected.getNumSuffix(name, params);
	}
	
	this.print = function(name, params)
	{
		document.write(this.get(name, params));
	}
	
	this.printURL = function(url, name, params)
	{
		document.write("<a target=\"_new\" href=\""+url+"\">"+this.get(name, params)+"</a>");
	}
	
	this.push = function(name, params)
	{
		mE("lid-"+name).content(this.get(name, params));
	}
	
	this.add = function(language, name, content)
	{
		//find the language
		for(var i = 0; i < this.languages.length; i++)
		{
			if(this.languages[i].language == language)
			{
				this.languages[i].add(name, content);
				return;
			}
		}
		
		//not found, add it
		var l = this.languages.push(new CLocalizationStrings(language));
		this.languages[l - 1].add(name, content);
	}
	
	this.getLang = function()
	{
		return this.selected.language;
	}
	
	this.printImage = function(file, alt)
	{
		document.write("<img src=\"images/instructions/"+this.selected.language+"/"+file+"\" alt=\""+alt+"\" />");
	}
	
	//launch auto detection
	//this.detect();
}

function CLocalizationStrings(language)
{
	this.language = language;
	
	this.strings = new Array();
	
	this.add = function(name, content)
	{
		this.strings.push(new CLocalizationString(name, content))
	}
	
	this.get = function(name, params)
	{
		for(var i = 0; i < this.strings.length; i++)
		{
			if(this.strings[i].name == name)
			{
				if(params && params.length > 0)
				{
					//explode the string by %s and replace with content of the params array
					var s = this.strings[i].content.split("%s");
				
					var f = new Array();
					for(var i = 0; i < s.length; i++)
					{
						f.push(s[i]);
						f.push(params[i]);
					}
				
					return f.join("");
				}
				else
					return this.strings[i].content;
			}
		}
		
		return null;
	}
	
	this.getNumSuffix = function(number)
	{
		var numstring = "support-numbers-default";
		switch(number)
		{
			case 1:
				numstring = "support-numbers-first";
			break;
			
			case 2:
				numstring = "support-numbers-second";
			break;
			
			case 3:
				numstring = "support-numbers-third";
			break;
		}
		
		for(var i = 0; i < this.strings.length; i++)
		{
			if(this.strings[i].name == numstring)
				return this.strings[i].content.replace("%s", number);
		}
		
		return number;
	}
}

function CLocalizationString(name, content)
{
	this.name = name;
	this.content = content;
}

