//////////////////////////////////////////////////////////
//	<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. 

*/
//alert( 'In rssGrabber2.js' );

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;
	var http_request = false;

//alert( 'In rssGrabber2.js, arguments.length is ' + arguments.length );
//alert( 'In rssGrabber2.js, arguments[0] is ' + arguments[0] );

	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;
		}

	function formatRSS( items, number) {
		var items_count;
//		alert( 'In rssGrabber2.js, in formatRSS, arg is ' + number );
		theItem = items.getElementsByTagName('entry')[0];
//		alert( 'In rssGrabber2.js, item 0 tagName is ' + theItem.tagName );
//		if ((number == 0) || (number > items.getElementsByTagName('item').length))
			items_count=theItem.childNodes.length;
//		else
//			items_count=number;
		alert( 'In rssGrabber2.js, in formatRSS, items_count is ' + items_count );
		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 < number; i++ ) {
			theItem = items.getElementsByTagName('entry')[i];
			if(theItem.getElementsByTagName('dc:date').length==1)
				date[i]=theItem.getElementsByTagName('dc:date')[0];
			if(theItem.getElementsByTagName('link').length==1)
				link[i]=theItem.getElementsByTagName('link')[0];
			if(theItem.getElementsByTagName('guid').length==1)
				guid[i]=theItem.getElementsByTagName('guid')[0];
			if(theItem.getElementsByTagName('title')[0].length > 0)
				title[i]=theItem.getElementsByTagName('title')[0];
			if(theItem.getElementsByTagName('dc:creator').length==1)
				description[i]=theItem.getElementsByTagName('dc:creator')[0];
			if(theItem.getElementsByTagName('content:encoded').length==1)
				body[i]=theItem.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].data:"<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>');
		}

	}

	function alertContents() {
	  if (http_request.readyState == 4) {
		 if (http_request.status == 200) {
			var xmldoc;
			if ( window.ActiveXObject ) {
				xmldoc = new ActiveXObject("Microsoft.XMLDOM");
				xmldoc.loadXML( http_request.responseText );
			} else
				xmldoc = http_request.responseXML;

			var xmlStr = http_request.responseText;
//			alert('Got HTML response: ' + xmlStr);
			
			var Latest = document.getElementById( 'Latest' );
			if ( Latest ) {
				var entries = xmldoc.getElementsByTagName('entry');
				if ( entries.length > 0 ) {
					Latest.innerHTML = '';
					for (var ent = 0; ent < entries.length; ent++) {
						var node = entries[ ent ];
						var title = node.getElementsByTagName('title');
						var id = node.getElementsByTagName('id');
						var strID = id[0].childNodes[0].nodeValue;
						var postIdx = strID.indexOf( 'post-' );
						var postNum = strID.substring( postIdx + 5 );
						var anchor1; // = node.getElementsByTagName('a');
						if ( anchor1 )
							alert( 'Anchor: ' + anchor1[0].childNodes[0].nodeValue );
						else
							alert( 'No anchors' );
						Latest.innerHTML += '<a href="http://surfingsports.com/blog.asp#' + postNum + '" target="blogPost" class="b2Entries">' + title[0].childNodes[0].nodeValue + '</a><br /><br />';
					}
				}
			}
		 } else {
//			alert('There was a problem with the request.');
		 }
//	  } else {
//			alert('Got readyState = ' + http_request.readyState + ', status = ' + http_request.status);
	  }
	}

	function makeRequest( url, parameters ) {
//	  alert( 'In rssGrabber2.js, in makeRequest for ' + url );
	  http_request = false;
	  if (window.XMLHttpRequest) { // Mozilla, Safari,...
		 http_request = new XMLHttpRequest();
		 if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		 }
	  } else if (window.ActiveXObject) { // IE
		 try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		 } catch (e) {
			try {
			   http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		 }
	  }
	  if (!http_request) {
//		 alert('Cannot create XMLHTTP instance');
		 return false;
	  }
//	  http_request.async = false;
	  http_request.onreadystatechange = alertContents;
	  http_request.open('GET', url + parameters, true);
	  http_request.send(null);
//	  alert( 'In rssGrabber2.js, in makeRequest at end' );
	}

/*
	if ( typeof( xmlDoc ) != "undefined" ) {
		if ( window.ActiveXObject )
			formatRSS( arguments[1] );
		else
			xmlDoc.onload = formatRSS;
	} else {
		alert( 'In rssGrabber2.js, xmlDoc is undefined' );
	}
*/
	makeRequest( URI, '' );
}