(function(n,t,i){n.fn.simplyScroll=function(t){return this.each(function(){new n.simplyScroll(this,t)})};var r={customClass:"simply-scroll",frameRate:24,speed:1,orientation:"horizontal",auto:!0,autoMode:"loop",manualMode:"end",direction:"forwards",pauseOnHover:!0,pauseOnTouch:!0,pauseButton:!1,startOnLoad:!1};n.simplyScroll=function(i,u){var s=this,e,o,f;this.o=n.extend({},r,u||{});this.isAuto=!1!==this.o.auto&&null!==this.o.autoMode.match(/^loop|bounce$/);this.isRTL=(this.isHorizontal=null!==this.o.orientation.match(/^horizontal|vertical$/)&&this.o.orientation==r.orientation)&&"rtl"==n("html").attr("dir");this.isForwards=!this.isAuto||this.isAuto&&null!==this.o.direction.match(/^forwards|backwards$/)&&this.o.direction==r.direction&&!this.isRTL;this.isLoop=this.isAuto&&"loop"==this.o.autoMode||!this.isAuto&&"loop"==this.o.manualMode;this.events=(this.supportsTouch="createTouch"in document)?{start:"touchstart MozTouchDown",move:"touchmove MozTouchMove",end:"touchend touchcancel MozTouchRelease"}:{start:"mouseenter",end:"mouseleave"};this.$list=n(i);e=this.$list.children();this.$list.addClass("simply-scroll-list").wrap('<div class="simply-scroll-clip"><\/div>').parent().wrap('<div class="'+this.o.customClass+' simply-scroll-container"><\/div>');this.isAuto?this.o.pauseButton&&(this.$list.parent().parent().prepend('<div class="simply-scroll-btn simply-scroll-btn-pause"><\/div>'),this.o.pauseOnHover=!1):this.$list.parent().parent().prepend('<div class="simply-scroll-forward"><\/div>').prepend('<div class="simply-scroll-back"><\/div>');1<e.length&&(o=!1,f=0,this.isHorizontal?(e.each(function(){f=f+n(this).outerWidth(!0)}),o=e.eq(0).outerWidth(!0)*e.length!==f):(e.each(function(){f=f+n(this).outerHeight(!0)}),o=e.eq(0).outerHeight(!0)*e.length!==f),o&&(this.$list=this.$list.wrap("<div><\/div>").parent().addClass("simply-scroll-list"),this.isHorizontal?this.$list.children().css({float:"left",width:f+"px"}):this.$list.children().css({height:f+"px"})));this.o.startOnLoad?n(t).load(function(){s.init()}):this.init()};n.simplyScroll.fn=n.simplyScroll.prototype={};n.simplyScroll.fn.extend=n.simplyScroll.extend=n.extend;n.simplyScroll.fn.extend({init:function(){var r,t,u,f,e;if(this.$items=this.$list.children(),this.$clip=this.$list.parent(),this.$container=this.$clip.parent(),this.$btnBack=n(".simply-scroll-back",this.$container),this.$btnForward=n(".simply-scroll-forward",this.$container),this.isHorizontal?(this.itemMax=this.$items.eq(0).outerWidth(!0),this.clipMax=this.$clip.width(),this.dimension="width",this.moveBackClass="simply-scroll-btn-left",this.moveForwardClass="simply-scroll-btn-right",this.scrollPos="Left"):(this.itemMax=this.$items.eq(0).outerHeight(!0),this.clipMax=this.$clip.height(),this.dimension="height",this.moveBackClass="simply-scroll-btn-up",this.moveForwardClass="simply-scroll-btn-down",this.scrollPos="Top"),this.posMin=0,this.posMax=this.$items.length*this.itemMax,r=Math.ceil(this.clipMax/this.itemMax),this.isAuto&&"loop"==this.o.autoMode?(this.$list.css(this.dimension,this.posMax+this.itemMax*r+"px"),this.posMax+=this.clipMax-this.o.speed,this.isForwards?(this.$items.slice(0,r).clone(!0).appendTo(this.$list),this.resetPosition=0):(this.$items.slice(-r).clone(!0).prependTo(this.$list),this.resetPosition=this.$items.length*this.itemMax,this.isRTL&&(this.$clip[0].dir="ltr",this.$items.css("float","right")))):this.isAuto||"loop"!=this.o.manualMode?(this.$list.css(this.dimension,this.posMax+"px"),this.isForwards?this.resetPosition=0:(this.resetPosition=this.$items.length*this.itemMax,this.isRTL&&(this.$clip[0].dir="ltr",this.$items.css("float","right")))):(this.posMax+=this.itemMax*r,this.$list.css(this.dimension,this.posMax+this.itemMax*r+"px"),this.posMax+=this.clipMax-this.o.speed,this.$items.slice(0,r).clone(!0).appendTo(this.$list),this.$items.slice(-r).clone(!0).prependTo(this.$list),this.resetPositionForwards=this.resetPosition=r*this.itemMax,this.resetPositionBackwards=this.$items.length*this.itemMax,t=this,this.$btnBack.bind(this.events.start,function(){t.isForwards=!1;t.resetPosition=t.resetPositionBackwards}),this.$btnForward.bind(this.events.start,function(){t.isForwards=!0;t.resetPosition=t.resetPositionForwards})),this.resetPos(),this.interval=null,this.intervalDelay=Math.floor(1e3/this.o.frameRate),this.isAuto||"end"!=this.o.manualMode)for(;0!=this.itemMax%this.o.speed;)if(this.o.speed--,0===this.o.speed){this.o.speed=1;break}t=this;this.trigger=null;this.funcMoveBack=function(n){n!==i&&n.preventDefault();t.trigger=!t.isAuto&&t.o.manualMode=="end"?this:null;t.isAuto?t.isForwards?t.moveBack():t.moveForward():t.moveBack()};this.funcMoveForward=function(n){n!==i&&n.preventDefault();t.trigger=!t.isAuto&&t.o.manualMode=="end"?this:null;t.isAuto?t.isForwards?t.moveForward():t.moveBack():t.moveForward()};this.funcMovePause=function(){t.movePause()};this.funcMoveStop=function(){t.moveStop()};this.funcMoveResume=function(){t.moveResume()};this.isAuto?(this.paused=!1,u=function(){return t.paused===!1?(t.paused=!0,t.funcMovePause()):(t.paused=!1,t.funcMoveResume()),t.paused},this.supportsTouch&&this.$items.find("a").length&&(this.supportsTouch=!1),this.isAuto&&this.o.pauseOnHover&&!this.supportsTouch?this.$clip.bind(this.events.start,this.funcMovePause).bind(this.events.end,this.funcMoveResume):this.isAuto&&this.o.pauseOnTouch&&!this.o.pauseButton&&this.supportsTouch?this.$clip.bind(this.events.start,function(n){u();var i=n.originalEvent.touches[0];f=t.isHorizontal?i.pageX:i.pageY;e=t.$clip[0]["scroll"+t.scrollPos];n.stopPropagation();n.preventDefault()}).bind(this.events.move,function(n){n.stopPropagation();n.preventDefault();n=n.originalEvent.touches[0];n=f-(t.isHorizontal?n.pageX:n.pageY)+e;n<0?n=0:n>t.posMax&&(n=t.posMax);t.$clip[0]["scroll"+t.scrollPos]=n;t.funcMovePause();t.paused=!0}):this.o.pauseButton&&(this.$btnPause=n(".simply-scroll-btn-pause",this.$container).bind("click",function(t){t.preventDefault();u()?n(this).addClass("active"):n(this).removeClass("active")})),this.funcMoveForward()):(this.$btnBack.addClass("simply-scroll-btn "+this.moveBackClass).bind(this.events.start,this.funcMoveBack).bind(this.events.end,this.funcMoveStop),this.$btnForward.addClass("simply-scroll-btn "+this.moveForwardClass).bind(this.events.start,this.funcMoveForward).bind(this.events.end,this.funcMoveStop),"end"==this.o.manualMode&&(this.isRTL?this.$btnForward.addClass("disabled"):this.$btnBack.addClass("disabled")))},moveForward:function(){var n=this;this.movement="forward";null!==this.trigger&&this.$btnBack.removeClass("disabled");n.interval=setInterval(function(){n.$clip[0]["scroll"+n.scrollPos]<n.posMax-n.clipMax?n.$clip[0]["scroll"+n.scrollPos]+=n.o.speed:n.isLoop?n.resetPos():n.moveStop(n.movement)},n.intervalDelay)},moveBack:function(){var n=this;this.movement="back";null!==this.trigger&&this.$btnForward.removeClass("disabled");n.interval=setInterval(function(){n.$clip[0]["scroll"+n.scrollPos]>n.posMin?n.$clip[0]["scroll"+n.scrollPos]-=n.o.speed:n.isLoop?n.resetPos():n.moveStop(n.movement)},n.intervalDelay)},movePause:function(){clearInterval(this.interval)},moveStop:function(t){this.movePause();null!==this.trigger&&("undefined"!=typeof t&&n(this.trigger).addClass("disabled"),this.trigger=null);this.isAuto&&"bounce"==this.o.autoMode&&("forward"==t?this.moveBack():this.moveForward())},moveResume:function(){"forward"==this.movement?this.moveForward():this.moveBack()},resetPos:function(){this.$clip[0]["scroll"+this.scrollPos]=this.resetPosition}})})(jQuery,window)