﻿/// <reference path="~/js/jquery.min.js" />

(function($) {
    $.fn.pwRotatingImages = function(options) {

        var defaults = {
            interval: 5000,
            fadeSpeed: 'normal',
            autoCalcHeight: true
        },
            settings = $.extend({}, defaults, options);

        var $this = $(this);

        // Setup the plug-in

        if ($this.children().length > 0) {

            // setup the images for fade in on all browsers
            $this.children().hide();
            $this.children(":first-child").show();

            var numbers = 0;
            var numbersHtml = new Array();

            $this.children().each(function() {
                var $thisItem = $(this);

                if ($thisItem.is('a')) {
                    // append the image navigation numbers
                    numbers++;
                    if (numbers == 1) {
                        $thisItem.addClass("current");
                        if (settings.autoCalcHeight) {
                            var imgHeight = $thisItem.children().height();
                            if (imgHeight < 47) {
                                imgHeight = 47;
                            }
                            numbersHtml.push("<ul style='top: ");
                            numbersHtml.push(imgHeight);
                            numbersHtml.push("px'>");
                        }
                        else {
                            numbersHtml.push("<ul>");
                        }
                        numbersHtml.push("<li class='current' num='");
                        numbersHtml.push(numbers);
                        numbersHtml.push("'>");
                    }
                    else {
                        numbersHtml.push("<li num='");
                        numbersHtml.push(numbers);
                        numbersHtml.push("'>");
                    }
                    if ($thisItem.attr("title").length > 0) {
                        numbersHtml.push($thisItem.attr("title"));
                    }
                    else {
                        numbersHtml.push(numbers);
                    }
                    numbersHtml.push("</li>");

                    $thisItem.attr("title", "");
                    $thisItem.addClass("i" + numbers);
                }
            });
            numbersHtml.push("</ul>");

            var newHtml = numbersHtml.join("");
            $this.append(newHtml);

            // Use the jQuery Timers plug-in to manage the timing
            $(document).everyTime(settings.interval, "pwRotImgs", function() {
                var current = $this.children(".current");
                var currentNumber = $this.find("li.current");

                current.fadeOut(settings.fadeSpeed);
                current.removeClass("current");
                currentNumber.removeClass("current");

                var nextItem = current.next();
                var nextNumber = currentNumber.next();
                if (!nextItem.is("a")) {
                    current = current.parent().children(":first-child");
                    currentNumber = currentNumber.parent().children(":first-child");
                }
                else {
                    current = nextItem;
                    currentNumber = nextNumber;
                }

                current.fadeIn(settings.fadeSpeed);
                current.addClass("current");
                currentNumber.addClass("current");
            }, 0);

            // number event handlers
            var $imgNumbers = $this.find("li");
            $imgNumbers.click(function() {
                var $this = $(this);
                var $associatedImg = $this.parent().parent().children(".i" + $this.attr("num"));
                $associatedImg.siblings("a").removeClass("current").fadeOut(settings.fadeSpeed);
                $associatedImg.fadeIn(settings.fadeSpeed);
                $associatedImg.addClass("current");
                $this.siblings().removeClass("current");
                $this.addClass("current");
                $(document).stopTime("pwRotImgs");
            });

            $imgNumbers.hover(function() {
                $(this).addClass("over");
            }, function() {
                $(this).removeClass("over");
            });

        }

        // returns the jQuery object to allow for chainability.  
        return this;
    }

})(jQuery);