/**
* =======================================================================
* Copyright © 2009 General Electric. ALL RIGHTS RESERVED. 
* This file contains proprietary and GE CONFIDENTIAL Information.
* Use, disclosure or reproduction is prohibited.
* @fileoverview jquery.rssparser use a json object to connect and get news in xml format
* and display the info in a specific html object. 
* Filename: jquery.rssparser.js
* Created on 11/5/2009
*
* @author Andres Rojas (501438533)
* @version  1.0
**/
(function($){
	$.fn.rssreader = function(options){
		var $this = this;
		var settings = options;
		var default_settings = {
				maxDisplay: 2,
				rowLayout:{	rownodename: 'item',
							tmltag: 'p',
							subrows:[ {	nodename:'pubDate' },
									  {	nodename:'title', link: { nodename:'link', target: '_blank'	} } ] },
				errormessagenode: 'Feed is currently unavailable',
				handler: function(xml){}
		};
			
		function init_(){
			if (!($this.length == 1 && $this[0].nodeName.toLowerCase() == 'ul')) {
				return;
			}
			$this.addClass('rssreader');
			$.get(settings.url,	function(xml){
					if (xml !== null) {
						var $xml = $(xml);
						var jitemList = $xml.find(settings.rowLayout.rownodename);
						if (jitemList.exists()) { 
							var itemList = xml.getElementsByTagName(settings.rowLayout.rownodename);
							var rowsToDisplay = (settings.maxDisplay != 0) ? Math.min(itemList.length, settings.maxDisplay) : itemList.length;
							for (var i = 0; i < rowsToDisplay; i++) {
								var item = itemList.item(i);
								var title = item.getElementsByTagName("title")[0].firstChild.nodeValue;
								var pubDate = item.getElementsByTagName("pubDate")[0].firstChild.nodeValue;
								pubDate = pubDate.substring(0, 17);
								var feedLink = item.getElementsByTagName("link")[0].firstChild.nodeValue;
								$('<li><p>' + pubDate + '<br><a target="!_blank" href="' + feedLink + '"> ' + title + '</a></p></li>').appendTo($this);							
							}
						}
						else {
							var errormessage = "";//, responseErrorMessage = "";
							//responseErrorMessage = ($xml.find("message").length > 0) ? $xml.find("message")[0].firstChild.nodeValue : "";							
							//errormessage = (responseErrorMessage != "") ? responseErrorMessage : default_settings.errormessagenode;
							errormessage = default_settings.errormessagenode;
							$('<li class="rsserror"><p>' + errormessage + '</p></li>').appendTo($this);					
						}
					}
				}
			);			
		}
			
		init_();
		return $this;
	};
})(jQuery);
jQuery.fn.exists = function() {   return (this.length > 0); };
