function addEventToObject(obj, evt, func)
{
	var oldhandler = obj[evt];
	obj[evt] = (typeof obj[evt] != 'function') ? func : function(ev){oldhandler(ev); func(ev);};
}


function ExtractImageURL(str)
{
	var quote_str = "'";
	var i = str.indexOf("src=" + quote_str);
	if(i == -1) {
		quote_str = '"';
		i = str.indexOf("src=" + quote_str);
	}

	if(i == -1) return "../Site/adventure.png";

	str = str.substring(i + 5);
	return str.substring(0, str.indexOf(quote_str));
}


function ajaxRequest(url, func, i)
{
	var req;

	if(window.XMLHttpRequest) 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, i);}
	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);
}


var rssFetchAndDisplay = {
	<!-- Title Anchor, RSS URL, Use Thumbnails? -->
	aFeeds:	[	[['<a href="../blog/">Adventure Reports</a>'], ['../blog/?feed=rss2'], 1],
				[['<a href="http://www.sterling-adventures.co.uk/blog/2006/05/22/sterling-technology/">Sterling Technology</a>'], ['extra.xml'], 1]
			],
	aNews: new Array(),
	iCurrentNewsItem: 0,
	tTM: null,
	iCycleCount: 2000,
	iFadeCount: 110,
	iLoaded: 0,

	Init: function()
	{
		var r = rssFetchAndDisplay;
		r.iLoaded = 0;
		for(j = 0; j < r.aFeeds.length; j++) r.SetXml(j, r.aFeeds[j][1]);
	},

	SetInnerHTML: function()
	{
		var r = rssFetchAndDisplay;
		var oElement = document.getElementById('tic-title');
		oElement.innerHTML = r.aFeeds[r.aNews[r.iCurrentNewsItem].feed][0];
		oElement = document.getElementById('tic-item');
		oElement.innerHTML = '<a href="' + r.aNews[r.iCurrentNewsItem].url + '">' + r.aNews[r.iCurrentNewsItem].title + '</a>';
		if(r.aFeeds[r.aNews[r.iCurrentNewsItem].feed][2]) {
			document.getElementById('tic-url').setAttribute('href', r.aNews[r.iCurrentNewsItem].url);
			document.getElementById('tic-pic').setAttribute('src', r.aNews[r.iCurrentNewsItem].pic);
		}
		var aHrefs = document.getElementById('tic-item').getElementsByTagName('a');
		addEventToObject(aHrefs[0], 'onmouseover', r.PauseTicker);
		addEventToObject(aHrefs[0], 'onmouseout', r.RestartTicker);
		r.CycleTicker();
	},

	SetXml: function(j, sRSS)
	{
		var r = rssFetchAndDisplay;
		ajaxRequest(sRSS, r.XmlFetchResponse, j);
	},

	XmlFetchResponse: function(req, j)
	{
		var r = rssFetchAndDisplay;
		if(req.readyState == 4) {
			if(req.status == 200) {
				if(r.tTM) clearTimeout(r.tTM);
				r.Create(req, j);
			}
//			else alert("There was a problem retrieving the XML data: " + req.statusText);
		}
	},

	Create: function(req, j)
	{
		var r = rssFetchAndDisplay;
		r.ParseXMLToArray(req, j);
		r.SetInnerHTML();
	},

	ParseXMLToArray: function(req, j)
	{
		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[r.iLoaded + i] = new Array();
			r.aNews[r.iLoaded + i].feed = j;
			r.aNews[r.iLoaded + i].title = aItems[i].getElementsByTagName('title')[0].firstChild.nodeValue;
			r.aNews[r.iLoaded + i].url = aItems[i].getElementsByTagName('link')[0].firstChild.nodeValue;
			r.aNews[r.iLoaded + i].pic = (r.aFeeds[j][2] ? ExtractImageURL(aItems[i].getElementsByTagName('description')[0].firstChild.nodeValue) : "");
		}
		r.iLoaded = r.iLoaded + i;
	},

	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; // Safari<1.2, Konqueror
		oFadeItem.style.MozOpacity = 0.999; // Older Mozilla and Firefox
		oFadeItem.style.opacity = 0.999; // Safari 1.2, newer Firefox and Mozilla, CSS3
		r.iFadeCount = 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;
			r.tTM = setTimeout(function(){r.CycleTicker()}, 100); 		  
		}
	},

	FadeOut: function()
	{
		var r = rssFetchAndDisplay;
		if(r.tTM) clearTimeout(r.tTM);
		if(r.iFadeCount < 0) {
			r.iCurrentNewsItem = (r.iCurrentNewsItem < r.aNews.length - 1) ? r.iCurrentNewsItem + 1 : 0;
			r.iFadeCount = 110;
			r.SetInnerHTML();
			r.CycleTicker();
		}
		else {
			r.iFadeCount -= 10;
			if(r.iFadeCount <= 100) {
				var oFadeItem = document.getElementById('tic-item').getElementsByTagName('a')[0];
				var opac = ((r.iFadeCount / 100) > 0.999) ? 0.999 : (r.iFadeCount / 100);
				oFadeItem.style.KHTMLOpacity = opac; // Safari<1.2, Konqueror
				oFadeItem.style.MozOpacity = opac; // Older Mozilla and Firefox
				oFadeItem.style.opacity = opac; // Safari 1.2, newer Firefox and Mozilla, CSS3
			}
			r.tTM = setTimeout(function(){r.FadeOut()}, 50);
		}
	}
}

