var Growl = new Class({ version: '0.0.1', options: { delay: 3, }, initialize: function(options){ this.setOptions(options); this.list = new Element('ul', {'class': 'growl'}).injectInside(document.body); }, add: function(message, type){ var msg = new Element('li', {'class': 'growl-'+type}) .setHTML(message) .addEvent('click', function(){ this.remove(); }) .injectInside(this.list); /* Next line calls fireEvent at line 3202 instead of the one at 577. (r433) Why? this class implements Events... */ msg.fireEvent('click', [], 1000); } }); Growl.implement(new Events); Growl.implement(new Options);