/**
* @file xml-rpc.js
* @date 1/18/2006
* @auth Rolandas Razma
* @Based on http://www.w3schools.com/dom/dom_http.asp
*/


function RPC() {
    this.State  = 0;
    this.Status = 0;

    if (window.XMLHttpRequest) {
        this.XMLHTTP = new XMLHttpRequest()
    } else if (window.ActiveXObject) {
        this.XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
    }

    if(this.XMLHTTP){
        //this.XMLHTTP.onreadystatechange = function(){ obj.StateChanged(); };
    }

    return ((this.XMLHTTP)?this:false);
}


RPC.prototype = {
	StateChanged : function() {
        this.State  = this.XMLHTTP.readyState;

        if(this.State == 4 ){
            this.Status = this.XMLHTTP.status;

            if(this.Status == 0) {
                this.Close();
            }else if(this.Status == 200 && this.XMLHTTP.statusText == "OK"){
                this.DataArrival(this.XMLHTTP.responseText, this.XMLHTTP.responseXML);       
                this.XMLHTTP.abort();
            }else{
                this.Error(this.Status, this.XMLHTTP.statusText);   
            }
        }else{
            this.Status = 0;
        }
	},


	Open : function(url) {
        var obj = this;
        this.XMLHTTP.onreadystatechange = function(){ obj.StateChanged(); };
        this.XMLHTTP.open("GET", url, true);

        if(window.ActiveXObject) {
            this.XMLHTTP.send();
        }else{
            this.XMLHTTP.send(null);
        }
	},


    DataArrival : function(Text, XML){
        
    },


    Error : function(Error, ErrorText){
        alert('Error ' +Error +': ' +ErrorText);
    },


    Close : function(){
        this.XMLHTTP.abort();
    }
}

