var LangClass = {
	CurrentMes : {},
	DefaultMes : {},
	CurrentLanguage : '',
	DefaultLanguage : 'en',
	AvailableLanguages : 
	{
		en : 'English',
		es : 'Español',
		de : 'Deutsche',
		fr : 'France'
	},
	
	Init : function()
	{
		this.DefaultMes = lang_msg;
		this.Detect();
		if(this.CurrentLanguage != this.DefaultLanguage)
		{
			this.Load(this.CurrentLanguage);
			this.CurrentMes = lang_msg;
		}else
		{
			this.CurrentMes = this.DefaultMes;
		}
	},

	Load : function(file)
	{
		//document.write( '<script type="text/javascript" src="/js/lang/' + file + '.js"><\/script>' ) ;
		jQuery('<script />').attr('type','text/javascript').attr('src','/js/lang/' + file + '.js').appendTo('body');
	},
	Get : function(lang_key)
	{
		var ret;
		if(this.CurrentMes[lang_key])
		{
			ret =  this.CurrentMes[lang_key];
		}
		else if(this.DefaultMes[lang_key])
		{
			ret = this.DefaultMes[lang_key];
		}
		else
		{
			ret = '{__' + lang_key + '__}';
		}
		return ret;
		/*if(!empty($values))
		{
			return sprintf_array($ret,$values);	
		}else 
			return $ret;*/
	},
	Detect : function()
	{
		var UserLang ;
		
		UserLang = getCookie('lang');
		
		if(undefined !== UserLang)
		{
			if ( this.AvailableLanguages[UserLang] ) 
			{
				this.CurrentLanguage = UserLang ;
				return;
			}
		}	
		
		// IE accepts "navigator.userLanguage" while Gecko "navigator.language".
		if ( navigator.userLanguage )
			UserLang = navigator.userLanguage.toLowerCase() ;
		else if ( navigator.language )
			UserLang = navigator.language.toLowerCase() ;
		else
		{
			// Firefox 1.0 PR has a bug: it doens't support the "language" property.
			this.CurrentLanguage = this.DefaultLanguage ;
			return;
		}
		
		// Some language codes are set in 5 characters,
		// like "pt-br" for Brazilian Portuguese.
		if ( UserLang.length >= 5 )
		{
			UserLang = UserLang.substr(0,5) ;
			if ( this.AvailableLanguages[UserLang] ) 
			{
				this.CurrentLanguage = UserLang
				return;
			}
		}

		// 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 ( UserLang.length >= 2 )
		{
			UserLang = UserLang.substr(0,2) ;
			if ( this.AvailableLanguages[UserLang] ) 
			{
				this.CurrentLanguage = UserLang
				return;
			}
		}
		return;
	}
	
}

// возвращает cookie если есть или undefined
function getCookie(name) {
	var matches = document.cookie.match(new RegExp(
	  "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
	))
	return matches ? decodeURIComponent(matches[1]) : undefined; 
}

// уcтанавливает cookie
/*function setCookie(name, value, props) {
	props = props || {};
	var exp = props.expires;
	if (typeof exp == "number" && exp) {
		var d = new Date();
		d.setTime(d.getTime() + exp*1000);
		exp = props.expires = d;
	}
	if(exp && exp.toUTCString) { props.expires = exp.toUTCString(); }

	value = encodeURIComponent(value);
	var updatedCookie = name + "=" + value;
	for(var propName in props){
		updatedCookie += "; " + propName;
		var propValue = props[propName];
		if(propValue !== true){ updatedCookie += "=" + propValue; }
	}
	document.cookie = updatedCookie;

}

// удаляет cookie
function deleteCookie(name) {
	setCookie(name, null, { expires: -1 });
}*/

