<!--

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.ContentLoader = function (url, vars, onload, onerror, method) {
	this.url = url;
	this.vars = vars;
	this.req = null;
	this.onload = onload;
	this.onerror = (onerror) ? onerror : this.defaultError;
	this.method = (method) ? method : "POST";

	this.loadXMLDoc (url);

}

net.ContentLoader.leave = function () {
	if (this.req) {
		this.req.abort ();
	}
	return;
}

net.ContentLoader.prototype = {

	loadXMLDoc:function (url) {

		if (window.XMLHttpRequest) {

			this.req = new XMLHttpRequest ();

		} else if (window.ActiveXObject) {

			try {

				this.req = new ActiveXObject ("Msxml2.XMLHTTP");

			} catch (err) {

				this.req = new ActiveXObject ("Microsoft.XMLHTTP");
			}
		}

		if (this.req) {

			try {
				var loader = this;

				this.req.onreadystatechange = function () {
					loader.onReadyState.call (loader);
				}

				this.req.open (this.method, url, true);

				if (this.req.overrideMimeType) {
					this.req.overrideMimeType ("text/xml");
				}

				this.req.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

				this.req.send (this.vars);

			} 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 ("error fetching data!"
		+ "\n\nreadyState: " + this.req.readyState
		+ "\nstatus: " + this.req.status
		+ "\nheaders: " + this.req.getAllResponseHeaders ());

	}
}

window.onunload = net.ContentLoader.leave;

var xmlDoc;
var xslDoc;
var objOutput;
var nextFunction;

function loadXMLXSLTDoc (urlXML, urlXSL, elementID, next) {

	xmlDoc = null;
	xslDoc = null;
	objOutput = document.getElementById (elementID);

	nextFunction = (next) ? next : null;

	new net.ContentLoader (urlXML, null, onXMLLoad);
	new net.ContentLoader (urlXSL, null, onXSLLoad);
}

function onXMLLoad () {
	xmlDoc = this.req.responseXML;
	doXSLT ();
}

function onXSLLoad () {
	xslDoc = this.req.responseXML;
	doXSLT ();
}

function doXSLT () {
	if (xmlDoc == null || xslDoc == null) {
		return;
	}

	if (window.ActiveXObject) {
		objOutput.innerHTML = xmlDoc.transformNode (xslDoc);
	} else {
		var xsltProcessor = new XSLTProcessor ();
		xsltProcessor.importStylesheet (xslDoc);
		var fragment = xsltProcessor.transformToFragment (xmlDoc, document);
		objOutput.innerHTML = "";
		objOutput.appendChild (fragment);
	}

	if (nextFunction != null) {
		eval (nextFunction) ();
	}
}


//-->