var isIE = false;
var req;

function showRSSFeed(url) {
	// branch for native XMLHttpRequest object
	if (window.XMLHttpRequest) {
	 
		req = new XMLHttpRequest();
		req.onreadystatechange = processReqChange;
		req.open("GET", url, true);
		req.send(null);
	// branch for IE/Windows ActiveX version
	} else if (window.ActiveXObject) {
		isIE = true;
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if (req) {
			req.onreadystatechange = processReqChange;
			req.open("GET", url, true);
			req.send();
		}
	}
}

// handle onreadystatechange event of req object
function processReqChange() {
	// only if req shows "loaded"
	
	if (req.readyState == 4) {
	
		// only if "OK"
		if (req.status == 200) {
	
			//clearTopicList();
			buildTopicList();
		 } else {
			//alert("There was a problem retrieving the XML data:\n" +
				//req.statusText);
		 }
	}
}

// invoked by "Category" select element change;
// loads chosen XML document, clears Topics select
// element, loads new items into Topics select element
function loadDoc(evt) {
	// equalize W3C/IE event models to get event object
	evt = (evt) ? evt : ((window.event) ? window.event : null);
	if (evt) {
		// equalize W3C/IE models to get event target reference
		var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
		if (elem) {
			try {
				if (elem.selectedIndex > 0) {
					loadXMLDoc(elem.options[elem.selectedIndex].value);
				}	
			}
			catch(e) {
				var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
				alert("Unable to get XML data:\n" + msg);
				return;
			}
		}
	}
}



// retrieve text of an XML document element, including
// elements using namespaces
function getElementTextNS(prefix, local, parentElem, index) {
	var result = "";
	if (prefix && isIE) {
		// IE/Windows way of handling namespaces
		result = parentElem.getElementsByTagName(prefix + ":" + local)[index];
	} else {
		// the namespace versions of this method 
		// (getElementsByTagNameNS()) operate
		// differently in Safari and Mozilla, but both
		// return value with just local name, provided 
		// there aren't conflicts with non-namespace element
		// names
		result = parentElem.getElementsByTagName(local)[index];
	}
	if (result) {
		// get text, accounting for possible
		// whitespace (carriage return) text nodes 
		if (result.childNodes.length > 1) {
			return result.childNodes[1].nodeValue;
		} else {
			return result.firstChild.nodeValue;    		
		}
	} else {
		return "n/a";
	}
}

// retrieve text of an XML document element, including
// elements using namespaces
function getAttributeText(prefix, local, attrib, parentElem, index) {
	var result = "";
	if (prefix && isIE) {
		// IE/Windows way of handling namespaces
		result = parentElem.getElementsByTagName(prefix + ":" + local)[index];
	} else {
		// the namespace versions of this method 
		// (getElementsByTagNameNS()) operate
		// differently in Safari and Mozilla, but both
		// return value with just local name, provided 
		// there aren't conflicts with non-namespace element
		// names
		result = parentElem.getElementsByTagName(local)[index];
	}
	return result.getAttribute(attrib);
	
}





// fill Topics select list with items from
// the current XML document
function buildTopicList() {
	var select = document.getElementById("topics");
	var items = req.responseXML.getElementsByTagName("item");
	// loop through <item> elements, and add each nested
	// <title> element to Topics select element
	var list='';
	for (var i = 0; i < items.length; i++) {
			if (i<3) {
			var currtext=getElementTextNS("", "title", items[i], 0);
			var currdesc=getElementTextNS("", "description", items[i], 0);
			var url=getElementTextNS("", "link", items[i], 0);
			list+='<a href="'+url+'" target="_blank"><b>' + currtext + '</b></a><br/>';
			list+=currdesc + '<br/><br/>';
			}
		//appendToSelect(select, i,
			//document.createTextNode(getElementTextNS("", "title", items[i], 0)));
	}
	
	if (list!='') {
		 list='<br/><span class="ratingTitle">Recent Comments</span><br/>' + list;
		 div = document.getElementById("rssfeed");
		 div.innerHTML=list;
	}
	
}