﻿YAHOO.leftnav = function() {
	var $D = YAHOO.util.Dom;
	var $E = YAHOO.util.Event;
	var $A = YAHOO.util.Anim;
	var $Ease = YAHOO.util.Easing;
	var $ = $D.get;
	
	return {
		init : function() {
			var headings = $('leftnav').getElementsByTagName('h3');
			
			var navItems = $('leftnav').getElementsByTagName('div');
			

			$D.addClass(navItems[0].getElementsByTagName('a')[0], 'current');
			$D.addClass(navItems[0], 'open');
			
			var heights = new Array();
			for(i = 0; i <= navItems.length-1; i++) {
				heights[i] = navItems[i].offsetHeight;
				if(!$D.hasClass(navItems[i], 'open')) { 
					var hide = new $A(
						navItems[i], { 
							height: { from: heights[i], to: 14, unit: 'px' } 
						}, 0.8, $Ease.backBoth
					);
					hide.animate();
				}
			}
			
			$E.addListener(headings, 'click', function() {
				$D.removeClass(navItems, 'open');
				$D.addClass(this.parentNode, 'open');
		
				var n = this.parentNode.className;
	
				if(n = n+' current') {
					var temp = n.split(' ');
					n = temp[0];
				}

				var showObj = this.parentNode;
				
				for(i = 0; i <= navItems.length-1; i++) {
					var hideOpen = new $A(
						navItems[i], { height: { to: 14 } }, 0.4, $Ease.backOut
					);
					hideOpen.onStart.subscribe(function() {
						var show = new $A(
							showObj, { height: { to: heights[n] } }, 0.7, $Ease.backOut
						);
						show.animate();
					});
					hideOpen.animate();	
				}
			});
			
			$E.addListener(headings, 'mouseover', function() {
				$D.addClass(this, 'hover')
			});
			$E.addListener(headings, 'mouseout', function() {
				$D.removeClass(this, 'hover')
			});
		}
	}
}();
YAHOO.util.Event.onAvailable('leftnav', YAHOO.leftnav.init, YAHOO.leftnav, true);
