var Dismissables = new Class
({
	Implements: Options,
	elements: {},
    options:
    {
        dismissableClass: 'dismissable',
        clickerClass: 'dismiss',
        clickerTag: 'a',
		effect: 'fade'
    },

    initialize: function(options)
    {
        this.setOptions(options);

		this.elements = $$('.' + this.options.dismissableClass);

		this.elements.each(function(elt,i)
		{
			if (! elt.retrieve('dismissable', false))
			{
				var d = new Element(this.options.clickerTag, {'class': this.options.clickerClass});
				var dismissableClass = this.options.dismissableClass;
				if (this.options.effect == 'slide')
				{
					d.addEvent('click', function()
					{
						var dparent = this.getParent('.' + dismissableClass)
						dparent.set('slide', {duration: 300, transition: 'quad:out', fps:30, onComplete: function(){ dparent.dispose();}})
						dparent.slide('out');
					});
				}
				else
				{
					d.addEvent('click', function()
					{
						this.getParent('.' + dismissableClass).setStyle('display','none');
					});
				}

				elt.appendChild(d);
				elt.store('dismissable', true);
			}
		}, this);
    }
});
