﻿/*********************************************************
* jQuery Web Service wrapper
*********************************************************/

//Register the namespace
CreativeSkidz.Core.registerNamespace("CreativeSkidz.WebServices");

//Service Proxy Class
CreativeSkidz.WebServices.ServiceProxy = function(serviceUrl) {
	this.serviceUrl = serviceUrl;
};

CreativeSkidz.WebServices.ServiceProxy.prototype = {
    invoke: function(method, data, callback, errorCallback, bare) {
        // *** Convert input data into JSON - REQUIRES Json2.js
        var json = JSON.stringify(data);

        // *** The service endpoint URL
        var url = this.serviceUrl + method;

        var proxy = this;

        $.ajax({
            url: url,
            data: json,
            type: "POST",
            processData: false,
            contentType: "application/json",
            timeout: 10000,
            dataType: "text",  // not "json" we'll parse
            cache: false,
            success:
                function(res) {
                    if (!callback) return;
                    try {
                        // *** Use json library so we can fix up MS AJAX dates
                        var result = JSON.parse(res);
                        // *** Bare message IS result
                        if (bare) {
                            callback(result);
                            return;
                        }
                        // *** Wrapped message contains top level object node strip it off
                        for (var property in result) {
                            callback(result[property]);
                            break;
                        }
                    } catch (e) {
                        proxy._clientError("Problem processing server response, please try again.", e);
                        errorCallback();
                    }
                },
            error: function(xhr) {
                if (!errorCallback) return;
                try {
                    if (xhr.responseText) {
                        var err = JSON.parse(xhr.responseText);
                        if (err)
                            errorCallback(err.Message);
                        else
                            errorCallback("Unknown server error.");
                    } else {
                        errorCallback("Unknown server error.");
                    }
                    return;
                } catch (e) {
                    proxy._clientError("Problem communicating with the server, please try again.", e);
                    errorCallback();
                }
            }
        });
    },
    _clientError: function(message, e) {
        //CreativeSkidz.Core.Logging.logWarning(message, e);
        alert(message);
    }
};
