﻿var net=new Object();
net.READY_STATE_UNINTIALIZED=0;
net.READY_STATE_LOADING=1;
net.READY_STATE_LOADED=2;
net.READY_STATE_INTERACTIVE=3;
net.READY_STATE_COMPLETE=4;

net.ContentLoader=function(component,url,method,requestParams){
        this.component=component;
        this.url=url;
        this.method=method;
        this.requestParams=requestParams;
}

net.ContentLoader.prototype={

        getTransport:function() {
                var transport;
                try {
                    if (window.XMLHttpRequest) {
                        transport=new XMLHttpRequest();
                    }
                    else if (window.ActiveXObject) {
                        try {
                                transport = new ActiveXObject("Maxml2.XMLHTTP");
                            }
                        catch(err) {
                                transport = new ActiveXObject("Microsoft.XMLHTTP");
                            }
                    }
                }
                catch (err) {}
                return transport;      
        },
       
       
        sendRequest: function() {
                var requestParams = [];
                for (var i=0;i<arguments.length; i++) {
                        requestParams.push(arguments[i]);
                }
                var request = this.getTransport();
                if (request) {
                    request.open(this.method, this.url, true);
                    request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                    var oThis = this;
                    request.onreadystatechange=function() {
                            oThis.handleAjaxResponse(request) };
                    request.send(this.queryString(requestParams) );
                }
                else {
                    this.component.handleNoXMLHTTPRequest();
                }
        },
       
        queryString: function(args) {
                var requestParams = [];
                for (var i=0; i<this.requestParams.length; i++ ) {
                        requestParams.push(this.requestParams[i]);
                }
                for (var j=0; j<args.length; j++ ) {
                        requestParams.push(args[j]);
                }
        },
       
        handleAjaxResponse: function(request) {
                if (request.readyState == net.READY_STATE_COMPLETE) {
                        if (this.isSuccess(request) )
                                this.component.ajaxUpdate(request);
                        else
                                this.component.handleError(request);
                }
        },
       
        isSuccess: function(request){
                return  request.status==0 || (request.status >=200 && request.status < 300);
        }      
}      

Array.prototype.contains=function(obj){
        return (this.indexOf(obj)>=0);
}

Array.prototype.push=function(ojb){
        if (!this.contains(obj)) {
                this[this.length]=obj;
        }
} 

