﻿var Data =
{
    BO: {}
};



//
Data.webCall = function (context, args) {

    var data = {};

    var rest_paramMode;


    var len = args.length;

    var cb2, cb1;


    if (len > 0) {


        if (typeof (args[0]) == 'object') {
            data = args[0];
        }



        var lastArg = args[len - 1];

        if (typeof (lastArg) == 'function');
        {
            cb2 = lastArg;

            if (len > 1) {
                var preLastArg = args[len - 2];

                if (typeof (preLastArg) == 'function')
                    cb1 = preLastArg;
            }
        };


    };



    var onSuccess = cb1 || cb2;
    onSuccess = onSuccess || function () { /*нет обработчика*/ };
    var onError = (cb1 && cb2) ? cb2 : function () { /*нет обработчика*/ };


    var restInfo = args.callee.rest;

    var obj = {
        rest_serverMethod: context.name + '/' + restInfo.method,
        rest_paramMode: rest_paramMode || 'no',
        data: JSON.stringify(data)
    };

    //var literalData = JSON.stringify(data);
    var absoluteUrl = '/rest/proxy.ashx';



    var request = jQuery.ajax({
        type: restInfo.http,
        url: absoluteUrl,
        //contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        data: obj,
        success: onSuccess,
        error: onError
    });

    return request;
};
