var dom = YAHOO.util.Dom;

Sidebar = function(){};
Sidebar.currentSection = null;

Sidebar.init = function()
{
	var sections = dom.getElementsByClassName('sidebarsection', 'div', 'sidebar');
	for (var i = 0; i < sections.length; ++i)
	{
		new SidebarSection(sections[i]);
	}
};






SidebarSection = function(el)
{
	var event = YAHOO.util.Event;
	
	var obj = new Object();
	var anim = new YAHOO.util.Anim();
	
	obj.mouseover = function()
	{
		if (!obj.open)
		{
			if (anim.isAnimated())
			{
				anim.stop();
			}
			anim = new YAHOO.util.Anim(obj.element, {opacity: {to: 1}}, 0.2);
			anim.animate();
		}
	};
	obj.mouseout = function()
	{
		if (!obj.open)
		{
			if (anim.isAnimated())
			{
				anim.stop();
			}
			anim = new YAHOO.util.Anim(obj.element, {opacity: {to: 0.5}}, 0.2);
			anim.animate();
		}
	};
	obj.expand = function()
	{
		if (!obj.open)
		{
			if (Sidebar.currentSection != null)
			{
				Sidebar.currentSection.close();
			}
			Sidebar.currentSection = obj;
			// the next few lines set the preconditions for the animation. 
			dom.setStyle(obj.element, 'overflow', 'hidden');
			dom.setStyle(obj.element, 'height', obj.element.clientHeight+'px');
			dom.setStyle(obj.body, 'opacity', '0');
			dom.setStyle(obj.body, 'display', 'block');
			var height = obj.element.clientHeight + obj.body.clientHeight;
			var fader = new YAHOO.util.Anim(obj.body, {opacity: {to:1}}, 0.2);
			obj.open = true;
			var resizer = new YAHOO.util.Anim(obj.element, {height: {to:height}}, 0.2);
			resizer.onComplete.subscribe(function(){
					fader.animate();
					dom.setStyle(obj.element, 'overflow', 'visible');
				});
			resizer.animate();
		}
	};
	obj.close = function()
	{
		if (obj.open)
		{
			var height = obj.header.clientHeight;
			dom.setStyle(obj.element, 'overflow', 'hidden');
			var resizer = new YAHOO.util.Anim(obj.element, {height: {to:height}}, 0.3);
			obj.open = false;
			obj.mouseout();
			resizer.animate();
		}
	};
	
	el.id = dom.generateId();
	obj.element = el;
	var pieces = el.getElementsByTagName('div');
	obj.header = pieces[0];
	obj.body = pieces[1];
	obj.open = false;
	
	
	dom.setStyle(obj.element, 'opacity', '0.5');
	dom.setStyle(obj.body, 'display', 'none');
	event.addListener(obj.element, 'mouseover', obj.mouseover);
	event.addListener(obj.element, 'mouseout', obj.mouseout);
	event.addListener(obj.element, 'click', obj.expand);
};

