/*
 * Libreria rpc 
 */
var rpc = new Object();
(function(rpc) {
	rpc.settings = {
		callback: 	function(){},
		init:		true,
		url:		"/TVoIP/JSON-RPC"
	};
	rpc.isInited = false;
	rpc.json = null;
	
	rpc.config = function(config) {
		this.settings = $.extend(this.settings, config);
		if(this.settings.init) this.init(); 
	};
	
	rpc.init = function() {
		var cb = function(result, e) {
		    if(e) {
		    	e = getLocalizedMessage(e); 
		    	rpc.settings.callback(null,e);
		    } else {
		    	rpc.settings.callback(result);
		    	rpc.isInited = true;
		    }
		};
		
		this.json = new JSONRpcClient(cb, this.settings.url);
	};
	
	rpc.showError = function(e,callback) {
		if(callback == undefined) {
			callback = function(){top.location.href = '/TVoIP/CallShop/Login'};
		}
		var msg = getLocalizedMessage(e).message+".<br> Conectar nuevamente ?";
		if(top.dialog != undefined) {
			top.dialog.removeWait();
			top.dialog.error('Atención',msg,callback);
		} else {
			alert('Error: '+msg);
			callback();
		}
	};
	
	rpc.recreateArray = function(aryIn) {
		if(aryIn == null || aryIn.length == 0) {
			return null;
		}
		var aryOut = [];
		for(i=0; i < aryIn.length; i++) {
			aryOut[i] = aryIn[i];
		}
		
		return aryOut;
	}
		
	function getLocalizedMessage(e) {	
		if(e.name == "JSONRpcClientException" || e.name == "Error" ) {
			switch(e.code) {
				case 590:			
					e.message = 'no se puedo parsear';
					break;
				case 591:
					e.message = 'metodo no autorizado o no existe'; 
					break;
				case 592:
					e.message = 'no se pudo deserializar'; 
					break;
				case 593:
					e.message = 'no se pudo serializar';
					break;
				case 550:
					e.message = 'no fue posible conectarse al servidor'; 
					break;
				default:
					e.message = 'error en el servidor';
					break;
			}
		} else if(e.code=490) { // remote exception		
			switch(e.name) {
				case 'com.anura.web2.orb.UnauthorizedRpcActionException':
					e.message = 'metodo no autorizado';
					break;
				default:
					e.message = 'Excepcion remota: '+e.name+', mensaje: '+e.message;
					break;
			}
		} else {
			e.message = 'Excepcion desconocida: '+e.name+', mensaje '+e.message;
		}
		
		return e;
	}
})(rpc);

