/**
 * tools.scrollable 1.1.2 - Scroll your HTML with eye candy.
 * 
 * Copyright (c) 2009 Tero Piirainen
 * http://flowplayer.org/tools/scrollable.html
 *
 * Dual licensed under MIT and GPL 2+ licenses
 * http://www.opensource.org/licenses
 *
 * Launch  : March 2008
 * Date: ${date}
 * Revision: ${revision} 
 */
(function($){$.tools=$.tools||{};$.tools.scrollable={version:'1.1.2',conf:{size:4,vertical:false,speed:400,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;function Scrollable(root,conf){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 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($.isFunction(time)){fn=time}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}if(time===undefined||$.isFunction(time)){time=conf.speed}function callback(){if(fn){fn.call(self,i)}$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;e=$.Event("onStart");$self.trigger(e,[i]);if(e.isDefaultPrevented()){return self}prev.add(prevPage).toggleClass(conf.disabledClass,i===0);next.add(nextPage).toggleClass(conf.disabledClass,i>=self.getSize()-conf.size);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},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},bind:function(name,fn){$self.bind(name,fn);return self},unbind:function(name){$self.unbind(name);return self}});$.each("onBeforeSeek,onStart,onSeek,onReload".split(","),function(i,ev){self[ev]=function(fn){return self.bind(ev,fn)}});prev.addClass(conf.disabledClass).click(function(){self.prev()});next.click(function(){self.next()});nextPage.click(function(){self.nextPage()});if(self.getSize()<conf.size){next.add(nextPage).addClass(conf.disabledClass)}prevPage.addClass(conf.disabledClass).click(function(){self.prevPage()});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;this.each(function(){el=new Scrollable($(this),conf);$(this).data("scrollable",el)});return conf.api?el:this}})(jQuery);
/**
 * jQuery TOOLS plugin :: scrollable.circular 0.5.1
 *
 * Copyright (c) 2009 Tero Piirainen
 * http://flowplayer.org/tools/scrollable.html#circular
 *
 * Dual licensed under MIT and GPL 2+ licenses
 * http://www.opensource.org/licenses
 *
 * Launch  : September 2009
 * Date: ${date}
 * Revision: ${revision}
 */
(function($){var t=$.tools.scrollable;t.plugins=t.plugins||{};t.plugins.circular={version:'0.5.1',conf:{api:false,clonedClass:'cloned'}};$.fn.circular=function(opts){var config=$.extend({},t.plugins.circular.conf),ret;$.extend(config,opts);this.each(function(){var api=$(this).scrollable(),items=api.getItems(),conf=api.getConf(),wrap=api.getItemWrap(),index=0;if(api){ret=api}if(items.length<conf.size){return false}items.slice(0,conf.size).each(function(i){$(this).clone().appendTo(wrap).click(function(){api.click(items.length+i)}).addClass(config.clonedClass)});var tail=$.makeArray(items.slice(-conf.size)).reverse();$(tail).each(function(i){$(this).clone().prependTo(wrap).click(function(){api.click(-i-1)}).addClass(config.clonedClass)});var allItems=wrap.children(conf.item);var hc=conf.hoverClass;if(hc){allItems.hover(function(){$(this).addClass(hc)},function(){$(this).removeClass(hc)})}function seek(i){var item=allItems.eq(i);if(conf.vertical){wrap.css({top:-item.position().top})}else{wrap.css({left:-item.position().left})}}seek(conf.size);$.extend(api,{move:function(offset,time,fn,click){var to=index+offset+conf.size;var exceed=to>api.getSize()-conf.size;if(to<=0||exceed){var fix=index+conf.size+(exceed?-items.length:items.length);seek(fix);to=fix+offset}if(click){allItems.removeClass(conf.activeClass).eq(to+Math.floor(conf.size/2)).addClass(conf.activeClass)}if(to===index+conf.size){return self}return api.seekTo(to,time,fn)},begin:function(time,fn){return this.seekTo(conf.size,time,fn)},end:function(time,fn){return this.seekTo(items.length,time,fn)},click:function(i,time,fn){if(!conf.clickable){return self}if(conf.size==1){return this.next()}var to=i-index,klass=conf.activeClass;to-=Math.floor(conf.size/2);return this.move(to,time,fn,true)},getIndex:function(){return index},setPage:function(page,time,fn){return this.seekTo(page*conf.size+conf.size,time,fn)},getPageAmount:function(){return Math.ceil(items.length/conf.size)},getPageIndex:function(){if(index<0){return this.getPageAmount()-1}if(index>=items.length){return 0}var i=(index+conf.size)/conf.size-1;return i},getVisibleItems:function(){var i=index+conf.size;return allItems.slice(i,i+conf.size)}});api.onStart(function(e,i){index=i-conf.size;return false});api.getNaviButtons().removeClass(conf.disabledClass)});return config.api?ret:this}})(jQuery);

/* AutoScroll */
(function(a){var b=a.tools.scrollable;b.autoscroll={conf:{autoplay:!0,interval:3e3,autopause:!0}},a.fn.autoscroll=function(c){typeof c=="number"&&(c={interval:c});var d=a.extend({},b.autoscroll.conf,c),e;this.each(function(){var b=a(this).data("scrollable");b&&(e=b);var c,f=!0;b.play=function(){c||(f=!1,c=setInterval(function(){b.next()},d.interval))},b.pause=function(){c=clearInterval(c)},b.stop=function(){b.pause(),f=!0},d.autopause&&b.getRoot().add(b.getNaviButtons()).hover(b.pause,b.play),d.autoplay&&b.play()});return d.api?e:this}})(jQuery);
