﻿// Archivo JScript

var net = new Object();

net.READY_STATE_UNINITIALIZED = 0;
net.READY_STATE_LOADING = 1;
net.READY_STATE_LOADED = 2;
net.READY_STATE_INTERACTIVE = 3;
net.READY_STATE_COMPLETE = 4;

//constructor
net.ContentLoader = function (url, funcion, funcionError, metodo, parametros, contentType){
    this.url = url;
    this.req = null;
    this.estado =net.READY_STATE_UNINITIALIZED;
    this.onload = funcion;
    this.onerror = (funcionError) ? funcionError : this.defaultError;
    this.cargaContenidoXML(url, metodo, parametros, contentType);
}

net.ContentLoader.prototype = {
    cargaContenidoXML : function (url, metodo, parametros, contentType) {
        if (window.XMLHttpRequest) { // Mozilla, Safari, ...
            this.req = new XMLHttpRequest();
        } else if (window.ActiveXObject) { // Internet Explorer
            this.req = new ActiveXObject("Microsoft.XMLHTTP");
        }
        
        if (this.req) {
            try {
                var loader = this;
                this.req.onreadystatechange = function() {
                    loader.onReadyState();
                }
                this.req.open(metodo, url, true);
                if(contentType) {
                    this.req.setRequestHeader("Content-Type", contentType);
                }
                this.req.send(parametros);
            } catch (err) {
                this.onerror.call(this);
            }
        }
    },
    
    onReadyState : function() {
        var req = this.req;
        var ready = req.readyState;
        this.estado = ready;
        if (ready == net.READY_STATE_COMPLETE) {
            var httpStatus = req.status;
            if (httpStatus == 200 || httpStatus == 0) {
                this.onload.call(this);
            } else {
                this.onerror.call(this);
            }
        }
    },
    
    defaultError : function () {
        alert (" se ha producido un error al obtener los datos"
        + "\n\nreadyState: " + this.req.readyState
        + "\n\nstatus: " + this.req.status
        + "\n\nheaders: " + this.req.getAllResponseHeaders());
    }
} // end net.ContentLoader.prototype


