// getListservFeed.js 2010-10-27 JBR

// Provide the XMLHttpRequest class for IE 5.x-6.x:
// Other browsers (including IE 7.x-8.x) ignore this
//   when XMLHttpRequest is predefined
if (typeof(XMLHttpRequest)  === "undefined") {
	XMLHttpRequest = function() {
		try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); }
			catch(e) {}
		try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); }
			catch(e) {}
		try { return new ActiveXObject("Msxml2.XMLHTTP"); }
			catch(e) {}
		try { return new ActiveXObject("Microsoft.XMLHTTP"); }
			catch(e) {}
		throw new Error("This browser does not support XMLHttpRequest.");
	};
}

function getListservFeed(callback)
{
	RssRequestor( "/cgi-bin/wa?RSS&L=CONSULT-MN&v=2.0", 
				 pasteDynamicContent );
	function pasteDynamicContent( rowset )
	{
		// first clear old junk from this div
		$("div#listserv").empty();

		// now make new junk
		$('<h2>Join the discussion at <a target="_blank" href="http://www.consult-mn.org/listserv/">www.consult-mn.org/listserv</a></h2>')
			.appendTo("div#listserv");
		rowset.sort( sortfunc );
		for	( var j in rowset ) {
			var rowData = rowset[ j ];
			var author = new String( rowData.author ).replace( '&lt;', '<' ).replace( '&gt;', '>' );
			var lt = author.indexOf( '<' );
			if	( lt > -1 )
				author = author.substr( 0, lt );
			$h3=$('<h3/>').appendTo("div#listserv");
			$('<a/>').appendTo($h3)
				.attr({href:"#",target:"_blank"})
				.text(rowData.title);
			$middleDiv=$('<div/>').appendTo("div#listserv");
			$p=$('<p/>').appendTo($middleDiv);
			$('<a/>').appendTo($p)
				.text(new String(rowData.pubDate).substr(0,22)+' | '+author)
				.attr({href:rowData.link,target:"_blank"});
			$('<div>'+rowData.description+'</div>')
				.css({marginRight:'2em'})
				.appendTo($middleDiv);
				//marginTop:'4px',
		}
		function sortfunc( a, b ) {
			var x = new Date( a.pubDate );
			var y = new Date( b.pubDate );
			return y - x;
		}
		if(callback)
			callback();
	}
}

function RssRequestor( strRssString, handlerFunc )
{
	try {
		var req = new XMLHttpRequest;
		if	( req == null )
			throw( "Error, no XMLHttpRequest;" );
		req.open( "GET", strRssString, true );
		req.onreadystatechange = RssHandler;
		req.send( null );
	} catch( e ) {
		var errorText = e.description;//breakpoint here
	}
	function RssHandler() {
		if	( this.readyState != 4 ) return;
		if	( this.status != 200 &&	this.status != 0 ) {
			var k=0;//breakpoint here
		} else {
			var xmlDoc = this.responseXML;
			var xmlRowSet;
			for	( var k = 0; k < xmlDoc.documentElement.childNodes.length; k++ ) {
				xmlRowSet = xmlDoc.documentElement.childNodes[ k ]
				if	( xmlRowSet.nodeType == 1 ) {
					break;
				}
			}
			var rowSet = new Array;
			for	( var iRowNo = 0; iRowNo < xmlRowSet.childNodes.length; iRowNo++ ) {
				var xmlRow = xmlRowSet.childNodes[ iRowNo ];
				if	( xmlRow.nodeType != 1 ) continue;
				var rowData = new Object;
				for	( var iEleNo = 0; iEleNo < xmlRow.childNodes.length; iEleNo++ ) {
					var xmlEle = xmlRow.childNodes[ iEleNo ];
					if	( xmlEle.nodeType != 1 ) continue;
					rowData[ xmlEle.nodeName ] =  textOf( xmlEle );
				}
				if	( rowData.guid != null )
					rowSet.push( rowData );
			}
			handlerFunc( rowSet );
		}
	}
}

function textOf( z ) {
	for	( var k = 0; k < z.childNodes.length; k++ ) {
		var q = z.childNodes[ k ]
		if	( q.nodeType == 3 )
			return q.nodeValue;
	}
}


