App.ajax = {
	http_requests : new Array,
	makeRequest : function(module, data, onready) {
		var http_request = false;
		if (window.XMLHttpRequest) { // Mozilla, Safari,...
			http_request = new XMLHttpRequest();
			if (http_request.overrideMimeType) {
				// set type accordingly to anticipated content type
				http_request.overrideMimeType('text/xml');
			}
		} else if (window.ActiveXObject) { // IE
			try {
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					http_request = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {}
			}
		}
		if (!http_request) {
			return false;
		}
		if(module.length > 0) module = '/' + module;
		url = App.rewrite.mod('xml' + module, '');
		http_request.onreadystatechange = function() {
			if (http_request.readyState != 4) return;
			if (http_request.status != 200) return;
			var response = $('response', http_request.responseXML);
			var content = $('content', response);
			if (App.modules.msgbox) {
				var alerts = ('alerts', response);
				App.modules.msgbox.parseXML(alerts);
			}
			if (App.modules.ministatus) {
				var ministatus = $('ministatus', response);
				if(ministatus.length > 0) {
					App.modules.ministatus.parseXML(ministatus);
				} // if
			}
			
			var systemLog = $('systemLog', response);
			if (systemLog.length > 0) {
				var textData = data.split('&').join('<br />');
				var logText = '<h2>XMLHttpRequest ' + url + '</h2><h3>' + textData + '</h3>' + systemLog.text();
				$('#systemLog').append('<div>' + logText + '</div>');
			}
			
			
			eval(onready + '(content, http_request)');			
		};
		http_request.open('POST', url, true);
		
		http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		http_request.setRequestHeader("Content-length", data.length);
		http_request.setRequestHeader("Connection", "close");
		
		http_request.send(data);
		this.http_requests.push(http_request);
		return http_request;
	}	
};
