// JavaScript Document/** * @author 		Matthew Foster * @date		June 6th 2007 * @purpose		To have a base class to extend subclasses from to inherit event dispatching functionality. * @procedure	Use a hash of event "types" that will contain an array of functions to execute.  The logic is if any function explicitally returns false the chain will halt execution. */ var EventDispatcher = Class.create({});Object.extend(EventDispatcher.prototype,{buildListenerChain : function(){if(!this.listenerChain)this.listenerChain = {};							},addEventListener : function(type, listener){this.buildListenerChain();if(!this.listenerChain[type])					this.listenerChain[type] = [listener];elsethis.listenerChain[type].push(listener);},hasEventListener : function(type){return (typeof this.listenerChain[type] != "undefined");},removeEventListener : function(type, listener){if(!this.hasEventListener(type))return false;for(var i = 0; i < this.listenerChain[type].length; i++)if(this.listenerChain[type][i] == listener)this.listenerChain[type].splice(i, 1);},dispatchEvent : function(type, args){this.buildListenerChain();if(!this.hasEventListener(type))return false;this.listenerChain[type].any(function(f){ return (f(args) == false ? true : false); });						},on : function(type, listener){this.addEventListener(type, listener);},fire : function(type, args){this.dispatchEvent(type, args);}});