﻿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;

net.CargadorContenidos = function(url, funcion, standby, funcionError, objeto) {
    this.objeto = objeto;
    this.url = url;
    this.req = null;
    this.standby = standby;
    this.onload = funcion;
    this.onerror = (funcionError) ? funcionError : this.defaultError;
    this.cargaContenidoXML(url, standby);
};

net.CargadorContenidos.prototype = {
    cargaContenidoXML: function(url, standby) {
        if (window.XMLHttpRequest) {
            this.req = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) {
            this.req = new ActiveXObject("Microsoft.XMLHTTP");
        }
        if (this.req) {
            try {
                var loader = this;
                if (standby) {
                    this.req.onreadystatechange = function() {
                        loader.onReadyState.call(loader);
                    }
                }
                this.req.open('GET', url, standby);
                this.req.send(null);
                if (!standby) {
                    loader.onReadyState.call(loader);
                }
            }
            catch (err) {
                alert(err)
                this.onerror.call(this);
            }
        }
    },

    onReadyState: function() {
        var req = this.req;
        var ready = req.readyState;
        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\nUrl:" + this.url
          + "\n\nreadyState:" + this.req.readyState
          + "\nstatus: " + this.req.status
          + "\nError: " + this.req.statusText
          + "\nTexto: " + this.req.responseText
          + "\n\nheaders: " + this.req.getAllResponseHeaders());
    }
}