    var aFunctions;     // array con las funciones a las que se ha de llamar
    var aRuta;     // array con las funciones a las que se ha de llamar
    var aParams;        // array con los parometros que se la pasan a cada funcion dentro de cada pos hay un param1|param2|param3
    var aTipoReturn;    // array con el indicador que nos diro si el resultado es imprimible o no y el nombre del div a donde iro resultado
    var iPos;           // posicion actual dentro de los arrays, al iniciar un proceso de llamadas, debe inicializarse a [0]
    var sMensajeReturn; // Mensaje que se mostraro al final de toda la llamada en el alert    
        
    function init_call_process(sMensaje)
    {
        iPos            = 0;
        sMensajeReturn  = "";
        call_llamadaProcesoInicio(sMensaje);        
        call_manager();
    }
    
    function call_manager()
    {        
        if(iPos < aFunctions.length)
        {            
            if(aParams[iPos].indexOf("##") != -1)
            { 
                aValoresParams = aParams[iPos].split('##');
                //alert(aValoresParams.length);
                if(aValoresParams.length==0)
                {
                    //agent.call( '', aFunctions[iPos], 'callback__manager', '' );
                    $.get(aRuta[iPos],
                        {func: aFunctions[iPos]},
                        function(data){
                            callback__manager(data);
                        }
                    );
                }
                if(aValoresParams.length==1)
                {                
                    //agent.call( '', aFunctions[iPos], 'callback__manager', aValoresParams[0] );
                    $.get(aRuta[iPos],
                        {func: aFunctions[iPos], param1: aValoresParams[0]},
                        function(data){
                            callback__manager(data);
                        }
                    );
                }
                if(aValoresParams.length==2)
                {
                    //agent.call( '', aFunctions[iPos], 'callback__manager', aValoresParams[0], aValoresParams[1] );
                    $.get(aRuta[iPos],
                        {func: aFunctions[iPos], param1: aValoresParams[0], param2: aValoresParams[1]},
                        function(data){
                            callback__manager(data);
                        }
                    );
                }
                if(aValoresParams.length==3)
                {
                    //agent.call( '', aFunctions[iPos], 'callback__manager', aValoresParams[0], aValoresParams[1], aValoresParams[1]  );
                    $.get(aRuta[iPos],
                        {func: aFunctions[iPos], param1: aValoresParams[0], param2: aValoresParams[1], param3: aValoresParams[1]},
                        function(data){
                            callback__manager(data);
                        }
                    );
                }
            }
            else
            {                   
                if(aParams[iPos]!="")
                {                    
                    //agent.call( '', aFunctions[iPos], 'callback__manager', aParams[iPos] );
                    $.get(aRuta[iPos],
                        {func: aFunctions[iPos], param1: aValoresParams[iPos]},
                        function(data){
                            callback__manager(data);
                        }
                    );
                }
                else
                {
                    //agent.call( '', aFunctions[iPos], 'callback__manager', '' );
                    $.get(aRuta[iPos],
                        {func: aFunctions[iPos]},
                        function(data){
                            callback__manager(data);
                        }
                    );
                }                
            }
        }
        else
        {    
            // Quitamos la transparencia
            call_llamadaProcesoFin();                
        }        
    }
    
    function callback__manager(str)
    {                        
        // alert("Respuesta : "+str);
        // Analizamos el resultado de la operacion
        aValores    = str.split('|');
        aValores[0] = removeChar(aValores[0]);
        
        // Recuperamos las opciones de retorno de la llamada a la funcion
        aValoresATipoReturn = aTipoReturn[iPos].split('|');
        aValoresATipoReturn[0] = removeChar(aValoresATipoReturn[0]);
            
        //alert("Resultado       : "+str);
        //alert("Tipo return 0   : "+aValoresATipoReturn[0]);
        //alert("Tipo return 1   : "+aValoresATipoReturn[1]);
        //alert("Tipo return 2   : "+aValoresATipoReturn[2]);
            
        // Miramos si se debe guardar el mensaje que me ha devuelto la llamada
        if(aValoresATipoReturn[1]=="yes")
        {            
            if(aValores.length==2)
            {
                sMensajeReturn = aValores[1];                
            }
            else
            {
                sMensajeReturn = aValores;
            }            
        }
        // alert(sMensajeReturn);
                
        // Si se devuelven 2 parometros
        if(aValores.length==2)
        {                    
            if( (aValores[0]===true) || (aValores[0]==='true') )
            {            
                // Miramos si se debe imprimir el resultado de la operacion
                if(aValoresATipoReturn[0]==='print')
                {        
                    // alert("Print");
                    // Mostramos el contenido en el div que se nos indica
                    if(sMensajeReturn!="")
                    {   
                        jsFunciones_agent__enviarSysMensaje(sMensajeReturn.replace("[INTRO]", "\r\n"), 'o');
                    }
                    if(aValoresATipoReturn[2]!='')
                        $("#"+aValoresATipoReturn[2]).html(aValores[1]);
                }
            }
            else
            {
                jsFunciones_agent__enviarSysMensaje(aValores[1].replace("[INTRO]", "\r\n"), 'e');
            }
        }
        // Si solo se devuelve un parometro
        else
        {                    
            // Miramos si se debe imprimir el resultado de la operacion
            if(aValoresATipoReturn[0]==='print')
            {        
                // alert("Print");
                // Mostramos el contenido en el div que se nos indica
                if(sMensajeReturn!="")
                {
                    jsFunciones_agent__enviarSysMensaje(sMensajeReturn.replace("[INTRO]", "\r\n"), 'o');
                }                
                $("#"+aValoresATipoReturn[2]).html(str);
            }
        }
                
        // Cuando recibimos una respuesta, incrementamos la posicion
        // de navegacion dentro del array
        iPos++;
        
        // Volvemos a llamar a la funcion manager
        call_manager();        
    }