function ajaxRequest(url, callback) {
	function ajaxRequestCallback() {
		if (ajaxRequest.readyState == 4) {
			if (ajaxRequest.status == 200 || ajaxRequest.status == 0) {
				ajaxRequestUserCallback(ajaxRequest.responseXML);
			} else {
				_iwfOnRequestError(ajaxRequest.status, ajaxRequest.statusText, ajaxRequest.responseText);
			}
			return;
		}
	}
	
	var ajaxRequestUserCallback = callback;
	var ajaxRequestUrl 			= url;
	var ajaxRequest				= null;
	
	try {
		ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			ajaxRequest = false;
		}
	}
	if (!ajaxRequest && typeof XMLHttpRequest!='undefined') {
		ajaxRequest = new XMLHttpRequest();
	}

	ajaxRequestUrl += ((ajaxRequestUrl.indexOf('?') > -1) ? '&' : '?') + 'ajaxRequestId=' + new Date().valueOf();
	
	ajaxRequest.onreadystatechange = ajaxRequestCallback;
	ajaxRequest.open("GET", ajaxRequestUrl, true);
	ajaxRequest.send(null);
}

function _iwfOnRequestError(status,statusText,responseText) {
	alert("Status: "+status+"\nText: "+statusText+"\nResponse: "+responseText);
}
