﻿/**
* Plugin: jquery.zRSSFeed
* 
* Version: 1.0.1
* (c) Copyright 2010, Zazar Ltd
* 
* Description: jQuery plugin for display of RSS feeds via Google Feed API
*              (Based on original plugin jGFeed by jQuery HowTo)
* 
* History:
* 1.0.1 - Corrected issue with multiple instances
*
**/

(function($) {

	var current = null;

	$.fn.rssfeed = function(url, options) {

		// Set pluign defaults
		var defaults = {
			limit: 10,
			header: true,
			titletag: 'h4',
			date: true,
			content: true,
			snippet: true,
			showerror: true,
			errormsg: '',
			key: null
		};
		var options = $.extend(defaults, options);

		// Functions
		return this.each(function(i, e) {
			var $e = $(e);

			// Add feed class to user div
			if (!$e.hasClass('rssFeed')) $e.addClass('rssFeed');

			// Check for valid url
			if (url == null) return false;

			// Create Google Feed API address
			var api = "http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&callback=?&q=" + url;
			if (options.limit != null) api += "&num=" + options.limit;
			if (options.key != null) api += "&key=" + options.key;

			// Send request
			$.getJSON(api, function(data) {

				// Check for error
				if (data.responseStatus == 200) {

					// Process the feeds
					_callback(e, data.responseData.feed, options);
				} else {

					// Handle error if required
					if (options.showerror)
						if (options.errormsg != '') {
						var msg = options.errormsg;
					} else {
						var msg = data.responseDetails;
					};
					$(e).html('<div class="rssError"><p>' + msg + '</p></div>');
				};
			});
		});
	};

	// Callback function to create HTML result
	var _callback = function(e, feeds, options) {
	
	   var months = new Array(13);
	   months[0]  = "Jan";
	   months[1]  = "Feb";
	   months[2]  = "Mar";
	   months[3]  = "Apr";
	   months[4]  = "May";
	   months[5]  = "Jun";
	   months[6]  = "Jul";
	   months[7]  = "Aug";
	   months[8]  = "Sep";
	   months[9]  = "Oct";
	   months[10] = "Nov";
	   months[11] = "Dec";
	
		if (!feeds) {
			return false;
		}
		var html = '';
		var row = 'odd';

		// Add header if required
		if (options.header)
			html += '<div class="rssHeader">' +
				'<a href="' + feeds.link + '" title="' + feeds.description + '">' + feeds.title + '</a>' +
				'</div>';

		// Get individual feed
		var entry = feeds.entries[0];

		// Format published date
		var entryDate = new Date(entry.publishedDate);
		var pubDate = entryDate.toLocaleDateString()// + ' ' + entryDate.toLocaleTimeString();

		// Add body
		html += '<div class="date-box"><span class="day">' + entryDate.getDate() + '</span> <span class="month">' + months[entryDate.getMonth()] + '</span></div>' +
			'<div class="text-area"><div class="rssBody">'
			
		// Add feed row
		//if (options.date) html += '<span class="date">' + pubDate + '</span>'
		html += '<h2>Latest Blog Article</h2>'
		html += '<' + options.titletag + '><a href="' + entry.link + '" title="View this feed at ' + feeds.title + '" target="_blank">' + entry.title + '</a></' + options.titletag + '>'
		if (options.content) {
			// Use feed snippet if available and optioned
			if (options.snippet && entry.contentSnippet != '') {
				var content = entry.contentSnippet;
			} else {
				var content = entry.content;
			}

			html += '<p>' + content + '</p>'
		}

		html += '<p><a href="' + entry.link + '" title="View this post at ' + feeds.title + '" target="_blank"><strong>Click here to read more...</strong></a></p>'

		// Alternate row classes
		if (row == 'odd') {
			row = 'even';
		} else {
			row = 'odd';
		}

		html += '</div></div>'

		$(e).html(html);
	};
})(jQuery);

