/**
 * 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('<li><div class="rssError"><p>'+ msg +'</p></div></li>');
                                };
                        });
                });
        };

        // Callback function to create HTML result
        var _callback = function(e, feeds, options) {
                if (!feeds) {
                    return false;
                }
                var html = '';

                // Add header if required
                // Add feeds
                for (var i=0; i<feeds.entries.length; i++) {

                        // Get individual feed
                        var entry = feeds.entries[i];

                        // Format published date
                        var entryDate = new Date(entry.publishedDate);
                        var pubDate = entryDate.toLocaleDateString() + ' ' + entryDate.toLocaleTimeString();

                        // Add feed row
                        html +=  '<li><a href="'+ entry.link +'" title="View this feed at '+ feeds.title +'">'+ entry.title +'</a></li>'
                }

                if (feeds.entries.length == 0) {
                    html +=  '<li style="background-image:none;"><i>No recent news articles.</i></li>'
                }

                $(e).html(html);
        };
})(jQuery);

