//callURL(url, [processSuccessFunctionName])
function callURL(url, processSuccessFunctionName, processFailureFunctionName){ 
  var http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {
      http_request.overrideMimeType('text/xml');
    }
  }
  // IE
  else if (window.ActiveXObject) { 
    try {
      http_request = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
      try {
        http_request = new ActiveXObject("Microsoft.XMLHTTP");
      }catch(e){}
    }
  }
  //capture failure
  if (!http_request) {
    eval(processFailureFunctionName + '(\'Unable to call URL \'' + url + '\'. Can not create an XMLHTTP instance. Your browser may not support AJAX.\');');
    return false;
  }

  //assign the method to capture your request
  http_request.onreadystatechange = function() { processURLCall(http_request, processSuccessFunctionName, processFailureFunctionName); };

  //Make sure that we don't get a cached page (specify unique call)
  var timestamp = (new Date()).getTime();
  url += ((url.indexOf('?')>0) ? '&' : '?') + 'timestamp=' + timestamp;

  http_request.open('GET', url, true);
  http_request.send(null);
}


//capture a request and call the assigned function
function processURLCall(http_request, processSuccessFunctionName, processFailureFunctionName){
  if(http_request.readyState == 4){
    if(http_request.status == 200){
      try{
        eval(processSuccessFunctionName + '(\'' + http_request.responseText + '\');');
      }catch(e){
        alert('You must define the function \'' + processSuccessFunctionName + '\'.  Ensure that your function name matches the function call.  If it does you have have an error in that function or one that it calls. More: ' + e.message);
      }
    }else{
      try{
        eval(processFailureFunctionName + '(\'There was a problem with the request.\');');
      }catch(e){
        alert('You must define the function \'' + processFailureFunctionName + '\'.  Ensure that your function name matches the function call.  If it does you have have an error in that function or one that it calls. More: ' + e.message);
      }
    }
  }
}

