function addEventToObject(obj,evt,func) {
	var oldhandler = obj[evt];
	obj[evt] = (typeof obj[evt] != 'function') ? func : function(ev){oldhandler(ev);func(ev);};
}
function ajaxRequest(url,func,obj) {
	//alert("fetching XML")
	if (window.XMLHttpRequest) {var req = new XMLHttpRequest(); }
	else if (window.ActiveXObject) {try {req = new ActiveXObject("Msxml2.XMLHTTP");}catch(e) {req = new ActiveXObject("Microsoft.XMLHTTP");}}
	if (func) {req.onreadystatechange = function() {func(req,obj);}}
	try {
		req.open('GET',url,true);
		req.setRequestHeader('X-Requested-With','XMLHttpRequest');
		req.setRequestHeader('If-Modified-Since','Wed, 15 Nov 1995 00:00:00 GMT');
		if (req.overrideMimeType) {req.overrideMimeType("text/xml");}
		req.send(null);
	} catch(e) {
		alert(e);
	}
	return false;
}

var rssFetchAndDisplay = {
	aFeeds: [[['topstories'],['Top Stories'],['<label><a href="news.aspx">Headlines: <\/a></label>'],['news/news.xml']]],
	iCurrentFeedsItem: 0,
	aNews: new Array(),
	iCurrentNewsItem: 0,
	tTM: null,
	sState: 'hide',
	iCycleCount: 2500,
	iFadeInCount: 110,
	iFadeOutCount: 110,
	
	Init: function() {
		var r = rssFetchAndDisplay;
		r.SetXml();
		//setInterval(function(){r.SetXml()},60000)
		},
	
	SetXml: function() {
		var sUrl = 'news/news.xml'
		var r = rssFetchAndDisplay;
		ajaxRequest(sUrl,r.XmlFetchResponse); },
		
	XmlFetchResponse: function(req) {
		var r = rssFetchAndDisplay;
		if (req.readyState == 4)  {
			if (req.status == 200) {
				if (r.tTM){
					r.ParseXMLToArray(req);
				} else {
					r.Create(req);
				}
			} else {
				alert("There was a problem retrieving the XML data:\n\r" + req.statusText);
			}
		}
	},
	
	Create: function(req) {
		var r = rssFetchAndDisplay;
		r.iCurrentNewsItem = 0,
		r.ParseXMLToArray(req);
		var oTickerCont = document.getElementById('ticker');
		/* // original code
		oTickerCont.innerHTML = '<table border="0" cellpadding="0" cellspacing="0" class="'+r.sState+'"><tr><td id="tic-title"><span>'+r.aFeeds[r.iCurrentFeedsItem][2]+'</span></td><td id="tic-item"><a href="../../shared/js/'+r.aNews[r.iCurrentNewsItem].url+'">'+r.aNews[r.iCurrentNewsItem].title+'</a></td></tr></table>';
		*/
		oTickerCont.innerHTML = r.aFeeds[r.iCurrentFeedsItem][2] + '<span id="tic-item"><a href="' + r.aNews[r.iCurrentNewsItem].url + '">' + r.aNews[r.iCurrentNewsItem].title + '</a></span>';
		
		var aHrefs = document.getElementById('tic-item').getElementsByTagName('a');
		addEventToObject(aHrefs[0],'onmouseover',r.PauseTicker);
		addEventToObject(aHrefs[0],'onmouseout',r.RestartTicker);
		r.CycleTicker();
	},
	
	ParseXMLToArray: function(req) {
		var r = rssFetchAndDisplay;
		if (req.responseXML.documentElement) {
			aItems = req.responseXML.documentElement.getElementsByTagName('item');
		} else {
			dom = new ActiveXObject("MSXML.DOMDocument");
			dom.loadXML(req.responseText);
			aItems = dom.documentElement.getElementsByTagName('item'); }	
		for (var i=0;i<aItems.length;i++) {
			r.aNews[i] = new Array();
			r.aNews[i].title = aItems[i].getElementsByTagName('title')[0].firstChild.nodeValue;
			r.aNews[i].url = aItems[i].getElementsByTagName('link')[0].firstChild.nodeValue; }
	},
	
	PauseTicker: function() {
		var r = rssFetchAndDisplay;
		if (r.tTM){clearTimeout(r.tTM)};
		var oFadeItem = document.getElementById('tic-item').getElementsByTagName('a')[0];
		oFadeItem.style.KHTMLOpacity = 0.999;
		oFadeItem.style.MozOpacity = 0.999;
		oFadeItem.style.opacity = 0.999;
		//oFadeItem.style.zoom = 1; // bizarre ie fix
		//oFadeItem.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity='+opac * 100+')'; // IE/Win
		r.iFadeOutCount = 100;
		},
	
	RestartTicker: function() {
		var r = rssFetchAndDisplay;
		r.iCycleCount = 2000;
		r.CycleTicker(); },
	
	CycleTicker: function() {
		var r = rssFetchAndDisplay;
			if (r.tTM){clearTimeout(r.tTM);}
			if (r.iCycleCount < 0) {
				r.iCycleCount = 2000;
				r.FadeOut();
			} else {
				r.iCycleCount -= 100;
				//var iDelay = (r.iCurrentNewsItem == 0) ? 0 : 100;
				r.tTM = setTimeout(function(){r.CycleTicker()},100);
			}
		},
	
	FadeOut: function() {
		var r = rssFetchAndDisplay;
		if (r.tTM){clearTimeout(r.tTM)};                         
		if (r.iFadeOutCount < 0) {
			r.iCurrentNewsItem = (r.iCurrentNewsItem < r.aNews.length-1) ? r.iCurrentNewsItem + 1 : 0;
			var oActiveItem = document.getElementById('tic-item');
			oActiveItem.innerHTML = '<a href="'+r.aNews[r.iCurrentNewsItem].url+'">'+r.aNews[r.iCurrentNewsItem].title+'</a>';
			var aHrefs = document.getElementById('tic-item').getElementsByTagName('a');
			addEventToObject(aHrefs[0],'onmouseover',r.PauseTicker);
			addEventToObject(aHrefs[0],'onmouseout',r.RestartTicker);
			r.iFadeOutCount = 110;
			r.CycleTicker();
		} else {
			r.iFadeOutCount -= 10;
			if (r.iFadeOutCount <= 100) {
				var oFadeItem = document.getElementById('tic-item').getElementsByTagName('a')[0];
				var opac = ((r.iFadeOutCount/100) > 0.999) ? 0.999 : (r.iFadeOutCount/100);
				oFadeItem.style.KHTMLOpacity = opac;
				oFadeItem.style.MozOpacity = opac;
				oFadeItem.style.opacity = opac;
				
				//oFadeItem.style.zoom = 1; // bizarre ie fix
				//oFadeItem.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity='+opac * 100+')'; // IE/Win
			}
			r.tTM = setTimeout(function(){r.FadeOut()},50);   
		}
	}
	}
	
addEventToObject(window,'onload',rssFetchAndDisplay.Init); 

