(function($){$.tools=$.tools||{version:'@VERSION'};$.tools.scrollable={conf:{transition:'scroll',activeClass:'active',circular:false,clonedClass:'cloned',disabledClass:'disabled',easing:'swing',initialIndex:0,item:null,items:'.items',keyboard:true,mousewheel:false,next:'.next',prev:'.prev',size:1,speed:400,vertical:false,touch:true,wheelSpeed:0}};function dim(el,key){var v=parseInt(el.css(key),10);if(v){return v;} var s=el[0].currentStyle;return s&&s.width&&parseInt(s.width,10);} function find(root,query){var el=$(query);return el.length<2?el:root.parent().find(query);} var current;function Scrollable(root,conf){var self=this,fire=root.add(self),itemWrap=root.children(),index=0,vertical=conf.vertical,lastActiveItem=null;if(!current){current=self;} if(itemWrap.length>1){itemWrap=$(conf.items,root);} $.extend(self,{getConf:function(){return conf;},getIndex:function(){return index;},getSize:function(){return self.getItems().size();},getNaviButtons:function(){return prev.add(next);},getRoot:function(){return root;},getItemWrap:function(){return itemWrap;},getItems:function(){return itemWrap.find(conf.item).not("."+conf.clonedClass);},getCorrectedIndex:function(i){if(conf.circular&&conf.transition=='fade'){if(i<0){return self.getSize()-1;}else if(i>=self.getSize()){return 0;}}else{} return i;},move:function(offset,time){return self.seekTo(self.getCorrectedIndex(index+offset),time);},next:function(time){return self.move(1,time);},prev:function(time){return self.move(-1,time);},begin:function(time){return self.seekTo(0,time);},end:function(time){return self.seekTo(self.getSize()-1,time);},focus:function(){current=self;return self;},addItem:function(item){item=$(item);if(!conf.circular){itemWrap.append(item);}else{itemWrap.children("."+conf.clonedClass+":last").before(item);itemWrap.children("."+conf.clonedClass+":first").replaceWith(item.clone().addClass(conf.clonedClass));} fire.trigger("onAddItem",[item]);return self;},seekTo:function(i,time,fn){if(!i.jquery){i*=1;} if(conf.transition=='scroll'){if(conf.circular&&i===0&&index==-1&&time!==0){return self;}} if(!conf.circular&&i<0||i>self.getSize()||i<-1){return self;} var item=i;if(i.jquery){i=self.getItems().index(i);}else{item=self.getItems().eq(i);} var e=$.Event("onBeforeSeek");if(!fn){fire.trigger(e,[i,time]);if(e.isDefaultPrevented()||!item.length){return self;}} index=i;current=self;if(time===undefined){time=conf.speed;} if(conf.transition=='scroll'){var props=vertical?{top:-item.position().top}:{left:-item.position().left};itemWrap.animate(props,time,conf.easing,fn||function(){fire.trigger("onSeek",[i]);});}else if(conf.transition=='fade'){if(lastActiveItem) lastActiveItem.fadeOut(time,conf.easing);item.fadeIn(time,conf.easing,fn||function(){fire.trigger("onSeek",[i]);});} lastActiveItem=item;return self;}});$.each(['onBeforeSeek','onSeek','onAddItem'],function(i,name){if($.isFunction(conf[name])){$(self).bind(name,conf[name]);} self[name]=function(fn){if(fn){$(self).bind(name,fn);} return self;};});if(conf.transition=='fade'){self.getItems().each(function(i){var item=$(this);item.css('z-index',String(self.getSize()-i)).css('position','absolute').hide();});} if(conf.circular){if(conf.transition=='fade'){self.onBeforeSeek(function(e,i,time){if(i==self.getSize()){self.seekTo(self.getCorrectedIndex(i+1),time,function(){self.begin(0);});}});}else{var items=self.getItems();var clonedAtBegin=items.slice(-1).clone().prependTo(itemWrap),clonedAtEnd=items.filter(":lt("+conf.size+")").clone().appendTo(itemWrap);items=null;clonedAtBegin.add(clonedAtEnd).addClass(conf.clonedClass);self.onBeforeSeek(function(e,i,time){if(e.isDefaultPrevented()){return;} if(i==-1){self.seekTo(clonedAtBegin,time,function(){self.end(0);});return e.preventDefault();}else if(i==self.getSize()){self.seekTo(clonedAtEnd,time,function(){self.begin(0);});}});} self.seekTo(conf.initialIndex,0,function(){});} var prev=find(root,conf.prev).click(function(){self.prev();}),next=find(root,conf.next).click(function(){self.next();});if(!conf.circular&&self.getSize()>1){self.onBeforeSeek(function(e,i){setTimeout(function(){if(!e.isDefaultPrevented()){prev.toggleClass(conf.disabledClass,i<=0);next.toggleClass(conf.disabledClass,i>=self.getSize()-1);}},1);});if(!conf.initialIndex){prev.addClass(conf.disabledClass);}} if(conf.mousewheel&&$.fn.mousewheel){root.mousewheel(function(e,delta){if(conf.mousewheel){self.move(delta<0?1:-1,conf.wheelSpeed||50);return false;}});} if(conf.touch){var touch={};itemWrap[0].ontouchstart=function(e){var t=e.touches[0];touch.x=t.clientX;touch.y=t.clientY;};itemWrap[0].ontouchmove=function(e){if(e.touches.length==1&&!itemWrap.is(":animated")){var t=e.touches[0],deltaX=touch.x-t.clientX,deltaY=touch.y-t.clientY;self[vertical&&deltaY>0||!vertical&&deltaX>0?'next':'prev']();e.preventDefault();}};} if(conf.keyboard){$(document).bind("keydown.scrollable",function(evt){if(!conf.keyboard||evt.altKey||evt.ctrlKey||$(evt.target).is(":input")){return;} if(conf.keyboard!='static'&¤t!=self){return;} var key=evt.keyCode;if(vertical&&(key==38||key==40)){self.move(key==38?-1:1);return evt.preventDefault();} if(!vertical&&(key==37||key==39)){self.move(key==37?-1:1);return evt.preventDefault();}});} if(conf.initialIndex){self.seekTo(conf.initialIndex,0,function(){});}} $.fn.scrollable=function(conf){var el=this.data("scrollable");if(el){return el;} conf=$.extend({},$.tools.scrollable.conf,conf);this.each(function(){el=new Scrollable($(this),conf);$(this).data("scrollable",el);});return conf.api?el:this;};})(jQuery);(function($){var t=$.tools.scrollable;t.navigator={conf:{navi:'.navi',naviItem:null,activeClass:'active',indexed:false,idPrefix:null,history:false}};function find(root,query){var el=$(query);return el.length<2?el:root.parent().find(query);} $.fn.navigator=function(conf){if(typeof conf=='string'){conf={navi:conf};} conf=$.extend({},t.navigator.conf,conf);var ret;this.each(function(){var api=$(this).data("scrollable"),navi=conf.navi.jquery?conf.navi:find(api.getRoot(),conf.navi),buttons=api.getNaviButtons(),cls=conf.activeClass,history=conf.history&&$.fn.history;if(api){ret=api;} api.getNaviButtons=function(){return buttons.add(navi);};function doClick(el,i,e){api.seekTo(i);if(history){if(location.hash){location.hash=el.attr("href").replace("#","");}}else{return e.preventDefault();}} function els(){return navi.find(conf.naviItem||'> *');} function addItem(i){var item=$("<"+(conf.naviItem||'a')+"/>").click(function(e){doClick($(this),i,e);}).attr("href","#"+i);if(i===0){item.addClass(cls);} if(conf.indexed){item.text(i+1);} if(conf.idPrefix){item.attr("id",conf.idPrefix+i);} return item.appendTo(navi);} if(els().length){els().each(function(i){$(this).click(function(e){doClick($(this),i,e);});});}else{$.each(api.getItems(),function(i){addItem(i);});} api.onBeforeSeek(function(e,index){setTimeout(function(){if(!e.isDefaultPrevented()){var el=els().eq(index);if(!e.isDefaultPrevented()&&el.length){els().removeClass(cls).eq(index).addClass(cls);}}},1);});function doHistory(evt,hash){var el=els().eq(hash.replace("#",""));if(!el.length){el=els().filter("[href="+hash+"]");} el.click();} api.onAddItem(function(e,item){item=addItem(api.getItems().index(item));if(history){item.history(doHistory);}});if(history){els().history(doHistory);}});return conf.api?ret:this;};})(jQuery);(function($){var t=$.tools.scrollable;t.autoscroll={conf:{autoplay:true,interval:3000,autopause:true}};$.fn.autoscroll=function(conf){if(typeof conf=='number'){conf={interval:conf};} var opts=$.extend({},t.autoscroll.conf,conf),ret;this.each(function(){var api=$(this).data("scrollable");if(api){ret=api;} var timer,stopped=true;api.play=function(){if(timer){return;} stopped=false;timer=setInterval(function(){api.next();},opts.interval);};api.pause=function(){timer=clearInterval(timer);};api.stop=function(){api.pause();stopped=true;};if(opts.autopause){api.getRoot().add(api.getNaviButtons()).hover(api.pause,api.play);} if(opts.autoplay){api.play();}});return opts.api?ret:this;};})(jQuery);