var staxFailure = '';
var staxRequests = new Array();
var staxTokenId = '';

function staxInitialize() {

	var i, x, xml;

	xml = new Array(
		'Msxml2.XMLHTTP.5.0',
		'Msxml2.XMLHTTP.4.0',
		'Msxml2.XMLHTTP.3.0',
		'Msxml2.XMLHTTP',
		'Microsoft.XMLHTTP');
	for(i=0; i < xml.length; i++) {
		try {
			x = new ActiveXObject(xml[i]);
		} catch (e) {
			x = null;
		}
	}
	if(!x && typeof XMLHttpRequest != 'undefined') { x = new XMLHttpRequest(); };
	return x;

};

function staxCancel() {

	var i;
	for(i=0; i < staxRequests.length; i++) {
		staxRequests[i].abort();
	};

};

function staxToken(Token) {

	staxTokenId = Token;

};

function staxExecute(request, uri, target, func, args) {

	var i, x, post;

	if(target == "conMain") {
		document.getElementById(target).innerHTML = '<br><br><br><br><br><br><br><table border=0 width=100%><tr valign=middle><td align=center><table border=0><tr valign=absmiddle><td><img src="/setup/images/loading.gif"></td><td><font face="tahoma,arial,helvetica" size=2>&nbsp;Loading...</font></td></tr></table></td></tr></table>';
	};

	if(request == "GET" || request == "" || typeof(request) == 'undefined') {
		if(uri.indexOf("?") == -1) { uri += "?";} else { uri += "&"; };
		uri += "f=" + escape(func);
		uri += "&t=" + staxTokenId;
		uri += "&c=" + new Date().getTime();
		for(i=0; i < args.length-1; i++) {
			uri += "&a[]=" + escape(args[i]);
		};
		post = null;
	} else if(request == "POST") {
		post = "f=" + escape(func);
		post += "&t=" + staxTokenId;
		post += "&c=" + new Date().getTime();
		for(i=0; i < args.length-1; i++) {
			post = post + "&a[]=" + escape(args[i]);
		};
	} else {
	  	return;
	};

	x = staxInitialize();
	if(x == null) {
		if(staxFailure != "") {
			location.href = staxFailure;
			return false;
		} else {
			return false;
		}
	} else {

		if (staxDebugWin) {
			window.open(uri);
		}
		x.open(request, uri, true);
		staxRequests[staxRequests.length] = x;
		if(request == "POST") {
			x.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
			x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		};
		x.onreadystatechange = function() {
			if(x.readyState != 4) { return; };
			var status;
			var data;
			var txt = x.responseText.replace(/^\s*|\s*$/g,"");
			status = txt.charAt(0);
			data = txt.substring(2);
			if(status == "") {
				// let's just assume this is a pre-response bailout and let it slide for now
			} else if(status == "-") {
				alert("Error: " + data);
			} else {
				if(target != "") {
					document.getElementById(target).innerHTML = eval(data);
					if(typeof(staxjs) != 'undefined') { eval(staxjs); };
				} else {
					try {
						var callback;
						var extra_data = false;
						if(typeof args[args.length-1] == "object") {
							callback = args[args.length-1].callback;
							extra_data = args[args.length-1].extra_data;
						} else {
							callback = args[args.length-1];
						}
						callback(eval(data), extra_data);
					} catch (e) {
						//
					};
				};
			};
		};
	};

	x.send(post);
	delete x;
	return true;

};
