
var ui_accordion = new Object();

ui_accordion["mouseout"] = function ()
{
	removeClass(this,"hover");
	return false;
}

ui_accordion["mousedown"] = function ()
{

	this.timer = setTimeout("void(0)",0);
	var k = 0;			
	var mb = this.mb;
	
	var dds = mb.parentNode.getElementsByTagName("dd");
	var dts = mb.parentNode.getElementsByTagName("dt");
	for(var i=0;i<dds.length;i++)
	{
		dds[i].ddIndex = i;
		var closed,expand,collapse ;
		if( dds[i] == mb)
		{
			if(dts[mb.ddIndex]){ addClass(dts[mb.ddIndex],"expandin");};
		
			var start = new Date();
			expand = function()
			{
				clearTimeout(this.timer);
				if(mb.style.display.toLowerCase()!="block")
				{
					mb.style.display="block";
					mb.endHeight =  mb.scrollHeight;
					mb.style.overflow ="hidden";			
				};

				var end = new Date();

				if((mb.offsetHeight < mb.endHeight) && ((end - start)<500))
				{
					mb.style.height = Math.ceil( mb.offsetHeight + (mb.endHeight- mb.offsetHeight)/33 ) + "px";
					this.timer = setTimeout(expand,0);
				}
				else
				{	
					mb.style.height="auto";
					mb.style.overflow="auto";					
					if(dts[mb.ddIndex]){ removeClass(dts[mb.ddIndex],"expandin");};					
				}
				
			}
			
			
		}else if(dds[i].offsetHeight>0)
		{
			closed = dds[i];
			closed.style.height = closed.offsetHeight+"px";
			closed.style.overflow ="hidden";
			addClass(closed,"collapsing");
		
			if(dts[closed.ddIndex]){ addClass(dts[closed.ddIndex],"collapsing");};
			var start = new Date();
			collapse = function()
			{
				clearTimeout(this.timer);
				var ph = parseInt(closed.style.height);
				var end = new Date();
				if((ph > 2) && ((end - start)<200))
				{
					closed.style.height =Math.floor(ph  + (0-ph)/2)  + "px";
					this.timer = setTimeout(collapse,0);
				}else
				{	
					closed.style.height="0";
					closed.style.display="none";
					closed.style.overflow ="visible";
					if(dts[closed.ddIndex])
					{
						removeClass(dts[closed.ddIndex],"collapsing");
						removeClass(closed,"collapsing");
					}

					this.timer = setTimeout(expand,0);
				}
			}
			clearTimeout(this.timer);
			this.timer = setTimeout( collapse,0);
		}
	}
	return false;
}



ui_accordion["mouseover"] = function (e)
{
 e =  getEvent(e);

 var el =  getObjByClass(e.target,"dt","",2);

 if(el && el.parentNode && hasClass(el.parentNode,"accordion"))
 {
	var  def = getChildByClass(el.parentNode,"dd","default",1);
	if(!def)
	 {
		if(el.parentNode.getElementsByTagName("dd").length>0)
		 {
			addClass(el.parentNode.getElementsByTagName("dd")[0],"default");				
		 }
		 else{return;}
	 }
	
	addClass(el,"hover");
	if(el.init==null)
	{
		var mb = getNextObjByTagName(el,"dd");
		if(mb==null){return;}			
		el.mb = mb;		
		el.init = true;
		el.onmouseout =ui_accordion["mouseout"];
		el.onmousedown =ui_accordion["mousedown"];
	}
	return stopEvent(e);
 }
}



var init = addEvent(document,"mouseover",ui_accordion["mouseover"]);
if(init)
{
 document.write("<style media=\"screen\"> dl.accordion dd{height:0;display:none;}; </style>");
}