$(function(){

	// Navigation hover effects
	$('#navigation li').hoverIntent({
		over : function(){
			navGrow(this);
		},
		out : function(){
		},
		sensitivity: 9,
		interval: 50
	});
	$('#navigation ul').hover(
		function(){},
		function(){
			navShrink();
		}
	);
	// Stagger initially
	navShrink();

});

function navGrow(current) {
	
	// Identify position and animate self
	var curPos;
	$(current).parent('ul').find('li').each(
		function (e){
			if (this == current) {
				curPos = e;
			}
		}
	);
	$(current).find('a').animate({height: 99});
	
	// Animate siblings to various heights (until elements no longer exist)
	// Go Up
	var j = 99;
	for (var i = curPos + 1; i < $(current).parent('ul').find('li').length; i++) {
		j = (j*.8 > 37) ? j*.8 : 37;
		$(current).parent('ul').find('li').eq(i).find('a').animate({
			height: j
		});
	}
	// Go Down
	var k = 99;
	for (var i = curPos - 1; i >= 0; i--) {
		k = (k*.8 > 37) ? k*.8 : 37;
		$(current).parent('ul').find('li').eq(i).find('a').animate({
			height: k
		});
	}
}

function navShrink() {
	// Choose a random element and set it's initial height if nothing's active
	var ranNum = 0;
	var maxHeight = 53;
	if ($('#navigation li.active').length) {
		$('#navigation li').each(
			function(e) {
				// Compare DOM nodes
				if ($(this).attr('class') == 'active') {
					ranNum = e;
				}
			}
		);
		$('#navigation li a.active').animate({height: 99});
		maxHeight = 99;
	}
	else {
		var ranNum = Math.floor(Math.random()*$('#navigation li a').length);
		$('#navigation li a').eq(ranNum).animate({height: 50});
	}
	
	// Go Up
	var j = maxHeight;
	for (var i = ranNum + 1; i < $('#navigation li a').length; i++) {
		j = (j*.85 > 37) ? j*.85 : 37;
		$('#navigation li a').eq(i).animate({
			height: j
		});
	}
	
	// Go Down
	var k = maxHeight;
	for (var i = ranNum - 1; i >= 0; i--) {
		k = (k*.85 > 37) ? k*.85 : 37;
		$('#navigation li a').eq(i).animate({
			height: k
		});
	}
}
