$(function () {
	// cache the ticker
	var $ticker = $('#ticker');
	
	// wrap dt:dd pairs in divs
	var $headlines = $ticker.children().filter('dt');
	for (var i=0; i < $headlines.length; i++) {
		var $dt = $($headlines.get(i)),
			$container = $('<div>');
			
		$dt.next().appendTo($container);
		$dt.prependTo($container);
		$container.appendTo($ticker);
	};
	
	// hide the scrollbar
	$ticker.css('overflow', 'hidden');
	
	// animator function
	function animator($currentItem) {
		// work out new anim duration
		var distance = $currentItem.height(),
			duration = (distance - Math.abs(parseInt($currentItem.css('marginTop')))) / .025;
			
		// animate the first child of the ticker
		$currentItem.animate({marginTop: -distance}, duration, 'linear', function (){
			// move current item to the bottom
			$currentItem.appendTo($currentItem.parent()).css('margin-top', 0);
			
			// recurse
			animator($currentItem.parent().children(':first'));
		});
	}
	
	// start the ticker
	animator($ticker.children(':first'));
	
	// pause on mouseover
	$ticker.mouseenter(function () {
		$ticker.children().stop();
	});
	
	// resume on mouseout
	$ticker.mouseleave(function () {
		animator($ticker.children(':first'));
	});
});