function makeHttpRequest(method, url, params, fnSuccess, fnError, return_xml)
{
   var http_request = false;
	
   if (window.XMLHttpRequest) { // Mozilla, Safari,...
       http_request = new XMLHttpRequest();
       if (http_request.overrideMimeType) {
           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) {
       alert('Unfortunatelly you browser doesn\'t support this feature.');
       return false;
   }
   http_request.onreadystatechange = function() {
       if (http_request.readyState == 4) {
           if (http_request.status == 200) {
               if (return_xml) {
                   eval(fnSuccess + "(http_request.responseXML)");
               } else {
                   eval(fnSuccess + "(http_request.responseText)");
               }
           } else {
               //if (fnError.length = 0) alert('There was a problem with the request.(Code: ' + http_request.status + ')');
			   if (fnError != null) eval(fnError + "('" + http_request.status + " -- " + http_request.statusText + "')");
           }
       }
   }
   
   //TODO: Add check to ensure method is either POST or GET
   if (method.toUpperCase() == "GET") {
		if (params.length > 0) url = url + "?" + params;
		http_request.open(method, url, true);
		http_request.send(null);
	} else {
		http_request.open(method, url, true);
		http_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		http_request.send(params);
	}
		
}