﻿/*
    Define una clase de conexión con los objetos .NET 
    del servidor
*/


/*
 *  Clase de conexión con los los objetos .NET del servidor
*/
function ServerNETConnector() {
    return {
        /* Permite invocar a una función de un objeto .NET
        Parámetros
        @jsonNETObject  : Objeto .NET serializado en JSON
        @method         : Método al que invocar
        @...            : El resto serán los  parámetros con los que se invocará a la función
        */
        invoke: function() {
            if (arguments.length < 2) return;

            var netObj = arguments[0];
            var methodName = arguments[1];
            var fn_rsult = arguments[arguments.length - 1];
            if (!netObj || !methodName) return

            // TODO: Pasar esto a SOAP correcto!
            var xmlInvoke = "<ServerNETConnector><function name=\"invoke\"><method name=\"" + methodName + "\">";
            // Parámetros
            xmlInvoke += "<param><![CDATA[" + Ext.util.JSON.encode(netObj) + "]]></param>";
            // Si hay mas parámetros
            for (var p = 2; p != arguments.length - 1; ++p) {
                if (arguments[p] != "fn_resultCallBack")
                    xmlInvoke += "<param><![CDATA[" + arguments[p] + "]]></param>";
            }
            xmlInvoke += "</method></function></ServerNETConnector>";
            // Listo, lanzamos la petición por post!
            Ext.Ajax.request({
                url: "/handlers/ServerNETConnector.ashx"
                , params: xmlInvoke
                , success: function(response) {
                    if (typeof fn_rsult == 'function') {
                        fn_rsult(response.responseXML);
                    }
                }
            });
        }
    }
}