function makeRequest(url, type, args, responderFunction, responderArgs){
  var httpRequest;
  if (window.XMLHttpRequest)  { // Mozilla, Safari, ...
    httpRequest = new XMLHttpRequest();
    if (httpRequest.overrideMimeType)    {
      httpRequest.overrideMimeType('text/xml');
    }
  }  else if (window.ActiveXObject)  { // IE
    try    {
      httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)    {
      try      {
        httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e){}
    }
  }

  if (!httpRequest)  {
    alert('Cannot create an XMLHTTP instance');
    return false;
  }
  if (responderFunction)  {
    httpRequest.onreadystatechange = function(){
        if (httpRequest.readyState == 4){
          if (httpRequest.status == 200){
            //alert(httpRequest.responseText);
            responderFunction(httpRequest, responderArgs);
          } else {
            alert('You were unable to connect to the server.');
          }
        }
      }
  } else{
    httpRequest.onreadystatechange = function() { /*alert(httpRequest.responseText);/**/ };
  }
  httpRequest.open(type, url, true);
  if (type == 'POST')
    httpRequest.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
  httpRequest.send(args);
}
function get_response(responseText){
  start = responseText.indexOf('<response>') + 10;
  return responseText.substring(start, responseText.indexOf('</response>'));
}
function parse_response(response, innerHTMLtarget){
  if (innerHTMLtarget){
    var payload = response.responseText;
    var start = payload.indexOf('<payload>');
    if (start != -1){
      start += 9;
      innerHTMLtarget.innerHTML = payload.substring(start, payload.indexOf('</payload>'));
    } else {
      start = payload.indexOf('<response>') + 10;
      innerHTMLtarget.innerHTML = payload.substring(start, payload.indexOf('</response>'));
    }
  }
  var jsEles = response.responseXML.getElementsByTagName('javascript');
  var jsContainer = document.getElementById('head_tag');
  for (var i=0;i<jsEles.length;i++){
    jsEleId = jsEles[i].getAttribute('id');
    var src = jsEles[i].firstChild.data.replace(/^\s+|\s+$/g,"");
    var formerEle = document.getElementById(jsEles[i].id);
    if (!formerEle){
      var jsEle = document.createElement('script');
      jsEle = jsContainer.appendChild(jsEle);
      jsEle.type = 'text/javascript';
      jsEle.src = src;
    } else if (jsEles[i].getAttribute('replace')=='1') {
      formerEle.src = src;
    }
  }
}
