function SlidingPanel(itemId,element,source,radioBehaviour,isFading,isSliding,animationSpeed)
{
	this.baseContructor=AnimatedItem;
	this.baseContructor(itemId,element,source,radioBehaviour,false);

	this.init=SlidingPanel_Init;
	this.init(isFading,isSliding,animationSpeed);
}

function SlidingPanel_Init(isFading,isSliding,animationSpeed)
{
    if (this._itemElement)
    {
        this._contentPanel=this._itemElement.firstChild;
	    while(this._contentPanel.nodeType!=1 && this._contentPanel.nextSibling!=null) this._contentPanel=this._contentPanel.nextSibling;
    }
    
	this._isFading=isFading;
	this._isSliding=isSliding;
	this._animationSpeed=animationSpeed?animationSpeed:10;

	this.paint=SlidingPanel_Paint;
	this.isAnimated=SlidingPanel_IsAnimated;
	this.startAnimation=SlidingPanel_StartAnimation;
	this.continueAnimation=SlidingPanel_ContinueAnimation;
	this.endAnimation=SlidingPanel_EndAnimation;
	this.childrenStartAnimation=SlidingPanel_ChildrenStartAnimation;

	this.setIsShowing(this.getVisible());
	this._percent=this.getVisible()?1:0;
}

function SlidingPanel_IsAnimated()
{
	return this._isFading || this._isSliding;
}

function SlidingPanel_Paint(percent)
{
	var height="";
	var overflow="";
	
	if (percent<1)
	{
		var height=this._contentPanel.offsetHeight;

		if (this._isSliding) height=Math.abs(height*percent);
		else if (percent==0) height=0;

		height+="px";
		overflow="hidden";
	}
	
	
	this._itemElement.style.height=height;
	this._itemElement.style.overflow=overflow;

	if (this._isFading)
	{
		this._itemElement.style.opacity=percent;
		if (this._itemElement.filters) this._itemElement.style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity="+Math.round(percent*100)+");";
	}
}

function SlidingPanel_StartAnimation(show,source)
{
	this.setVisible(true);
	if (this._itemElement.style.height=="0px") this._itemElement.style.height="1px";
	
	this.setIsShowing(show);
	this.setIsInAnimation(true);
	this.setDirection(show?1:-1);
	if (show) this.handleRadioBehaviour();
	this.getOwner().startAnimation(this,show);
}

function SlidingPanel_ContinueAnimation() 
{
	var visible=this.getVisible();
	if (!this.isAnimated()) this._percent=visible?1:0;
	else
	{
		var direction=this.getDirection();
		if (!this._isSliding) this._percent+=direction/this._animationSpeed;
		else this._percent=(this._itemElement.offsetHeight+(direction*this._animationSpeed))/this._contentPanel.offsetHeight;
		if (this._percent>1) this._percent=1;
		else if (this._percent<0) this._percent=0;
	}
	this.paint(this._percent);
	
	if (this._percent>=1 || this._percent<=0) this.endAnimation();
}

function SlidingPanel_EndAnimation() 
{
    this.setIsInAnimation(false);
	this.setVisible(this.getDirection()==1);
	this.getOwner().endAnimation(this);
}

function SlidingPanel_ChildrenStartAnimation(animatedItem,show)
{
	if (show && !this.getVisible()) this.startAnimation(true);
}