// Bulletin Messenger API
// Copyright 2007 - BulletinWireless.com, all rights reserved.

var gErrorChain = [];
var gRpc = new Object();
var gStatusCode = new StringConst

function StringConst() {

    this.NUR = 'Number Unreachable';
    this.SNT = 'Message Sent';
    this.ERR = 'Internal Error';
    this.NRCV = 'Network Error';
    this.NRC = 'Network Error';
    this.RCV = 'Message Received';
    this.EXP = 'Delivery Timeout';
    this.INF = 'Insufficient Credit';

    this.goodStatus = function(code) {

        if (code == "SNT" || code == "RCV") {
            return true;
        }
        return false;
    }
};

function Message() {

    this.msgDate = "";
    this.msgText = "";
    this.msgAddress = "";
    this.msgStatus = "";
    this.msgURL = "";
};

function Rpc(callback) {

    this.callback = null;
    this.useAsync = true;
    this.requestComplete = false;
    this.returnStatus = 0;
    this.returnStatusText = "";

    this.httpRequest = new XMLHttpRequest();

    if (callback != null) {
        this.callback = callback;
    }
    gRpc = this;
};

Rpc.prototype.asyncEventHandler = function() {

    if (gRpc.httpRequest.readyState == 4) {

        gRpc.returnStatus = gRpc.httpRequest.status;
        gRpc.returnStatusText = gRpc.httpRequest.statusText;
        gRpc.requestComplete = true;
    }
};

Rpc.prototype.getResponse = function() {
    return this.httpRequest.responseXML;
};

Rpc.prototype.sendRequest = function(method, url, async) {

    var result = false;

    try {

        this.requestComplete = false;
        this.returnStatus = 0;
        this.returnStatusText = "";

        this.httpRequest.onload = function asyncCall() { gRpc.callback(); };
        this.httpRequest.open(method, url, async);
        this.httpRequest.setRequestHeader('If-Modified-Since', 'Wed, 15 Nov 1995 00:00:00 GMT');
        if (async) {
            this.httpRequest.onreadystatechange = this.asyncEventHandler;
        }
        this.httpRequest.send();
        result = true;
    }
    catch (err) {
        gErrorChain.push(err);
    }

    return result;
};