﻿//plugin jQuery, permet de faire des call à des web services .net
jQuery.callWS = jQuery.callWS = function(options) {
    var defaults = {
        url: '',
        data: null,
        success: function(data, textStatus) {
            alert(data.d);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            //alert(XMLHttpRequest.responseText);
        },
        securityKey: null
    };

    var settings = jQuery.extend(defaults, options);

    if (settings.data == null) {
        jQuery.ajax({
            type: "POST",
            url: settings.url,
            contentType: "application/json; charset=utf-8",
            beforeSend: function(xhr) {
                xhr.setRequestHeader("Content-type", "application/json; charset=utf-8");
                if (settings.securityKey != null)
                    xhr.setRequestHeader("securityTicket", settings.securityKey);
            },
            dataType: "json",
            success: settings.success,
            error: settings.error
        });
    } else {
        jQuery.ajax({
            type: "POST",
            url: settings.url,
            data: settings.data,
            contentType: "application/json; charset=utf-8",
            beforeSend: function(xhr) {
                xhr.setRequestHeader("Content-type", "application/json; charset=utf-8");
                if (settings.securityKey != null)
                    xhr.setRequestHeader("securityTicket", settings.securityKey);
            },
            dataType: "json",
            success: settings.success,
            error: settings.error
        });
    }
};

var Parameter = Base.extend({
    constructor: function(parameterName, parameterValue) {
        this.name = parameterName;
        this.value = parameterValue;
    },
    name: null,
    value: null,
    getName: function() {
        return this.name;
    },
    getValue: function() {
        return this.value;
    }
});

var DataBuilder = Base.extend({
    parameters: new Array(5), //prends pour acquis qu'on ne va pas avoir de méthode de plus que cinq paramètres
    add: function(parameterName, parameterValue) {
        this.parameters[this.parameters.length] = new Parameter(parameterName, parameterValue);
    },
    clear: function() {
        this.parameters = new Array(5);
    },
    toJSONString: function() {
        var s = "";
        for (i = 0; i < this.parameters.length; i++) {
            if (this.parameters[i] != null) {
                if (s != "")
                    s += ",";
                s += '"' + this.parameters[i].getName() + '":';
                var parameterValue = this.parameters[i].getValue();
                if (isNaN(parameterValue)) {
                    s += '\'' + parameterValue + '\'';
                }
                else {
                    s += parameterValue;
                }
            }
        }
        if (s != "")
            s = "{" + s + "}";
        return s;
    }
});