// JQuery RSS reader V2 by Ben Beckford
function RSSReader(params){

	
	var maxEntries = 0;
	var container;
	
	if(params.className != null)
	{
		container = "." + params.className;
	}
	else if(params.idName != null)
	{
		container = "#" + params.idName;
	}
	else
	{
		if(!suppressWarnings)
		{
			alert("Error, wrapper class or id not specified");
		}
	}
	
	var scrollbarOn = false;
	var entryHeight = 25;
	var scrollbarThumbMaxHeight = 0;
	var scrollbarThumbMinHeight = 0;
	var ScrollbarWidth = 20;
	var ScrollbarMargin = 0;
	var scrollbarShowArrows = true;
	var scrollbarFloated = true;
	var columns = new Array();
	var titleLength = 1000;
	var truncationDots = false;
	var suppressWarnings = false;
	columns.push("title");
	
	if(params.scrollbar != null)
	{
		scrollbarOn = params.scrollbar;
	}
	if(params.entryHeight != null)
	{
		entryHeight = params.entryHeight;
	}
	if(params.thumbMaxHeight != null)
	{
		scrollbarThumbMaxHeight = params.thumbMaxHeight;
	}
	
	if(params.thumbMinHeight != null)
	{
		scrollbarThumbMinHeight = params.thumbMinHeight;
	}
	else
	{
		scrollbarThumbMinHeight = scrollbarThumbMaxHeight;
	}
	
	if(params.scrollbarWidth != null)
	{
		ScrollbarWidth = params.scrollbarWidth;
	}
	if(params.scrollbarMargin != null)
	{
		ScrollbarMargin = params.scrollbarMargin;
	}
	if(params.showArrows != null)
	{
		scrollbarShowArrows = params.showArrows;
	}
	if(params.floated != null)
	{
		scrollbarFloated = params.floated;
	}
	if(params.columns != null)
	{
		columns = params.columns;
	}
	if(params.titleLength != null)
	{
		titleLength = params.titleLength;
	}
	if(params.truncationDots != null)
	{
		truncationDots = params.truncationDots;
	}	
	if(params.suppressWarnings != null)
	{
		suppressWarnings = params.suppressWarnings;
	}	
	
	$(container).empty();
	
	$.ajax({
		type: "GET",
		url: params.xmlPath,
		dataType: "xml",
		success: function(d) {
					
			var i = 0;
			$(d).find('item').each(function() {
	 
				var $item = $(this);
				var title = truncateTitle($item.find('title').text());
				var link = $item.find('link').text();
				var location = $item.find('location').text();
				var pubDate = $item.find('pubDate').text();
				
				var timeZone = pubDate.slice(-3);
				var dayName = pubDate.slice(3);
				var date = pubDate.slice(4,16);
				
				var oddEvenClass = "";
				
				if(i % 2 != 0)
				{
					oddEvenClass = 'even';
				}
				else
				{
					oddEvenClass = 'odd';
				}
	 			
				var html = "";
				html += '<div class="entry ' + oddEvenClass + '">';
				html += '<a href="' + link + '" target="_parent">';
				
				var j;
				for(j = 0; j < columns.length; j++)
				{
					var colContents = "";
					
					switch(columns[j])
					{
						case 'title':
							colContents = title;
							break;
						case 'location':
							colContents = location;
							break;
						case 'date':
							colContents = date;
							break;
					}
					
					html += '<div class="entry'+columns[j]+'">'+colContents+'</div>';
				}
				
				html += '<div style="clear: both;"></div></a></div>';
	 
				$(container).append(html);
				$(container + " .entry:last").click(function(event){
					 event.preventDefault();
					 var localLink = link;
					 window.location = localLink;
				});
				i++;
				totalEntries = i;
				if(maxEntries > 0 && i == maxEntries)
				{
					
				}
			});
			
			if(scrollbarOn)
			{
				var newHeight = i * $(container + " .entry:last").height();		
				$(container).jScrollPane({height:newHeight, dragMaxHeight: scrollbarThumbMaxHeight, dragMinHeight: scrollbarThumbMinHeight, scrollbarWidth: ScrollbarWidth, scrollbarMargin: ScrollbarMargin, animateTo: true, showArrows: scrollbarShowArrows});
				if(scrollbarFloated)
				{
					$(container).width('100%');
				}
			}
			
			if(params.rssLoadedFunction != null)
			{
				params.rssLoadedFunction();
			}
			
		},
		error:function (xhr, ajaxOptions, thrownError){
			if(!suppressWarnings)
			{
				alert('Could not load XML "' + params.xmlPath + '", thrown error: ' + thrownError);
			}
		}
	});
		
	var truncateTitle = function(STRING)
	{
		if(STRING.length > titleLength)
		{
			var newTitleLength = titleLength;
			
			if(truncationDots)
			{
				newTitleLength -= 3;
			}
			
			var done = false;
			var isLetterRegex  = /^[a-z\u00C0-\u00ff]+$/;
			
			while(done == false)
			{
				STRING = STRING.substring(0, newTitleLength);
				var lastSpace = STRING.lastIndexOf(' ');
				STRING = STRING.substring(0, lastSpace);
				
				newTitleLength = STRING.length;
				var testString = STRING.split("");
				
				if(isLetterRegex.test(testString[testString.length-1]))
				{
					done = true;
				}
				else
				{
					newTitleLength--;
				}
			}			
			
			if(truncationDots)
			{
				STRING += "...";
			}
		}
		
		return(STRING);
	}

}

