function getRssFeed(param, element, hText)
{	
	var docElem = element;
	var headerText = hText;
	var oXHR = zXmlHttp.createRequest();
	oXHR.open("get","/cgi-bin/grabnewsfeed.cgi?url=http://hosted.ap.org/lineups/" + param, true);
	oXHR.onreadystatechange = function()
	{
		if(oXHR.readyState == 4)
		{
			if(oXHR.status == 200 || oXHR.status == 304)
			{
				var docXMLDom = zXmlDom.createDocument();
				docXMLDom.onreadystatechange = function () 
				{
					/* Browser response is good, document is loaded */
					if (docXMLDom.readyState == 4)
					{						
						/* document is well formed, so process it */
						if (docXMLDom.parseError.errorCode == 0)
						{
							parseRssDoc(docXMLDom, docElem, headerText);	
						}	
						/* document is not well formed */
						else
						{
							/*
								error code to send to the browser if there is an issue 
								with the xml that is received from the browser
							*/							
							var docFrag = document.createDocumentFragment();
							var divContainer = document.createElement("div");
							divContainer.className = "rsscontainer";
							divContainer.innerHTML = "<b>" + hText + "</b><br/>";
							var spanContent = document.createElement("span");
							spanContent.innerHTML = "Sorry, no headlines are available at this time.<br/>";
							divContainer.appendChild(spanContent);
							docFrag.appendChild(divContainer);
							//document.body.appendChild(docFrag);
							docElem.appendChild(docFrag);	
						}
					}
				}
				docXMLDom.loadXML(oXHR.responseText);					
			}
			/* error in client-server request-response */
			else
			{
				/*
					error code to send to the browser if there is an issue 
					with the server response
				*/				
				var docFrag = document.createDocumentFragment();
				var divContainer = document.createElement("div");
				divContainer.className = "rsscontainer";
				divContainer.innerHTML = "<b>" + hText + "</b><br/>";
				var spanContent = document.createElement("span");
				spanContent.innerHTML = "Sorry, no headlines are available at this time.<br/>";
				divContainer.appendChild(spanContent);
				docFrag.appendChild(divContainer);
				//document.body.appendChild(docFrag);
				docElem.appendChild(docFrag);
			}	
		}		
	}
	oXHR.send(null);
}

function parseRssDoc(docXMLDom, nelm, headerText)
{
	//set the document root
	var docRoot = docXMLDom.documentElement;
	var hText = headerText;
	var elem = nelm;
	
	//declare/create the container tags to hold the ap news feed content
	var docFrag = document.createDocumentFragment();
	var divContainer = document.createElement("div");
	divContainer.className = "rsscontainer";
	divContainer.innerHTML = "<b>" + hText + "</b><br/>";
	//get all of the <item> tags in the xml document
	var item = docRoot.getElementsByTagName("item");
	
	/*	
		Determine if the number of <item> tags is greater than 5, if so then we want to
		create javascript objects for each <item> and set properties for the title, link and 
		publish date children.  This is necessary to allow a sort on the array of <item>
		objects by publish date as we only want to display the 5 most current links.
	*/	
	if (item.length > 5)
	{
		var itemArray = new Array();
		for (var x = 0, iDates = item.length; x < iDates; x++)
		{
			var childTitle, childLink, childPubDate;
			
			var currentChild = item[x].firstChild;
			
			itemArray[x] = new Object();
		
			do {
				switch (currentChild.tagName)
				{
					case "title":
					itemArray[x].childTitle = currentChild.text;
					break;
				
					case "link":
					itemArray[x].childLink = currentChild.text;
					break;
				
					case "pubDate":
					itemArray[x].childPubDate = currentChild.text;
					break;
				
					default:
					break; 	
				}	
			} while (currentChild = currentChild.nextSibling);
		}
		
		//sort the array by each item's publish date
		itemArray.sort(dateOrder);
		
		for (var i = 0; i <= 4; i++)
		{
			var spanContent = document.createElement("span");		
			var spanDate = document.createElement("span");
			spanDate.className = "rssdate";
			var hLink = document.createElement("a");
			hLink.href = itemArray[i].childLink;
			hLink.target = "_new";
			hLink.className = "rsslink";
			hLink.innerHTML = itemArray[i].childTitle;		
			spanContent.appendChild(hLink);
			spanDate.innerHTML = ",&nbsp;&nbsp;" + itemArray[i].childPubDate + "<br/>";
			divContainer.appendChild(spanContent);
			divContainer.appendChild(spanDate);
		}	
	}
	/*
		If there are less than 5 <item> elements in the xml, process and display all of 
		them.
	*/
	else
	{	
		for (var i = 0, iLen=item.length; i < iLen; i++)
		{
			var childTitle, childLink, childPubDate;
		
			var currentChild = item[i].firstChild;
		
			do {
				switch (currentChild.tagName)
				{
					case "title":
					childTitle = currentChild.text;
					break;
				
					case "link":
					childLink = currentChild.text;
					break;
				
					case "pubDate":
					childPubDate = currentChild.text;
					break;
				
					default:
					break; 	
				}	
			} while (currentChild = currentChild.nextSibling);
		
		
			var spanContent = document.createElement("span");		
			var spanDate = document.createElement("span");
			spanDate.className = "rssdate";
			var hLink = document.createElement("a");
			hLink.href = childLink;
			hLink.target = "_new";
			hLink.className = "rsslink";
			hLink.innerHTML = childTitle;		
			spanContent.appendChild(hLink);
			spanDate.innerHTML = ",&nbsp;&nbsp;" + childPubDate + "<br/>";
			divContainer.appendChild(spanContent);
			divContainer.appendChild(spanDate);
		}	
	}
	//append the newsfeed container to the created document fragement
	docFrag.appendChild(divContainer);
	
	//add some space between the two feeds
	var spacer = document.createElement("br");
	docFrag.appendChild(spacer);
	
	//append the document fragment to the body of the document
	//document.body.appendChild(docFrag);
	elem.appendChild(docFrag);
}

//helper function to sort item objects by the publish date (most current first)
function dateOrder(a, b){
if (a.childPubDate>b.childPubDate) return -1;
if (a.childPubDate<b.childPubDate) return 1;
return 0; }