
var EventDispatcher=Class.create();
EventDispatcher.prototype={
    addEventListener:function(){
        var event=arguments[0];
        if(!event) return;
        if(!this.listeners) this.listeners={};
        if(!this.listeners[event]) this.listeners[event]=[];
        ($A(arguments).slice(1)).each(function(a){
            if(this.indexOf(a)<0) this.push(a);
        }.bind(this.listeners[event]));
    },
    removeEventListener:function(event,obj){
        with(this){
            if(!listeners[event]) return;
            listeners[event].without(obj);
        }
    },
    dispatchEvent:function(obj){
        if(!this.listeners) return;
        if(!this.listeners[obj.type]) return;
        if(!obj.target) obj.target=this;
        var args=Array.apply(null,arguments).slice(1);
        this.listeners[obj.type].each(function(a){
            if(typeof(a)!="object") return a(args);
            a[obj.type].apply(a,args);
        });
    }
};
