EventDispatcher = { listenerTable: [], implement: function(into){ into.addListener = function(listener){ EventDispatcher.addListener(listener, this); } into.removeListener = function(listener){ EventDispatcher.removeListener(listener, this); } into.dispatch = function(event, params){ EventDispatcher.dispatch(event, params, this); } }, addListener: function(listener, subject){ var child = this.findChild(subject); if(child)child.listeners.push(listener); else this.listenerTable.push({child:subject, listeners:[listener]}); }, removeListener: function(listener, subject){ var child = this.findChild(subject); if(child){ for(var x=0; x