
function Panel(div,iheight,opacity,speed,smoothess){

//validations
if((typeof div =='string') && (document.getElementById(div)==null)) {return}
if(smoothess >= iheight){alert('Error! collapse-step should be less that the height');return}

//Private variables that maintain state
var _div= (typeof div =='string') ? document.getElementById(div) : div;
var _opacity=opacity || 0;
var _iHeight = iheight|| 180;
var _collapseStep = smoothess || 20;
var _aniSpeed = speed || 10;


//The connstructor
function init(div,opacity,speed,smoothess)
{
  var mainDIV = _div;
 
 YAHOO.util.Dom.setStyle(mainDIV, 'opacity',_opacity);
 YAHOO.util.Dom.setStyle(mainDIV , 'height',_iHeight);
 
  }


//Function to collapse or restore the panel
this.Collapsed= function(b){
	if(b==true)
	{
		YAHOO.util.Dom.setStyle(_div.id, 'height',0);
		YAHOO.util.Dom.setStyle(_div.id, 'display','none')
	}
	else
	{ 
     YAHOO.util.Dom.setStyle(_div.id, 'height',_iHeight);
     YAHOO.util.Dom.setStyle(_div.id, 'display','block')
	}
	
}


//Static function for onclick event of image
Panel.OnTitleClick = function(objDiv,iHeight,collapseStep,aniSpeed)
{
	if (YAHOO.util.Dom.getStyle(objDiv, 'display')=='block')
	{
	Panel.minimisepanel(objDiv,iHeight,collapseStep,aniSpeed,iHeight);
	return
	}
	
	Panel.maximisepanel(objDiv,iHeight,collapseStep,aniSpeed,0.1);
}
	
//Static function for minimising the panel
Panel.minimisepanel = function (objDiv,iHeight,collapseStep,aniSpeed,newHeight)
{
	var t = newHeight;	
	YAHOO.util.Dom.setStyle(objDiv, 'opacity',(t*_opacity)/iHeight);
	if(t>0)
	{	t=t-collapseStep ; 
		if(t<=0){YAHOO.util.Dom.setStyle(objDiv, 'display','none');t=0;}
		//alert('t=' + t)
		YAHOO.util.Dom.setStyle(objDiv, 'height',t);
		setTimeout("Panel.minimisepanel('"+objDiv+"',"+iHeight+","+collapseStep+","+aniSpeed+","+t+")",aniSpeed);
	}
}

//Static function for maximising the panel
Panel.maximisepanel = function (objDiv,iHeight,collapseStep,aniSpeed,newHeight)
{
	YAHOO.util.Dom.setStyle(objDiv, 'display','block')
	var t = newHeight;
	YAHOO.util.Dom.setStyle(objDiv, 'opacity',(t * _opacity)/iHeight);
	if(t<=(iHeight-collapseStep))
	{	t=t+collapseStep;
		YAHOO.util.Dom.setStyle(objDiv, 'height',t);
		
		setTimeout( "Panel.maximisepanel('"+objDiv+"',"+iHeight+","+collapseStep+","+aniSpeed+","+t+")",aniSpeed);}
}

//code to initailise
init(div,opacity,speed,smoothess);

}
