/**
 * @license 
 * jQuery Tools 1.2.3 Scrollable - New wave UI design
 * 
 * NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE.
 * 
 * http://flowplayer.org/tools/scrollable.html
 *
 * Since: March 2008
 * Date:    Aug 1 2010 
 */
(function($){$.tools=$.tools||{version:'1.2.3a'};$.tools.scrollable={conf:{circular:false,clonedClass:'cloned',disabledClass:'disabled',easing:'swing',initialIndex:0,item:null,items:'.items',keyboard:true,mousewheel:false,next:'.next',prev:'.prev',speed:400,vertical:false,wheelSpeed:0,itemCount:4}};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;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.children(conf.item).not("."+conf.clonedClass)},move:function(offset,time){if(conf.circular||(index+offset>=0)&&(index+offset<=self.getSize()-conf.itemCount)){return self.seekTo(index+offset,time)}else{return self}},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()-conf.itemCount+1,time)},focus:function(){current=self;return self},addItem:function(item){item=$(item);if(!conf.circular){itemWrap.append(item)}else{$(".cloned:last").before(item);$(".cloned:first").replaceWith(item.clone().addClass(conf.clonedClass))}fire.trigger("onAddItem",[item]);return self},seekTo:function(i,time,fn){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}}var props=vertical?{top:-item.position().top}:{left:-item.position().left};index=i;current=self;if(time===undefined){time=conf.speed}itemWrap.animate(props,time,conf.easing,fn||function(){fire.trigger("onSeek",[i])});return self}});$.each(['onBeforeSeek','onSeek','onAddItem'],function(i,name){if($.isFunction(conf[name])){$(self).bind(name,conf[name])}self[name]=function(fn){$(self).bind(name,fn);return self}});if(conf.circular){var cloned1=null,cloned2=null;cloned2=self.getItems().slice(0,(conf.itemCount)).clone().addClass(conf.clonedClass).appendTo(itemWrap);cloned1=self.getItems().slice(-1).clone().addClass(conf.clonedClass).prependTo(itemWrap);self.onBeforeSeek(function(e,i,time){if(e.isDefaultPrevented()){return}if(i==-1){self.seekTo(cloned1.eq(-1),time,function(){self.seekTo(self.getSize()-1,0,function(){})});return e.preventDefault()}else if(i==self.getSize()){self.seekTo(cloned2.eq(0),time,function(){self.begin(0)})}});self.seekTo(0,0)}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){window.setTimeout(function(){if(!e.isDefaultPrevented()){if(self.getSize()<=conf.itemCount){prev.addClass(conf.disabledClass);next.addClass(conf.disabledClass)}else if(!conf.circular){prev.toggleClass(conf.disabledClass,i<=0);next.toggleClass(conf.disabledClass,i>=self.getSize()-conf.itemCount)}}},1)})}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.keyboard){$(document).bind("keydown.scrollable",function(evt){if(!conf.keyboard||evt.altKey||evt.ctrlKey||$(evt.target).is(":input")){return}if(conf.keyboard!='static'&&current!=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()}})}setTimeout(function(){var vSeekIdx=Math.min(conf.initialIndex,Math.max(0,(self.getSize()-conf.itemCount)));self.seekTo(vSeekIdx)},conf.speed)}$.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.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);
