
YAHOO.namespace("ksu.widget.RssViewer");

(function() {

// Shortcut YUI definitions
var Dom         = YAHOO.util.Dom;
var $           = Dom.get;
var setStyle    = Dom.setStyle;
var LOG;


/**
 * Constructor for the KSU.widget.RssViewer object.
 */
KSU.widget.RssViewer = function(url, el, attr) {
   attr = attr || {};

   this.el = $(el);
	this.url = url;

   LOG = new YAHOO.widget.LogWriter("RssViewer");	
   LOG.log("Created new RssViewer");
};


////////////////////////////////////////////////
// Private static properties
////////////////////////////////////////////////

var pub = KSU.widget.RssViewer.prototype;

/**
 * Display retrieved RSS data.
 */
pub.displayRss = function(response, ctx) {
	var i;
	var item;
	var items;
	var title;
	
	items = response.responseXML.getElementsByTagName('item');
	html = "";
	displaycount = 5;  // TODO
	if (displaycount > items.length) {
	   displaycount = items.length;
	}
	for (i = 0; i < displaycount; i++) {
		item = items[i];
		title = getValue(item, 'title');
		if (title) {
			link = getValue(item, 'link');
			if (link) {
				title = "<a href=\"" + link + "\">" + title + "</a>";
			}
	      html += "<li>" + title + "</li>";
	  }
	}
	this.el.innerHTML = "<ul class=\"news_feed\">" + html + "</ul>";
};

var getValue = function(el, tagname) {

   var result = "";
	
   try {
		result = el.getElementsByTagName(tagname)[0].firstChild.nodeValue;
	} catch (e) {
		/* nothing */
	}
	
	return result;
};


/**
 * Add a note about data not available.
 */
pub.warnNotAvailable = function(response, ctx) {
};

pub.render = function() {

   LOG.log("Rendering");
   this.transID = YAHOO.util.Connect.asyncRequest('GET',
	                                      this.url,
													  {
										 	            success: pub.displayRss,
            										 	failure: pub.warnNotAvailable,
				            						 	scope: this
								                 } );	
};

})();
