//	st_default.js
//	Scrolling Ticker.
//	(c) PyrusMalus Ltd, 2010.
//	www.pyrusmalus.com
//	david@pyrusmalus.com


// Main function when document is loaded.

$(document).ready(function()
	{	
		//	Check for existence of div#scrollingTicker and initialize it if it exists...
		if ($("div#scrollingTicker").length)
		{
			pm_initializeScrollingTicker();
		}
	}
);


//	Initialization for scrolling ticker.

function pm_initializeScrollingTicker()
{
	//	Bind events...
	$('div#scrollingTicker').bind('mouseenter', pm_pauseScrollTicker);
	$('div#scrollingTicker').bind('mouseleave', pm_resumeScrollTicker);
	
	//	Scroll ticker...
	pm_scrollTicker();
}


//	Continuously scroll the ticker.
	
function pm_scrollTicker()
{
	//	Get hold of divs and determine sizes...
	var scrollingTicker = $("div#scrollingTicker");
	var scrollingTickerContents = $("div#scrollingTickerContents");
	var frameHeight = scrollingTicker.height();
	var contentHeight = scrollingTickerContents.height();
	var initialContentTop = scrollingTickerContents.position().top;
	
	//	Push content far enough down to be just below bottom of ticker frame if we're in starting position or have scrolled off...
	if ((initialContentTop == 0) || (initialContentTop == -contentHeight))
	{
		scrollingTickerContents.css('top', frameHeight + 'px');
		initialContentTop = scrollingTickerContents.position().top;
	}
	
	//	Calculate time based on distance to scroll (particularly useful when resuming animation)...
	distanceToScroll = initialContentTop + contentHeight;
	timeToScroll = distanceToScroll * 50;
	
	//	Animate ticker crawl, with callback for continuous scrolling...
	scrollingTickerContents.animate(
		{
			top: "-" + contentHeight + "px",
		}, timeToScroll, "linear", pm_scrollTicker
	);
}


//	Stop the animation to enable interaction, called on mouse enter.

function pm_pauseScrollTicker()
{
	//	Stop the animation when we're over the ticker...
	var scrollingTickerContents = $("div#scrollingTickerContents");
	scrollingTickerContents.stop();
}


//	Resume the animation, called on mouse leave.

function pm_resumeScrollTicker()
{
	//	Start scrolling again...
	pm_scrollTicker();
}
