var cur_headline = 0;
var num_headlines = 0;
var seeking = false;

$(document).ready(function() {
	$('div.scrollable').scrollable({
		size: 1,
		loop: true,
		easing: 'linear',
		naviItem: 'a',
		interval: 5000,
		onBeforeSeek: function ()
		{
			if ( seeking == true )
			{
				return false;	
			}
		},
		onSeek: function() {
				seeking = true;
				rotateHeadlines(this.getIndex());
			}
	}).navigator().autoscroll({
		interval: 5000		
	});	
	h = $('.headlines');
	num_headlines = $('.headlines div').size();
	h.css({
			'overflow': 'hidden',
			'height': h.height()
		});
	cement();
});

function rotateHeadlines(intended)
{
	if(intended == cur_headline)
	{
		seeking = false;
		return false;
	}

	var d = intended - cur_headline;
	var direction = (d < 0 ? -1 : 1) * (Math.abs(d) < Math.ceil(num_headlines/2) ? -1 : 1);
	var index = (d < 0) ? d + num_headlines : d;
	var h = $('.headlines');
	var headlines = $('.headlines').find('div');
	var op = (direction < 0) ? '-=' : '+=';
	var offset = (direction < 0) ? moveUp(index, h, headlines) : moveDown(index, h, headlines);

	h.find('div').animate({'top': op + offset}, 'normal', '', function() {
		seeking = false;
		if(cur_headline != intended) {
			cleanUp(direction);
			cur_headline = intended;
			
		}
	});
}

function moveIndex(place, direction)
{
	place -= direction;
	if(place < 0)
		place = num_headlines - 1;
	else if(place >= num_headlines)
		place = 0;
	return place;
}

function moveDown(normalized, h, headlines)
{
	var offset = 0;
	var place = num_headlines - 1;
	do {
		var e = $(headlines[place]);
		offset += e.outerHeight(true);
		h.prepend(e.clone().css('top', '-' + offset + 'px'))
	} while(place-- != normalized);
	//alert(offset);
	return offset;
}

function moveUp(normalized, h, headlines)
{
	var offset = 0;
	var place = 0;
	while(place != normalized) {
		var e = $(headlines[place]);
		h.append(e.clone().css('top', h.outerHeight(true) + offset))
		offset += e.outerHeight(true);
		place += 1;
	}
	return offset;
}

function cleanUp(direction)
{
	var added = $('.headlines div').size() - num_headlines;
	var index = (direction < 0) ? added : num_headlines - 1;
	var op = (direction < 0) ? 'lt' : 'gt';
	//alert(':' + op + '(' + index + ')\nSize: ' + $('.headlines div').filter(':' + op + '(' + index + ')').size());
	$('.headlines div').filter(':' + op + '(' + index + ')').remove();
}

function cement()
{
	var offset = 0;
	$('.headlines div').each(function() {
		$(this).css({
			'position': 'absolute',
			'top': offset,
			'left': 0
		});
		offset += $(this).outerHeight(true);
	});
}

