(function(a){var b=a.serialScroll=function(c){a.scrollTo.window().serialScroll(c)};b.defaults={duration:10,axis:"x",event:"click",start:0,step:1,lock:true,cycle:true,constant:true};a.fn.serialScroll=function(d){d=a.extend({},b.defaults,d);var f=d.event,e=d.step,c=d.lazy;return this.each(function(){var h=d.target?this:document,x=a(d.target||this,h),v=x[0],s=d.items,l=d.start,k=d.interval,o=d.navigation,p,i=false,y=false,r=null;if(!c){s=g()}if(d.force){j({},l)}a(d.prev||[],h).bind(f,-e,w);a(d.next||[],h).bind(f,e,w);a(d.pause||[],h).bind(f,q);if(!v.ssbound){x.bind("prev.serialScroll",-e,w).bind("next.serialScroll",e,w).bind("goto.serialScroll",j)}if(k){x.bind("start.serialScroll",function(z){if(!y){if(!k){u();k=true;j({},l)}}}).bind("stop.serialScroll",function(){if(!y){x.stop();u();k=false;i=true}}).bind("continue.serialScroll",function(z){if(y){y=false;u();k=true;j({},l)}}).bind("pause.serialScroll",function(){y=true;x.stop();u();k=false;i=true})}x.bind("notify.serialScroll",function(B,A){var z=m(A);if(z>-1){l=z}});v.ssbound=true;if(d.jump){(c?x:g()).bind(f,function(z){j(z,m(z.target))})}if(o){o=a(o,h).bind(f,function(z){z.data=Math.round(g().length/o.length)*o.index(this);j(z,this)})}function q(z){if(y){x.trigger("continue.serialScroll")}else{x.trigger("pause.serialScroll")}if(d.onPause){d.onPause.call(z,x,g(),a(d.pause||[],h),y)}}function w(z){z.data+=l;j(z,this)}function n(){return y}function j(G,E){if(!isNaN(E)){G.data=E;E=v}var H=G.data,A,I=G.type,F=d.exclude?g().slice(0,-d.exclude):g(),D=F.length,B=F[H],C=d.duration;if(I){G.preventDefault()}if(!B){A=H<0?0:D-1;if(l!=A){H=A}else{if(!d.cycle){return}else{H=D-A-1}}B=F[H]}if(!B||I&&l==H||d.lock&&x.is(":animated")||I&&d.onBefore&&d.onBefore.call(E,G,B,x,g(),H,D)===false){return}if(d.stop){x.queue("fx",[]).stop()}var z=a(B);var J=z.position();C=Math.abs(C*J.left);i=false;x.scrollTo(v.scrollLeft+J.left,C,d).trigger("notify.serialScroll",[H])}function t(){x.trigger("next.serialScroll")}function u(){clearTimeout(p)}function g(){return a(d.items,v)}function m(A){if(!isNaN(A)){return A}var B=g(),z;while((z=B.index(A))==-1&&A!=v){A=A.parentNode}return z}})}})(jQuery);