google.load("feeds", "1"); //Load Google Ajax Feed API (version 1)

function rssdisplayer(divid, url, feedlimit, showoptions) {
	this.showoptions=showoptions || "";
	var feedpointer=new google.feeds.Feed(url);
	feedpointer.setNumEntries(feedlimit); 
	document.write('<div id="'+divid+'">Loading feed...</div>');
	this.feedcontainer=document.getElementById(divid);
	var displayer=this;
	feedpointer.load(function(r){displayer.formatoutput(r)}); 
		//retrieve and output RSS feed
}

rssdisplayer.prototype.formatoutput=function(result){
    var entries, rssoutput, i, n, 
        titleSplit, title, origin,  description, hasMore,
        displayDate = /date/i.test(this.showoptions),
        displayDescription = /description/i.test(this.showoptions);

	if (result.error) {
		alert("Error fetching feeds: "+result.error.message);
		return;
	}
	
	rssoutput = '';
	entries = result.feed.entries;
	for (i = 0, n = entries.length; i<n; i++) {
		titleSplit = entries[i].title.split(' - ');
		title = titleSplit[0];
		origin = (titleSplit.length > 1) ? titleSplit[1] : null;
		
		rssoutput += '<h4><b>' +  title + '</b></h4>';
		if (origin) {
			rssoutput += '<h4><b>' + origin + '</b></h4>';
		}
		if (displayDate) {
			rssoutput += '<h5>' + this.formatdate(entries[i].
				publishedDate) + '</h5>';
		}
		if (displayDescription) {
			rssoutput += '<p>' + entries[i].contentSnippet +  
				'&nbsp;<a href="' +  entries[i].link + '">More</a></p>';
			
		}
	}
	this.feedcontainer.innerHTML = rssoutput;
	 
}

rssdisplayer.prototype.formatdate = function (date) {
	var itemdate = new Date(date), pattern = ', ';
	itemDate = itemdate.toLocaleDateString();
	itemDate = itemDate.substr(itemDate.indexOf(pattern) + pattern.length);
	return itemDate;
}

rssdisplayer.prototype.getItemDescription = function (entry, origin) {
	var j, description = entry.content, 
		fontBeginMarker = '<font size="-1">',
		fontEndMarker = '</font>';
	j = description.indexOf(origin);
	if (j === -1) { return '';}
	description = description.substr(j + origin.length);
	j = description.indexOf(origin);
	if (j > -1) { 
		description = description.substr(j + origin.length);
	}
	j = description.indexOf(fontBeginMarker);
	if (j === -1) { return '';}
	description = description.substr(j + fontBeginMarker.length);
	j = description.indexOf(fontEndMarker);
	if (j === -1) { return '';}
	description = description.substr(0, j);
	//if (window.console) {
	//	window.console.debug(description);
	//}
	description += '&nbsp;<a href="' +  entry.link + '">More</a>';
	return description;
}


//USAGE SYNTAX: new rssdisplayer("divid", "rssurl", numberofitems, "displayoptions")
//new rssdisplayer("adiv", "http://www.cssdrive.com/index.php/news/rss_2.0/", 5, "date, description")
