/* * MuchSlide - v0.8.0 * A muchslide is a jQuery slider plugin. Created out of the frustration we all face, for a far more customizable front-end jQuery slider. * http://fuhton.github.io/muchslide/ * * Made by Nick Smith * Under MIT License */ !function(a,b){function c(b,c){var f=this;f.element=b,f.$element=a(f.element),f.settings=a.extend({},e,c),f._defaults=e,f._name=d,f.init()}var d="muchslide",e={numShow:3,children:"li",nextId:null,prevId:null,nextClass:"much_selector",prevClass:"much_selector",currentDisplayed:"much_select",selectedClass:"much_selected",selectedCallback:function(){},foreverScroll:!0,paged:!1,pagedClass:"much_paged",pagedSelectedCallback:function(){},pagedSelectedClass:"much_current_page",pagedChildClass:"much_paged",autoSlide:!1,autoSlideSpeed:3500,autoSlidePause:!0,autoSlidePauseClass:null,autoSlidePauseCallback:function(){},animation:null,verticalSlide:!1};c.prototype={init:function(){var a=this;a.selectorWidth=a.$element.width(),a.currentPage=0,a.sectionWidth=a.selectorWidth/a.settings.numShow,a._children(),a.modifyDom(),a.resizeWindow(),a.selectorClick(),a.itemClick(),a.settings.paged&&1===a.settings.numShow&&(a.createPaged(),a.clickPaged(),a.markPaged()),a.settings.autoSlide&&(a.createTimer(),a.settings.autoSlidePause&&jQuery("#"+a.settings.nextId+", #"+a.settings.prevId+", #"+a.$element.attr("id")+", ."+a.settings.pagedClass+", ."+a.settings.autoSlidePauseClass).hover(function(){clearInterval(a.set),a.settings.autoSlidePauseCallback()},function(){a.createTimer()}))},_children:function(){var a=this;a.children=a.$element.children(a.settings.children)},modifyDom:function(){var a=this;a.$element.css("position","relative"),a.settings.nextId&&a.settings.prevId||(a.settings.nextId="muchNext",a.settings.prevId="muchPrev",a.$element.parent().append("
").prepend("
")),a.counter=0,a.children.each(function(){var b=jQuery(this);a.settings.verticalSlide?(b.attr("data-counter",a.counter).css({position:"absolute",top:b.data("counter")*a.sectionWidth+"px"}),a.slideDirection="top",a.slideDirectionLength=b.position().top):(b.attr("data-counter",a.counter).css({position:"absolute",left:b.data("counter")*a.sectionWidth+"px"}),a.slideDirection="left",a.slideDirectionLength=b.position().left),a.slideDirectionLength-1&&(b.addClass(a.settings.currentDisplayed),a.currentPage=b.data("counter"),a.settings.paged&&1===a.settings.numShow&&a.markPaged()),a.counter++})},resizeWindow:function(){var a=this;jQuery(b).resize(function(){a.selectorWidth=parseInt(a.$element.css("width"),10),a.sectionWidth=a.selectorWidth/a.settings.numShow,a.modifyDom()})},createTimer:function(){var a=this;a.set=setInterval(function(){a.animateNext()},a.settings.autoSlideSpeed)},selectorClick:function(){var a=this;jQuery("#"+a.settings.nextId).on("click",function(){return a.$element.children().filter(":animated").length>0?!1:void a.animateNext()}),jQuery("#"+a.settings.prevId).on("click",function(){return a.$element.children().filter(":animated").length>0?!1:void a.animatePrev()})},animateNext:function(){var a=this;a._children(),parseInt(a.children.last().css(a.slideDirection),10)>=a.selectorWidth-2?a.moveEach(a.sectionWidth):a.settings.foreverScroll&&(a.children.first().remove().insertAfter(a.children.last()),a.children.first().animate(a.settings.verticalSlide?{top:a.selectorWidth}:{left:a.selectorWidth}),a.moveEach(a.sectionWidth))},animatePrev:function(){var a=this;a._children(),parseInt(a.children.first().css(a.slideDirection),10)<=-1?a.moveEach(a.sectionWidth,"+"):a.settings.foreverScroll&&(a.children.last().remove().insertBefore(a.children.first()),a.children.last().animate(a.settings.verticalSlide?{top:-a.selectorWidth}:{left:-a.selectorWidth}),a.moveEach(a.sectionWidth,"+"))},moveEach:function(a,b){var c=this;c.direction=b||"-",c.length=a,c.children.each(function(){var a=jQuery(this);c.settings.verticalSlide?a.finish().animate({top:c.direction+"="+c.length},c.settings.animation,function(){b=a.position().top,c._animateMoveEach(a,b)}):a.finish().animate({left:c.direction+"="+c.length},c.settings.animation,function(){b=a.position().left,c._animateMoveEach(a,b)})})},_animateMoveEach:function(a,b){var c=this;a.removeClass(c.settings.currentDisplayed),b-1&&(a.addClass(c.settings.currentDisplayed),c.currentPage=a.data("counter"),c.settings.paged&&1===c.settings.numShow&&c.markPaged())},itemClick:function(){var a=this;a._children(),a.children.on("click",function(){var b=jQuery(this);a.children.removeClass(a.settings.selectedClass),b.addClass(a.settings.selectedClass),a.settings.selectedCallback()})},itemMoveTo:function(a){var b=this;b.selectedPage=a,b.selectedChild=b.$element.find("[data-counter="+b.selectedPage+"]"),b.selectedDistance=parseInt(b.selectedChild.css(b.slideDirection),10),(b.selectedDistance<0||b.selectedDistance>0)&&b.moveEach(b.selectedDistance)},createPaged:function(){var a=this;for(a.$element.after(""),a.page=jQuery("."+a.settings.pagedClass),i=0;i"+i+"")},markPaged:function(){var a=this;a.page=jQuery("."+a.settings.pagedClass),a.page.children().each(function(){var b=jQuery(this);b.data("counter")===a.currentPage&&(a.page.children().removeClass(a.settings.pagedSelectedClass),b.addClass(a.settings.pagedSelectedClass),a.settings.pagedSelectedCallback())})},clickPaged:function(){var a=this;a.page.children().on("click",function(){return a.$element.children().filter(":animated").length>0?!1:($self=jQuery(this),a.selectedPage=$self.data("counter"),void a.itemMoveTo(a.selectedPage))})}},a.fn[d]=function(b){return this.each(function(){a.data(this,"plugin_"+d)||a.data(this,"plugin_"+d,new c(this,b))})}}(jQuery,window,document);