function ajax_execute(strURL, strData, success_func, error_func, request_method)
{
	request_method = (request_method == undefined) ? 'POST' : request_method;

	var xmlHttpRequest;

	//set cursor to wait
	document.body.style.cursor='wait';

	if(window.XMLHttpRequest) { // is Moz/Safari/IE7
		xmlHttpRequest = new XMLHttpRequest();
		if(!/MSIE/.test(navigator.userAgent)) // is not IE7
			xmlHttpRequest.overrideMimeType('text/xml');
	} else if(window.ActiveXObject) { // is IE6
		xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
	}

	if(request_method == 'GET') {
		strURL = strURL + '?' + strData;
	}
	xmlHttpRequest.open(request_method,strURL,true);
	if(request_method == 'POST') {
		xmlHttpRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	}

	xmlHttpRequest.onreadystatechange =
		function() {
			if(xmlHttpRequest.readyState == 4) {
				//set cursor back
				document.body.style.cursor='default';

				try {
					switch(xmlHttpRequest.status) {
						case 404:
							alert('Error: 404. The server page could not be found. ' +strURL);
							//error_func(xmlHttpRequest.responseText);
							break;
						case 200:
							success_func(xmlHttpRequest.responseText);
							break;
						default:
							error_func('Code: ' + xmlHttpRequest.status + ', Text: ' + xmlHttpRequest.responseText);
					}
				} catch(e) {
					//error_func('Unhandled exception in xmlHttpRequest. ERROR: ' + e.message);
				}
			}
		}

	xmlHttpRequest.send(strData);

	return xmlHttpRequest;
}
