(function($) {
   $.fn.dumondeSlider = function(options){
        var defaults = {
                navPrevClass:          'dumonde-gallery-prev-slide',
                navNextClass:          'dumonde-gallery-next-slide',
                frameWrapperTag:       'li',
                autoResize:            false,
                slideSpeed:            300
        };
        var options = $.extend(defaults, options);
        return this.each(function(){
            var $slideWrapper = $(this),
                $navPrev = $slideWrapper.parent().find("."+options.navPrevClass),
                $navNext = $slideWrapper.parent().find("."+options.navNextClass),
                $frames = $slideWrapper.find(options.frameWrapperTag),
                $countFrames = $frames.length,
                $single = $frames.filter(':first'),
                $frameWidth = $single.width(), 
                $slideWrapperWidth,
                $framesDisplay,
                $framesHidden,
                $frameNewMargin,
                $frameWidthWithNewMargin,
                $currentSlide,
                $slideWrapperNewWidth,
                $slideWrapperNewMarginLeft;
            resizeSlideBar();
            if (options.autoResize){$(window).resize(function(){resizeSlideBar();});};
            $navPrev.click(function(){
                return goToSlide(-1);
            });
            $navNext.click(function(){
                return goToSlide(1);
            });
            function resizeSlideBar(){
                $slideWrapperWidth = $slideWrapper.width();
                $framesDisplay = Math.floor($slideWrapperWidth/$frameWidth);
                $framesHidden = $countFrames - $framesDisplay;
                $frameNewMargin = Math.floor(($slideWrapperWidth-$framesDisplay*$frameWidth)/($framesDisplay*2));
                $frameWidthWithNewMargin = $frameWidth+$frameNewMargin*2;
                $currentSlide = $slideWrapper.scrollLeft()/$frameWidthWithNewMargin;
                $slideWrapperNewWidth = $frameWidthWithNewMargin*$framesDisplay;
                $slideWrapperNewMarginLeft = parseInt($slideWrapper.css('margin-left'))+Math.round(($slideWrapperWidth-$slideWrapperNewWidth)/2);
                $frames.css({marginLeft:$frameNewMargin, marginRight:$frameNewMargin});
                $frames.parent().width($countFrames*$frameWidthWithNewMargin+100);
                if ($framesHidden < 0) {
                    $navPrev.hide();
                    $navNext.hide();
                };
                if ($currentSlide == 0) $navPrev.hide();
            };
            function goToSlide(dir){
                var scrollStep = $frameWidthWithNewMargin*dir;
                if (($currentSlide < $framesHidden && dir > 0) || ($currentSlide > 0 && dir < 0)){
                    $currentSlide += (dir > 0 ? 1 : -1);
                    $slideWrapper.animate({scrollLeft: "+="+scrollStep},options.slideSpeed, function(){
                        if ($currentSlide == $framesHidden){
                            $navNext.hide();
                            $navPrev.show();
                        } else if ($currentSlide == 0){
                            $navPrev.hide();
                            $navNext.show();
                        } else {
                            $navPrev.show();
                            $navNext.show();
                        };
                    });
                };
                return false;
            };
        });
   };
})(jQuery);

