﻿//////////////////////////////////////////////////////////
//	<JavaScript RSS Reader>				//
//      Modified to be Inserted Embedded Into a Site:	// 
//	Portability/Customization Features Added:	//
//	By Danny Garfield (13/03/04)			//
//	http://www.puuba.com				//
//	http://www.reploid9.com				//
//							//
// 	(c) 2003 Premshree Pillai			//
//	Core Code Written On: 07/06/03 (dd/mm/yy)	//
//	http://www.qiksearch.com/			//
//	http://premshree.resource-locator.com		//
//							//
//////////////////////////////////////////////////////////

/* 
Script Now Supports:
-Variable Number Of Entries Outputted
-Embedding in an HTML File
-Externally Customizable Font/Look

To Use This Script:
Paste into the <head> section of the HTML page:
<script src="http://www.puuba.com/team/translator.js"></script>
	
Then, wherever you want the translated RSS feed to appear, paste:
<script>
try {readRSS(unescape("http://www.puuba.com/team/blog.rss"),5);}
catch(e) {}
</script>

Replace the URL with that of the RSS feed you want. Replace the number with
The max number of entries you want displayed. (posts, on a blog)
If the number is zero, it means to display ALL available posts.
If the number is more than the available posts, all available posts will show.

Options:
NOHR
NODATE
SHOWTIME12
SHOWTIME24
NOAUTHOR
NODOUBLESPACE
SHOWBODY
TILBR
NOTITLE
ALTDATEAUTH
DATEFIRST


You can customize the colors/styles of the text outputted by this using
a standard style sheet from the outside.
The classes of the words are:
.rsslink   - the links printed (the titles)
.rssdate   - the date/time printed
.rssauthor - the name of the poster.
Normal style declarations (color, size, text decoration, italics, bold, etc) can be
declared in the style sheet as usual. 

*/


function readRSS(URI, number) {
	var hrSwitch = true, authorSwitch = true, dateSwitch = true, doubleSpace = true, showBody = false, showTime12 = false, showTime24 = false, showTitle = true, altform = false, datefirst = false;


	if (arguments.length > 2)
		for (i = 2; i < arguments.length; i++) {
		if (arguments[i] == "NOHR")
			hrSwitch = false;
		if (arguments[i] == "NOAUTHOR")
			authorSwitch = false;
		if (arguments[i] == "NODATE")
			dateSwitch = false;
		if (arguments[i] == "NODOUBLESPACE")
			doubleSpace = false;
		if (arguments[i] == "NOTITLE")
			showTitle = false;
		if (arguments[i] == "SHOWBODY")
			showBody = true;
		if (arguments[i] == "SHOWTIME12")
			showTime12 = true;
		if (arguments[i] == "SHOWTIME24")
			showTime24 = true;
		if (arguments[i] == "ALTDATEAUTH")
			altform = true;
		if (arguments[i] == "DATEFIRST")
			datefirst = true;
	}




	if (window.ActiveXObject) {
		var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async = false;
		while (xmlDoc.readyState != 4) document.write('Loading...');
	}
	else if (document.implementation && document.implementation.createDocument)
		xmlDoc = document.implementation.createDocument("", "doc", null);
	xmlDoc.load(arguments[0]);
	items = xmlDoc;

	function verify() { if (xmlDoc.readyState != 4) return false; }

	function formatRSS(number) {
		var items_count;
		if ((number == 0) || (number > items.getElementsByTagName('item').length))
			items_count = items.getElementsByTagName('item').length;
		else
			items_count = number;
		var date = new Array(), time = new Array(), link = new Array(), title = new Array(), description = new Array(), guid = new Array(), body = new Array(), temp, temp2;

		for (var i = 0; i < items_count; i++) {
			if (items.getElementsByTagName('item')[i].getElementsByTagName('dc:date').length == 1)
				date[i] = items.getElementsByTagName('item')[i].getElementsByTagName('dc:date')[0];
			if (items.getElementsByTagName('item')[i].getElementsByTagName('link').length == 1)
				link[i] = items.getElementsByTagName('item')[i].getElementsByTagName('link')[0];
			if (items.getElementsByTagName('item')[i].getElementsByTagName('guid').length == 1)
				guid[i] = items.getElementsByTagName('item')[i].getElementsByTagName('guid')[0];
			if (items.getElementsByTagName('item')[i].getElementsByTagName('title').length == 1)
				title[i] = items.getElementsByTagName('item')[i].getElementsByTagName('title')[0];
			if (items.getElementsByTagName('item')[i].getElementsByTagName('dc:creator').length == 1)
				description[i] = items.getElementsByTagName('item')[i].getElementsByTagName('dc:creator')[0];
			if (items.getElementsByTagName('item')[i].getElementsByTagName('content:encoded').length == 1)
				body[i] = items.getElementsByTagName('item')[i].getElementsByTagName('content:encoded')[0];

			temp = date[i].firstChild.nodeValue;
			date[i] = temp.substring(0, temp.indexOf("T"));


			if (showTime24)
				time[i] = temp.substring(temp.indexOf("T") + 1, temp.indexOf("Z"));

			else if (showTime12) {
				temp2 = temp.substring(temp.indexOf("T") + 1, temp.indexOf("T") + 3);
				if (temp2 > 12)
					time[i] = temp2 - 12;
				else
					time[i] = temp2;
				time[i] = time[i] + temp.substring(temp.indexOf("T") + 3, temp.indexOf("Z"));

			}

		}

		if ((description.length == 0) && (title.length == 0)) return false;

		var ws = /\S/;

		for (var i = 0; i < items_count; i++) {
			var title_w, link_w;
			if (document.all)
				title_w = (title.length > 0) ? title[i].text : "<i>Untitled</i>";
			else
				title_w = (title.length > 0) ? title[i].firstChild.nodeValue : "<i>Untitled</i>";

			link_w = (link.length > 0) ? link[i].firstChild.nodeValue : "";
			if (datefirst && !altform) {
				document.write('<a class="rssdate">' + date[i]);
				if (showTime12 || showTime24) document.write(' - ' + time[i]);
				document.write(':</a><BR>');
			}
			if (link.length == 0) link_w = (guid.length > 0) ? guid[i].firstChild.nodeValue : "";
			if (title.length > 0) title_w = (!ws.test(title_w)) ? "<i>Untitled</i>" : title_w;
			if (showTitle) document.write('<div STYLE="word-wrap: break-word"><a href="' + link_w + '" class="rsslink" target="_parent">' + title_w + '</a></div>');
			if (showBody) document.write(body[i].firstChild.nodeValue + '<BR>');
			if (dateSwitch & !altform & !datefirst) {
				document.write('<a class="rssdate">(' + date[i]);
				if (showTime12 || showTime24) document.write(' - ' + time[i]);
				document.write(')</a><BR>');
			}
			if (authorSwitch && description.length > 0 & !altform)
				document.write('<a class="rssauthor"> by: ' + description[i].firstChild.nodeValue + '</a><BR>');
			if (altform) {
				if (description[i].firstChild)
					document.write('- <a class="rssauthor">' + description[i].firstChild.nodeValue + '</a> :: <a class="rssdate">(' + date[i] + ')</a><BR>');
				else
					document.write('- <a class="rssauthor">No Name In Profile</a> :: <a class="rssdate">(' + date[i] + ')</a><BR>');
			}
			if (hrSwitch) document.write('<HR>'); if (doubleSpace) document.write('<BR>');
		}

	}

	if (typeof (xmlDoc) != "undefined") {
		if (window.ActiveXObject) formatRSS(arguments[1]);
		else xmlDoc.onload = formatRSS;
	}
}