﻿/// <reference path="../js/jquery-1.6.2.js" />

/* ------------------------------------------------------------------------
	Class: vSlideshow
	Version: 1.1
------------------------------------------------------------------------- */

jQuery.fn.vSlideshow = function (settings) {
    settings = jQuery.extend({
        slide_width: 600,
        slide_height: 300,
        slide_speed: 3000,
        fade_speed: 2000,
        pageImagePath: 'jquery-vSlideshow'
    }, settings);

    return this.each(function () {
        var $slide = $(this),
            itemCount = 0,
            currentItem = 0,
            $items = null,
            $currentItem = null,
            intervalID = null,
            pageImagePath = settings.pageImagePath;

        var init = function () {
            setSlideInfo();
            formatSlide();
        }

        var setSlideInfo = function () {
            $items = $slide.find('img');
            itemCount = $items.size();
            if (itemCount > 0) {
                $currentItem = $items.eq(0);
                $items.hide().eq(0).show();
            }
        }

        var formatSlide = function () {
            $slide.css({
                'width': settings.slide_width + 'px',
                'height': settings.slide_height + 'px'
            }).find('img').css({
                'width': settings.slide_width + 'px',
                'height': settings.slide_height + 'px'
            });

            $slide.wrap('<div class="vslideshow"></div>');

            $slide.append("<ul class='pagination'></ul>");
            var $pagination = $("> ul", $slide);

            $items.each(function (i) {
                $pagination.append('<li><a href="#"' + ((i == 0) ? ' class="current"' : '') + '></a></li>');
            });
            $pagination.prepend('<li><a href="#"></a></li>');

            var $paginationItems = $pagination.find('li a').not(':first');
            var $pause = $pagination.find('li a:first');
            $paginationItems.each(function (i) {
                if (i == currentItem) {
                    $(this).css({ 'background': 'url(' + pageImagePath + '/images/ad-' + (i + 1) + '-selected.gif) center center no-repeat' });
                } else {
                    $(this).css({ 'background': 'url(' + pageImagePath + '/images/ad-' + (i + 1) + '.gif) center center no-repeat' });
                }
            });
            $pause.css('background', 'url(' + pageImagePath + '/images/ad-pause.gif) center center no-repeat').click(function () {
                var $this = $(this);
                if (!$this.hasClass('pause')) {
                    $this.css('background', 'url(' + pageImagePath + '/images/ad-pause-selected.gif) center center no-repeat').addClass('pause');
                    if (intervalID) {
                        clearInterval(intervalID);
                    }
                } else {
                    $this.removeClass('pause').css('background', 'url(' + pageImagePath + '/images/ad-pause.gif) center center no-repeat');
                    startSlide();
                }
            });

            $paginationItems.click(function () {
                $currentItem.hide();

                $paginationItems.removeClass("current").eq(currentItem).css(
                      'background', 'url(' + pageImagePath + '/images/ad-' + (currentItem + 1) + '.gif) center center no-repeat'
                );

                currentItem = $paginationItems.index(this);
                $currentItem = $items.eq(currentItem);

                $(this).addClass("current").css({
                    'background': 'url(' + pageImagePath + '/images/ad-' + (currentItem + 1) + '-selected.gif) center center no-repeat'
                });
                $currentItem.show();
            });

            $slide.find('a').focus(function () {
                this.blur();
            });
        }

        var startSlide = function () {
            if (intervalID) clearInterval(intervalID);
            intervalID = setInterval(executeSlide, settings.slide_speed);
        }

        var executeSlide = function () {
            $currentItem.fadeOut(settings.fade_speed);
            $("ul > li > a", $slide).not(':first').removeClass("current").eq(currentItem).addClass("current").css(
                'background', 'url(' + pageImagePath + '/images/ad-' + (currentItem + 1) + '.gif) center center no-repeat'
            );

            currentItem++;
            if (currentItem > itemCount - 1) {
                currentItem = 0;
            }
            $currentItem = $items.eq(currentItem);

            $("ul > li > a:nth(" + (currentItem + 1) + ")", $slide).addClass("current").css(
                'background', 'url(' + pageImagePath + '/images/ad-' + (currentItem + 1) + '-selected.gif) center center no-repeat'
            );
            $currentItem.fadeIn(settings.fade_speed);
        }

        if ($slide.find('img').size() > 0) {
            init();
            setTimeout(startSlide, 1000);
        }
    });
};
