
if (typeof(RSSFeed) == 'undefined') var RSSFeed = function() {

var rss = {};

function CreateXMLHttpRequest() {
	if (window.XMLHttpRequest)
		return new XMLHttpRequest();
	if (window.ActiveXObject)
		return new ActiveXObject("Microsoft.XMLHTTP");
	throw "Couldn't find XMLHttpRequest";
}

function RenderAtomFeed(xml) {
	var list = document.createElement('ul');
	var entries = xml.getElementsByTagName('entry');
	for (var i = 0; i < entries.length && i < 5; i++) {
		var e = entries[i];
		var title = e.getElementsByTagName('title').item(0).firstChild.data;
		var summary = e.getElementsByTagName('summary').item(0).firstChild.data;
		var link = e.getElementsByTagName('link').item(0).getAttribute('href');
// 		var author = e.getElementsByTagName('author').item(0).getElementsByTagName('name').item(0).firstChild.data;
		var updated = e.getElementsByTagName('updated').item(0).firstChild.data.substr(0, 10);

		var item = document.createElement('li');
		var a = document.createElement('a');
		a.setAttribute('href', link);
		a.innerHTML = title;
		item.appendChild(a);
		item.appendChild(document.createTextNode(' (' + updated + ')'));
		item.appendChild(document.createElement('br'));
		item.innerHTML += summary;

		list.appendChild(item);
	}
	return list;
}

function LoadRSSFeed(link, targetNode) {
	var req = CreateXMLHttpRequest();
	req.open('GET', link, true);
	req.onreadystatechange = function ReqChange() {
		if (4 != req.readyState) return;
		if (200 == req.status) {
			var ctype = req.getResponseHeader("Content-Type");
			if (ctype.indexOf('text/html') == 0) {
				/* pre-rendered feed; should not include html/body tags, just html snippet */
				targetNode.innerHTML = this.responseText;
			} else if (ctype.indexOf('application/atom+xml') == 0) {
				if (!this.responseXML) {
					targetNode.innerHTML = "Loading RSS Feed failed: XML Syntax error";
				} else {
					targetNode.innerHTML = "";
					targetNode.appendChild(RenderAtomFeed(this.responseXML.documentElement));
				}
			} else {
				targetNode.innerHTML = "Loading RSS Feed failed (unknown content-type)";
			}
		} else {
			targetNode.innerHTML = "Loading RSS Feed failed";
		}
	};
	req.send();
}
rss.LoadRSSFeed = LoadRSSFeed;

function LoadRSSFeeds() {
	var elements = document.getElementsByTagName('div');
	for (var i = 0; i < elements.length; i++) {
		var e = elements[i];
		if (-1 == e.className.indexOf('rssfeed') || 0 == e.childNodes.length) continue;
		var linkNode = e.childNodes[0];
		if (linkNode.nodeName.toUpperCase() != 'A') continue;
		var link = linkNode.getAttribute('href');
		if (!link) continue;

		var content = document.createElement('div');
		var loading = document.createTextNode('Loading RSS Feed...');
		content.appendChild(loading);

		while (e.childNodes.length > 1) e.removeChild(e.lastChild);
		e.appendChild(content);

		LoadRSSFeed(link, content);
	}
}
rss.LoadRSSFeeds = LoadRSSFeeds;

return rss;
}();

RSSFeed.LoadRSSFeeds();

