var LanguageManager = new Object();

LanguageManager.AvailableLanguages   = config.AvailableLanguages;
LanguageManager.AvailableDBLanguages = config.AvailableDBLanguages;

var lang = [];

for(var i in LanguageManager.AvailableLanguages){
	lang[i] = [];
	document.write('<script src="' + config.LanguageBasePath + LanguageManager.AvailableLanguages[i] + '" type="text/javascript"><\/script>');
}

LanguageManager.GetActiveDBLanguage = function(){
	if(sessionLanguage.choosedDBlanguage) return sessionLanguage.choosedDBlanguage;
	if(config.AutoDetectLanguage){
		var sUserLang = navigator.language ? navigator.language.toLowerCase() : navigator.userLanguage.toLowerCase();
		if(sUserLang.length >=5){
			sUserLang=sUserLang.substr(0,5);
			if(this.AvailableDBLanguages[sUserLang]) return sUserLang;
		}
		if(sUserLang.length >=2){
			sUserLang=sUserLang.substr(0,2);
			if(this.AvailableDBLanguages[sUserLang]) return sUserLang;
		}
	}
	return config.DefaultDBLanguage;
}

LanguageManager.GetActiveLanguage = function(){
	if(sessionLanguage.choosedlanguage) return sessionLanguage.choosedlanguage;
	if(config.AutoDetectLanguage){
		var sUserLang = navigator.language ? navigator.language.toLowerCase() : navigator.userLanguage.toLowerCase();
		if(sUserLang.length >=5){
			sUserLang=sUserLang.substr(0,5);
			if(this.AvailableLanguages[sUserLang]) return sUserLang;
		}
		if(sUserLang.length >=2){
			sUserLang=sUserLang.substr(0,2);
			if(this.AvailableLanguages[sUserLang]) return sUserLang;
		}
	}
	return config.DefaultLanguage;
}

LanguageManager.SetActiveDBLanguage = function(selectedDBLanguage){
	this.ActiveDBLanguage.Code = selectedDBLanguage;
	this.ActiveDBLanguage.Name = this.AvailableDBLanguages[this.ActiveDBLanguage.Code];
}

LanguageManager.SetActiveLanguage = function(targetDocument,selectedLanguage){
	this.ActiveLanguage.Code = selectedLanguage;
//	this.ActiveLanguage.Name = this.AvailableLanguages[this.ActiveLanguage.Code];
	this.TranslatePage(targetDocument,this.ActiveLanguage.Code);
}

LanguageManager.TranslateElements = function(targetDocument, tag, propertyToSet, selectedLanguage){
	var Elements=targetDocument.getElementsByTagName(tag);
	for(var i=0 ; i < Elements.length ; i++){
		if(Elements[i].getAttribute('refLang') && Elements[i].getAttribute('refLang')!=''){
			var s = lang[selectedLanguage][Elements[i].getAttribute('refLang')];
			if(tag == 'IMG'){
				if(propertyToSet == 'src'){if(Elements[i].id.indexOf('btn') == -1) Elements[i].src= s;}
				if(propertyToSet == 'alt'){Elements[i].alt = '   ' + s + '   ';Elements[i].title = '   ' + s + '   ';}
			}
			else eval('Elements[i].' + propertyToSet + ' = s');
		}
	}
}

LanguageManager.TranslatePage = function(targetDocument,selectedLanguage){
	this.TranslateElements(targetDocument, 'INPUT',  'value', 	  selectedLanguage);
	this.TranslateElements(targetDocument, 'SPAN',   'innerHTML', selectedLanguage);
	this.TranslateElements(targetDocument, 'OPTION', 'text', 	  selectedLanguage);
	this.TranslateElements(targetDocument, 'BUTTON', 'title', 	  selectedLanguage);
	this.TranslateElements(targetDocument, 'LABEL',  'innerHTML', selectedLanguage);
	this.TranslateElements(targetDocument, 'IMG',    'src', 	  selectedLanguage);
	this.TranslateElements(targetDocument, 'IMG',    'alt', 	  selectedLanguage);
	this.TranslateElements(targetDocument, 'A',		 'title', 	  selectedLanguage);
}

LanguageManager.ActiveDBLanguage 	  = new Object();
LanguageManager.ActiveDBLanguage.Code = LanguageManager.GetActiveDBLanguage();
LanguageManager.ActiveDBLanguage.Name = LanguageManager.AvailableDBLanguages[LanguageManager.ActiveDBLanguage.Code];

LanguageManager.ActiveLanguage 		  = new Object();
LanguageManager.ActiveLanguage.Code   = LanguageManager.GetActiveLanguage();
//LanguageManager.ActiveLanguage.Name   = LanguageManager.AvailableLanguages[LanguageManager.ActiveLanguage.Code];

