function createHttpRequest(){
  if (window.ActiveXObject){
    try {
      return new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        return new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e2) {
        return null;
      }
    }
  } else if(window.XMLHttpRequest){
    return new XMLHttpRequest();
  } else {
    return null;
  }
}

function requestFile(callback, data, method, fileName, async) {
  var httpRequest = createHttpRequest();
  if (httpRequest==null) return null;
  httpRequest.open(method, fileName, async);

  if (window.ActiveXObject)
    httpRequest.onreadystatechange = function () { 
      if (httpRequest.readyState==4) callback(httpRequest);
    };
  else
    httpRequest.onload = function () { callback(httpRequest); };

  httpRequest.send(data);
}

function getFile(fileName) {
  var httpRequest = createHttpRequest();
  if (httpRequest==null) return null;
  httpRequest.open('GET', fileName, false);
  if (httpRequest.constructor==XMLHttpRequest)
    httpRequest.overrideMimeType('text/plain');

  var res;
  if (window.ActiveXObject)
    httpRequest.onreadystatechange = function () { 
      if (httpRequest.readyState==4)
        res = httpRequest.responseText;
    };
  else
    httpRequest.onload = function () {
      res = httpRequest.responseText;
    };

  httpRequest.send('');
  return res;
}

