﻿(function ($) {

    $.fn.devotitSlider = function (settings) {

        settings = $.extend({
            autoSlide: false,
            autoSlideInterval: 7000,
            autoSlideStopWhenClicked: true,
            slideEaseDuration: 1000,
            slideEaseFunction: "easeInOutExpo",
            autoRestart: false,
            autoRestartInterval: 10000
        }, settings);

        return this.each(function () {
            var slider = $(this);
            var panelWidth = slider.find(".panel").width();
            var panelCount = slider.find(".panel").size();
            var panelContainerWidth = panelWidth * panelCount;
            var navClicks = 0;
            var currentPanel = 1;

            $('.panel', slider).wrapAll('<div class="panel-container"></div>');
            $(".panel-container", slider).css({ width: panelContainerWidth });
            $(".slider-nav", slider).find('a').removeClass('active').parents('ul').find('a:eq(' + (currentPanel - 1) + ')').addClass('active');
            $('.panel', slider).css('display', '');

            // Trigger autoSlide
            if (settings.autoSlide) {
                slider.ready(function () {
                    setTimeout(autoSlide, settings.autoSlideInterval);
                });
            };

            $(".slider-nav", slider).each(function (s) {
                $("li", this).each(function (z) {
                    $("a", this).bind("click", function () {
                        navClicks++;
                        offset = -(panelWidth * z);
                        currentPanel = z + 1;
                        //$(".slider-nav", slider).find('li').removeClass('active').parents('ul').find('li:eq(' + (currentPanel - 1) + ')').addClass('active');
                        $('.panel-container', slider).animate({ marginLeft: offset }, settings.slideEaseDuration, settings.slideEaseFunction);
                        $(".slider-nav", slider).find('a').removeClass('active').parents('ul').find('a:eq(' + (currentPanel - 1) + ')').addClass('active');

                        return false;
                    });
                });
            });

            $(".slider-nav .slide-left", slider).bind("click", function () {
                navClicks++;
                if (currentPanel == 1) {
                    offset = -(panelWidth * (panelCount - 1));
                    currentPanel = panelCount;
                } else {
                    currentPanel -= 1;
                    offset = -(panelWidth * (currentPanel - 1));
                };
                //$(".slider-nav", slider).find('li').removeClass('active').parents('ul').find('li:eq(' + (currentPanel - 1) + ')').addClass('active');
                $('.panel-container', slider).animate({ marginLeft: offset }, settings.slideEaseDuration, settings.slideEaseFunction);
                $(".slider-nav", slider).find('a').removeClass('active').parents('ul').find('a:eq(' + (currentPanel - 1) + ')').addClass('active');

                return false;

            });

            $(".slider-nav .slide-right", slider).bind("click", function () {
                navClicks++;
                if (currentPanel == panelCount) {
                    offset = 0;
                    currentPanel = 1;
                } else {
                    offset = -(panelWidth * currentPanel);
                    currentPanel += 1;
                };
                //$(".slider-nav", slider).find('li').removeClass('active').parents('ul').find('li:eq(' + (currentPanel - 1) + ')').addClass('active');
                $('.panel-container', slider).animate({ marginLeft: offset }, settings.slideEaseDuration, settings.slideEaseFunction);
                $(".slider-nav", slider).find('a').removeClass('active').parents('ul').find('a:eq(' + (currentPanel - 1) + ')').addClass('active');

                return false;
            });

            function autoSlide() {

                if (navClicks == 0 || !settings.autoSlideStopWhenClicked) {
                    if (currentPanel == panelCount) {
                        var offset = 0;
                        currentPanel = 1;
                    } else {
                        var offset = -(panelWidth * currentPanel);
                        currentPanel += 1;
                    };

                    // Switch the current tab:
                    //$(".slider-nav", slider).find('li').removeClass('active').parents('ul').find('li:eq(' + (currentPanel - 1) + ')').addClass('active');
                    $('.panel-container', slider).animate({ marginLeft: offset }, settings.slideEaseDuration, settings.slideEaseFunction);
                    $(".slider-nav", slider).find('a').removeClass('active').parents('ul').find('a:eq(' + (currentPanel - 1) + ')').addClass('active');

                    setTimeout(autoSlide, settings.autoSlideInterval);
                } else {
                    if (settings.autoRestart) {
                        navClicks = 0;
                        setTimeout(autoSlide, settings.autoRestartInterval);
                    }
                }
            };

        });



    }
})(jQuery);
