(function($){$.tools=$.tools||{};$.tools.scrollable={version:'1.1.1',conf:{size:1,vertical:false,speed:300,keyboard:true,keyboardSteps:null,disabledClass:'disabled',hoverClass:null,clickable:false,activeClass:'active',easing:'swing',loop:false,items:'.items',item:null,prev:'.prev',next:'.next',prevPage:'.prevPage',nextPage:'.nextPage',api:false}};var current,len=0;function Scrollable(root,conf,len){var self=this,$self=$(this),horizontal=!conf.vertical,wrap=root.children(),index=0,forward;if(!current){current=self;}
$.each(conf,function(name,fn){if($.isFunction(fn)){$self.bind(name,fn);}});if(wrap.length>1){wrap=$(conf.items,root);}
function find(query){var els=$(query);return len==1||els.length==1||conf.globalNav?els:root.parent().find(query);}
root.data("finder",find);var prev=find(conf.prev),next=find(conf.next),prevPage=find(conf.prevPage),nextPage=find(conf.nextPage);$.extend(self,{getIndex:function(){return index;},getClickIndex:function(){var items=self.getItems();return items.index(items.filter("."+conf.activeClass));},getConf:function(){return conf;},getSize:function(){return self.getItems().size();},getPageAmount:function(){return Math.ceil(this.getSize()/conf.size);},getPageIndex:function(){return Math.ceil(index/conf.size);},getNaviButtons:function(){return prev.add(next).add(prevPage).add(nextPage);},getRoot:function(){return root;},getItemWrap:function(){return wrap;},getItems:function(){return wrap.children(conf.item);},getVisibleItems:function(){return self.getItems().slice(index,index+conf.size);},seekTo:function(i,time,fn){if(i<0){i=0;}
if(index===i){return self;}
if(time===undefined){time=conf.speed;}
if($.isFunction(time)){fn=time;time=conf.speed;}
if(i>self.getSize()-conf.size){return conf.loop?self.begin():this.end();}
var item=self.getItems().eq(i);if(!item.length){return self;}
var e=$.Event("onBeforeSeek");$self.trigger(e,[i]);if(e.isDefaultPrevented()){return self;}
function callback(){if(fn){fn.call(self);}
$self.trigger("onSeek",[i]);}
if(horizontal){wrap.animate({left:-item.position().left},time,conf.easing,callback);}else{wrap.animate({top:-item.position().top},time,conf.easing,callback);}
current=self;index=i;return self;},move:function(offset,time,fn){forward=offset>0;return this.seekTo(index+offset,time,fn);},next:function(time,fn){return this.move(1,time,fn);},prev:function(time,fn){return this.move(-1,time,fn);},movePage:function(offset,time,fn){forward=offset>0;var steps=conf.size*offset;var i=index%conf.size;if(i>0){steps+=(offset>0?-i:conf.size-i);}
return this.move(steps,time,fn);},prevPage:function(time,fn){return this.movePage(-1,time,fn);},nextPage:function(time,fn){return this.movePage(1,time,fn);},setPage:function(page,time,fn){return this.seekTo(page*conf.size,time,fn);},begin:function(time,fn){forward=false;return this.seekTo(0,time,fn);},end:function(time,fn){forward=true;var to=this.getSize()-conf.size;return to>0?this.seekTo(to,time,fn):self;},reload:function(){$self.trigger("onReload");return self;},bind:function(name,fn){$self.bind(name,fn);return self;},onBeforeSeek:function(fn){return this.bind("onBeforeSeek",fn);},onSeek:function(fn){return this.bind("onSeek",fn);},onReload:function(fn){return this.bind("onReload",fn);},unbind:function(name){$self.unbind(name);return self;},focus:function(){current=self;return self;},click:function(i){var item=self.getItems().eq(i),klass=conf.activeClass,size=conf.size;if(i<0||i>=self.getSize()){return self;}
if(size==1){if(conf.loop){return self.next();}
if(i===0||i==self.getSize()-1){forward=(forward===undefined)?true:!forward;}
return forward===false?self.prev():self.next();}
if(size==2){if(i==index){i--;}
self.getItems().removeClass(klass);item.addClass(klass);return self.seekTo(i,time,fn);}
if(!item.hasClass(klass)){self.getItems().removeClass(klass);item.addClass(klass);var delta=Math.floor(size/2);var to=i-delta;if(to>self.getSize()-size){to=self.getSize()-size;}
if(to!==i){return self.seekTo(to);}}
return self;}});prev.addClass(conf.disabledClass).click(function(){self.prev();});next.click(function(){self.next();});nextPage.click(function(){self.nextPage();});prevPage.addClass(conf.disabledClass).click(function(){self.prevPage();});self.onSeek(function(e,i){if(i===0){prev.add(prevPage).addClass(conf.disabledClass);}else{prev.add(prevPage).removeClass(conf.disabledClass);}
if(i>=self.getSize()-conf.size){next.add(nextPage).addClass(conf.disabledClass);}else{next.add(nextPage).removeClass(conf.disabledClass);}});var hc=conf.hoverClass,keyId="keydown."+Math.random().toString().substring(10);self.onReload(function(){if(hc){self.getItems().hover(function(){$(this).addClass(hc);},function(){$(this).removeClass(hc);});}
if(conf.clickable){self.getItems().each(function(i){$(this).unbind("click.scrollable").bind("click.scrollable",function(e){if($(e.target).is("a")){return;}
return self.click(i);});});}
if(conf.keyboard){$(document).unbind(keyId).bind(keyId,function(evt){if(evt.altKey||evt.ctrlKey){return;}
if(conf.keyboard!='static'&&current!=self){return;}
var s=conf.keyboardSteps;if(horizontal&&(evt.keyCode==37||evt.keyCode==39)){self.move(evt.keyCode==37?-s:s);return evt.preventDefault();}
if(!horizontal&&(evt.keyCode==38||evt.keyCode==40)){self.move(evt.keyCode==38?-s:s);return evt.preventDefault();}
return true;});}else{$(document).unbind(keyId);}});self.reload();}
$.fn.scrollable=function(conf){var el=this.eq(typeof conf=='number'?conf:0).data("scrollable");if(el){return el;}
var globals=$.extend({},$.tools.scrollable.conf);conf=$.extend(globals,conf);conf.keyboardSteps=conf.keyboardSteps||conf.size;len+=this.length;this.each(function(){el=new Scrollable($(this),conf);$(this).data("scrollable",el);});return conf.api?el:this;};})(jQuery);(function($){var t=$.tools.scrollable;t.plugins=t.plugins||{};t.plugins.navigator={version:'1.0.1',conf:{navi:'.navi',naviItem:null,activeClass:'active',indexed:false,api:false}};$.fn.navigator=function(conf){var globals=$.extend({},t.plugins.navigator.conf),ret;if(typeof conf=='string'){conf={navi:conf};}
conf=$.extend(globals,conf);this.each(function(){var api=$(this).scrollable(),root=api.getRoot(),navi=root.data("finder").call(null,conf.navi),els=null,buttons=api.getNaviButtons();if(api){ret=api;}
api.getNaviButtons=function(){return buttons.add(navi);};function reload(){if(!navi.children().length||navi.data("navi")==api){navi.empty();navi.data("navi",api);for(var i=0;i<api.getPageAmount();i++){navi.append($("<"+(conf.naviItem||'a')+"/>"));}
els=navi.children().each(function(i){$(this).click(function(e){api.setPage(i);return e.preventDefault();});if(conf.indexed){$(this).text(i);}});}else{els=conf.naviItem?navi.find(conf.naviItem):navi.children();els.each(function(i){var el=$(this);el.click(function(evt){api.setPage(i);return evt.preventDefault();});});}
els.eq(0).addClass(conf.activeClass);}
api.onSeek(function(index){var cls=conf.activeClass;els.removeClass(cls).eq(api.getPageIndex()).addClass(cls);});api.onReload(function(){reload();});reload();var el=els.filter("[href="+location.hash+"]");if(el.length){api.move(els.index(el));}});return conf.api?ret:this;};})(jQuery);