1/* okvideo by okfocus ~ v2.3.2 ~ https://github.com/okfocus/okvideo */ 2function vimeoPlayerReady() { 3 options = jQuery(window).data("okoptions"); 4 var a = jQuery("#okplayer")[0]; 5 player = $f(a), window.setTimeout(function() { 6 jQuery("#okplayer").css("visibility", "visible") 7 }, 2e3), player.addEvent("ready", function() { 8 OKEvents.v.onReady(), OKEvents.utils.isMobile() ? OKEvents.v.onPlay() : (player.addEvent("play", OKEvents.v.onPlay), player.addEvent("pause", OKEvents.v.onPause), player.addEvent("finish", OKEvents.v.onFinish)), player.api("play") 9 }) 10} 11 12function onYouTubePlayerAPIReady() { 13 var settings = {keyControls: true, controls: false, loop: true, annotations: false} 14 options = jQuery(window).data("okoptions"); 15 options = jQuery.extend(settings, options); 16 player = new YT.Player("okplayer", { 17 videoId: (typeof options != 'undefined' && typeof options.video != 'undefined') ? options.video.id : null, 18 playerVars: { 19 autohide: 1, 20 autoplay: 0, 21 disablekb: options.keyControls, 22 cc_load_policy: options.captions, 23 controls: options.controls, 24 enablejsapi: 1, 25 fs: 0, 26 modestbranding: 1, 27 origin: window.location.origin || window.location.protocol + "//" + window.location.hostname, 28 iv_load_policy: options.annotations, 29 loop: options.loop, 30 showinfo: 0, 31 rel: 0, 32 wmode: "opaque", 33 hd: options.hd 34 }, 35 events: { 36 onReady: OKEvents.yt.ready, 37 onStateChange: OKEvents.yt.onStateChange, 38 onError: OKEvents.yt.error 39 } 40 }) 41} 42var player, OKEvents, options; 43! function(a) { 44 "use strict"; 45 var b = "data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw%3D%3D"; 46 a.okvideo = function(c) { 47 "object" != typeof c && (c = { 48 video: c 49 }); 50 var d = this; 51 d.init = function() { 52 d.options = a.extend({}, a.okvideo.options, c), null === d.options.video && (d.options.video = d.options.source), d.setOptions(); 53 var e = d.options.target || a("body"), 54 f = e[0] == a("body")[0] ? "fixed" : "absolute"; 55 e.css({ 56 position: "relative" 57 }); 58 var g = 3 === d.options.controls ? -999 : "auto", 59 h = '<div id="okplayer-mask" style="position:' + f + ';left:0;top:0;overflow:hidden;z-index:-998;height:100%;width:100%;"></div>'; 60 OKEvents.utils.isMobile() ? e.append('<div id="okplayer" style="position:' + f + ";left:0;top:0;overflow:hidden;z-index:" + g + ';height:100%;width:100%;"></div>') : (3 === d.options.controls && e.append(h), 1 === d.options.adproof ? e.append('<div id="okplayer" style="position:' + f + ";left:0;top:5%;overflow:hidden;z-index:" + g + ';height:100%;width:100%;"></div>') : e.append('<div id="okplayer" style="position:' + f + ";left:0;top:0;overflow:hidden;z-index:" + g + ';height:100%;width:100%;"></div>')), a("#okplayer-mask").css("background-image", "url(" + b + ")"), null === d.options.playlist.list ? "
60youtube" === d.options.video.provider ? d.loadYouTubeAPI() : "vimeo" === d.options.video.provider && (d.options.volume /= 100, d.loadVimeoAPI()) : d.loadYouTubeAPI() 61 }, d.setOptions = function() { 62 for (var b in this.options) this.options[b] === !0 && (this.options[b] = 1), this.options[b] === !1 && (this.options[b] = 3); 63 null === d.options.playlist.list && (d.options.video = d.determineProvider()), a(window).data("okoptions", d.options) 64 }, d.loadYouTubeAPI = function() { 65 d.insertJS("//www.youtube.com/player_api") 66 }, d.loadYouTubePlaylist = function() { 67 player.loadPlaylist(d.options.playlist.list, d.options.playlist.index, d.options.playlist.startSeconds, d.options.playlist.suggestedQuality) 68 }, d.loadVimeoAPI = function() { 69 a("#okplayer").replaceWith(function() { 70 return '<iframe src="//player.vimeo.com/video/' + d.options.video.id + "?api=1&title=0&byline=0&portrait=0&playbar=0&loop=" + d.options.loop + "&autoplay=" + (1 === d.options.autoplay ? 1 : 0) + '&player_id=okplayer" frameborder="0" style="' + a(this).attr("style") + 'visibility:hidden;background-color:black;" id="' + a(this).attr("id") + '"></iframe>' 71 }), d.insertJS("//origin-assets.vimeo.com/js/froogaloop2.min.js", function() { 72 vimeoPlayerReady() 73 }) 74 }, d.insertJS = function(a, b) { 75 var c = document.createElement("script"); 76 b && (c.readyState ? c.onreadystatechange = function() { 77 ("loaded" === c.readyState || "complete" === c.readyState) && (c.onreadystatechange = null, b()) 78 } : c.onload = function() { 79 b() 80 }), c.src = a; 81 var d = document.getElementsByTagName("script")[0]; 82 d.parentNode.insertBefore(c, d) 83 }, d.determineProvider = function() { 84 var a = document.createElement("a"); 85 if (a.href = d.options.video, /youtube.com/.test(d.options.video)) return { 86 provider: "youtube", 87 id: a.href.slice(a.href.indexOf("v=") + 2).toString() 88 }; 89 if (/vimeo.com/.test(d.options.video)) return { 90 provider: "vimeo", 91 id: a.href.split("/")[3].toString() 92 }; 93 if (/[-A-Za-z0-9_]+/.test(d.options.video)) { 94 var b = new String(d.options.video.match(/[-A-Za-z0-9_]+/)); 95 if (11 == b.length) return { 96 provider: "youtube", 97 id: b.toString() 98 }; 99 for (var c = 0; c < d.options.video.length; c++) 100 if ("number" != typeof parseInt(d.options.video[c])) throw "not vimeo but thought it was for a sec"; 101 return { 102 provider: "vimeo", 103 id: d.options.video 104 } 105 } 106 throw "OKVideo: Invalid video source" 107 }, d.init() 108 }, a.okvideo.options = { 109 source: null, 110 video: null, 111 playlist: { 112 list: null, 113 index: 0, 114 startSeconds: 0, 115 suggestedQuality: "default" 116 }, 117 disableKeyControl: 1, 118 captions: 0, 119 loop: 1, 120 hd: 1, 121 volume: 0, 122 adproof: !1, 123 unstarted: null, 124 onFinished: null, 125 onReady: null, 126 onPlay: null, 127 onPause: null, 128 buffering: null, 129 controls: !1, 130 autoplay: !0, 131 annotations: !0, 132 cued: null 133 }, a.fn.okvideo = function(b) { 134 return b.target = this, this.each(function() { 135 new a.okvideo(b) 136 }) 137 } 138}(jQuery), OKEvents = { 139 yt: { 140 ready: function(a) { 141 a.target.setVolume(options.volume), 1 === options.autoplay && (options.playlist.list ? player.loadPlaylist(options.playlist.list, options.playlist.index, options.playlist.startSeconds, options.playlist.suggestedQuality) : a.target.playVideo()), OKEvents.utils.isFunction(options.onReady) && options.onReady() 142 }, 143 onStateChange: function(a) { 144 switch (a.data) { 145 case -1: 146 OKEvents.utils.isFunction(options.unstarted) && options.unstarted(); 147 break; 148 case 0: 149 OKEvents.utils.isFunction(options.onFinished) && options.onFinished(), options.loop && a.target.playVideo(); 150 break; 151 case 1: 152 OKEvents.utils.isFunction(options.onPlay) && options.onPlay(); 153 break; 154 case 2: 155 OKEvents.utils.isFunction(options.onPause) && options.onPause(); 156 break; 157 case 3: 158 OKEvents.utils.isFunction(options.buffering) && options.buffering(); 159 break; 160 case 5: 161 OKEvents.utils.isFunction(options.cued) && options.cued(); 162 break; 163 default:
164 throw "OKVideo: received invalid data from YT player." 165 } 166 }, 167 error: function(a) { 168 throw a 169 } 170 }, 171 v: { 172 onReady: function() { 173 OKEvents.utils.isFunction(options.onReady) && options.onReady() 174 }, 175 onPlay: function() { 176 OKEvents.utils.isMobile() || player.api("setVolume", options.volume), OKEvents.utils.isFunction(options.onPlay) && options.onPlay() 177 }, 178 onPause: function() { 179 OKEvents.utils.isFunction(options.onPause) && options.onPause() 180 }, 181 onFinish: function() { 182 OKEvents.utils.isFunction(options.onFinish) && options.onFinish() 183 } 184 }, 185 utils: { 186 isFunction: function(a) { 187 return "function" == typeof a ? !0 : !1 188 }, 189 isMobile: function() { 190 return navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry)/) ? !0 : !1 191 } 192 } 193};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.