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.CargadorContenidos = function(url, funcion, parametros, contentType, funcionError) {
	this.url = url;
	this.req = null;
	this.onload = funcion;
	this.onerror = (funcionError) ? funcionError : this.defaultError;
	this.cargaContenidoXML(url, parametros, contentType);
}
net.CargadorContenidos.prototype = {
	cargaContenidoXML: function(url, parametros, contentType) {
		if(window.XMLHttpRequest) {
			this.req = new XMLHttpRequest();
		}
		else if(window.ActiveXObject) {
			this.req = new ActiveXObject("Microsoft.XMLHTTP");
		}
		if(this.req) {
			try {
				var loader = this;
				this.req.onreadystatechange = function() {
					loader.onReadyState.call(loader);
				}
				if (url){
					var union = "";
					union = (url.indexOf("?")==-1) ? "?" : "&";
					url = url +  union + "nocache=" + Math.random();
				}
				this.req.open("POST", url, true);
				if(contentType) {
					this.req.setRequestHeader("Content-Type", contentType);
				} else {
					this.req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
				}
				this.req.send(parametros);
			} catch(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
		+ "\nreadyState:" + this.req.readyState
		+ "\nstatus: " + this.req.status
		+ "\nheaders: " + this.req.getAllResponseHeaders());
	}
}
