function makeHttpRequest(url, callback_function, 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 your browser doesn\'t support this feature,\nor the security settings are so strict that the GPLRank server\ncannot be contacted.'); 
       return false; 
   } 

   http_request.onreadystatechange = function() { 
      if (http_request.readyState == 4) { 
         if (http_request.status == 200) {
//alert (http_request.responseText);
            if (return_xml) { 
               if (window.ActiveXObject) {
                  var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
                  xmlDoc.loadXML(http_request.responseText); 
                  xmlObj=xmlDoc.documentElement;
                  eval(callback_function + '(xmlObj)');
               } else {
                  eval(callback_function + '(http_request.responseXML)');
               }
            } else { 
               eval(callback_function + '(http_request.responseText)'); 
            } 
         } else { 
            alert('There was a problem with the request.(Code: ' + http_request.status + ')'); 
         } 
      } 
   } 
   http_request.open('GET', url, true); 
   http_request.send(null); 
}
