(function(jQuery,window){function Karusell(em,opts){this.element=$(em).addClass("karusell");this.opts=jQuery.extend({delay:3000,easing:"easeInOutQuint",transitionSpeed:500,transitionNext:"right",transitionPrevious:"left",pageSelector:".page"},opts);this.setup();}
Karusell.transitions={right:function(karusell,current,next,cb){next.css({left:current.width()});next.animate({left:"-="+current.width(),easing:{left:karusell.opts.easing}},karusell.opts.transitionSpeed,cb);},left:function(karusell,current,next,cb){next.css({left:-current.width()});next.animate({left:"+="+current.width(),easing:{left:karusell.opts.easing}},karusell.opts.transitionSpeed,cb);},fade:function(karusell,current,next,cb){next.css({opacity:0});next.animate({opacity:1,easing:{opacity:karusell.opts.easing}},karusell.opts.transitionSpeed,cb);}};jQuery.extend(Karusell.prototype,{setup:function(){var self=this;this.element.hover(function(){clearTimeout(self._timer);self._paused=true;},function(){self._paused=false;if(!self._running){self.start();}});this.start();},start:function(){var self=this;clearTimeout(this._timer);if(this._running||this._paused){return;}
this._timer=setTimeout(function(){self.nextPage(true);},this.opts.delay);},previousPage:function(){return this.toPage(this.currentIndex()-1,true);},nextPage:function(){return this.toPage(this.currentIndex()+1,false);},pages:function(){return this.element.find(">*").filter(this.opts.pageSelector);},currentPage:function(){var pages=this.pages();return pages.filter(".current").add(pages.last()).first();},currentIndex:function(){return this.pages().index(this.currentPage());},toPage:function(idx,reverse){if(this._running){return;}
clearTimeout(this._timer);var pages=this.pages().stop(false,true);while(idx>=pages.length){idx-=pages.length;}
while(idx<0){idx+=pages.length;}
var current=this.currentPage();var next=$(pages[idx]);if(next[0]==current[0]){return;}
var transition=Karusell.transitions[reverse?this.opts.transitionPrevious:this.opts.transitionNext];var self=this;if(this._running){return;}
this._running=true;next.addClass("next");transition(this,current,next,function(){self._running=false;next.removeClass("next").addClass("current");current.removeClass("current");self.start();});}});jQuery.fn.karusell=function(opts){var key="karusell";for(var i=0;i<this.length;++i){var em=this[i];var karusell=jQuery.data(em,key);if(!karusell){karusell=new Karusell(this,opts);jQuery.data(em,key,karusell);}
if(opts&&opts.call)opts.call(this,karusell);};return this;};jQuery.fn.karusell.transitions=Karusell.transitions;})(jQuery,window);
