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');
		var strTwitterAccount = $(this).attr('twitter-account');

		if (MaxItem == undefined)
			MaxItem = 3;
		if (MaxLen == undefined)
			MaxLen = 100;

		ReadRSS(this, UrlRssFeed, 'rss-bodytemplate', 'rss-titletemplate', MaxItem, MaxLen, strTwitterAccount);
		$(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, pstrTwitterAccount) {
	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, pstrTwitterAccount);
			}
		});

	}

	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, pstrTwitterAccount) {
	if (prssTitle) {
		var output = Replace(prssTitle.innerHTML, "$rss(title)$", getNode('title'));
		output = Replace(output, "$rss(link)$", getNode('link'));
		output = 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 = Replace(prssBody.innerHTML, "$rss(link)$", getNode('link', i));

			//RSC V454 29.04.2010 : regexp to convert links into href within the description
			var description = getNode('description', i).substring(0, MaxLen);
			if (pstrTwitterAccount != '') {
				var re = new RegExp('^' + pstrTwitterAccount + ':\\s', 'ig');
				description = description.replace(re, '');
			}
			//Replace www alone with http://www
			description = description.replace(/[^\/]www\.([^\ \)$]*)/ig, ' http://www.$1');
			//Create the link
			description = description.replace(/http([s]?):\/\/([^\ \)$]*)/ig, '<a href="http$1://$2" rel="nofollow" title="$2">http$1://$2</a>');
			output = Replace(output, "$rss(description)$", description);
			
			output = Replace(output, "$rss%28link%29$", getNode('link', i));
			output = Replace(output, "$rss(title)$", getNode('title', i));
			var pubDate = new Date(getNode('pubDate', i));
			output = Replace(output, "$rss(pubdate)$", FormatDate(pubDate));
			//output = Replace(output, "$rss(pubdate)$", getNode('pubDate', i));
			output = Replace(output, "$rss(author)$", getNode('author', i));
			buffer += output;

		}
		prssBody.innerHTML = buffer;
	}
}

function FormatDate(theDate) {
	var result = '';

	if (theDate.getDate() < 10) {
		result += '0'
	}
	result += theDate.getDate()
	result += '.'
	if (theDate.getMonth()+1 < 10) {
		result += '0'
	}
	result += theDate.getMonth()+1
	result += '.'
	result += theDate.getFullYear()

	return result;
}
