/**
 * Maneja la internacionalización del lado del cliente, solicitando los 
 * recursos necesarios al servidor, y cacheando la información
 * 
 * Dependencias
 * 				JsonI18N registrado en la sesión
 */

/**
 * define el cliente rpc
 */
if((jsonrpc==null)||(jsonrpc==undefined))
	var jsonrpc = new JSONRpcClient("/x/JSON-RPC");
	
var I18N = {
	
	/**
	 * Locale por defecto
	 */
	_DEFAULT_LOCALE : "default",
	
	/**
	 * Mantiene los valores de las claves internacionalizadas
	 * en una tabla de doble entrada
	 * values[<locale>][<key>] contiene el valor para una clave en el lenguaje indicado
	 */
	values : new Array(),
	
	_hasCountries: false,
	
	/**
	 * Devuelve el valor para key en el idioma seteado en el servidor
	 */
	get: function(key){
		if(!this._hasCountries)
			this._getCountries();
		
		if((this.values[this._DEFAULT_LOCALE]==undefined)||(this.values[this._DEFAULT_LOCALE]==null))
			this.values[this._DEFAULT_LOCALE]=new Array();
		if((this.values[this._DEFAULT_LOCALE][key]==undefined)||(this.values[this._DEFAULT_LOCALE][key]==null))
			this.values[this._DEFAULT_LOCALE][key]= jsonrpc.JsonI18N.getStr(key, null);
		return this.values[this._DEFAULT_LOCALE][key];
	},
	
	/**
	 * Hace un requerimiento en bloque de todas las nacionalidades
	 */
	_getCountries: function(){
		if((this.values[this._DEFAULT_LOCALE]==undefined)||(this.values[this._DEFAULT_LOCALE]==null))
			this.values[this._DEFAULT_LOCALE]=new Array();
		
		var countries = jsonrpc.JsonI18N.getCountries().map;
		for(var key in countries){
			this.values[this._DEFAULT_LOCALE][key]= countries[key];
		}
		this._hasCountries = true;
	}
}