/*
  YUIDomCollapse fancy add-on by Christian Heilmann
  Version 1.0 / May 2007
  License: http://creativecommons.org/licenses/by/3.0/
  Homepage: http://onlinetools.org/tools/yuidomcollapse/
*/
// make sure the main script is available
if(YAHOO && YAHOO.otorg && YAHOO.otorg.DomCollapse && YAHOO.util && YAHOO.util.Anim)
{
	// override toggle()
	YAHOO.otorg.DomCollapse.toggle = function(e)
	{
		// shortcut to CSS object
		var css = YAHOO.otorg.DomCollapse.css;
		// get the trigger element, which is the one clicked on if it has
		// the trigger class
		var parent = YAHOO.util.Dom.hasClass(this,css.triggerClass) ? this : this.parentNode;
		// retrieve the ID from the href attribute and make sure the element 
		// exists
		var id = this.href.replace(/.*#/,'');
		var t = document.getElementById(id);

		if(t !== undefined)
		{
			if(parent.getAttribute('rel'))
			{
				temp_var = parent.getAttribute('rel').split("::");
			}
			else
			{
				var temp_var = new Array();
				temp_var[0] = parent.innerHTML;
				temp_var[1] = parent.innerHTML;
			}
			// get overflow style - elements need to have overflow hidden 
			// to animate smoothly
			var oldover = YAHOO.util.Dom.getStyle(t,'overflow');
			// set overflow to hidden
			YAHOO.util.Dom.setStyle(t,'overflow','hidden');
			// get the height and compare it to the offsetHeight, thus 
			// getting the real height + padding
			var height = YAHOO.util.Dom.getStyle(t,'height');
			if(height==='auto')
			{
			  curHeight = t.offsetHeight;
			}
			else
			{          
			  curHeight = Math.max(parseInt(height),t.offsetHeight);
			}
			var x = parseInt(curHeight);
			// if the element is currently hidden
			if(YAHOO.util.Dom.hasClass(t,css.hideClass))
			{
				// set its height and opacity to 0 and add the height class
				YAHOO.util.Dom.setStyle(t,'height',0+'px');
				YAHOO.util.Dom.removeClass(t,css.hideClass);
				YAHOO.util.Dom.setStyle(t,'opacity',0);
				// prepare the animation animate the element
				var a = new YAHOO.util.Anim(t, { opacity: {from:0,to: 1},height:{from:0,to:x} },.8,YAHOO.util.Easing.easeBoth);
				// re-set the overflow and set the appropriate class to the 
				// trigger element when the animation has finished
				a.onComplete.subscribe(
				  function(){        
					YAHOO.util.Dom.setStyle(t,'overflow',oldover);
					YAHOO.util.Dom.replaceClass(parent,css.parentClass,css.openClass);
					parent.innerHTML = temp_var[1];	
					
					if(t.style.filter && t.style.removeAttribute){
	                    t.style.removeAttribute('filter');
	                }				
				  }
				);
				// animate the element
				a.animate();
			// if the element is currently visible
			}
			else
			{
				// prepare and start the animation
				var a = new YAHOO.util.Anim(t, { opacity: {from:1,to: 0} ,height:{from:x,to:0} },.8,YAHOO.util.Easing.easeBoth);
				a.animate();
				// when the animation is done, hide it with the right class, 
				// re-set its styles and replace the open with a parent class
				a.onComplete.subscribe(
				  function(){        
					YAHOO.util.Dom.addClass(t,css.hideClass);
					YAHOO.util.Dom.setStyle(t,'height',x+'px');
					YAHOO.util.Dom.setStyle(t,'opacity',1);
					YAHOO.util.Dom.setStyle(t,'overflow',oldover);
					YAHOO.util.Dom.replaceClass(parent,css.openClass,css.parentClass);
					parent.innerHTML = temp_var[0];
					
					if(t.style.filter && t.style.removeAttribute){
	                    t.style.removeAttribute('filter');
	                }				
				  }
			);
		 };
		};
		YAHOO.util.Event.preventDefault(e);
	};
};