(function(a){var b=function(a,b){this.__GifMovieInit.apply(this,arguments)};b.prototype.__GifMovieInit=function(a,b){this.$preview=a,this.$gif=null,this.url=b,this.__states={loaded:!1,loading:!1,playing:!1};var c=this.$preview.css("z-index");this.__zIndex=c==="auto"||c===0?10:c,this.width=this.$preview[0].getAttribute("width")||this.$preview.width(),this.height=this.$preview[0].getAttribute("height")||this.$preview.height(),this.$preview.css({position:"relative","z-index":this.__zIndex})},b.prototype.__createMovieElement=function(){this.$gif=a('<img src="about:blank" />').attr({width:this.width,height:this.height}).css({position:"absolute","z-index":this.__zIndex-1}).insertAfter(this.$preview);return this.$gif},b.prototype.state=function(a,b){if(arguments.length===1)return this.__states[a];var c=this.__states[a];c!==b&&(this.__states[a]=b,this.onStateChange(a,b,c));return this},b.prototype.onStateChange=function(a,b,c){},b.prototype.load=function(){if(!this.state("loaded")&&!this.state("loading")){var b=this,c=a.Deferred();b.state("loading",!0),(this.$gif||this.__createMovieElement()).attr({src:this.url}).unbind(".GifMovie").bind("load.GifMovie",function(){b.state("loading",!1),b.state("loaded",!0),c.resolve()});return c.promise()}return this},b.prototype.play=function(){var b=this;this.state("playing")||a.when(this.load()).done(function(){b.adjustMoviePosition(),b.$gif.css({"z-index":b.__zIndex+1}),b.state("playing",!0)});return this},b.prototype.stop=function(){this.state("playing")&&this.state("loaded")&&(this.$gif.unbind(".GifMovie").attr("src","about:blank").css("z-index",this.__zIndex-1),this.state("loaded",!1),this.state("playing",!1));return this},b.prototype.adjustMoviePosition=function(){var a=this.$preview.position();this.$gif&&this.$gif.css({top:a.top,left:a.left});return this};var c=function(a,b){this.__GifPlayerInit.apply(this,arguments)};c.prototype.__getMovieUrl=function(){if(typeof this._options.url=="string"&&a.trim(this._options.url)!=="")return this._options.url;var b=["href","src","rel","alt"];while(b.length){var c=a.trim(this._$element.attr(b.shift()));if(c!=="")return c}throw"Unable to initailize player: can't get URL (tried to retrieve it from '"+b.join("', '")+"' attributes)."},c.prototype.__getMoviePreview=function(){var a=this._$element.find("img:eq(0)");if(!!a[0])return a;throw"Unable to initailize player: can't find preview image."},c.prototype.__GifPlayerInit=function(a,c){this._$element=a,this._options=c;var d=this._$element.css("position");this._movie=new b(this.__getMoviePreview(),this.__getMovieUrl()),this._$element.css({display:this._options.block?"block":"inline-block",position:d!=="relative"&&d!=="absolute"?"relative":d,width:this._movie.width,height:this._movie.height}).append(this._options.controlsTemplate),this.__createEventListeners()},c.prototype.__createEventListeners=function(){var b=this;this._$element.bind("loadGif",a.proxy(this._movie.load,this._movie)),this._$element.bind("playGif",a.proxy(this._movie.play,this._movie)),this._$element.bind("stopGif",a.proxy(this._movie.stop,this._movie)),this._$element.bind("fscreenGif",function(){b._movie.state("fullscreen",!b._movie.state("fullscreen"))}),this._movie.onStateChange=function(a,c){b._options[a+"Class"]&&b._$element[c?"addClass":"removeClass"](b._options[a+"Class"]);switch(a){case"fullscreen":b.__updatePageScrolling(c),c&&b.__recalculateRatio(),b.__updatePreviewPosition(),b._movie.adjustMoviePosition()}b._$element.trigger("stateChangeGif",[a,c])},this._$element.bind("click",function(c){var d=a(c.target);d.hasClass(b._options.playControlClass)&&b._$element.trigger(b._movie.state("playing")?"stopGif":"playGif"),d.hasClass(b._options.fullscreenControlClass)&&b._$element.trigger("fscreenGif");return!1}),a(window).resize(function(){b._movie.state("fullscreen")&&(b.__recalculateRatio(),b.__updatePreviewPosition(),b._movie.adjustMoviePosition())})},c.prototype.__updatePageScrolling=function(b){a("body").css({overflow:b?"hidden":""})},c.prototype.__updatePreviewPosition=function(){this._movie.$preview.css({top:this._movie.state("fullscreen")&&this._movie.state("horizontal")?(window.innerHeight-this._movie.$preview.height())/2:""})},c.prototype.__recalculateRatio=function(){var a=window.innerWidth||document.documentElement.clientWidth,b=window.innerHeight||document.documentElement.clientHeight,c=a*this._movie.height/(b*this._movie.width);c<1?(this._movie.state("horizontal",!0),this._movie.state("vertical",!1)):c>=1&&(this._movie.state("horizontal",!1),this._movie.state("vertical",!0));return c},a.fn.gifPlayer=function(b){var d=a.extend({url:null,fullscreen:!1,preload:!1,play:!1,controlsTemplate:'<span class="gp-controls"><span class="gp-play"/><span class="gp-fullscreen"/></span>',playControlClass:"gp-play",fullscreenControlClass:"gp-fullscreen",loadingClass:"gp-loading",playingClass:"gp-playing",fullscreenClass:"gp-full",horizontalClass:"gp-horizontal",verticalClass:"gp-vertical"},b);return this.each(function(){var b=a(this),e=new c(b,d);d.play?b.trigger("playGif"):d.preload&&b.trigger("loadGif"),d.fullscreen&&b.trigger("fscreenGif");return this})}})(jQuery)

// good for throat, blood will flow
$(function() {
	$('.gifplayer').gifPlayer().addClass('gif-player');
});
