// object constructor
function TrackerJS(clientID, promoID) {
    // set variables
    this.clientID = clientID;
    this.promoID = promoID;
    // define object's properties
    this.request;
    //attach object's methods
    this.trackEvent = trackEvent;
    this.sendEvent = sendEvent;
    this.createXMLHttpRequest = createXMLHttpRequest;
    this.callbackFunction = callbackFunction;
    this.message = '';
}

// define object's methods
function createXMLHttpRequest() {
    if (typeof XMLHttpRequest != "undefined") {
        return new XMLHttpRequest();
    } else if (typeof ActiveXObject != "undefined") {
        return new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        return null;
    }
}

//Call sendEvent method
function trackEvent(eventID) {
    this.sendEvent(eventID)
}

//private function
//Sends the event to the tracker application using XMLHttpRequest
function sendEvent(eventID) {
    this.request = this.createXMLHttpRequest();
    if (this.request == null) {
        return;
    }
    var credStr = "&clientID=" + this.clientID + "&promoID=" + this.promoID;
    var url = "/tracker/tracker?eventID=" + eventID + credStr;
    this.request.open("GET", url, true);
    var self = this;
    this.request.onreadystatechange = function() {
        if (self.request.readyState == 4) {
             self.callbackFunction();
        }
    }
    this.request.send(null);
}

//Get request response text
function callbackFunction() {
  var result = this.request.responseText;
  //alert(result); //debug
}