﻿var DataProvider = new Object();
DataProvider.getJSON = function(getJSONParameters, onErrorFunction) {
    $.ajax({
        url: getJSONParameters.url,
        async: false,
        type: 'POST',
        dataType: 'json',
        data: getJSONParameters.data,
        success: function(data, textStatus) {
            try {
                if ($.isFunction(getJSONParameters.callback))
                    getJSONParameters.callback(data);
            }
            catch (e) {
                if ($.isFunction(onErrorFunction)) {
                    onErrorFunction(e);
                }
                else {
                    if (e.fileName) {
                        //Message.ShowMessage(e.fileName + '[' + e.lineNumber + ']:' + '<br><h2>Message: <b>' + e.message + '</h2></b><br>' + e.stack, "Error in Callback Function");
                    } else {
                        //Message.ShowMessage(e, "Error in Callback Function");
                    }
                    //Message.HideLoading();
                }
            }
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            if ($.isFunction(onErrorFunction)) {
                onErrorFunction(XMLHttpRequest.responseText);
            }
            else {
                //Message.ShowMessage(XMLHttpRequest.responseText, XMLHttpRequest.statusText);
                //Message.HideLoading();
            }
        }
    });
}

DataProvider.sendRequest = function(url, method, data, callback) {
    var dataClone = CloneObject(data);
    dataClone.method = method;
    var params = {
        url: url,
        data: dataClone,
        callback: callback
    };
    DataProvider.getJSON(params);
}

DataProvider.getHTML = function(getHtmlParameters) {
    $.ajax({
        url: getHtmlParameters.url,
        type: 'POST',
        dataType: 'html',
        data: getHtmlParameters.data,
        success: function(data, textStatus) {
            try {
                if ($.isFunction(getHtmlParameters.callback))
                    getHtmlParameters.callback(data);
            }
            catch (e) {
                alert('Error');
                //Message.ShowMessage(e, "Error");
                //Message.HideLoading();
            }
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            //Message.ShowMessage(XMLHttpRequest.responseText, XMLHttpRequest.statusText);
            //Message.HideLoading();
        }
    });
}