
SAPO.namespace('Utility');SAPO.Utility.I18n={version:'0.1',_baseLang:'pt_PT',_baseObj:false,_testMode:false,_loadedDicts:[],init:function(baseLangObject,langCode){if(typeof baseLangObject!=='object'){this._baseObj=false;return false;}
this._loadedDicts.push(baseLangObject);this._baseObj=baseLangObject;if(typeof langCode!=='undefined'){this._baseLang=langCode;}
if(typeof this._baseObj[this._baseLang]!=='undefined'){this._baseObj=this._baseObj[this._baseLang];}},append:function(baseLangObject,langCode){this._loadedDicts.push(baseLangObject);var keys=baseLangObject[langCode];if(typeof keys==='undefined'){keys=baseLangObject[this._baseLang];if(typeof keys==='undefined'){throw'append: given baseLangObject does not support lang "'+langCode+'"';}}
if(typeof this._baseObj==='object'){for(var k in keys){if(keys.hasOwnProperty(k)){this._baseObj[k]=keys[k];}}}
else{this._baseObj=keys;this._baseLang=langCode;}},getLang:function(){return this._baseLang;},alias:function(){return function(){return this.text.apply(this,arguments);}.bindObj(this);},text:function(str){if(typeof str!=='string'){return;}
var original,res;if(!this._baseObj){original=str;}
else{res=this._baseObj[str];original=(typeof res==='undefined')?(this._testMode?'['+str+']':str):res;}
var re=false,i,l=arguments.length;if(l>1){for(i=1;i<l;++i){if(typeof arguments[i]!=='undefined'){re=new RegExp('{%s:'+i+'}','');if(re.test(original)){original=original.replace(re,arguments[i]);}
else{original=original.replace(/\{%s\}/,arguments[i]);}
re=null;re=false;}}}
original=original.replace(/\{%s(\:\d*)?\}/ig,'');return original;},ntext:function(strSin,strPlur,count){if(arguments.length===3){if(typeof strSin==='string'&&typeof strPlur==='string'&&typeof count==='number'){if(count===1){return strSin;}
else{return strPlur;}}}
else{if(typeof arguments[0]==='object'&&arguments[0].constructor===Array){if(typeof arguments[1]==='number'){if(arguments[1]>=(arguments[0].length-1)){return arguments[0][(arguments[0].length-1)];}
else{return arguments[0][arguments[1]];}}}
else{return undefined;}}},reload:function(langCode){this._baseLang=langCode;var i,iLen=this._loadedDicts.length;for(i=0;i<iLen;++i){this.append(this._loadedDicts[i],langCode);}}};