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) 
{
	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);}
	}
	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);
	return false;
}

var rssFetchAndDisplay = 
{
	aFeeds: [[['latest-news'],['The latest news headlines from Almac'],['<a href="/news/all.aspx">Latest News Headlines<\/a>']]],
	iCurrentFeedsItem: 0,
	aNews: new Array(),
	iCurrentNewsItem: 0,
	tTM: null,
	sState: 'hide',
	iCycleCount: 2000,
	iFadeInCount: 0,
	iFadeOutCount: 0,

	Init: function()
	{
		var r = rssFetchAndDisplay;
		r.SetXml('/ticker.rss');
	},
	
	SetXml: function(sUrl)
	{
		var r = rssFetchAndDisplay;
		ajaxRequest(sUrl,r.XmlFetchResponse);
	},
	
	XmlFetchResponse: function(req)
	{
		var r = rssFetchAndDisplay;
		if (req.readyState == 4) 
		{
			if (req.status == 200)
			{
				if (r.tTM)
				{
					clearTimeout(r.tTM);
				}
				r.Create(req);
			} 
		}
	},
	
	Create: function(req)
	{
		var r = rssFetchAndDisplay;
		r.iCurrentNewsItem = 0,
		r.ParseXMLToArray(req);
		var oTickerCont = document.getElementById('ticker');
		//oTickerCont.innerHTML = "\n\r"+'<table border="0" cellpadding="0" cellspacing="0" class="'+r.sState+'">'+"\n\r"+'<tr><td id="tic-title"><span>'+r.aFeeds[r.iCurrentFeedsItem][2]+'</span></td><td id="tic-item"><a href="/hotnews/">'+r.aNews[r.iCurrentNewsItem].title+'</a></td></tr>'+"\n\r"+'</table>'+"\n\r";
		//oTickerCont.innerHTML = "\n\r"+'<table border="0" cellpadding="0" cellspacing="0" class="'+r.sState+'">'+"\n\r"+'<tr><td id="tic-title"><span>'+r.aFeeds[r.iCurrentFeedsItem][2]+'</span></td><td id="tic-item"><a href="'+r.aNews[r.iCurrentNewsItem].url+'">'+r.aNews[r.iCurrentNewsItem].title+'</a></td></tr>'+"\n\r"+'</table>'+"\n\r";
		
		oTickerCont.innerHTML = '<div id="tic-item"><a href="'+r.aNews[r.iCurrentNewsItem].url+'">'+r.aNews[r.iCurrentNewsItem].title+'</a></div>';
		
		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; 
		r.iFadeOutCount = 0;
	},
	
	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;
			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 = 0;
			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; 
			}
			r.tTM = setTimeout(function(){r.FadeOut()},50);   
		}
	}
}
	
addEventToObject(window,'onload',rssFetchAndDisplay.Init); 
