// JavaScript Document
$E = EventDispatcher = function(){
  var eventListeners = {};
  return{
    addEventListener:function(event, func){
      if(!eventListeners[event]){
        eventListeners[event] = [];
      }
      eventListeners[event].push(func);
      return this;
    },

    removeEventListener: function(event, func){
      for(var i = 0, len = eventListeners[event].length; i < len; i+=1){
        if (eventListeners[event][i] == func){
          eventListeners[event].splice(i, 1);
        }
      }
      return this;
    },

    dispatchEvent:function(event){
      var args = [];
      for(var i = 1, len = arguments.length; i < len; i+=1){
        args.push(arguments[i]);
      }
      if (eventListeners[event]) {
        for(var j = 0, len = eventListeners[event].length; j < len; j+=1){
          eventListeners[event][j].apply(this, args);
        }
      }
      return this;
    }
  }
}();
