
// Control subnavigation dropdown
var navAnimation = {

	// Setup 
	init: function() {
	
		// Doesn't work in IE due to z-index bugs
		if (Prototype.Browser.IE && d3i.utility.getIEVersion() <= 6) return;

		// Attach mouse events
		$$('#main_navigation ul#main_nav > li').each(function(i) {
			var sn = i.select('div.sub_nav');
			if (sn.length == 1) {
			
				// Get sub nav container
				sn = sn[0];
			
				// Main nav item events
				Event.observe(i, 'mouseover', navAnimation.handleMouseover);
				Event.observe(i, 'mouseout', navAnimation.handleMouseout);
				
				// Sub navigation events
				Event.observe(sn, 'mouseover', navAnimation.handleMouseover);
				Event.observe(sn, 'mouseout', navAnimation.handleMouseout);
				
				sn.descendants().each(function(a) {
					
					Event.observe(a, 'mouseover', navAnimation.handleMouseover);
					Event.observe(a, 'mouseout', navAnimation.handleMouseout);
				
				});
				
			}		
		});
	
	},
	
	handleMouseout: function(event) {
	
		// Get sub nav
		var sn = event.findElement('li').select('div.sub_nav')[0];
		if (!sn) sn = Event.element(event).up('div.sub_nav');
		if (!sn) { console.log(Event.element(event)); return; }
		
		// Set mouse value
		sn._mouseOver = false;
		
		// Timeout
		clearTimeout(sn._hideTimeout);
		sn._hideTimeout = setTimeout(function() { navAnimation.hideSubMenu(sn); }, 200);
	
	},
	
	handleMouseover: function(event) {
	
		// Get sub nav
		var sn = event.findElement('li').select('div.sub_nav')[0];
		if (!sn) sn = Event.element(event).up('div.sub_nav');
		if (!sn) { console.log(Event.element(event)); return; }

		// Set mouse value		
		sn._mouseOver = true;
		
		// Show
		navAnimation.showSubMenu(sn);
		
	},
	
	// Show
	showSubMenu: function(sn) {
	
		// Cancel any hiding timouts
		clearTimeout(sn._hideTimeout);

		// Show
		if (sn && !sn._isVisible && !sn.isAnimating) {
			sn.isAnimating = true;
			Effect.SlideDown(sn, {
				afterFinish: function() { 
					sn._isVisible = true; 
					sn.isAnimating = false;
					if (sn._mouseOver == false) {
						setTimeout(function() { navAnimation.hideSubMenu(sn); }, 200)
					}
				},
				duration: 0.8
			});
		}
		
	},
	
	// Hide
	hideSubMenu: function(sn) {
		
		// Hide
		if (sn && sn._isVisible == true && !sn.isAnimating) {
			sn.isAnimating = true;
			Effect.SlideUp(sn, {
				afterFinish: function() {
					sn._isVisible = false; 
					sn.isAnimating = false; 
				},
				duration: 0.8
			});
		}
		
	}

};

// Initialise
d3i.utility.onDOMLoad(navAnimation.init);
