plyr/dist/js/simple-player.js
Sam Potts 751d8db9d8 WIP
2015-02-14 22:42:44 +11:00

1 line
8.5 KiB
JavaScript

function InitPxVideo(e){"use strict";function t(e){var t=[];return t=e.split(" --> "),o(t[0])}function n(e){var t=[];return t=e.split(" --> "),o(t[1])}function o(e){if(null===e||void 0===e)return 0;var t,n=[],o=[];return n=e.split(","),o=n[0].split(":"),t=Math.floor(60*o[0]*60)+Math.floor(60*o[1])+Math.floor(o[2])}function a(e){for(e.subcount=0;n(e.captions[e.subcount][0])<e.movie.currentTime.toFixed(1);)if(e.subcount++,e.subcount>e.captions.length-1){e.subcount=e.captions.length-1;break}}function i(e){e.isCaptionDefault&&(e.captionsContainer.className="px-video-captions show",e.captionsBtn.setAttribute("checked","checked"))}function s(){var e,t,n,o=navigator.userAgent,a=navigator.appName,i=""+parseFloat(navigator.appVersion),s=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(a="IE",i="11;"):-1!==(t=o.indexOf("MSIE"))?(a="IE",i=o.substring(t+5)):-1!==(t=o.indexOf("Chrome"))?(a="Chrome",i=o.substring(t+7)):-1!==(t=o.indexOf("Safari"))?(a="Safari",i=o.substring(t+7),-1!==(t=o.indexOf("Version"))&&(i=o.substring(t+8))):-1!==(t=o.indexOf("Firefox"))?(a="Firefox",i=o.substring(t+8)):(e=o.lastIndexOf(" ")+1)<(t=o.lastIndexOf("/"))&&(a=o.substring(e,t),i=o.substring(t+1),a.toLowerCase()==a.toUpperCase()&&(a=navigator.appName)),-1!==(n=i.indexOf(";"))&&(i=i.substring(0,n)),-1!==(n=i.indexOf(" "))&&(i=i.substring(0,n)),s=parseInt(""+i,10),isNaN(s)&&(i=""+parseFloat(navigator.appVersion),s=parseInt(navigator.appVersion,10)),[a,s]}String.prototype.replaceAll||Object.defineProperty(String.prototype,"replaceAll",{value:function(e,t){return this.replace(new RegExp(e.replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),t)}});var r={};if(r.arBrowserInfo=s(),r.browserName=r.arBrowserInfo[0],r.browserMajorVersion=r.arBrowserInfo[1],"IE"===r.browserName&&(8===r.browserMajorVersion||9===r.browserMajorVersion))return!1;if(r.isSmartphoneOrTablet=/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent),r.isSmartphoneOrTablet)return!1;"undefined"==typeof e.debug&&(e.debug=!1),r.debug=e.debug,e.debug&&console.log(r.browserName+" "+r.browserMajorVersion),r.playAriaLabel="undefined"==typeof e.videoTitle||""===e.videoTitle?"Play":"Play video, "+e.videoTitle,r.container=document.getElementById(e.videoId),r.container.className=r.container.className+" stopped",r.movie=r.container.getElementsByTagName("video")[0],r.controls=r.container.getElementsByClassName("px-video-controls")[0],r.movie.removeAttribute("controls"),r.randomNum=Math.floor(1e4*Math.random()),e.debug&&console.log("Inserting custom video controls"),r.controls.innerHTML=e.html.replaceAll("{aria-label}",r.playAriaLabel).replaceAll("{id}",r.randomNum),r.labelMute=document.getElementById("labelMute"+r.randomNum),r.labelMuteOffset=r.movieWidth-390,r.labelMuteOffset<0&&(r.labelMuteOffset=0),r.labelMute.setAttribute("style","margin-left:"+r.labelMuteOffset+"px");for(var c,l="",d=r.movie.childNodes,p=0;p<d.length;p++)"track"===d[p].nodeName.toLowerCase()&&(c=d[p].getAttribute("kind"),"captions"===c&&(l=d[p].getAttribute("src")));if(r.captionExists=!0,""===l?(r.captionExists=!1,e.debug&&console.log("No caption track found.")):e.debug&&console.log("Caption track found; URI: "+l),"undefined"==typeof e.captionsOnDefault&&(e.captionsOnDefault=!0),r.isCaptionDefault=e.captionsOnDefault,"undefined"==typeof e.seekInterval&&(e.seekInterval=10),r.seekInterval=e.seekInterval,r.btnPlay=r.container.getElementsByClassName("px-video-play")[0],r.btnPause=r.container.getElementsByClassName("px-video-pause")[0],r.btnRestart=r.container.getElementsByClassName("px-video-restart")[0],r.btnRewind=r.container.getElementsByClassName("px-video-rewind")[0],r.btnForward=r.container.getElementsByClassName("px-video-forward")[0],r.btnVolume=r.container.getElementsByClassName("px-video-volume")[0],r.btnMute=r.container.getElementsByClassName("px-video-mute")[0],r.progressBar=r.container.getElementsByClassName("px-video-progress")[0],r.progressBarSpan=r.progressBar.getElementsByTagName("span")[0],r.captionsContainer=r.container.getElementsByClassName("px-video-captions")[0],r.captionsBtn=r.container.getElementsByClassName("px-video-btnCaptions")[0],r.captionsBtnContainer=r.container.getElementsByClassName("px-video-captions-btn-container")[0],r.duration=r.container.getElementsByClassName("px-video-duration")[0],r.txtSeconds=r.container.getElementsByClassName("px-seconds"),r.txtSeconds[0].innerHTML=r.seekInterval,r.txtSeconds[1].innerHTML=r.seekInterval,r.isTextTracks=!1,r.movie.textTracks&&(r.isTextTracks=!0),r.btnPlay.addEventListener("click",function(){r.movie.play(),r.container.className=r.container.className.replace("stopped","playing"),r.btnPlay.className="px-video-play hide",r.btnPause.className="px-video-pause px-video-show-inline",r.btnPause.focus()},!1),r.btnPause.addEventListener("click",function(){r.movie.pause(),r.container.className=r.container.className.replace("playing","stopped"),r.btnPlay.className="px-video-play px-video-show-inline",r.btnPause.className="px-video-pause hide",r.btnPlay.focus()},!1),r.btnRestart.addEventListener("click",function(){r.movie.currentTime=0,r.isTextTracks||(r.subcount=0),r.movie.play(),r.btnPlay.className="px-video-play hide",r.btnPause.className="px-video-pause px-video-show-inline"},!1),r.btnRewind.addEventListener("click",function(){var e=r.movie.currentTime-r.seekInterval;r.movie.currentTime=0>e?0:e,r.isTextTracks||a(r)},!1),r.btnForward.addEventListener("click",function(){var e=r.movie.currentTime+r.seekInterval;r.movie.currentTime=e>r.movie.duration?r.movie.duration:e,r.isTextTracks||a(r)},!1),r.btnVolume.addEventListener("change",function(){r.movie.volume=parseFloat(this.value/10)},!1),r.btnMute.addEventListener("click",function(){r.movie.muted=r.movie.muted===!0?!1:!0},!1),r.movie.addEventListener("timeupdate",function(){r.secs=parseInt(r.movie.currentTime%60),r.mins=parseInt(r.movie.currentTime/60%60),r.secs=("0"+r.secs).slice(-2),r.mins=("0"+r.mins).slice(-2),r.duration.innerHTML=r.mins+":"+r.secs},!1),r.movie.addEventListener("timeupdate",function(){r.percent=100/r.movie.duration*r.movie.currentTime,r.percent>0&&(r.progressBar.value=r.percent,r.progressBarSpan.innerHTML=r.percent)},!1),r.progressBar.addEventListener("click",function(e){r.pos=(e.pageX-this.offsetLeft)/this.offsetWidth,r.movie.currentTime=r.pos*r.movie.duration,r.isTextTracks||a(r)}),r.movie.addEventListener("ended",function(){r.captionsContainer.innerHTML=""}),r.captionsBtn.addEventListener("click",function(){r.captionsContainer.className=this.checked?"px-video-captions show":"px-video-captions hide"},!1),r.captionExists){if("IE"===r.browserName&&10===r.browserMajorVersion||"IE"===r.browserName&&11===r.browserMajorVersion||"Firefox"===r.browserName&&r.browserMajorVersion>=31||"Safari"===r.browserName&&r.browserMajorVersion>=7){e.debug&&console.log("Detected IE 10/11 or Firefox 31+ or Safari 7+"),r.isTextTracks=!1;for(var u={},m=r.movie.textTracks,v=0;v<m.length;v++)u=r.movie.textTracks[v],u.mode="hidden"}if(r.isTextTracks){e.debug&&console.log("textTracks supported"),i(r);for(var u={},m=r.movie.textTracks,v=0;v<m.length;v++)u=r.movie.textTracks[v],u.mode="hidden","captions"===u.kind&&u.addEventListener("cuechange",function(){this.activeCues[0]&&this.activeCues[0].hasOwnProperty("text")&&(r.captionsContainer.innerHTML=this.activeCues[0].text)},!1)}else if(e.debug&&console.log("textTracks not supported so rendering captions manually"),i(r),r.currentCaption="",r.subcount=0,r.captions=[],r.movie.addEventListener("timeupdate",function(){r.movie.currentTime.toFixed(1)>t(r.captions[r.subcount][0])&&r.movie.currentTime.toFixed(1)<n(r.captions[r.subcount][0])&&(r.currentCaption=r.captions[r.subcount][1]),r.movie.currentTime.toFixed(1)>n(r.captions[r.subcount][0])&&r.subcount<r.captions.length-1&&r.subcount++,r.captionsContainer.innerHTML=r.currentCaption},!1),""!==l){var f;window.XMLHttpRequest?f=new XMLHttpRequest:window.ActiveXObject&&(f=new ActiveXObject("Microsoft.XMLHTTP")),f.onreadystatechange=function(){if(4===f.readyState)if(200===f.status){e.debug&&console.log("xhr = 200"),r.captions=[];var t,n=[],o=f.responseText;n=o.split("\n\n");for(var a=0;a<n.length;a++)t=n[a],r.captions[a]=[],r.captions[a]=t.split("\n");r.captions.shift(),e.debug&&console.log("Successfully loaded the caption file via ajax.")}else e.debug&&console.log("There was a problem loading the caption file via ajax.")},f.open("get",l,!0),f.send()}if("Safari"===r.browserName&&7===r.browserMajorVersion){console.log("Safari 7 detected; removing track from DOM");var m=r.movie.getElementsByTagName("track");r.movie.removeChild(m[0])}}else r.captionsContainer.className="px-video-captions hide"}