/* =======[ BEGIN TICKER DETECTION ]========================== */

var scrollStep = 3;
var scrollSpeed = 67;
var scrollPauseDelay = 5000;  //How long a news item should stay before being scrolled
var scrollPauseTop = 1;   //Top edge of the news item where it be stopped for display
//var fileTickerContent ;
var fileTickerContent = "rss/newsticker.xml";
var arrTickerItems = new Array();
var currentTickerItem = 0;
var scrollStopped = false;
var scrollTimerID = null;
var scrollDiv = null;
var tickerHeight = 0;
var scrollDivHeight = 0;
var tickerItemLink = null;

function AddEventToObject(obj, evt, func) {
	var oldEvtHandler = obj[evt];
	obj[evt] = (typeof obj[evt] != 'function') ? func : function(ev){oldEvtHandler(ev);func(ev);};
}

function InitTicker(id) {
   
	LoadTickerData();
	
	if (arrTickerItems.length == 0) return;
	
	scrollDiv = document.getElementById(id).getElementsByTagName("div")[0];
	scrollDiv.style.visibility = "visible";
	tickerItemLink = scrollDiv.getElementsByTagName("A")[0];
	tickerItemLink.href = arrTickerItems[currentTickerItem].url;
	tickerItemLink.innerHTML = arrTickerItems[currentTickerItem].title;

	if (arrTickerItems.length == 1) return;
	tickerHeight = (scrollDiv.parentNode.offsetHeight) ? scrollDiv.parentNode.offsetHeight : scrollDiv.parentNode.height;
	scrollDiv.style.top = tickerHeight + "px";
	scrollDivHeight = (scrollDiv.offsetHeight) ? scrollDiv.offsetHeight : scrollDiv.height;
	AddEventToObject( scrollDiv, 'onmouseover', function() {if (scrollStopped) scrollStep=0;} );
	AddEventToObject( scrollDiv, 'onmouseout', function() {scrollStep=2} );
	AddEventToObject( tickerItemLink, 'onfocus', function() {if (scrollStopped) scrollStep=0;} );
	AddEventToObject( tickerItemLink, 'onblur', function() {scrollStep=2} );
	
	// Metrics
	scrollTimerID = setTimeout( 'MoveTicker()', 100 );

}

function MoveTicker() {

	var scrollTop = parseInt( scrollDiv.style.top );
	scrollTop = scrollTop - scrollStep;
	if ( scrollTop <= (scrollDivHeight*(-1)) ) {
		currentTickerItem++;
		if (currentTickerItem == arrTickerItems.length) 
			currentTickerItem = 0;	
		tickerItemLink.href = arrTickerItems[currentTickerItem].url;
		tickerItemLink.innerHTML = arrTickerItems[currentTickerItem].title;
		scrollTop = tickerHeight;
	}
	if ( (scrollTop >= scrollPauseTop) && (scrollTop-scrollStep < scrollPauseTop) ) {
		scrollTop = scrollPauseTop;
		scrollStopped = true;
		scrollTimerID = setTimeout( 'MoveTicker()', scrollPauseDelay );  //Stop the news heading for a longer duration
	} else {
		scrollStopped = false;
		scrollTimerID = setTimeout( 'MoveTicker()', scrollSpeed );
	}
	scrollDiv.style.top = scrollTop + "px";
}

function LoadTickerData(id) {

	var obj = null;
	var xmlDoc = null;
	var xmlData = "";
	var tickerItems = null;
	if (window.XMLHttpRequest) {
		obj = new XMLHttpRequest();   // IE7, Mozilla, Safari, ...
	} else if (window.ActiveXObject) {
		try {
			obj = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				obj = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E) {
				obj = null;
			}
		}
	}

	if (obj) {
		obj.open( "GET", fileTickerContent, false );
		if (obj.overrideMimeType)
			obj.overrideMimeType('text/xml');
		obj.send( null );
		if (obj.status == 200) {
			xmlDoc = obj.responseXML;
			xmlData = obj.responseText;
		}
	}

	if ( xmlDoc && xmlDoc.documentElement ) {
		xmlDoc = xmlDoc.documentElement;
	} else if ( window.ActiveXObject && xmlData ) {
		try {
			xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
			xmlDoc.loadXML( xmlData );
		} catch (e) {
			try {
				xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
				xmlDoc.loadXML( xmlData );
			} catch (E) {
				xmlDoc = null;
			}
		}
	}

	if (xmlDoc)
		tickerItems = xmlDoc.getElementsByTagName( "item" );
	else return;
	
	for (var i=0; i<tickerItems.length; i++ ) {
		arrTickerItems[i] = new Array();
		arrTickerItems[i].title = tickerItems[i].getElementsByTagName('title')[0].firstChild.nodeValue;
		arrTickerItems[i].url = tickerItems[i].getElementsByTagName('link')[0].firstChild.nodeValue;
	
	}	
	
}
/* =======[ END TICKER ]========================== */
