/**
 * @author blakereary
 * 
 * Send all praise to: breary@newvision.com
 * Send all complaints to: drobles@newvision.com
 */

function register_nav_animation() {
	var sub_hovered = new Array();
	var subnavsel = $("subnav-select");
	var cleanup_timer;
	var fx = new Array();
	var fx2 = new Fx.Styles(subnavsel, {duration: 500, transition: Fx.Transitions.Bounce.easeOut});
	//Position Hover image Elements
	var navimgs = $$("#topnav li img");
	var subnavs = new Array();
	var navActive = new Array();
	var tt;
	
	var debug = $('debug');
	
	var log = function(text)
	{
		debug.setText(debug.getText() + text + String.fromCharCode(10));
	}
	
	//Function to check if any are active
	var anyActive = function(){
		k=0;
		for(i=0;i<navActive.length;i++)
			k+=navActive[i]?1:0;
		return k>0;
	}
	var anySubHovered = function(){
		k=0;
		for(i=0;i<sub_hovered.length;i++)
			k+=sub_hovered[i]?1:0;
		return k>0;
	}
		
	//Set subnav animation
	$("topnav").getChildren().forEach(function(elm, i){
		
		subnavs[i] = elm.getElement('ul');
		if(subnavs[i]) {
			
			//alert(i + " - " + subnavs[i].getParent().getProperty('id') + ": " + navimgs[i].getPosition().x);
			subnavs[i].setStyle('left', navimgs[i].getPosition().x + 7);
			subnavs[i].addEvent("mouseenter", function() {
				sub_hovered[i] = true;
			});
			subnavs[i].addEvent("mouseleave", function() {
				sub_hovered[i] = false;
				navimgs[i].fireEvent('mouseleave');
			});
		}
	});
	
	navimgs.forEach(function(elm, i){
		
		
		fx[i] = new Fx.Styles(elm, {duration: 500, transition: Fx.Transitions.Circ.easeOut});
		elm.addEvent("mouseenter", function() {
			if(subnavs[i])
				subnavs[i].setStyle('left', elm.getPosition().x + 7);
			fx[i].stop();			
			fx[i].start({
				'opacity': [1,0.01]
			})
						
			subNavAnimateOn(i);
						
			if(subnavs[i]) {
				subnavs[i].setStyles({
					'display': 'block',
					'width': subnavsel.getStyle('width')
				});
			}
			navActive[i] = true;
			
		})
		elm.addEvent("mouseleave", function() {
			var delhide = function() {
				//alert(sub_hovered[i]);
				if(!sub_hovered[i]) {
					fx[i].stop();
					fx[i].start({
						'opacity': [0.01, 1]
					})
					if(!anyActive()){
						subNavAnimateOff(i);
					}
					if(subnavs[i])
						subnavs[i].setStyle('display', 'none');
				}
				navActive[i] = false;
			}
			tt = delhide.delay(100);
		})
	});
	
	//Animations for Submenu navigation
	
	var subNavAnimateOn = function(k) {
		fx2.stop();
		if(k != 0 && k != 4) {
			//subnavsel.setStyle('height', 0);
			subnavsel.setStyle('left', navimgs[k].getPosition().x + 7);
			subnavsel.setStyle('width', $('topnav').getCoordinates().right - navimgs[k].getPosition().x);
			subnavsel.setStyle('display', 'block');		
			
			fx2.start({
				'height': [26],
				'opacity': [1]
			});
			
		}
	}
	var subNavAnimateOff = function(k) {
		fx2.stop();
		fx2.start({
			'height': [0],
			'opacity': [0]
		})
	}
	
	//Set cleanup/hide timer
	var nav_update_timer = function() {
		/*if(anyActive()) {
			navimgs.each(function(elm, i){
				if(navActive[i] && elm.getStyle('opacity') > 0){
					navimgs[i].fireEvent('mouseleave');
					subNavAnimateOff(i);
				}	
			});
		}*/
		if(!anyActive() && !anySubHovered())
		{
			subNavAnimateOff(0);
		}
	}
	nav_update_timer();
	cleanup_timer = nav_update_timer.periodical(400);
}



window.addEvent('domready', function() {
	//$("nav-select").setStyle('opacity', 0);
	register_nav_animation();
});