google.load("feeds", "1");

$(document).ready(function() {
	$('.rss-feed').each(function() {
		var UrlRssFeed = $(this).attr('rel');
		var MaxItem = $(this).attr('feed-items');
		var MaxLen = $(this).attr('feed-maxsize');

		if (MaxItem == undefined)
			MaxItem = 3;
		if (MaxLen == undefined)
			MaxLen = 100;

		ReadRSS(this, UrlRssFeed, 'rss-bodytemplate', 'rss-titletemplate', MaxItem, MaxLen);
		$(this).show();

	});

});

/*	Simple Javascript RSS Reader Version 1.0
Copyright (c) 2006 CS Truter
Written by Christoff Truter
email: Christoff@cstruter.com - (Please let me know if you intend to use the script) */

/* Replace all occurances of a string
(Parameters) totalValue:'complete string' 
oldValue:'value to be replaced' newValue:'value used for replace' */

function Replace(totalValue, oldValue, newValue) {
	while (totalValue.indexOf(oldValue) > -1)
		totalValue = totalValue.replace(oldValue, newValue);
	return totalValue;
}

/* Get XML Node
(Parameters) TagName:'XML Element' node:'Element row number' */

function getNode(TagName, node) {
	var currentNode = (node == null) ? xmlDoc.getElementsByTagName(TagName) :
					items[node].getElementsByTagName(TagName);
	if (currentNode.length > 0)
		return currentNode[0].firstChild.nodeValue;
}

/* Load XML Object
(Parameters) rssFeed:'RSS File' Body:'Layer for RSS Body' Title:'Layer for RSS Title' */

function ReadRSS(objContainer, rssFeed, Body, Title, MaxItem, MaxLen) {
	var rssTitle = $('.' + Title, objContainer).get(0);
	var rssBody = $('.' + Body, objContainer).get(0);

	try {
		var feed = new google.feeds.Feed(rssFeed);
		feed.setResultFormat(google.feeds.Feed.XML_FORMAT);
		//RSC v451 12.02.2010 : spécifie le nombre d'élément à nous retourner
		feed.setNumEntries(MaxItem);
		feed.load(function(result) {
			if (!result.error) {
				xmlDoc = result.xmlDocument;
				items = result.xmlDocument.getElementsByTagName("item");
				SetRSSTemplates(rssTitle, rssBody, MaxItem, MaxLen);
			}
		});

	}

	catch (e) {
		rssTitle.innerHTML = 'Error occured';
		rssBody.innerHTML = 'Thrown Error:' + e.message + "<br/>";
	}
}

/* Set HTML Template
Did it this way to make the look and feel of the feed easy customizable, dont like mixing
layout with code. */

function SetRSSTemplates(prssTitle, prssBody, MaxItem, MaxLen) {
	if (prssTitle) {
		var output = Replace(prssTitle.innerHTML, "$rss(title)$", getNode('title'));
		output = (document.all) ? Replace(output, "$rss(link)$", getNode('link'))
							   : Replace(output, "$rss%28link%29$", getNode('link'));
		output = Replace(output, "$rss(description)$", getNode('description'));
		prssTitle.innerHTML = output;
	}

	if (prssBody) {
		var buffer = "";
		var myMax = items.length;
		if (myMax > MaxItem) {
			myMax = MaxItem
		}
		for (var i = 0; i < myMax; i++) {
			var output = (document.all) ? Replace(prssBody.innerHTML, "$rss(link)$", getNode('link', i))
									   : Replace(prssBody.innerHTML, "$rss%28link%29$", getNode('link', i));
			output = Replace(output, "$rss(title)$", getNode('title', i));
			output = Replace(output, "$rss(pubdate)$", getNode('pubDate', i));
			output = Replace(output, "$rss(description)$", getNode('description', i).substring(0, MaxLen));
			output = Replace(output, "$rss(author)$", getNode('author', i));
			buffer += output;

		}
		prssBody.innerHTML = buffer;
	}
}