var intervalIndex
var scrollingItems

var lastTickerHeight = 0
var scrollTime = 100
var scrollPause = 2000
var index = 0
var tickerHeight = 15


function showTicker()
{
	var source
	var newsItem
	var newsItems
	var newsItemsToShow
	var goodChild
	
	var i = 0
	var j = 0
	var sourcesHeight = 0
	var numNewsItems = 0
	var newsTicker = document.getElementById( 'newsTicker' )
	var sources = newsTicker.childNodes


	newsTicker.onmouseover = pauseTicker
	newsTicker.onmouseout = unpauseTicker
	
	for ( i = 0; i < sources.length; i++ )
	{
		source = sources[ i ]
		
		if ( source.nodeType == 1 ) // 1 == Node.ELEMENT_NODE
		{
			if ( !goodChild )
			{
				goodChild = source
			}
			
			sourcesHeight = sourcesHeight + source.offsetHeight
			
			newsItems = source.childNodes
			for ( j = 0; j < newsItems.length; j++ )
			{
				newsItem = newsItems[ j ]
				
				if ( newsItem.nodeType == 1 ) // 1 == Node.ELEMENT_NODE
				{
					newsItem.style.height = newsTicker.style.height
				}
				else
				{
					source.removeChild( newsItem )
					j--
				}
			}
		}
	}
	
	// IE doesn't want to give me the height of the news ticker so we use the hard code method.
	if ( IE )
	{
		goodChild.style.top = tickerHeight
		goodChild.firstChild.style.top = -tickerHeight
	}
	else
	{
		goodChild.style.top = newsTicker.offsetHeight
		goodChild.firstChild.style.top = -newsTicker.offsetHeight
	}
	
	scrollingItems = goodChild.childNodes
	if ( IE )
		intervalIndex = newSetInterval( rollUp, scrollPause + ( tickerHeight * scrollTime ), goodChild.childNodes, tickerHeight )
    else
		intervalIndex = window.setInterval( rollUp, scrollPause + ( tickerHeight * scrollTime ), goodChild.childNodes, tickerHeight )
}

function rollUp( scroller, viewPort )
{
	for ( i = 1; i <= viewPort; i++ )
	{
		if ( index + 1 < scroller.length )
		{
			if ( IE )
				newSetTimeout( rollOne, (i * scrollTime), scroller[ index ], scroller[ index + 1 ], -i, viewPort )
			else
				window.setTimeout( rollOne, i * scrollTime, scroller[ index ], scroller[ index + 1 ], -i, viewPort )
		}
		else if ( index + 1 == scroller.length )
		{
			if ( IE )
				newSetTimeout( rollOne, (i * scrollTime), scroller[ index ], scroller[ 0 ], -i, viewPort )
			else
				window.setTimeout( rollOne, i * scrollTime, scroller[ index ], scroller[ 0 ], -i, viewPort )
		}
		else
		{
			if ( IE )
				newSetTimeout( rollOne, (i * scrollTime), scroller[ 0 ], scroller[ 1 ], -i, -viewPort )
			else
				window.setTimeout( rollOne, i * scrollTime, scroller[ 0 ], scroller[ 1 ], -i, viewPort )
		}
	}
	
	if ( index + 1 < scroller.length )
	{
		index = index + 1
	}
	else if ( index + 1 == scroller.length )
	{
		index = 0
	}
}

function rollOne( topNode, nextNode, newHeight, viewPort )
{
	topNode.style.top = ( newHeight - viewPort ) + "px"
	nextNode.style.top = newHeight  + "px"
}

function pauseTicker()
{
    if ( IE )
	    newClearInterval( intervalIndex )
    else
		window.clearInterval( intervalIndex )
}

function unpauseTicker()
{
    if ( IE )
	    intervalIndex = newSetInterval( rollUp, scrollPause + ( tickerHeight * scrollTime ), scrollingItems, tickerHeight )
	else
	    intervalIndex = window.setInterval( rollUp, scrollPause + ( tickerHeight * scrollTime ), scrollingItems, tickerHeight )
}
