1 line
12 KiB
JavaScript
1 line
12 KiB
JavaScript
!function(e){"use strict";function t(){var e,t,n,r=navigator.userAgent,s=navigator.appName,o=""+parseFloat(navigator.appVersion),a=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(s="IE",o="11;"):-1!==(t=r.indexOf("MSIE"))?(s="IE",o=r.substring(t+5)):-1!==(t=r.indexOf("Chrome"))?(s="Chrome",o=r.substring(t+7)):-1!==(t=r.indexOf("Safari"))?(s="Safari",o=r.substring(t+7),-1!==(t=r.indexOf("Version"))&&(o=r.substring(t+8))):-1!==(t=r.indexOf("Firefox"))?(s="Firefox",o=r.substring(t+8)):(e=r.lastIndexOf(" ")+1)<(t=r.lastIndexOf("/"))&&(s=r.substring(e,t),o=r.substring(t+1),s.toLowerCase()==s.toUpperCase()&&(s=navigator.appName)),-1!==(n=o.indexOf(";"))&&(o=o.substring(0,n)),-1!==(n=o.indexOf(" "))&&(o=o.substring(0,n)),a=parseInt(""+o,10),isNaN(a)&&(o=""+parseFloat(navigator.appVersion),a=parseInt(navigator.appVersion,10)),[s,a]}function n(e){var t=[];return t=e.split(" --> "),s(t[0])}function r(e){var t=[];return t=e.split(" --> "),s(t[1])}function s(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function o(e){for(e.subcount=0;r(e.captions[e.subcount][0])<e.media.currentTime.toFixed(1);)if(e.subcount++,e.subcount>e.captions.length-1){e.subcount=e.captions.length-1;break}}function a(e){M.captions.default&&(e.container.className+=" "+M.classes.captions,e.buttons.captions.setAttribute("checked","checked"))}function i(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function c(e,t){e.length||(e=[e]);for(var n=e.length-1;n>=0;n--){var r=n>0?t.cloneNode(!0):t,s=e[n],o=s.parentNode,a=s.nextSibling;r.appendChild(s),a?o.insertBefore(r,a):o.appendChild(r)}}function l(e){var t=E.isFullScreen()?{x:0,y:0}:u(e.currentTarget);return{x:e.clientX-t.x,y:e.clientY-t.y}}function u(e){for(var t=0,n=0;e;)t+=e.offsetLeft-e.scrollLeft+e.clientLeft,n+=e.offsetTop-e.scrollTop+e.clientTop,e=e.offsetParent;return{x:t,y:n}}function d(e,t){for(var n in t)t[n]&&t[n].constructor&&t[n].constructor===Object?(e[n]=e[n]||{},d(e[n],t[n])):e[n]=t[n];return e}function p(e){var t,n=C[e]||[],r=n.length;for(t=0;r>t;t++)n[t].apply(I.media,[])}function f(){var e={supportsFullScreen:!1,isFullScreen:function(){return!1},requestFullScreen:function(){},cancelFullScreen:function(){},fullScreenEventName:"",element:null,prefix:""},t="webkit moz o ms khtml".split(" ");if("undefined"!=typeof document.cancelFullScreen)e.supportsFullScreen=!0;else for(var n=0,r=t.length;r>n;n++)if(e.prefix=t[n],"undefined"!=typeof document[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}return"webkit"===e.prefix&&navigator.userAgent.match(/Version\/[\d\.]+.*Safari/)&&(e.supportsFullScreen=!1),e.supportsFullScreen&&(e.fullScreenEventName=e.prefix+"fullscreenchange",e.isFullScreen=function(){switch(this.prefix){case"":return document.fullScreen;case"webkit":return document.webkitIsFullScreen;default:return document[this.prefix+"FullScreen"]}},e.requestFullScreen=function(e){return""===this.prefix?e.requestFullScreen():e[this.prefix+"RequestFullScreen"]("webkit"===this.prefix?e.ALLOW_KEYBOARD_INPUT:null)},e.cancelFullScreen=function(){return""===this.prefix?document.cancelFullScreen():document[this.prefix+"CancelFullScreen"]()},e.element=function(){return""===this.prefix?document.fullscreenElement:document[this.prefix+"FullscreenElement"]}),e}function m(){M.debug&&console.log("Injecting custom controls");var e=M.html;e=i(e,"{aria-label}",M.playAriaLabel),e=i(e,"{id}",I.random),I.container.insertAdjacentHTML("beforeend",e)}function b(e){return I.container.querySelectorAll(e)}function v(e){return b(e)[0]}function g(){I.controls=v(M.selectors.controls),I.buttons={},I.buttons.play=v(M.selectors.buttons.play),I.buttons.pause=v(M.selectors.buttons.pause),I.buttons.restart=v(M.selectors.buttons.restart),I.buttons.rewind=v(M.selectors.buttons.rewind),I.buttons.forward=v(M.selectors.buttons.forward),I.buttons.mute=v(M.selectors.buttons.mute),I.buttons.captions=v(M.selectors.buttons.captions),I.buttons.fullscreen=v(M.selectors.buttons.fullscreen),I.progress={},I.progress.bar=v(M.selectors.progress),I.progress.text=I.progress.bar.getElementsByTagName("span")[0],I.volume=v(M.selectors.buttons.volume),I.duration=v(M.selectors.duration),I.seekTime=b(M.selectors.seekTime)}function x(){I.media.play(),I.container.className=I.container.className.replace(M.classes.stopped,M.classes.playing)}function h(){I.media.pause(),I.container.className=I.container.className.replace(M.classes.playing,M.classes.stopped)}function T(){I.media.currentTime=0,I.isTextTracks||(I.subcount=0),x()}function y(){I.volume.value=M.volume,I.media.volume=parseFloat(M.volume/10),k()}function k(){0===I.media.volume||I.media.muted?I.container.className+=" "+M.classes.muted:I.container.className=I.container.className.replace(M.classes.muted,"")}function w(){if(I.media=I.container.querySelectorAll("audio, video")[0],!I.media)return console.error("No audio or video element found!"),!1;if(null===I.media.getAttribute("autoplay")&&(I.container.className+=" "+M.classes.stopped),I.media.removeAttribute("controls"),I.type="video"==I.media.tagName.toLowerCase()?"video":"audio","video"===I.type){var e=document.createElement("div");e.setAttribute("class",M.classes.videoContainer),c(I.media,e),I.videoContainer=e}}function S(){if("video"===I.type){I.videoContainer.insertAdjacentHTML("afterbegin","<div class='"+M.selectors.captions.replace(".","")+"'></div>"),I.captionsContainer=v(M.selectors.captions),I.isTextTracks=!1,I.media.textTracks&&(I.isTextTracks=!0);for(var e,t="",s=I.media.childNodes,o=0;o<s.length;o++)"track"===s[o].nodeName.toLowerCase()&&(e=s[o].getAttribute("kind"),"captions"===e&&(t=s[o].getAttribute("src")));if(I.captionExists=!0,""===t?(I.captionExists=!1,M.debug&&console.log("No caption track found.")):M.debug&&console.log("Caption track found; URI: "+t),I.captionExists){var i,c,l={};if("IE"===I.browserName&&10===I.browserMajorVersion||"IE"===I.browserName&&11===I.browserMajorVersion||"Firefox"===I.browserName&&I.browserMajorVersion>=31||"Safari"===I.browserName&&I.browserMajorVersion>=7)for(M.debug&&console.log("Detected IE 10/11 or Firefox 31+ or Safari 7+"),I.isTextTracks=!1,l={},i=I.media.textTracks,c=0;c<i.length;c++)l=I.media.textTracks[c],l.mode="hidden";if(I.isTextTracks)for(M.debug&&console.log("textTracks supported"),a(I),l={},i=I.media.textTracks,c=0;c<i.length;c++)l=I.media.textTracks[c],l.mode="hidden","captions"===l.kind&&l.addEventListener("cuechange",function(){this.activeCues[0]&&this.activeCues[0].hasOwnProperty("text")&&(I.captionsContainer.innerHTML=this.activeCues[0].text)},!1);else if(M.debug&&console.log("textTracks not supported so rendering captions manually"),a(I),I.currentCaption="",I.subcount=0,I.captions=[],I.media.addEventListener("timeupdate",function(){I.media.currentTime.toFixed(1)>n(I.captions[I.subcount][0])&&I.media.currentTime.toFixed(1)<r(I.captions[I.subcount][0])&&(I.currentCaption=I.captions[I.subcount][1]),I.media.currentTime.toFixed(1)>r(I.captions[I.subcount][0])&&I.subcount<I.captions.length-1&&I.subcount++,I.captionsContainer.innerHTML=I.currentCaption},!1),""!==t){var u;window.XMLHttpRequest?u=new XMLHttpRequest:window.ActiveXObject&&(u=new ActiveXObject("Microsoft.XMLHTTP")),u.onreadystatechange=function(){if(4===u.readyState)if(200===u.status){M.debug&&console.log("xhr = 200"),I.captions=[];var e,t=[],n=u.responseText;t=n.split("\n\n");for(var r=0;r<t.length;r++)e=t[r],I.captions[r]=[],I.captions[r]=e.split("\n");I.captions.shift(),M.debug&&console.log("Successfully loaded the caption file via ajax.")}else M.debug&&console.log("There was a problem loading the caption file via ajax.")},u.open("get",t,!0),u.send()}"Safari"===I.browserName&&7===I.browserMajorVersion&&(console.log("Safari 7 detected; removing track from DOM"),i=I.media.getElementsByTagName("track"),I.media.removeChild(i[0]))}else I.container.className=I.container.className.replace(M.classes.captions,"")}}function N(){I.seekTime[0].innerHTML=M.seekInterval,I.seekTime[1].innerHTML=M.seekInterval}function L(){I.buttons.fullscreen.addEventListener("click",function(){E.isFullScreen()?E.cancelFullScreen():E.requestFullScreen(I.container)},!1),"video"===I.type&&I.videoContainer.addEventListener("click",function(){I.media.paused?x():I.media.ended?T():h()},!1),I.buttons.play.addEventListener("click",function(){x(),I.buttons.pause.focus()},!1),I.buttons.pause.addEventListener("click",function(){h(),I.buttons.play.focus()},!1),I.buttons.restart.addEventListener("click",T,!1),I.buttons.rewind.addEventListener("click",function(){var e=I.media.currentTime-M.seekInterval;I.media.currentTime=0>e?0:e,I.isTextTracks||"video"!==I.type||o(I)},!1),I.buttons.forward.addEventListener("click",function(){var e=I.media.currentTime+M.seekInterval;I.media.currentTime=e>I.media.duration?I.media.duration:e,I.isTextTracks||"video"!==I.type||o(I)},!1),I.volume.addEventListener("change",function(){M.volume=this.value,y()},!1),I.buttons.mute.addEventListener("click",function(){I.media.muted=I.media.muted===!0?!1:!0,k()},!1),I.media.addEventListener("timeupdate",function(){I.secs=parseInt(I.media.currentTime%60),I.mins=parseInt(I.media.currentTime/60%60),I.secs=("0"+I.secs).slice(-2),I.mins=("0"+I.mins).slice(-2),I.duration.innerHTML=I.mins+":"+I.secs},!1),I.media.addEventListener("timeupdate",function(){I.percent=100/I.media.duration*I.media.currentTime,I.percent>0&&(I.progress.bar.value=I.percent,I.progress.text.innerHTML=I.percent)},!1),I.progress.bar.addEventListener("click",function(e){I.pos=l(e).x/this.offsetWidth,I.media.currentTime=I.pos*I.media.duration,I.isTextTracks||"video"!==I.type||o(I)}),I.buttons.captions.addEventListener("click",function(){this.checked?I.container.className+=" "+M.classes.captions:I.container.className=I.container.className.replace(M.classes.captions,"")},!1),I.media.addEventListener("ended",function(){"video"===I.type&&(I.captionsContainer.innerHTML=""),I.container.className=I.container.className.replace(M.classes.playing,M.classes.stopped)})}function F(e){I.container=e,w(),I.random=Math.floor(1e4*Math.random()),m(),g(),y(),S(),N(),L()}var E,M,C={},I={},O={debug:!1,seekInterval:10,volume:5,selectors:{container:".player",controls:".player-controls",buttons:{play:"[data-player='play']",pause:"[data-player='pause']",restart:"[data-player='restart']",rewind:"[data-player='restart']",forward:"[data-player='fast-forward']",mute:"[data-player='mute']",volume:"[data-player='volume']",captions:"[data-player='captions']",fullscreen:"[data-player='fullscreen']"},progress:".player-progress",captions:".player-captions",duration:".player-duration",seekTime:".player-seek-time"},classes:{videoContainer:"player-video",stopped:"stopped",playing:"playing",muted:"muted",captions:"captions"},captions:{"default":!0}};e.on=function(e,t){C[e]||(C[e]=[]),C[e].push(t)},e.setup=function(e){if(M=d(O,e),E=f(),I.browserInfo=t(),I.browserName=I.browserInfo[0],I.browserMajorVersion=I.browserInfo[1],M.debug&&(console.log(E.supportsFullScreen?"Fullscreen supported":"No fullscreen supported"),console.log(I.browserName+" "+I.browserMajorVersion)),"IE"===I.browserName&&(8===I.browserMajorVersion||9===I.browserMajorVersion))return M.debug&&console.error("Browser not suppported."),!1;if(I.isSmartphoneOrTablet=/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent),I.isSmartphoneOrTablet)return M.debug&&console.error("Browser not suppported."),!1;M.playAriaLabel="undefined"!=typeof M.title&&M.title.length?"Play "+M.title:"Play";var n=document.querySelector(M.selectors.container);return null===n?(M.debug&&console.error("Selector "+M.selectors.container+" not found!"),!1):(F(n),p("setup"),void 0)}}(this.simpleMedia=this.simpleMedia||{}); |