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