// LiM AJAX Object

function limAX(url, callbackFunction) {

  var self = this;

  this.updating = false;

  this.abort = function() {
    if(self.updating) {
      self.updating = false;
      self.AJAX.abort();
      self.AJAX = null;
    }
  }

  this.update = function(passData, postMethod) {
    if(self.updating) { return false; }
    self.AJAX = null;
    if(window.XMLHttpRequest) {
      self.AJAX = new XMLHttpRequest();
    } else {
      self.AJAX = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if(self.AJAX == null) {
      return false;
    } else {
      self.AJAX.onreadystatechange = function() {
        if (self.AJAX.readyState == 4) {
          self.updating = false;
          self.callback(self.AJAX.responseText, self.AJAX.status, self.AJAX.responseXML);
          self.AJAX = null;
        }
      }
      //self.updating = new Date();
      if(/post/i.test(postMethod)) {
        //var uri = urlCall + '?' + self.updating.getTime();
        var uri = urlCall;
        self.AJAX.open("POST", uri, true);
        self.AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        self.AJAX.setRequestHeader("Content-Length", passData.length);
        self.AJAX.send(passData);
      } else {
        //var uri = urlCall + '?' + passData + '&timestamp=' + (self.updating.getTime());
        var uri = urlCall + '?' + passData;
        self.AJAX.open("GET", uri, true);
        self.AJAX.send(null);
      }
      return true;
    }
  }

  var urlCall = url;

  this.callback = callbackFunction || function () { };

}

