/**
 * File: apme.dictionary.js
 * Author: João Fonseca (j.fonseca@netcabo.pt)
 */
var apme = apme || {};

apme.dictionary = {
	language : 'pt',
	translate : function (selector) {
		var lang = this.language;
		$(selector).each(function () {
			var $elem = $(this);
			
			if (~($elem.html().indexOf('<'))) {
				apme.dictionary.translate($elem.children(), lang);
				return;
			}
			if ($elem.is('[data-lang]'))
				return;
			
			var key = $elem.attr('data-trans-key');
			
			if (key === undefined) {
				key = $elem.text();
				$elem.attr('data-trans-key', key);
			}
			
			$.ajax({
				type : "PUT",
				url : '/dictionary.php?lang=' + lang,
				data : key,
				success : function (msg) {
					//alert("Translated: " + key + '=>' + msg);
					$elem.html(msg);
				}
			});
		});
	},
	update : function () {
		var lang = this.language;
		$('[data-lang]').each(function () {
			var $this = $(this);
			if ($this.attr('data-lang') == lang) {
				$this.show();
			} else {
				$this.hide();
			}
		});
		$('[data-lang]').find('[data-lang=' + lang + ']').show();
		$('[data-trans=true]').each(function () {
			$(this).attr('data-trans', 'false');
			apme.dictionary.translate(this);	
		});
		
	},
	setLanguage : function (lang) {
		this.language = lang;
		$.cookie('lang', lang);
		$("[data-trans=false]").attr('data-trans', 'true');
		this.update();
	},
	init : function () {
		var cookieLang = $.cookie('lang');
		if (cookieLang == null) {
			cookieLang = 'pt';
		}
		this.setLanguage(cookieLang);
	}
};

