﻿///<reference path="/_js/jQuery/1.4.1/jquery-1.4.1-vsdoc.js"/>

(function ($) {

    $.fn.WSOBSnapshotSlider = function (options) {

        //defaults are last
        var settings = $.extend({}, $.fn.WSOBSnapshotSlider.defaults, options);

        //perform these actions on each element
        return this.each(function () {

            var vars = {
                currentPosition: 0,
                slides: 0,
                running: false,
                paused: false
            };

            var self = $(this); //get itself
            self.data('WSOBSnapshotSlider:vars', vars);

            //how many slides do we have?
            vars.slides = $("div.slides div.slide", self).size() - 1;

            //before we start, set the first slide to have a display of block
            $("div.slides div.slide:eq(0)", self).css("display", "block");

            //start it up!
            var timer = 0;
            timer = setInterval(function () { sliderRun(self); }, settings.duration);

            //for the hover pausing
            $("div.slides, div.left, div.right", self).hover(function () {
                //while over
                vars.paused = true;
                clearInterval(timer);
                timer = '';
            }, function () {
                //when gone
                vars.paused = false;
                timer = setInterval(function () { sliderRun(self); }, settings.duration);
            });

            //take care of the navigation buttons
            $("div.snapshotSliderNav div.left", self).click(function () {
                var next = vars.currentPosition - 1;
                if (next < 0) {
                    next = vars.slides;
                }
                jumpTo(self, next);
            });

            $("div.snapshotSliderNav div.right", self).click(function () {
                var next = vars.currentPosition + 1;
                if (next > vars.slides) {
                    next = 0;
                }
                jumpTo(self, next);
            });
        });

        function sliderRun(self) {
            //Get our vars
            var vars = self.data('WSOBSnapshotSlider:vars');
            if (!vars) return false;

            //figure out how many there are, yadda yadda
            var next = vars.currentPosition + 1;

            if (next > vars.slides) {
                next = 0;
            }

            //animate our header
            animateself(self, vars.currentPosition, next);

            vars.currentPosition = next;
        }

        function jumpTo(self, pos) {
            //Get our vars
            var vars = self.data('WSOBSnapshotSlider:vars');
            if (!vars) return false;

            animateself(self, vars.currentPosition, pos);

            vars.currentPosition = pos;
        }

        function animateself(self, oldPos, newPos) {
            var currentSlide = $("div.slides div.slide:eq(" + oldPos + ")", self);
            var nextSlide = $("div.slides div.slide:eq(" + newPos + ")", self);

            currentSlide.fadeOut("slow");
            nextSlide.fadeIn("slow");
        }
    };

    $.fn.WSOBSnapshotSlider.defaults = {
        duration: 5000
    };
})(jQuery);
