(function($) {
   $.fn.dumondeSlider = function(options){
        var defaults = {
                navPrevClass:          'gallery-prev-slide',
                navNextClass:          '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,
                $slideWrapperInnerWidth = $slideWrapper.parent().innerWidth(),
                $slideWrapperNewWidth,
                $slideWrapperNewMarginLeft = 0,
                $slideWrapperNewMarginRight = 0;
            resizeSlideBar();
            if (options.autoResize){$(window).resize(function(){resizeSlideBar();});};
            $navPrev.click(function(){
                return goToSlide(-1);
            });
            $navNext.click(function(){
                return goToSlide(1);
            });
            function resizeSlideBar(){

//                var iv= $slideWrapper.innerWidth();
//                $slideWrapperWidth = $slideWrapper.width() + $slideWrapperNewMarginLeft + $slideWrapperNewMarginRight;
				var ml=0, mr=0;
				if (!isNaN ( $slideWrapper.css("MarginLeft")) ) { ml = parseInt($slideWrapper.css('margin-left')) };
				if (!isNaN ( $slideWrapper.css("MarginRight")) ) { mr = parseInt($slideWrapper.css('margin-right'))};

                $slideWrapperWidth = $slideWrapper.innerWidth()+ ml + mr;
//				$slideWrapperWidth = iv +  $slideWrapperNewMarginLeft + $slideWrapperNewMarginRight;
                
//                alert ('Before: Полная='+ $slideWrapperWidth +' Захват=' + $slideWrapperNewMarginLeft + '+' + $slideWrapper.width() + '+' + $slideWrapperNewMarginRight);
//                alert ('Before: Полная='+ $slideWrapperWidth +' Захват=' + $slideWrapperNewMarginLeft + '+' + $slideWrapper.width() + '+' + $slideWrapperNewMarginRight);
//                var iv= $slideWrapper.parent().innerWidth();
//                alert('inner + ' +  $slideWrapperWidth + 'L:'+ ml + 'R:' + mr);
                
                $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;


                $frames.parent().width($countFrames*$frameWidthWithNewMargin + 50); //+100

//				alert ($countFrames+''+);
				
               $slideWrapperNewMarginLeft = Math.round(($slideWrapperWidth-$slideWrapperNewWidth)/2);
//                $slideWrapperNewMarginLeft = $slideWrapperWidth-$slideWrapperNewWidth;
                				
				$slideWrapperNewMarginRight=Math.round($slideWrapperWidth-$slideWrapperNewWidth-$slideWrapperNewMarginLeft);
				
//				$slideWrapper.width($slideWrapperNewWidth);
                $slideWrapper.css({marginLeft:$slideWrapperNewMarginLeft, marginRight:$slideWrapperNewMarginRight});

                $frames.css({marginLeft:$frameNewMargin, marginRight:$frameNewMargin});
				
			// Сдвиг на 0-й слайд. по идее можно сдвигать на позицию текущего (на начало текущего) что бы не было геморроя с "кусочками"
				$slideWrapper.animate({scrollLeft:0}); $currentSlide=0;

                 $navNext.show();

                if ($framesHidden < 0) {
                    $navPrev.hide();
                    $navNext.hide();
                };
                if ($currentSlide == 0) {
                	$navPrev.hide();
                    $navNext.show();
                };
                
//                alert ('After: Slw='+ $slideWrapperWidth +' l+slnw+r=' + $slideWrapperNewMarginLeft + '+' + $slideWrapperNewWidth + '+' + $slideWrapperNewMarginRight +' sl-catch=' + $slideWrapper.width() );
            };

            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);


