function LanguageManager()
	{
	this.AvailableLanguages = AvailableLanguages;
	this.GetActiveLanguage = GetActiveLanguage;
	this.TranslateElements = TranslateElements;
	this.TranslatePage =TranslatePage;
	this.LoadLanguage = LoadLanguage;
	this.DefaultLanguage = 'en'
	}
	
AvailableLanguages = 
	{
	'en'		: 'English',
	'zh-cn'		: 'Chinese Simplified'
	}


function GetActiveLanguage()
	{
	var sUserLang ;
	
	// IE accepts "navigator.userLanguage" while Gecko "navigator.language".
	if ( navigator.userLanguage )
		sUserLang = navigator.userLanguage.toLowerCase() ;
	else if ( navigator.language )
		sUserLang = navigator.language.toLowerCase() ;
		
	// Some language codes are set in 5 characters, 
	// like "pt-br" for Brasilian Portuguese.
	if ( sUserLang.length >= 5 )
		{
		sUserLang = sUserLang.substr(0,5) ;
		if ( this.AvailableLanguages[sUserLang] ) 
			return sUserLang ;
		}
	
	// If the user's browser is set to, for example, "pt-br" but only the 
	// "pt" language file is available then get that file.
	if ( sUserLang.length >= 2 )
		{
		sUserLang = sUserLang.substr(0,2) ;
		if ( this.AvailableLanguages[sUserLang] ) 
			return sUserLang ;
		}	
	return this.DefaultLanguage ;
	}

function TranslateElements ( targetDocument, tag, propertyToSet )
	{
	var aInputs = targetDocument.getElementsByTagName(tag) ;

	for ( var i = 0 ; i < aInputs.length ; i++ )
		{
		var sKey = aInputs[i].getAttribute( 'Translate' ) ;
		if ( sKey )
			{
			var s = LanguageTable[ sKey ] ;
			if ( s )
				{
				eval( 'aInputs[i].' + propertyToSet + ' = s' ) ;
				}
			}
		}
	}

function TranslatePage( targetDocument )
	{
	this.TranslateElements( targetDocument, 'INPUT', 'value' ) ;
	this.TranslateElements( targetDocument, 'SPAN', 'innerHTML' ) ;
	this.TranslateElements( targetDocument, 'LABEL', 'innerHTML' ) ;
	this.TranslateElements( targetDocument, 'OPTION', 'innerHTML' ) ;
	}

function LoadLanguage( targetDocument )
	{
	document.write('<SCRIPT LANGUAGE="JavaScript" SRC="/application/scripts/lang_' + lang.GetActiveLanguage() + '.js"><\/SCRIPT>');
	}
