var SlideEffect = Class.create(
{
    initialize:function(element, closedStyle, openStyle)
    {
	this.animating = false;
	this.active = false;
	this.element = element;
	this.closedStyle = closedStyle;
	this.openStyle = openStyle;
    },
    toggle: function()
    {
	var slideEffect = this;
	if(slideEffect.animating)
		return;
	if(slideEffect.active)
	{
		slideEffect.active = false;
		slideEffect.animating = true;
		document.fire("SlideEffect:Start", { element: slideEffect.element.id, state:'Hidden' } );
		 new Effect.Parallel([
		        new Effect.Morph(slideEffect.element, { style: slideEffect.closedStyle }),
		        new Effect.Fade(slideEffect.element, { afterFinish: function(e) {
				slideEffect.animating = false;
				document.fire("SlideEffect:Finish", { element: slideEffect.element.id, state:'Hidden' } );
			}})
	       ]);
	}else{
		 slideEffect.active = true;
		 slideEffect.animating = true;
		document.fire("SlideEffect:Start", { element: slideEffect.element.id, state:'Visible' } );
		 new Effect.Parallel([
		        new Effect.Morph(slideEffect.element, { style: slideEffect.openStyle }),
		        new Effect.Appear(slideEffect.element, { afterFinish: function(e) {
				slideEffect.animating = false;
				document.fire("SlideEffect:Finish", { element: slideEffect.element.id, state:'Visible' } );
			}})
	       ]);

	}
    }
});