(function(A){A.tools=A.tools||{};A.tools.scrollable={version:"1.1.2",conf:{size:5,vertical:false,speed:400,keyboard:true,keyboardSteps:null,disabledClass:"disabled",hoverClass:null,clickable:true,activeClass:"active",easing:"swing",loop:false,items:".items",item:null,prev:".prev",next:".next",prevPage:".prevPage",nextPage:".nextPage",api:false}};var C;function B(G,I){var D=this,F=A(this),R=!I.vertical,Q=G.children(),K=0,M;if(!C){C=D}A.each(I,function(T,S){if(A.isFunction(S)){F.bind(T,S)}});if(Q.length>1){Q=A(I.items,G)}function J(S){var T=A(S);return I.globalNav?T:G.parent().find(S)}G.data("finder",J);var P=J(I.prev),N=J(I.next),O=J(I.prevPage),H=J(I.nextPage);A.extend(D,{getIndex:function(){return K},getClickIndex:function(){var S=D.getItems();return S.index(S.filter("."+I.activeClass))},getConf:function(){return I},getSize:function(){return D.getItems().size()},getPageAmount:function(){return Math.ceil(this.getSize()/I.size)},getPageIndex:function(){return Math.ceil(K/I.size)},getNaviButtons:function(){return P.add(N).add(O).add(H)},getRoot:function(){return G},getItemWrap:function(){return Q},getItems:function(){return Q.children(I.item)},getVisibleItems:function(){return D.getItems().slice(K,K+I.size)},seekTo:function(X,T,W){if(X<0){X=0}if(K===X){return D}if(A.isFunction(T)){W=T}if(X>D.getSize()-I.size){return I.loop?D.begin():this.end()}var V=D.getItems().eq(X);if(!V.length){return D}var U=A.Event("onBeforeSeek");F.trigger(U,[X]);if(U.isDefaultPrevented()){return D}if(T===undefined||A.isFunction(T)){T=I.speed}function S(){if(W){W.call(D,X)}F.trigger("onSeek",[X])}if(R){Q.animate({left:-V.position().left},T,I.easing,S)}else{Q.animate({top:-V.position().top},T,I.easing,S)}C=D;K=X;U=A.Event("onStart");F.trigger(U,[X]);if(U.isDefaultPrevented()){return D}P.add(O).toggleClass(I.disabledClass,X===0);N.add(H).toggleClass(I.disabledClass,X>=D.getSize()-I.size);return D},move:function(S,T,U){M=S>0;return this.seekTo(K+S,T,U)},next:function(S,T){return this.move(1,S,T)},prev:function(S,T){return this.move(-1,S,T)},movePage:function(S,T,U){M=S>0;var W=I.size*S;var V=K%I.size;if(V>0){W+=(S>0?-V:I.size-V)}return this.move(W,T,U)},prevPage:function(S,T){return this.movePage(-1,S,T)},nextPage:function(S,T){return this.movePage(1,S,T)},setPage:function(T,S,U){return this.seekTo(T*I.size,S,U)},begin:function(S,T){M=false;return this.seekTo(0,S,T)},end:function(T,U){M=true;var S=this.getSize()-I.size;return S>0?this.seekTo(S,T,U):D},reload:function(){F.trigger("onReload");return D},focus:function(){C=D;return D},click:function(V){var U=D.getItems().eq(V),X=I.activeClass,W=I.size;if(V<0||V>=D.getSize()){return D}if(W==1){if(I.loop){return D.next()}if(V===0||V==D.getSize()-1){M=(M===undefined)?true:!M}return M===false?D.prev():D.next()}if(W==2){if(V==K){V--}D.getItems().removeClass(X);U.addClass(X);return D.seekTo(V,time,fn)}if(!U.hasClass(X)){D.getItems().removeClass(X);U.addClass(X);var S=Math.floor(W/2);var T=V-S;if(T>D.getSize()-W){T=D.getSize()-W}if(T!==V){return D.seekTo(T)}}return D},bind:function(T,S){F.bind(T,S);return D},unbind:function(S){F.unbind(S);return D}});A.each("onBeforeSeek,onStart,onSeek,onReload".split(","),function(T,S){D[S]=function(U){return D.bind(S,U)}});P.addClass(I.disabledClass).click(function(){D.prev()});N.click(function(){D.next()});H.click(function(){D.nextPage()});if(D.getSize()<I.size){N.add(H).addClass(I.disabledClass)}O.addClass(I.disabledClass).click(function(){D.prevPage()});var L=I.hoverClass,E="keydown."+Math.random().toString().substring(10);D.onReload(function(){if(L){D.getItems().hover(function(){A(this).addClass(L)},function(){A(this).removeClass(L)})}if(I.clickable){D.getItems().each(function(S){A(this).unbind("click.scrollable").bind("click.scrollable",function(T){if(A(T.target).is("a")){return }return D.click(S)})})}if(I.keyboard){A(document).unbind(E).bind(E,function(T){if(T.altKey||T.ctrlKey){return }if(I.keyboard!="static"&&C!=D){return }var S=I.keyboardSteps;if(R&&(T.keyCode==37||T.keyCode==39)){D.move(T.keyCode==37?-S:S);return T.preventDefault()}if(!R&&(T.keyCode==38||T.keyCode==40)){D.move(T.keyCode==38?-S:S);return T.preventDefault()}return true})}else{A(document).unbind(E)}});D.reload()}A.fn.scrollable=function(F){var E=this.eq(typeof F=="number"?F:0).data("scrollable");if(E){return E}var D=A.extend({},A.tools.scrollable.conf);F=A.extend(D,F);F.keyboardSteps=F.keyboardSteps||F.size;this.each(function(){E=new B(A(this),F);A(this).data("scrollable",E)});return F.api?E:this}})(jQuery);
