﻿
/**
* Slideshow Lite plugin for jQuery
*
* v0.5.3
*
* Copyright (c) 2009 Fred Wu
*
* Dual licensed under the MIT and GPL licenses:
*   http://www.opensource.org/licenses/mit-license.php
*   http://www.gnu.org/licenses/gpl.html
*/

/**
* Configuration options:
*
* pauseSeconds  float    number of seconds between each photo to be displayed
* fadeSpeed     float    number of seconds for the fading transition, the value should not exceed 'pauseSeconds'
* width         integer  width of the slideshow, in pixels
* height        integer  height of the slideshow, in pixels
* caption       boolean  display photo caption?
* cssClass      string   name of the CSS class, defaults to 'slideshowlite'
*/

(function ($) {
    $.fn.slideshow = function (options) {

        var defaults = {
            pauseSeconds: 2,
            fadeSpeed: 0.5,
            width: 468,
            height: 120,
            caption: true,
            cssClass: 'slideshowlite'
        };

        var options = $.extend(defaults, options);

        // ----------------------------------------
        // slideshow objects and variables
        // ----------------------------------------

        var target = this;
        var items = $(target).children("a");
        var instance;

        // ----------------------------------------
        // some mandontory styling
        // ----------------------------------------

        if (!$(this).hasClass(options.cssClass)) $(this).addClass(options.cssClass);

        $(this).css({
            width: options.width + "px",
            height: options.height + "px"
        });

        // ----------------------------------------
        // create anchor links to make the structure simpler for manupilation
        // ----------------------------------------

        $(this).children("img").wrap(document.createElement("a"));
        $(this).children("a").attr("target", "blank");

        // ----------------------------------------
        // add item sequence markups
        // ----------------------------------------

        var i = 1;
        $(this).children("a").each(function () {
            $(this).attr("rel", i++);
        });

        // ----------------------------------------
        // create pagination and caption
        // ----------------------------------------

        $(this).append("<ul></ul>");
        $(this).append("<ol></ol>");
        var pagination = $(this).children("ul");
        var caption = $(this).children("ol");

        var i = 1;
        var j = 0;
        $(this).children("a").each(function () {
            pagination.append("<li><a href=\"#\">" + i++ + "</a></li>");
            caption.append("<li>" + $("#" + $(target).attr("id") + " img:nth(" + j++ + ")").attr("alt") + "</li>");
        });
        pagination.fadeTo(0, 0.8);
        caption.fadeTo(0, 0.6);
        caption.hide();

        // ----------------------------------------
        // shortcuts
        // ----------------------------------------

        var firstItem = $(target).children("a:first");
        var lastItem = $(target).children("a:last");
        var currentItem = firstItem;

        // ----------------------------------------
        // pagination highlight
        // ----------------------------------------

        var paginationHighlight = function (sequence) {
            pagination.children("li").children("a").removeClass("current");
            pagination.children("li").children("a:nth(" + sequence + ")").addClass("current");
        }

        // ----------------------------------------
        // caption
        // ----------------------------------------

        var showCaption = function (sequence) {
            caption.show();
            caption.children("li").hide();
            caption.children("li:nth(" + sequence + ")").fadeIn();
        }

        // ----------------------------------------
        // slideshow logic
        // ----------------------------------------

        var makeSlideshow = function () {

            // pagination click
            pagination.children("li").children("a").click(function () {
                if (!$(this).hasClass("current")) {
                    // select the current item after the pagination click
                    currentItem = $(target).children("a:nth(" + ($(this).text() - 1) + ")");

                    currentItem.show();
                    startSlideshow();
                }
            });

            // pagination highlight
            paginationHighlight(currentItem.attr("rel") - 1);

            // show caption
            if (options.caption == true) {
                showCaption(currentItem.attr("rel") - 1);
            }

            // show the current slide
            currentItem.fadeIn(options.fadeSpeed * 1000, function () {
                $(target).children("a").hide();
                $(this).show().css("z-index", 1);
            });

            // prepare for the next slide
            // determines the next item (or we need to rewind to the first item?)
            if (currentItem.children("img").attr("src") == lastItem.children("img").attr("src")) {
                currentItem = firstItem;
                currentItem.css("z-index", 2);
            }
            else {
                currentItem = currentItem.next();
            }
        };

        var startSlideshow = function () {
            clearInterval(instance);
            makeSlideshow();
            instance = setInterval(makeSlideshow, options.pauseSeconds * 1000);
        };

        // ----------------------------------------
        // start the slideshow!
        // ----------------------------------------

        startSlideshow();
    };
})(jQuery);

LoadRSSFeed = function (httpHandler) {
    $(".RSS_Gadget").each(function (i, e) {
        var f = $(this)
        , ss = 350
        , cnt = 3
        , url, hc, cc, ec;
        $('.RSS_FeedDetails', f).each(function () {
            var c = $(this);
            switch (c.attr("title")) {
                case "url":
                    url = c.val();
                    break;
                case "headerclass":
                    hc = c.val();
                    break;
                case "contentclass":
                    cc = c.val();
                    break;
                case "entryclass":
                    ec = c.val();
                    break;
                case "count":
                    cnt = c.val();
                    break;
                case "summarysize":
                    ss = c.val();
                    break;
                default:
                    break;
            }
        }); //close each
        //$.get(httpHandler, a.join(""), function(d) { url: 'http://feeds.feedburner.com/catholicnewsagency/saintoftheday', headerclass: 'Header', contentclass: 'Content', entryclass: 'Entry', count: '1'
        $.get(httpHandler, { url: url, headerclass: hc, entryclass: ec, contentclass: cc, count: cnt, summarysize: ss }, function (d) {
            $(e).html(d);
        }); //close get
    }); //Close each
}
