var is_animating = false;

var highlights;
var highlight_block;

var highlight_top = 0;
var highlight_max;

var previous_top = '0em';
var previous_y;

var current_item;

function highlight_follow(e)
{
	if ( typeof(previous_y) != 'undefined' )
	{
		highlight_top = highlight_top - (e.pageY - previous_y) * 2;

		if ( highlight_top < highlight_max )
		{
			highlight_block.css('top', highlight_max + 'px');
		} else if ( highlight_top < 0 ) {
			highlight_block.css('top', highlight_top + 'px');
		} else {
			highlight_block.css('top', '0px');
		}
	}

	previous_y = e.pageY;
};

$(function() {
	highlights = $('#highlight');
	highlight_block = $('#highlight ul').css('top', '0em');

	highlight_max = ( highlight_block.height() / $('#highlight li').length ) * ( $('#highlight li').length - 1 ) * -1;

	highlights.mouseenter(function(){
		if ( !is_animating ) 
		{
			is_animating = true;

			$('#highlight-reveal').hide();

			previous_top = highlight_block.css('top');

			if ( highlight_block.css('top') != '0em' )
			{
				highlight_block.animate({
					top: '0em'
				}, {queue: false, duration: 500, complete: function(){
					highlights.animate({
						height: '400px'
					}, {queue: false, duration: 500, complete: function(){
						$('body').bind('mousemove', highlight_follow);

						is_animating = false;
					}});
				}});
			} else {
				highlights.animate({
					height: '400px'
				}, {queue: false, duration: 500, complete: function(){
					$('body').bind('mousemove', highlight_follow);

					is_animating = false;
				}});
			}
		}
	});

	highlights.mouseleave(function(){
		if ( !is_animating && typeof(previous_top) != 'undefined' )
		{
			$('body').unbind('mousemove', highlight_follow);

			var metadata = current_item.metadata();

			if ( metadata.show_profiles )
			{
				$('#highlight-reveal div.profiles').show();
			} else {
				$('#highlight-reveal div.profiles').hide();
			}

			$('#highlight-reveal div.text').html(metadata.text);

			highlights.css('height', '1.25em');

			highlight_block.animate({
				top: previous_top
			}, {queue: false, duration: 500, complete: function(){
				$('#highlight-reveal').fadeIn();

				is_animating = false;
			}});
		}
	});

	current_item = $('a.highlight-item:first');

	$('a.highlight-item').click(function(){
		is_animating = true;

		current_item = $(this);

		$('body').unbind('mousemove', highlight_follow);

		var item = current_item.closest('li');
		var highlight = item.closest('#highlight');
		var list = item.closest('ul');
		var index = list.find('li').index(item);

		var metadata = current_item.metadata();

		if ( metadata.show_profiles )
		{
			$('.profiles').fadeIn();
		} else {
			$('.profiles').hide();
		}

		$('#highlight-reveal div.text').html(metadata.text);

		highlight.css('height', '1.25em');

		list.animate({
			top: (index * -1.25)+'em'
		}, {queue: false, duration: 1000, complete: function(){
			$('#highlight-reveal').fadeIn();

			is_animating = false;
		}});

		return false;
	});

	$('div.highlight-next a').click(function(){
		var next_item = current_item.parent().next('li').find('a.highlight-item:first');

		if ( !next_item.length )
		{
			next_item = current_item.closest('#highlight').find('a.highlight-item:first');
		}

		next_item.click();
	});
});