(function(b){b.tools=b.tools||{};b.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 a(o,m){var r=this,p=b(this),d=!m.vertical,e=o.children(),k=0,i;if(!c){c=r;}b.each(m,function(s,t){if(b.isFunction(t)){p.bind(s,t);}});if(e.length>1){e=b(m.items,o);}function l(t){var s=b(t);return m.globalNav?s:o.parent().find(t);}o.data("finder",l);var f=l(m.prev),h=l(m.next),g=l(m.prevPage),n=l(m.nextPage);b.extend(r,{getIndex:function(){return k;},getClickIndex:function(){var s=r.getItems();return s.index(s.filter("."+m.activeClass));},getConf:function(){return m;},getSize:function(){return r.getItems().size();},getPageAmount:function(){return Math.ceil(this.getSize()/m.size);},getPageIndex:function(){return Math.ceil(k/m.size);},getNaviButtons:function(){return f.add(h).add(g).add(n);},getRoot:function(){return o;},getItemWrap:function(){return e;},getItems:function(){return e.children(m.item);},getVisibleItems:function(){return r.getItems().slice(k,k+m.size);},seekTo:function(s,w,t){if(s<0){s=0;}if(k===s){return r;}if(b.isFunction(w)){t=w;}if(s>r.getSize()-m.size){return m.loop?r.begin():this.end();}var u=r.getItems().eq(s);if(!u.length){return r;}var v=b.Event("onBeforeSeek");p.trigger(v,[s]);if(v.isDefaultPrevented()){return r;}if(w===undefined||b.isFunction(w)){w=m.speed;}function x(){if(t){t.call(r,s);}p.trigger("onSeek",[s]);}if(d){e.animate({left:-u.position().left},w,m.easing,x);}else{e.animate({top:-u.position().top},w,m.easing,x);}c=r;k=s;v=b.Event("onStart");p.trigger(v,[s]);if(v.isDefaultPrevented()){return r;}f.add(g).toggleClass(m.disabledClass,s===0);h.add(n).toggleClass(m.disabledClass,s>=r.getSize()-m.size);return r;},move:function(u,t,s){i=u>0;return this.seekTo(k+u,t,s);},next:function(t,s){return this.move(1,t,s);},prev:function(t,s){return this.move(-1,t,s);},movePage:function(w,v,u){i=w>0;var s=m.size*w;var t=k%m.size;if(t>0){s+=(w>0?-t:m.size-t);}return this.move(s,v,u);},prevPage:function(t,s){return this.movePage(-1,t,s);},nextPage:function(t,s){return this.movePage(1,t,s);},setPage:function(t,u,s){return this.seekTo(t*m.size,u,s);},begin:function(t,s){i=false;return this.seekTo(0,t,s);},end:function(t,s){i=true;var u=this.getSize()-m.size;return u>0?this.seekTo(u,t,s):r;},reload:function(){p.trigger("onReload");return r;},focus:function(){c=r;return r;},click:function(u){var v=r.getItems().eq(u),s=m.activeClass,t=m.size;if(u<0||u>=r.getSize()){return r;}if(t==1){if(m.loop){return r.next();}if(u===0||u==r.getSize()-1){i=(i===undefined)?true:!i;}return i===false?r.prev():r.next();}if(t==2){if(u==k){u--;}r.getItems().removeClass(s);v.addClass(s);return r.seekTo(u,time,fn);}if(!v.hasClass(s)){r.getItems().removeClass(s);v.addClass(s);var x=Math.floor(t/2);var w=u-x;if(w>r.getSize()-t){w=r.getSize()-t;}if(w!==u){return r.seekTo(w);}}return r;},bind:function(s,t){p.bind(s,t);return r;},unbind:function(s){p.unbind(s);return r;}});b.each("onBeforeSeek,onStart,onSeek,onReload".split(","),function(s,t){r[t]=function(u){return r.bind(t,u);};});f.addClass(m.disabledClass).click(function(){r.prev();});h.click(function(){r.next();});n.click(function(){r.nextPage();});if(r.getSize()<m.size){h.add(n).addClass(m.disabledClass);}g.addClass(m.disabledClass).click(function(){r.prevPage();});var j=m.hoverClass,q="keydown."+Math.random().toString().substring(10);r.onReload(function(){if(j){r.getItems().hover(function(){b(this).addClass(j);},function(){b(this).removeClass(j);});}if(m.clickable){r.getItems().each(function(s){b(this).unbind("click.scrollable").bind("click.scrollable",function(t){if(b(t.target).is("a")){return;}return r.click(s);});});}if(m.keyboard){b(document).unbind(q).bind(q,function(t){if(t.altKey||t.ctrlKey){return;}if(m.keyboard!="static"&&c!=r){return;}var u=m.keyboardSteps;if(d&&(t.keyCode==37||t.keyCode==39)){r.move(t.keyCode==37?-u:u);return t.preventDefault();}if(!d&&(t.keyCode==38||t.keyCode==40)){r.move(t.keyCode==38?-u:u);return t.preventDefault();}return true;});}else{b(document).unbind(q);}});r.reload();}b.fn.scrollable=function(d){var e=this.eq(typeof d=="number"?d:0).data("scrollable");if(e){return e;}var f=b.extend({},b.tools.scrollable.conf);d=b.extend(f,d);d.keyboardSteps=d.keyboardSteps||d.size;this.each(function(){e=new a(b(this),d);b(this).data("scrollable",e);});return d.api?e:this;};})(jQuery);
