transaccion = function (config){
	// funcion de contro de error de servidor
	var transaccionFailure = function(o){
		var oR = o.responseText;
		
		var mensajeUsuario = {	titulo : 'Error inesperado.',
								cuerpo : 'Error indetectable al ' + config.nombre + '<br>' + 'M&eacute;todo : ' + config.metodo + '.<br>' + oR,
								detalle : oR
							 };
		var mensajeProgramador;
		var divicionHttp = oR.split('HTTP');
		
		if ((divicionHttp instanceof Array) && (textoUsuario = divicionHttp[2])){
			
			// puede mejorarse mediante despliegue colapsable del destalle del error
			var strFin = textoUsuario.indexOf('</h2>') - 10;
			mensajeUsuario.cuerpo = 'Sr usuario, ha sucedido un error inesperado al ' + config.nombre +'<br><br>';
			mensajeUsuario.cuerpo +='M&eacute;todo : ' + config.metodo + '.<br>'
			var divicionLi = textoUsuario.split('<li>');
			for(var i = 0, len = divicionLi.length; i < len; i++)
				divicionLi[i] = divicionLi[i].replace('</li>', '');
				
			divicionLi[0] = textoUsuario.substr(10, strFin);
			for(var i = 0, len = divicionLi.length-1; i < len; i++)
				mensajeUsuario.cuerpo += divicionLi[i] + '<br>';
		}
		
		new mensaje(  mensajeUsuario.titulo 
					 ,mensajeUsuario.cuerpo 
					 ,{ modal:true
					   ,width:480
					   ,height:360
					   ,shadow:true
					   ,closable:true 
					  }
				   ).show(config.inicioAnimacion);
		
	};
	// crea el callback
	var callback = { success: config.transaccionOk, 
					 failure: transaccionFailure.createDelegate(this) };
					 
	// compone la url de la transaccion					 
	var url = config.url + '?';	
	var parametros = config.parametros
	for(var parametro in config.parametros){
		url += parametro + '=' + parametros[parametro] + '&';
	}
	url = url.substr(0, url.length - 1);
	// llama al servidor
	YAHOO.util.Connect.asyncRequest('GET', url, callback );
};

