;(function(c){var b=function(a,b){this.options=c.extend(!0,{},this.defaults,b);this.container=c(a);this.dimensions={height:this.container.height(),width:this.container.width()};this.slides=this.container.find("."+this.options.slideClass).each(c.proxy(function(){this.addSlide(this)},this));this.numSlides=this.slides.length;this.currentSlide=0;this.nextSlide=1<this.numSlides?1:0;this.lastSlide=0==this.numSlides?null:this.numSlides-1;this.status={paused:!1,playing:!1,stopped:!0};if(!(1>=this.numSlides))return c.proxy(this.options.onReady, this)(),this.options.autoPlay&&this.play({},!0),this};b.prototype.defaults={autoPlay:!0,onReady:function(){},onPlay:function(){},onStop:function(){},onPause:function(){},onRestart:function(){},rotationSpeed:4E3,slideClass:"slide",transition:{direction:"left",easing:"swing",onStart:function(){},onFinish:function(){},speed:500,type:"fade"}};b.prototype.currentSlide=null;b.prototype.nextSlide=null;b.prototype.numSlides=0;b.prototype.lastSlide=null;b.prototype.container=null;b.prototype.slides=[];b.prototype.iteration= 0;b.prototype.intervalId=null;b.prototype.status=null;b.prototype.options=null;b.prototype.dimensions=null;b.prototype.addSlide=function(a){this.slides.push(a)};b.prototype.changeStatus=function(a){var b=this;c.each(this.status,function(c){b.status[c]=c==a});return this};b.prototype.transition=function(a){a=c.extend(!0,{},this.options.transition,a);doTransition=c.proxy(this.transitions[a.type],this);doTransition(a);this.currentSlide=this.nextSlide;this.nextSlide=this.currentSlide==this.lastSlide? 0:this.currentSlide+1;this.iteration++;c.proxy(a.onStart,this)();return this};b.prototype.transitions={none:function(a){this.slides.eq(this.currentSlide).hide();this.slides.eq(this.nextSlide).show();c.proxy(a.onFinish,this)},fade:function(a){this.slides.eq(this.currentSlide).fadeOut(a.speed);this.slides.eq(this.nextSlide).fadeIn(a.speed,c.proxy(a.onFinish,this))},slide:function(a){var b=this.slides.eq(this.currentSlide),f=this.slides.eq(this.nextSlide),d={},e={};this.slides.eq(this.nextSlide).css("z-index", this.iteration+1);switch(a.direction){case "up":d.top=0-this.dimensions.height;e.top=this.dimensions.height;break;case "right":d.left=this.dimensions.width;e.left=0-this.dimensions.width;break;case "down":d.top=this.dimensions.height;e.top=0-this.dimensions.height;break;default:d.left=0-this.dimensions.width,e.left=this.dimensions.width}b.animate(d,a.speed,function(){c(this).hide()});f.show().css(e).animate({top:0,left:0},a.speed,c.proxy(a.onFinish,this))},reveal:function(a){this.slides.eq(this.nextSlide).css({width:0, height:this.dimensions.height,"z-index":this.iteration+1}).show().animate({width:this.dimensions.width},a.speed,c.proxy(a.onFinish,this));return this}};b.prototype.play=function(a,b){if(!this.status.playing)this.changeStatus("playing"),c.proxy(this.options.onPlay,this)(),b||this.transition(a),this.intervalId=setInterval(c.proxy(this.transition,this),parseFloat(this.options.rotationSpeed));return this};b.prototype.pause=function(){if(!this.status.paused&&(this.changeStatus("paused"),c.proxy(this.options.onPause, this)(),null!==this.intervalId))clearInterval(this.intervalId),this.intervalId=null;return this};b.prototype.stop=function(){if(!this.status.stopped&&(this.changeStatus("stopped"),c.proxy(this.options.onStop,this)(),null!==this.intervalId))clearInterval(this.intervalId),this.intervalId=null;return this.reset()};b.prototype.reset=function(){if(0!=this.currentSlide)this.nextSlide=0;return this};b.prototype.restart=function(a){c.proxy(this.options.onRestart,this)();return this.stop().play(a)};b.prototype.first= function(a){return this.goTo(0,a)};b.prototype.previous=function(a){return this.goTo(0===this.currentSlide?this.lastSlide:this.currentSlide-1,a)};b.prototype.goTo=function(a,b){if(a==this.currentSlide)return this;this.nextSlide=a;return!this.status.playing?this.transition(b):this.pause().play(b)};b.prototype.next=function(a){return this.goTo(this.nextSlide,a)};b.prototype.last=function(a){return this.goTo(this.lastSlide,a)};c.fn.revolver=function(a){return this.each(function(){c.data(this,"revolver")|| c.data(this,"revolver",new b(this,a))})}})(jQuery);
