
//OBJECTS


//object containing the RSS 2.0 item
function RSS2Item(itemxml)
{
	this.title;
	this.link;
	this.description;
	this.link_text;

	var properties = new Array("title", "description", "link_text" ,"link");
	var tmpElement = null;
	for (var i=0; i<properties.length; i++)
	{
		tmpElement = itemxml.getElementsByTagName(properties[i])[0];
		if (tmpElement != null)
			eval("this."+properties[i]+"=tmpElement.childNodes[0].nodeValue");
	}

}




function RSS2Channel(rssxml)
{
	//required
	this.title;
	this.description;
	this.link_text;
	this.link;


	//array of RSS2Item objects
	this.items = new Array();

	var newsElement = rssxml.getElementsByTagName("news")[0];
	var itemElements = rssxml.getElementsByTagName("item");

	for (var i=0; i<itemElements.length; i++)
	{
		Item = new RSS2Item(itemElements[i]);
		this.items.push(Item);
		//chanElement.removeChild(itemElements[i]);
	}

	var properties = new Array("title", "description", "link_text", "link");
	var tmpElement = null;
	for (var i=0; i<properties.length; i++)
	{
		tmpElement = newsElement.getElementsByTagName(properties[i])[0];
		if (tmpElement!= null)
			eval("this."+properties[i]+"=tmpElement.childNodes[0].nodeValue");
	}

}

//PROCESSES

//uses xmlhttpreq to get the raw xml
function getRSS()
{
	//call the right constructor for the browser being used
	if (window.ActiveXObject)
		xhr = new ActiveXObject("Microsoft.XMLHTTP");
	else if (window.XMLHttpRequest)
		xhr = new XMLHttpRequest();
	else
		alert("your browser does not support AJAX, some information will not be displayed.");

	//prepare the xmlhttprequest object
	if (window.ActiveXObject)
		xhr.open("POST","edupi.xml",true);
	else 
		xhr.open("GET","edupi.xml",true);
	xhr.setRequestHeader("Cache-Control", "no-cache");
	xhr.setRequestHeader("Pragma", "no-cache");
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4)
		{
			if (xhr.status == 200)
			{
				if (xhr.responseText != null)
					processRSS(xhr.responseXML);
				else
				{
					alert("Failed to receive RSS file from the server - file not found.");
					return false;
				}
			}
			else
				alert("Error code " + xhr.status + " received: " + xhr.statusText);
		}
	}

	//send the request
	xhr.send(null);
}

//processes the received rss xml
function processRSS(rssxml)
{
	RSS = new RSS2Channel(rssxml);
	showRSS(RSS);
}

//shows the RSS content in the browser
function showRSS(RSS)
{
	//default values for html tags used
	var startItemTag = "<div id='item'>";
	var startTitle = "<div id='item_title'>";
	var startLink = "<div id='item_link'><a href=\"";
	var startLinkText = "<div id ='item_link_text'>";
	var startDescription = "<div id='item_description'>";

	var endTag = "</div>";

	//populate channel data
	
	//populate the items
	document.getElementById("chan_items").innerHTML = "";
	for (var i=0; i<RSS.items.length; i++)
	{
		item_html = startItemTag;
		item_html += (RSS.items[i].title == null) ? "" : startTitle + RSS.items[i].title + endTag;
		item_html += (RSS.items[i].description == null) ? "" : startDescription + RSS.items[i].description + endTag  + "<br />";
		item_html += (RSS.items[i].link == null) ? "" : startLink + RSS.items[i].link + '\">' + RSS.items[i].link_text + "</a>" + endTag + "<br />";
		item_html += endTag;
		document.getElementById("chan_items").innerHTML += item_html;
	}

	//we're done
	//document.getElementById("chan").style.visibility = "visible";
	return true;
}

var xhr;


