﻿// This JavaScript was automatically generated by
// Jayrock.JsonRpc.Web.JsonRpcProxyGenerator, Jayrock, Version=0.9.8316.0, Culture=neutral, PublicKeyToken=null
// on den 13 maj 2009 at 13:29:46 (W. Europe Standard Time)

// Proxy version 1.0

function RDN_List_No(url) {
    this["regions"] = function (callback) {
        return call("regions", [], callback);
    }

    this["cities"] = function (RegionID, callback) {
        return call("cities", [RegionID], callback);
    }

    this["projects"] = function (RegionID, CityID, callback) {
        return call("projects", [RegionID, CityID], callback);
    }

    /* Returns an array of method names implemented by this service. */

    this["system.listMethods"] = function (callback) {
        return call("system.listMethods", [], callback);
    }

    /* Returns the version server implementation using the major, minor, build and revision format. */

    this["system.version"] = function (callback) {
        return call("system.version", [], callback);
    }

    /* Returns a summary about the server implementation for display purposes. */

    this["system.about"] = function (callback) {
        return call("system.about", [], callback);
    }

    var url = typeof (url) === 'string' ? url : '/json/RDN_List_no.ashx';
    var self = this;
    var nextId = 0;

    function call(method, params, callback) {
        var request = { id: nextId++, method: method, params: params };
        return callback == null ?
            callSync(method, request) : callAsync(method, request, callback);
    }

    function callSync(method, request) {
        var http = newHTTP();
        http.open('POST', url, false);
        setupHeaders(http, method);
        http.send(JSON.stringify(request));
        if (http.status != 200)
            throw { message: http.status + ' ' + http.statusText, toString: function () { return message; } };
        var response = JSON.eval(http.responseText);
        if (response.error != null) throw response.error;
        return response.result;
    }

    function callAsync(method, request, callback) {
        var http = newHTTP();
        http.open('POST', url, true);
        setupHeaders(http, method);
        http.onreadystatechange = function () { http_onreadystatechange(http, callback); }
        http.send(JSON.stringify(request));
        return request.id;
    }

    function setupHeaders(http, method) {
        http.setRequestHeader('Content-Type', 'text/plain; charset=utf-8');
        http.setRequestHeader('X-JSON-RPC', method);
    }

    function http_onreadystatechange(sender, callback) {
        if (sender.readyState == /* complete */4) {
            var response = sender.status == 200 ?
                JSON.eval(sender.responseText) : {};

            response.xmlHTTP = sender;

            callback(response);
        }
    }

    function newHTTP() {
        if (typeof (window) != 'undefined' && window.XMLHttpRequest)
            return new XMLHttpRequest(); /* IE7, Safari 1.2, Mozilla 1.0/Firefox, and Netscape 7 */
        else
            return new ActiveXObject('Microsoft.XMLHTTP'); /* WSH and IE 5 to IE 6 */
    }
}

RDN_List_No.rpcMethods = ["regions", "cities", "projects", "system.listMethods", "system.version", "system.about"];

