-
Notifications
You must be signed in to change notification settings - Fork 24
/
jquery-video-lightning.min.js
9 lines (9 loc) · 8.31 KB
/
jquery-video-lightning.min.js
1
2
3
4
5
6
7
8
9
/*
* jQuery Video Lightning - v2.0.0
* Turn any element into a lightbox or popover link for Youtube and Vimeo videos.
* https://github.com/musocrat/jquery-video-lightning
*
* Made by Andrew Carpenter
* Under MIT License
*/
!function(a,b,c){function d(b,c){this.element=b,this.base_settings=a.extend({},f,c),this.init()}var e="jqueryVideoLightning",f={id:"y-dQw4w9WgXcQ",width:"640px",height:"390px",autoplay:0,autohide:2,controls:1,iv_load_policy:1,loop:0,modestbranding:0,playlist:"",related:0,showinfo:1,start_time:0,theme:"dark",color:"",byline:1,portrait:1,effect_in:"fadeIn",ease_in:300,ease_out:0,z_index:21e3,backdrop_color:"#000",backdrop_opacity:1,glow:0,glow_color:"#fff",rick_roll:0,cover:0,popover:0,popover_x:"auto",popover_y:"auto"};return d.prototype={init:function(){function b(){a(this.player(e,f,h,i,j))}function d(){function b(){var a,b;return a=this.popoverPosition(g),b=f.find(".video-popover-tail").attr("points"),void 0!==b?(b=b.substring(b.indexOf(" ")+1),g.videoTargetPositionsX[a[0]]+","+g.videoTargetPositionsY[a[1]]+" "+b):void 0}f.find(".video-popover-tail").attr({points:a.proxy(b,this)})}var e,f,g,h,i,j;e=a(this.element),f=e.wrap("<span class='video-target'></span>").parent(".video-target"),f.css("cursor","pointer"),g=this.settings(),h=g.videoId.substring(2),i="v"===g.videoId.charAt(0).toLowerCase()?"vimeo":"youtube",j=g.videoPopover,a("style:contains('.video-wrapper')").length<1&&a("<style type='text/css'>.video-wrapper{ display: none; position: fixed; min-width: 100%; min-height: 100%; top: 0; bottom: 0; left: 0; z-index: "+g.videoZIndex+"; "+"} "+".video-frame{ "+"background: #000000;"+"</style>").appendTo("head"),1===g.videoCover&&this.coverImage(i,h,f),f.on("click",a.proxy(b,this)),a(c).on("scroll mousewheel DOMMouseScroll MozMousePixelScroll",a.proxy(d,this))},player:function(a,b,c,d,e){var f;f=1===e?this.popover():this.settings();{if(!b.find(".video-wrapper").is(":visible"))return b.append('<div class="video-wrapper"><div class="video-frame"><div class="video"></div></div></div>'),b.find(".video-wrapper").css({backgroundColor:"rgba("+this.colorConverter(f.videoBackdropColor).red+","+this.colorConverter(f.videoBackdropColor).blue+","+this.colorConverter(f.videoBackdropColor).green+","+f.videoBackdropOpacity+")"}),b.find(".video-frame").css({position:"absolute",top:f.videoFrameTop,left:f.videoFrameLeft,width:f.videoWidth+"px",height:f.videoHeight+"px",marginTop:f.videoFrameMarginTop,marginLeft:f.videoFrameMarginLeft,boxShadow:"0px 0px "+f.videoGlow+"px "+f.videoGlow/5+"px "+this.fullHex(f.videoGlowColor)}),b.find(".video-wrapper")[f.videoEffectIn](f.videoEaseIn),b.find(".video").append(this[d+"Player"](f,c));if(1!==f.videoRickRoll)return this.destroy(b)}},settings:function(){function c(b){return a.each(b,a.proxy(function(b,c){f="video"+b.toLowerCase().charAt(0).toUpperCase()+b.slice(1).replace(/_([a-z])/g,function(a,b){return b.toUpperCase()}),a(this).data(f,c)},this)),a(this).data()}var d,e,f,g;return d=a(this.element),e=this.base_settings,e=d.extend({},c(e),d.data()),e.videoWidth=parseInt(e.videoWidth,10),e.videoHeight=parseInt(e.videoHeight,10),g=e.videoHeight/e.videoWidth,e.videoWidth>a(b).width()-30&&(e.videoWidth=a(b).width()-30,e.videoHeight=Math.round(g*e.videoWidth)),e.videoFrameTop="50%",e.videoFrameLeft="50%",e.videoFrameMarginTop="-"+e.videoHeight/2+"px",e.videoFrameMarginLeft="-"+e.videoWidth/2+"px",e},popover:function(){var b,c,d;return b=a(this.element),c=b.parent(".video-target"),d=this.settings(),c.append('<div class="video-popover-tail-wrapper"><svg xmlns="http://www.w3.org/2000/svg" version="1.1"><polygon class="video-popover-tail" points="" fill="" stroke="" stroke-width="" /></svg></div>'),c.find(".video-popover-tail-wrapper").css({position:"fixed",top:0,left:0,width:"100%",height:"100%","z-index":0}),this.popoverTail(d),d.videoFrameMarginTop="0",d.videoFrameMarginLeft="0",d.videoBackdropOpacity=0,d.videoEaseIn=0,d},popoverPosition:function(c){function d(b){return a.map(b,function(a){return a})}function e(b,c,e){var f=[];return q=d(b).sort(function(a,b){return Math.abs(a+c-e)-Math.abs(b+c-e)}),a.each(q,function(c,d){a.each(b,function(a,b){b===d&&f.push(a)})}),f}function f(a,b,d,e,f,g,h){var i,j,k;i=a[b],k=c["video"+g]/c["video"+f],0>i?(j=c["video"+f],c["video"+f]=c["video"+f]+i-10,c["video"+g]=Math.round(k*c["video"+f]),c["videoFrame"+h]=d-e>i?i+j-c["video"+f]+"px":i+j/2-c["video"+f]/2+"px"):c["videoFrame"+h]=i+"px"}var g,h,i,j,k,l,m,n,o,p,q;return g=a(this.element),h=g.parent(".video-target"),i=h.offset().left-a(b).scrollLeft(),j=h.offset().top-a(b).scrollTop(),m=a(b).width()/2,n=a(b).height()/2,o=c.videoWidth/2,p=c.videoHeight/2,c.videoTargetPositionsX={left:Math.round(i),center:Math.round(i+h.outerWidth()/2),right:Math.round(i+h.outerWidth())},c.videoTargetPositionsY={top:Math.round(j),center:Math.round(j+h.outerHeight()/2),bottom:Math.round(j+h.outerHeight())},c.videoPositionsX={left:c.videoTargetPositionsX.left-c.videoWidth-15,center:c.videoTargetPositionsX.center-o,right:c.videoTargetPositionsX.right+15},c.videoPositionsY={top:c.videoTargetPositionsY.top-c.videoHeight-15,center:c.videoTargetPositionsY.center-p,bottom:c.videoTargetPositionsY.bottom+15},c.videoOptimalPositionsX=e(c.videoPositionsX,o,m),c.videoOptimalPositionsY=e(c.videoPositionsY,p,n),k="auto"===c.videoPopoverX?c.videoOptimalPositionsX[0]:c.videoPopoverX,l="center"===c.videoOptimalPositionsX[0]&&"center"===c.videoOptimalPositionsY[0]?"auto"===c.videoPopoverY?c.videoOptimalPositionsY[1]:c.videoPopoverY:"auto"===c.videoPopoverY?c.videoOptimalPositionsY[0]:c.videoPopoverY,f(c.videoPositionsX,k,i,o,"Width","Height","Left"),f(c.videoPositionsY,l,j,p,"Height","Width","Top"),[k,l,o,p]},popoverTail:function(b){function c(){var a,c,d,e;return"left"===f?(a=b.videoPositionsX[f]+b.videoWidth,c=b.videoPositionsX[f]+b.videoWidth-25):"right"===f?(a=b.videoPositionsX[f],c=b.videoPositionsX[f]+25):(a=b.videoPositionsX[f]+h-30,c=b.videoPositionsX[f]+h+15),"top"===g?(d=b.videoPositionsY[g]+b.videoHeight,e=b.videoPositionsY[g]+b.videoHeight-25):"bottom"===g?(d=b.videoPositionsY[g],e=b.videoPositionsY[g]+25):(d=b.videoPositionsY[g]+i-30,e=b.videoPositionsY[g]+i+15),b.videoTargetPositionsX[f]+","+b.videoTargetPositionsY[g]+" "+a+","+e+" "+c+","+d}var d,e,f,g,h,i,j;d=a(this.element),e=d.parent(".video-target"),j=this.popoverPosition(b),f=j[0],g=j[1],h=j[2],i=j[3],e.find(".video-popover-tail").attr({points:c(),fill:"black",stroke:"black","stroke-width":0})},colorConverter:function(a){var b,c,d;return b=parseInt(this.prepHex(a).substring(0,2),16),d=parseInt(this.prepHex(a).substring(2,4),16),c=parseInt(this.prepHex(a).substring(4,6),16),{red:b,blue:d,green:c}},prepHex:function(a){return a="#"===a.charAt(0)?a.split("#")[1]:a,3===a.length&&(a+=a),a},fullHex:function(a){return a="#"+this.prepHex(a)},coverImage:function(b,c,d){var e,f;e="http://www.vimeo.com/api/v2/video/"+c+".json?callback=?",f="http://img.youtube.com/vi/"+c+"/hqdefault.jpg","youtube"===b?a("<img class='video-cover'>").attr("src",f).appendTo(d):a.getJSON(e,{format:"jsonp"}).done(function(b){a("<img class='video-cover'>").attr("src",b[0].thumbnail_large).appendTo(d)})},youtubePlayer:function(b,c){return a('<iframe src="https://www.youtube.com/embed/'+c+"?autoplay="+b.videoAutoplay+"&autohide="+b.videoAutohide+"&controls="+b.videoControls+"&iv_load_policy="+b.videoIvLoadPolicy+"&loop="+b.videoLoop+"&modestbranding="+b.videoModestbranding+"&playlist="+b.videoPlaylist+"&rel="+b.videoRelated+"&showinfo="+b.videoShowinfo+"&start="+b.videoStartTime+"&theme="+b.videoTheme+"&color="+b.videoColor+'" width="'+b.videoWidth+'"px height="'+b.videoHeight+'"px frameborder="0" allowfullscreen></iframe>')},vimeoPlayer:function(b,c){return a('<iframe src="http://player.vimeo.com/video/'+c+"?autoplay="+b.videoAutoplay+"&loop="+b.videoLoop+"&title="+b.videoShowinfo+"&byline="+b.videoByline+"&portrait="+b.videoPortrait+"&color="+this.prepHex(b.videoColor)+'" width="'+b.videoWidth+'"px height="'+b.videoHeight+'"px frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>')},destroy:function(b){b.find(".video-wrapper").hide(this.settings().videoEaseOut),setTimeout(function(){b.find(".video").remove(),b.find(".video-popover-tail-wrapper").remove(),b.find(".video-wrapper").remove(),a(this).off(),a(this).removeData()},this.settings().videoEaseOut)}},a.fn[e]=function(b){return this.each(function(){a.data(this,"plugin_"+e)||a.data(this,"plugin_"+e,new d(this,b))})},this}(jQuery,window,document);