jquery.backstretch.min.js (16824B)
1 !function(t,e,i){"use strict";var r=/^.*(youtu\.be\/|youtube\.com\/v\/|youtube\.com\/embed\/|youtube\.com\/watch\?v=|youtube\.com\/watch\?.*\&v=)([^#\&\?]*).*/i;t.fn.backstretch=function(r,o){var a,n=arguments;return 0===t(e).scrollTop()&&e.scrollTo(0,0),this.each(function(e){var s=t(this),h=s.data("backstretch");if(h){if("string"==typeof n[0]&&"function"==typeof h[n[0]]){var c=h[n[0]].apply(h,Array.prototype.slice.call(n,1));return c===h&&(c=i),void(c!==i&&((a=a||[])[e]=c))}o=t.extend(h.options,o),h.hasOwnProperty("destroy")&&h.destroy(!0)}if(!r||r&&0===r.length){var d=s.css("background-image");d&&"none"!==d?r=[{url:s.css("backgroundImage").replace(/url\(|\)|"|'/g,"")}]:t.error("No images were supplied for Backstretch, or element must have a CSS-defined background image.")}h=new m(this,r,o||{}),s.data("backstretch",h)}),a?1===a.length?a[0]:a:this},t.backstretch=function(e,i){return t("body").backstretch(e,i).data("backstretch")},t.expr[":"].backstretch=function(e){return t(e).data("backstretch")!==i},t.fn.backstretch.defaults={duration:5e3,transition:"fade",transitionDuration:0,animateFirst:!0,alignX:.5,alignY:.5,paused:!1,start:0,preload:2,preloadSize:1,resolutionRefreshRate:2500,resolutionChangeRatioThreshold:.1};var o,a,n,s,h,c,d={wrap:{left:0,top:0,overflow:"hidden",margin:0,padding:0,height:"100%",width:"100%",zIndex:-999999},itemWrapper:{position:"absolute",display:"none",margin:0,padding:0,border:"none",width:"100%",height:"100%",zIndex:-999999},item:{position:"absolute",margin:0,padding:0,border:"none",width:"100%",height:"100%",maxWidth:"none"}},u=(o=function(t){for(var e=1;e<t.length;e++){for(var i=t[e],r=e;t[r-1]&&parseInt(t[r-1].width,10)>parseInt(i.width,10);)t[r]=t[r-1],--r;t[r]=i}return t},a=function(t,i,r){for(var o,a,n=e.devicePixelRatio||1,s=Y(),h=(P(),i>t?"portrait":t>i?"landscape":"square"),c=0,d=0;d<r.length&&("string"==typeof(a=r[d])&&(a=r[d]={url:a}),a.pixelRatio&&"auto"!==a.pixelRatio&&parseFloat(a.pixelRatio)!==n||a.deviceOrientation&&a.deviceOrientation!==s||a.windowOrientation&&a.windowOrientation!==s||a.orientation&&a.orientation!==h||(c=d,o=t,"auto"===a.pixelRatio&&(t*=n),!(a.width>=o)));d++);return r[Math.min(d,c)]},n=function(t,e){if("string"==typeof t)t=t.replace(/{{(width|height)}}/g,e);else if(t instanceof Array)for(var i=0;i<t.length;i++)t[i].src?t[i].src=n(t[i].src,e):t[i]=n(t[i],e);return t},function(e,i){for(var r=e.width(),s=e.height(),h=[],c=function(t,e){return"width"===e?r:"height"===e?s:t},d=0;d<i.length;d++)if(t.isArray(i[d])){i[d]=o(i[d]);var u=a(r,s,i[d]);h.push(u)}else{"string"==typeof i[d]&&(i[d]={url:i[d]});var p=t.extend({},i[d]);p.url=n(p.url,c),h.push(p)}return h}),p=function(t){return r.test(t.url)||t.isVideo},l=(s=[],h=function(t){for(var e=0;e<s.length;e++)if(s[e].src===t.src)return s[e];return s.push(t),t},c=function(t,e,i){"function"==typeof e&&e.call(t,i)},function e(i,r,o,a,n){if(void 0!==i){t.isArray(i)||(i=[i]),arguments.length<5&&"function"==typeof arguments[arguments.length-1]&&(n=arguments[arguments.length-1]),r="function"!=typeof r&&r?r:0,o="function"==typeof o||!o||o<0?i.length:Math.min(o,i.length),a="function"!=typeof a&&a?a:1,r>=i.length&&(r=0,o=0),a<0&&(a=o),a=Math.min(a,o);var s=i.slice(r+a,o-a);if(i=i.slice(r,a),o=i.length)for(var d,u=0,l=function(){++u===o&&(c(i,n,!s),e(s,0,0,a,n))},g=0;g<i.length;g++)p(i[g])||((d=new Image).src=i[g].url,(d=h(d)).complete?l():t(d).on("load error",l));else c(i,n,!0)}}),g=function(e){for(var i=[],r=0;r<e.length;r++)"string"==typeof e[r]?i.push({url:e[r]}):t.isArray(e[r])?i.push(g(e[r])):i.push(y(e[r]));return i},y=function(t,r){return(t.centeredX||t.centeredY)&&(e.console&&e.console.log&&e.console.log("jquery.backstretch: `centeredX`/`centeredY` is deprecated, please use `alignX`/`alignY`"),t.centeredX&&(t.alignX=.5),t.centeredY&&(t.alignY=.5)),t.speed!==i&&(e.console&&e.console.log&&e.console.log("jquery.backstretch: `speed` is deprecated, please use `transitionDuration`"),t.transitionDuration=t.speed,t.transition="fade"),t.resolutionChangeRatioTreshold!==i&&(e.console.log("jquery.backstretch: `treshold` is a typo!"),t.resolutionChangeRatioThreshold=t.resolutionChangeRatioTreshold),t.fadeFirst!==i&&(t.animateFirst=t.fadeFirst),t.fade!==i&&(t.transitionDuration=t.fade,t.transition="fade"),f(t)},f=function(t,e){return"left"===t.alignX?t.alignX=0:"center"===t.alignX?t.alignX=.5:"right"===t.alignX?t.alignX=1:(t.alignX!==i||e)&&(t.alignX=parseFloat(t.alignX),isNaN(t.alignX)&&(t.alignX=.5)),"top"===t.alignY?t.alignY=0:"center"===t.alignY?t.alignY=.5:"bottom"===t.alignY?t.alignY=1:(t.alignX!==i||e)&&(t.alignY=parseFloat(t.alignY),isNaN(t.alignY)&&(t.alignY=.5)),t},m=function(i,r,o){this.options=t.extend({},t.fn.backstretch.defaults,o||{}),this.firstShow=!0,y(this.options,!0),this.images=g(t.isArray(r)?r:[r]),this.options.paused&&(this.paused=!0),this.options.start>=this.images.length&&(this.options.start=this.images.length-1),this.options.start<0&&(this.options.start=0),this.isBody=i===document.body;var a=t(e);this.$container=t(i),this.$root=this.isBody?C?a:t(document):this.$container,this.originalImages=this.images,this.images=u(this.options.alwaysTestWindowResolution?a:this.$root,this.originalImages),l(this.images,this.options.start||0,this.options.preload||1);var n=this.$container.children(".backstretch").first();if(this.$wrap=n.length?n:t('<div class="backstretch"></div>').css(this.options.bypassCss?{}:d.wrap).appendTo(this.$container),!this.options.bypassCss){if(!this.isBody){var s=this.$container.css("position"),h=this.$container.css("zIndex");this.$container.css({position:"static"===s?"relative":s,zIndex:"auto"===h?0:h}),this.$wrap.css({zIndex:-999998})}this.$wrap.css({position:this.isBody&&C?"fixed":"absolute"})}this.index=this.options.start,this.show(this.index),a.on("resize.backstretch",t.proxy(this.resize,this)).on("orientationchange.backstretch",t.proxy(function(){this.isBody&&0===e.pageYOffset&&(e.scrollTo(0,1),this.resize())},this))};m.prototype={resize:function(){try{var r=this.options.alwaysTestWindowResolution?t(e):this.$root,o=r.width(),a=r.height(),n=o/(this._lastResizeContainerWidth||0),s=a/(this._lastResizeContainerHeight||0),h=this.options.resolutionChangeRatioThreshold||0;if((o!==this._lastResizeContainerWidth||a!==this._lastResizeContainerHeight)&&(Math.abs(n-1)>=h||isNaN(n)||Math.abs(s-1)>=h||isNaN(s))&&(this._lastResizeContainerWidth=o,this._lastResizeContainerHeight=a,this.images=u(r,this.originalImages),this.options.preload&&l(this.images,(this.index+1)%this.images.length,this.options.preload),1===this.images.length&&this._currentImage.url!==this.images[0].url)){var c=this;clearTimeout(c._selectAnotherResolutionTimeout),c._selectAnotherResolutionTimeout=setTimeout(function(){c.show(0)},this.options.resolutionRefreshRate)}var d={left:0,top:0,right:"auto",bottom:"auto"},p=this.isBody?this.$root.width():this.$root.innerWidth(),g=this.isBody?e.innerHeight?e.innerHeight:this.$root.height():this.$root.innerHeight(),y=p,f=y/this.$itemWrapper.data("ratio"),m=t.Event("backstretch.resize",{relatedTarget:this.$container[0]}),v=this._currentImage.alignX===i?this.options.alignX:this._currentImage.alignX,b=this._currentImage.alignY===i?this.options.alignY:this._currentImage.alignY;f>=g?d.top=-(f-g)*b:(((y=(f=g)*this.$itemWrapper.data("ratio"))-p)/2,d.left=-(y-p)*v),this.options.bypassCss||this.$wrap.css({width:p,height:g}).find(">.backstretch-item").not(".deleteable").each(function(){t(this).find("img,video,iframe").css({width:y,height:f}).css(d)}),this.$container.trigger(m,this)}catch(t){}return this},show:function(e,r){if(!(Math.abs(e)>this.images.length-1)){var o=this,a=o.$wrap.find(">.backstretch-item").addClass("deleteable"),n=o.videoWrapper,s={relatedTarget:o.$container[0]};o.$container.trigger(t.Event("backstretch.before",s),[o,e]),this.index=e;var h=o.images[e];clearTimeout(o._cycleTimeout),delete o.videoWrapper;var c=p(h);return c?(o.videoWrapper=new v(h),o.$item=o.videoWrapper.$video.css("pointer-events","none")):o.$item=t("<img />"),o.$itemWrapper=t('<div class="backstretch-item">').append(o.$item),this.options.bypassCss?o.$itemWrapper.css({display:"none"}):(o.$itemWrapper.css(d.itemWrapper),o.$item.css(d.item)),o.$item.bind(c?"canplay":"load",function(h){var d=t(this).parent(),u=d.data("options");r&&(u=t.extend({},u,r));var p=this.naturalWidth||this.videoWidth||this.width,l=this.naturalHeight||this.videoHeight||this.height;d.data("ratio",p/l);var g=function(t){return u[t]!==i?u[t]:o.options[t]},y=g("transition"),f=g("transitionEasing"),m=g("transitionDuration"),v=function(){n&&(n.stop(),n.destroy()),a.remove(),!o.paused&&o.images.length>1&&o.cycle(),o.options.bypassCss||o.isBody||o.$container.css("background-image","none"),t(["after","show"]).each(function(){o.$container.trigger(t.Event("backstretch."+this,s),[o,e])}),c&&o.videoWrapper.play()};o.firstShow&&!o.options.animateFirst||!m||!y?(d.show(),v()):function(e){var r=e.transition||"fade";"string"==typeof r&&r.indexOf("|")>-1&&(r=r.split("|")),r instanceof Array&&(r=r[Math.round(Math.random()*(r.length-1))]);var o=e.new,a=e.old?e.old:t([]);switch(r.toString().toLowerCase()){default:case"fade":o.fadeIn({duration:e.duration,complete:e.complete,easing:e.easing||i});break;case"fadeinout":case"fade_in_out":var n=function(){o.fadeIn({duration:e.duration/2,complete:e.complete,easing:e.easing||i})};a.length?a.fadeOut({duration:e.duration/2,complete:n,easing:e.easing||i}):n();break;case"pushleft":case"push_left":case"pushright":case"push_right":case"pushup":case"push_up":case"pushdown":case"push_down":case"coverleft":case"cover_left":case"coverright":case"cover_right":case"coverup":case"cover_up":case"coverdown":case"cover_down":var s=r.match(/^(cover|push)_?(.*)$/),h="left"===s[2]?"right":"right"===s[2]?"left":"down"===s[2]?"top":"up"===s[2]?"bottom":"right",c={display:""},d={};if(c[h]="-100%",d[h]=0,o.css(c).animate(d,{duration:e.duration,complete:function(){o.css(h,""),e.complete.apply(this,arguments)},easing:e.easing||i}),"push"===s[1]&&a.length){var u={};u[h]="100%",a.animate(u,{duration:e.duration,complete:function(){a.css("display","none")},easing:e.easing||i})}}}({new:d,old:a,transition:y,duration:m,easing:f,complete:v}),o.firstShow=!1,o.resize()}),o.$itemWrapper.appendTo(o.$wrap),o.$item.attr("alt",h.alt||""),o.$itemWrapper.data("options",h),c||o.$item.attr("src",h.url),o._currentImage=h,o}},current:function(){return this.index},next:function(){var t=Array.prototype.slice.call(arguments,0);return t.unshift(this.index<this.images.length-1?this.index+1:0),this.show.apply(this,t)},prev:function(){var t=Array.prototype.slice.call(arguments,0);return t.unshift(0===this.index?this.images.length-1:this.index-1),this.show.apply(this,t)},pause:function(){return this.paused=!0,this.videoWrapper&&this.videoWrapper.pause(),this},resume:function(){return this.paused=!1,this.videoWrapper&&this.videoWrapper.play(),this.cycle(),this},cycle:function(){if(this.images.length>1){clearTimeout(this._cycleTimeout);var e=this._currentImage&&this._currentImage.duration||this.options.duration,i=p(this._currentImage),r=function(){this.$item.off(".cycle"),this.paused||this.next()};if(i){if(!this._currentImage.loop){var o=0;this.$item.on("playing.cycle",function(){var e=t(this).data("player");clearTimeout(o),o=setTimeout(function(){e.pause(),e.$video.trigger("ended")},1e3*(e.getDuration()-e.getCurrentTime()))}).on("ended.cycle",function(){clearTimeout(o)})}this.$item.on("error.cycle initerror.cycle",t.proxy(r,this))}i&&!this._currentImage.duration?this.$item.on("ended.cycle",t.proxy(r,this)):this._cycleTimeout=setTimeout(t.proxy(r,this),e)}return this},destroy:function(i){t(e).off("resize.backstretch orientationchange.backstretch"),this.videoWrapper&&this.videoWrapper.destroy(),clearTimeout(this._cycleTimeout),i||this.$wrap.remove(),this.$container.removeData("backstretch")}};var v=function(){this.init.apply(this,arguments)};v.prototype.init=function(o){var a,n=this,s=function(){n.$video=a,n.video=a[0]},h="video";if(o.url instanceof Array||!r.test(o.url)||(h="youtube"),n.type=h,"youtube"===h){v.loadYoutubeAPI(),n.ytId=o.url.match(r)[2];var c="https://www.youtube.com/embed/"+n.ytId+"?rel=0&autoplay=0&showinfo=0&controls=0&modestbranding=1&cc_load_policy=0&disablekb=1&iv_load_policy=3&loop=0&enablejsapi=1&origin="+encodeURIComponent(e.location.origin);n.__ytStartMuted=!!o.mute||o.mute===i,a=t("<iframe />").attr({src_to_load:c}).css({border:0,margin:0,padding:0}).data("player",n),o.loop&&a.on("ended.loop",function(){n.__manuallyStopped||n.play()}),n.ytReady=!1,s(),e.YT?(n._initYoutube(),a.trigger("initsuccess")):t(e).one("youtube_api_load",function(){n._initYoutube(),a.trigger("initsuccess")})}else{a=t("<video>").prop("autoplay",!1).prop("controls",!1).prop("loop",!!o.loop).prop("muted",!!o.mute||o.mute===i).prop("preload","auto").prop("poster",o.poster||"");for(var d=o.url instanceof Array?o.url:[o.url],u=0;u<d.length;u++){var p=d[u];"string"==typeof p&&(p={src:p}),t("<source>").attr("src",p.src).attr("type",p.type||null).appendTo(a)}a[0].canPlayType&&d.length?a.trigger("initsuccess"):a.trigger("initerror"),s()}},v.prototype._initYoutube=function(){var i=this,r=e.YT;i.$video.attr("src",i.$video.attr("src_to_load")).removeAttr("src_to_load");var o=!!i.$video[0].parentNode;if(!o){var a=t("<div>").css("display","none !important").appendTo(document.body);i.$video.appendTo(a)}var n=new r.Player(i.video,{events:{onReady:function(){i.__ytStartMuted&&n.mute(),o||(i.$video[0].parentNode===a[0]&&i.$video.detach(),a.remove()),i.ytReady=!0,i._updateYoutubeSize(),i.$video.trigger("canplay")},onStateChange:function(t){switch(t.data){case r.PlayerState.PLAYING:i.$video.trigger("playing");break;case r.PlayerState.ENDED:i.$video.trigger("ended");break;case r.PlayerState.PAUSED:i.$video.trigger("pause");break;case r.PlayerState.BUFFERING:i.$video.trigger("waiting");break;case r.PlayerState.CUED:i.$video.trigger("canplay")}},onPlaybackQualityChange:function(){i._updateYoutubeSize(),i.$video.trigger("resize")},onError:function(t){i.hasError=!0,i.$video.trigger({type:"error",error:t})}}});return i.ytPlayer=n,i},v.prototype._updateYoutubeSize=function(){var t=this;switch(t.ytPlayer.getPlaybackQuality()||"medium"){case"small":t.video.videoWidth=426,t.video.videoHeight=240;break;case"medium":t.video.videoWidth=640,t.video.videoHeight=360;break;default:case"large":t.video.videoWidth=854,t.video.videoHeight=480;break;case"hd720":t.video.videoWidth=1280,t.video.videoHeight=720;break;case"hd1080":t.video.videoWidth=1920,t.video.videoHeight=1080;break;case"highres":t.video.videoWidth=2560,t.video.videoHeight=1440}return t},v.prototype.play=function(){var t=this;return t.__manuallyStopped=!1,"youtube"===t.type?t.ytReady&&(t.$video.trigger("play"),t.ytPlayer.playVideo()):t.video.play(),t},v.prototype.pause=function(){var t=this;return t.__manuallyStopped=!1,"youtube"===t.type?t.ytReady&&t.ytPlayer.pauseVideo():t.video.pause(),t},v.prototype.stop=function(){var t=this;return t.__manuallyStopped=!0,"youtube"===t.type?t.ytReady&&(t.ytPlayer.pauseVideo(),t.ytPlayer.seekTo(0)):(t.video.pause(),t.video.currentTime=0),t},v.prototype.destroy=function(){return this.ytPlayer&&this.ytPlayer.destroy(),this.$video.remove(),this},v.prototype.getCurrentTime=function(t){return"youtube"!==this.type?this.video.currentTime:this.ytReady?this.ytPlayer.getCurrentTime():0},v.prototype.setCurrentTime=function(t){var e=this;return"youtube"===e.type?e.ytReady&&e.ytPlayer.seekTo(t,!0):e.video.currentTime=t,e},v.prototype.getDuration=function(){return"youtube"!==this.type?this.video.duration:this.ytReady?this.ytPlayer.getDuration():0},v.loadYoutubeAPI=function(){if(!e.YT){t("script[src*=www\\.youtube\\.com\\/iframe_api]").length||t('<script type="text/javascript" src="https://www.youtube.com/iframe_api">').appendTo("body");var i=setInterval(function(){e.YT&&e.YT.loaded&&(t(e).trigger("youtube_api_load"),clearTimeout(i))},50)}};var b,w,_,$,T,k,x,W,R,I,Y=function(){if("matchMedia"in e){if(e.matchMedia("(orientation: portrait)").matches)return"portrait";if(e.matchMedia("(orientation: landscape)").matches)return"landscape"}return screen.height>screen.width?"portrait":"landscape"},P=function(){return e.innerHeight>e.innerWidth?"portrait":e.innerWidth>e.innerHeight?"landscape":"square"},C=(b=navigator.userAgent,w=navigator.platform,_=b.match(/AppleWebKit\/([0-9]+)/),$=!!_&&_[1],T=b.match(/Fennec\/([0-9]+)/),k=!!T&&T[1],x=b.match(/Opera Mobi\/([0-9]+)/),W=!!x&&x[1],R=b.match(/MSIE ([0-9]+)/),I=!!R&&R[1],!((w.indexOf("iPhone")>-1||w.indexOf("iPad")>-1||w.indexOf("iPod")>-1)&&$&&$<534||e.operamini&&"[object OperaMini]"==={}.toString.call(e.operamini)||x&&W<7458||b.indexOf("Android")>-1&&$&&$<533||k&&k<6||"palmGetResource"in e&&$&&$<534||b.indexOf("MeeGo")>-1&&b.indexOf("NokiaBrowser/8.5.0")>-1||I&&I<=6))}(jQuery,window);