function on(eventName, callback) {
    if (objectType(eventName) !== "string") {
      throw new TypeError("eventName must be a string when registering a listener");
    } else if (!inArray(eventName, SUPPORTED_EVENTS)) {
      var events = SUPPORTED_EVENTS.join(", ");
      throw new Error("\"".concat(eventName, "\" is not a valid event; must be one of: ").concat(events, "."));
    } else if (objectType(callback) !== "function") {
      throw new TypeError("callback must be a function when registering a listener");
    }

    if (!LISTENERS[eventName]) {
      LISTENERS[eventName] = [];
    } // Don't register the same callback more than once


    if (!inArray(callback, LISTENERS[eventName])) {
      LISTENERS[eventName].push(callback);
    }
  }
Registers a callback as a listener to the specified event.

@public
@method on
@param {string} eventName
@param {Function} callback
@return {void}