Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
291
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var html5Player;
  2. var playerIsInit;
  3. var movieControlBarIsInit = false;
  4. var tvControlBarIsInit = false;
  5. var totalTime = 0;
  6. var currentTime = 0;
  7. var videoContainer;
  8. var streamingType;
  9. var updateTimer;
  10. var nextTimer;
  11.  
  12. var tempRate;
  13. var volumeValue = 0.5;
  14. var playbackCompleted = false;
  15.  
  16. var isPlaying = false;
  17. var isSeeking = false;
  18. var isClose = false;
  19. var isBuffering = false;
  20. var isMute = false;
  21.  
  22. var errorLimit = 3;
  23. var errorTime = 0;
  24. var errorShowFlag = true;
  25.  
  26. var barWidth = 600;
  27. var volWidth = 20;
  28.  
  29. var positionList;
  30. var highlightList = [];
  31. var videoStart = 0;
  32. var videoCoda = 0;
  33. var easterEgg = 0;
  34. var skipStart = false;
  35. var skipCoda = false;
  36. var skipEnd = false;
  37. var matchAud = false;
  38. var PlayUpdateTimer = 60;
  39.  
  40. var t1 = "",t2 = "",t3 = ""; // WebTrends
  41.  
  42. function html5PlayUtil() {}
  43.  
  44. html5PlayUtil.prototype.playStreaming = function(streamUrlTmp, type, position, thumbnail){
  45.     streamUrl = streamUrlTmp;
  46.     streamingType = type;
  47.     positionList = position;
  48.  
  49.     if (playerIsInit) {
  50.         if (streamingType == 'VOD') {
  51.             $('.videoContainer #totalTime').html('0 : 00 : 00');   
  52.             $('.videoContainer #playTime').html('0 : 00');
  53.             $('#btnSpeed a').removeClass('active');
  54.             $("#btnSpeed a:nth-of-type(2)").addClass("active");
  55.             $('#butQuality a').removeClass('active');
  56.             $("#butQuality a:first").addClass("active");
  57.             $('.subtitle-tips').html('');
  58.             curSub = "";
  59.             curAud = "";
  60.         }
  61.         clearInterval(updateTimer);
  62.         this.loadVideo(streamUrl);     
  63.     } else {
  64.         if (streamingType == 'VOD') {
  65.             this.initPlayer();
  66.         } else if (streamingType == 'LIVE') {
  67.             this.initTVPlayer();
  68.         }
  69.         this.loadVideo(streamUrl);
  70.     }
  71.    
  72.     setTimeout(function(){
  73.         $('#btnVODPlay').addClass('paused');
  74.         $('#btnPlay').addClass('paused');
  75.         $("#volume-bar").slider('setValue', 10);
  76.     }, 700);
  77.  
  78. }
  79.  
  80. var config = {
  81.         playback: {
  82.             autoPlay: true
  83.     }
  84. };
  85.  
  86. //初始化Player
  87. html5PlayUtil.prototype.initPlayer = function(){
  88.     var video = document.getElementById('movie_player');
  89.     html5Player = new voPlayer.Player(video);
  90.     videoContainer = document.getElementById('containerArea');
  91.    
  92.     html5Player.init(config);
  93.     html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_PLAY_STARTED, onPlayStarted, false);
  94.     html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_PLAY_WAITING, onPlayWaiting, false);
  95.     html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_PLAY_PLAYING, onPlayPlaying, false);
  96.     html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_SEEK_COMPLETE, onSeekComplete, false);
  97.     html5Player.addEventListener(voPlayer.events.VO_OSMP_SRC_CB_OPEN_FINISHED, onOpenComplete, false);
  98.     html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_PLAY_COMPLETE, onPlaybackComplete, false);
  99.     html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_LOG_ADDED, onLogAdded, false);
  100.     html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_ERROR_EVENTS, onErrorAdded, false);
  101.     playerIsInit = true;
  102. };
  103.  
  104. html5PlayUtil.prototype.initTVPlayer = function(){
  105.     var video = document.getElementById('live_player');
  106.     html5Player = new voPlayer.Player(video);
  107.     videoContainer = document.getElementById('liveContainerArea');
  108.    
  109.     html5Player.init(config);
  110.     html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_PLAY_STARTED, onPlayStarted, false);
  111.     html5Player.addEventListener(voPlayer.events.VO_OSMP_SRC_CB_OPEN_FINISHED, onOpenComplete, false);
  112.     html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_PLAY_WAITING, onPlayWaiting, false);
  113.     html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_PLAY_PLAYING, onPlayPlaying, false);
  114.     html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_ERROR_EVENTS, onErrorAdded, false);
  115.     html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_LOG_ADDED, onLogAdded, false);
  116.     playerIsInit = true;
  117. };
  118.  
  119. var vid;
  120. html5PlayUtil.prototype.loadVideo = function(url){
  121.     var source =
  122.     {
  123.         links:
  124.         [{
  125.             uri: url
  126.         }]
  127.     };
  128.    
  129.     if (streamingType == 'VOD') {
  130.         if (!is_preview_movie) {
  131.             if (StreamingUtil.isDrm(url)) {
  132.                 source =
  133.                 {
  134.                     links:
  135.                     [{
  136.                         uri: url,
  137.                         drm:
  138.                         {
  139.                             widevine: { laUrl: "https://widevine.video.friday.tw/?deviceId=Mzg4NTllNGQtZmJhMS0zMGYxLWIzMDEtYzMxOWE1NjZiNGNk" }
  140.                         }
  141.                     }]
  142.                 };
  143.             }
  144.         }
  145.  
  146.         html5Player.open(source);
  147.         $('video').attr('crossorigin','anonymous');
  148.         vid = document.querySelector('video');
  149.        
  150.         if (typeof watch_name !== 'undefined')
  151.             $('.player-movie-title').text(watch_name);
  152.     } else if (streamingType == 'LIVE') {
  153.         html5Player.open(source);
  154.         $('video').attr('crossorigin','anonymous');
  155.         vid = document.querySelector('video');
  156.  
  157.         if (parent.mutedFlag) {
  158.             vid.muted = true;
  159.             parent.mutedFlag = false;
  160.             setTimeout(function(){ $(".btn-volume").trigger('click'); }, 700);
  161.         }
  162.     }
  163.     $('.playloading').css('display','block');
  164. }
  165.  
  166.  
  167. html5PlayUtil.prototype.play = function(){
  168.     if (playerIsInit) {
  169.         isPlaying = true;
  170.         html5Player.play();
  171.        
  172.         if (streamingType == 'VOD') {
  173.             _stopPlayUpdate = false;
  174.            
  175.             if (streaming.canLike) {
  176.                 canLike = false;
  177.                 if (typeof movieTimeOutAlert == 'function') {
  178.                     _moviePlayViewTime=0;
  179.                     setTimeout(movieTimeOutAlert, 1000);
  180.                 }
  181.             }
  182.         } else if (streamingType == 'LIVE') {
  183.             if (_tvplayViewTime>=_tvplayTimeAlert && needTimeAlert && !IsLogin()) {
  184.                 _tvplayViewTime = 0;
  185.                 setTimeout(timeOutAlert, 1000);
  186.             }
  187.         }
  188.     }
  189. }
  190.  
  191.  
  192. html5PlayUtil.prototype.pause = function(){
  193.     if (playerIsInit) {
  194.         isPlaying = false;
  195.         isBuffering = false;
  196.         _stopPlayUpdate = true;
  197.         clearInterval(updateTimer);
  198.         html5Player.pause();
  199.     }
  200. }
  201.  
  202.  
  203. html5PlayUtil.prototype.volume = function(realVolume){
  204.     if (playerIsInit) {
  205.         volumeValue = realVolume;
  206.         html5Player.setVolume(realVolume);
  207.         if (realVolume == 0) {
  208.             isMute = true;
  209.         } else {
  210.             isMute = false;
  211.         }
  212.     }
  213. }
  214.  
  215.  
  216. html5PlayUtil.prototype.playbackRate = function(rate){
  217.     if (playerIsInit) {
  218.         tempRate = rate;
  219.         document.querySelector('Video').playbackRate = rate;
  220.     }
  221. }
  222.  
  223.  
  224. html5PlayUtil.prototype.videoQuality = function(quality){
  225.     if (playerIsInit) {
  226.         if (tempRate != 1) {
  227.             document.querySelector('Video').playbackRate = 1;
  228.         }
  229.        
  230.         html5Player.selectQualityLevel(quality);
  231.        
  232.         if (tempRate != 1) {
  233.             document.querySelector('Video').playbackRate = tempRate;
  234.         }
  235.     }
  236. }
  237.  
  238.  
  239. html5PlayUtil.prototype.fullscreen = function(){
  240.     if (isFullScreen()) {
  241.         exitFullScreen();
  242.     } else {
  243.         enterFullScreen();
  244.     }
  245. }
  246.  
  247.  
  248. html5PlayUtil.prototype.jumpTo = function(position){
  249.     if (playerIsInit) {
  250.         html5Player.setPosition(position);
  251.     }
  252. }
  253.  
  254.  
  255. html5PlayUtil.prototype.currentTime = function(){
  256.     return html5Player.getPosition();
  257. }
  258.  
  259.  
  260. html5PlayUtil.prototype.duration = function(){
  261.     return html5Player.getDuration();
  262. }
  263.  
  264.  
  265. html5PlayUtil.prototype.closePlayer = function(){
  266.     if (playerIsInit) {
  267.         isPlaying = false;
  268.         _stopPlayUpdate = true;
  269.  
  270.         if (typeof streamUrl != "undefined") {
  271.             AnalyticsListen(0, "VO_OSMP_CB_STOP_COMPLETE", streamUrl, isMute, volumeValue, totalTime, currentTime, playbackCompleted, html5Player.getVersion());
  272.         }
  273.         html5Player.close();
  274.     }
  275. }
  276.  
  277.  
  278. /*********************** Callback from Player start**********************/
  279. var loadingFlag = true;
  280. function onPlayStarted() {
  281.     isPlaying = true;
  282.     isClose = false;
  283.     isBuffering = false;
  284.    
  285.     if (loadingFlag && streamingType == 'VOD') {
  286.         if (!movieControlBarIsInit) {
  287.             PlayerActionUtil.bindMovieControlBarEvents();
  288.         }      
  289.  
  290.         if (vid.textTracks.length==0 && temp_subtitles_url!='') {
  291.             $('video').append('<track id="subtitle" src="'+temp_subtitles_url+'" label="subtitle" kind="subtitles" srclang="eng" default="true" />');
  292.             if (vid.textTracks.length>0) {
  293.                 vid.textTracks[0].mode = "showing";
  294.             }
  295.         }
  296.  
  297.         if (!_playUpdateTimerStarted) {
  298.             PlayerActionUtil.startPlayUpdateTimer((PlayUpdateTimer * 1000), playUpdateCallback);
  299.         }
  300.            
  301.         if (streaming.canLike) {
  302.             canLike = false;
  303.             if (typeof movieTimeOutAlert == 'function') {
  304.                 _moviePlayViewTime=0;
  305.                 setTimeout(movieTimeOutAlert, 1000);
  306.             }
  307.         }
  308.        
  309.         var audTracks = html5Player.getAudioTracks();
  310.         if (streaming.mainTrack==null || streaming.mainTrack=="null") {
  311.             var audioProperty = audTracks[0];
  312.             setTimeout(function() {
  313.                 html5Player.selectAudioTrack(audTracks[0]['id']);
  314.             }, 1000);
  315.         } else {
  316.             for (var i = 0; i < audTracks.length; i++) {
  317.                 var audioProperty = audTracks[i];
  318.                 if (audioProperty.lang == streaming.mainTrack) {
  319.                     matchAud = true;
  320.                     setTimeout(function() {
  321.                         html5Player.selectAudioTrack(audioProperty.id);
  322.                     }, 1000);
  323.                     break;
  324.                 }
  325.             }
  326.             if (!matchAud) {
  327.                 var audioProperty = audTracks[0];
  328.                 setTimeout(function() {
  329.                     html5Player.selectAudioTrack(audTracks[0]['id']);
  330.                 }, 1000);
  331.             }
  332.         }
  333.        
  334.         loadingFlag = false;
  335.         _stopPlayUpdate = false;
  336.     } else {
  337.         if (!tvControlBarIsInit) {
  338.             PlayerActionUtil.bindTVControlBarEvents();
  339.         }      
  340.     }
  341.  
  342.     clearInterval(updateTimer);
  343.     updateTimer = setInterval(function() {
  344.         onPlayTimeUpdated();
  345.     }, 700);
  346. }
  347.  
  348. function onPlayTimeUpdated() {
  349.     updatePlayTime();
  350.     updateThumbPos();
  351. }
  352.  
  353. function onOpenComplete() {
  354.     if (streamingType == 'VOD') {
  355.         tempRate = 1;
  356.        
  357.         totalTime = h5player.duration();
  358.         h5player.volume(0.5);
  359.        
  360.         if (movieStartTime!=0) {
  361.             if (Math.floor(totalTime) - movieStartTime <= 1) {
  362.                 h5player.jumpTo(0);
  363.             } else {
  364.                 h5player.jumpTo(movieStartTime);
  365.             }
  366.         }
  367.  
  368.         h5player.videoQuality('');
  369.         $('#butQuality a').removeClass('active');
  370.         $("#butQuality a:first").addClass("active");
  371.                
  372.         if (positionList!="") {
  373.             var chapter_start = "<div class=\"swiper-container gallery-movie\" id=\"chapter-swiper\"><div class=\"swiper-wrapper\">";
  374.             var content = "";
  375.             var chapter_end = "</div><div class=\"swiper-button-prev swiper-button-white\"></div><div class=\"swiper-button-next swiper-button-white\"></div></div>";
  376.             for (var i=0;i<positionList.length;i++) {
  377.                 if (positionList[i].cueType == "Header") {
  378.                     videoStart = positionList[i].timePosition;
  379.                 }
  380.                 if (positionList[i].cueType == "Tailer") {
  381.                     videoCoda = positionList[i].timePosition;
  382.                 }
  383.                 if (positionList[i].cueType == "EGG") {
  384.                     easterEgg = positionList[i].timePosition;
  385.                 }
  386.                 var position = {"start":(positionList[i].timePosition*(barWidth/totalTime)), "end":(positionList[i].timePosition*(barWidth/totalTime)+1.5)};
  387.                 highlightList[i] = position;
  388.                 var cueImg = positionList[i].url;
  389.                 if (cueImg!=null && cueImg!="") {
  390.                     cueImg = cueImg.replace(".", "_L.");
  391.                 }
  392.  
  393.                 content = content+"<div class=\"swiper-slide\" style=\"width:22%; margin-right:2.5%\"><a onclick=\"jumpChapter('chapter','"+positionList[i].timePosition+"');\">"+
  394.                                 "<div class=\"img-block\"><img class=\"swiper-lazy\" data-src=\""+config_imageDomain+cueImg+"\"></div>"+
  395.                                 "<div class=\"info\"><p>"+positionList[i].description+"</p><p>"+timeToHms(positionList[i].timePosition)+"</p></div></a></div>";
  396.             }
  397.             $('#chapterContent').html(chapter_start+content+chapter_end);
  398.         } else {
  399.             $('#btnChapters').css('display','none');
  400.         }
  401.        
  402.         $("#range").slider('destroy');
  403.         $('#range').slider({
  404.             rangeHighlights: highlightList
  405.         });
  406.     } else if (streamingType == 'LIVE') {
  407.         if (needTimeAlert && !IsLogin()) {
  408.             setTimeout(timeOutAlert, 1000);
  409.         }
  410.     }  
  411. }
  412.  
  413. function onSeekComplete() {
  414.     isSeeking = false;
  415.     isBuffering = false;
  416.     updatePlayTime();
  417.     updateThumbPos();
  418. }
  419.  
  420. function onPlaybackComplete() {
  421.     playbackCompleted = true;
  422.     PlayerActionUtil.startPlayUpdate(playUpdateCallback);
  423.     $('.playloading').css('display','none');
  424.     $('.btn-play .hide').css('display','block');
  425.     $('.btn-play .show').css('display','none');
  426.     $('#btnVODPlay').removeClass('paused');
  427.     //$('#btnVODPlay').click();
  428.    
  429.     if (isFullScreen()) {
  430.         exitFullScreen();
  431.     }
  432.    
  433.     if (streaming.contentType == 1) {
  434.         var related = parent.getRelated();
  435.         $('#relatedlist1').html(related);
  436.         $('#recommend-popup1').css('display','block'); 
  437.     } else if (streaming.contentType==2 || streaming.contentType==3 || streaming.contentType==4) {
  438.         if (streaming.haveNextEpisode == true) {
  439.             $('#recommend-popup3').css('display','block');
  440.             if (streaming.haveLastEpisode == false) {
  441.                 $(".option span:first").css('display','none');
  442.                 $(".option p:first").html('');
  443.             }
  444.             nextTimer = setInterval(function() {
  445.                 timer();
  446.             }, 1000);
  447.         } else {
  448.             var related = parent.getRelated();
  449.             $('#relatedlist2').html(related);
  450.             $('#recommend-popup2').css('display','block');
  451.         }
  452.     }
  453. }
  454.  
  455. function onErrorAdded(event) {
  456.     AnalyticsListen(event.code, event.message.toString(), streamUrl, isMute, volumeValue, totalTime, currentTime, playbackCompleted, html5Player.getVersion());
  457.    
  458.     var code = '0x'+event.code.toString(16);
  459.     var description = event.message;
  460.     if (description) {
  461.         if (description.length > 100) {
  462.             description = description.substring(0, 100);
  463.         }
  464.     }
  465.  
  466.     var msgValue = getErrMsg(code);
  467.     msgIndex = msgValue.indexOf("#");
  468.     if (msgIndex!=-1) {
  469.         codeName = msgValue.split("#")[0];
  470.         wording = msgValue.split("#")[1];
  471.         if (errorShowFlag) {
  472.             alert(wording);
  473.         }
  474.         errorShowFlag = false;
  475.     } else {
  476.         codeName = msgValue;
  477.     }
  478.    
  479.     errorTime++;
  480.    
  481.     var playUpdateParams = {
  482.             code : code,
  483.             message : codeName,
  484.             description : description
  485.     };
  486.    
  487.     if (errorTime <= errorLimit) {
  488.         VenusAPI.errorLogUpdate(playUpdateParams);
  489.     }
  490.     console.log('ERROR: 0x' + event.code.toString(16) + ':' + event.message + '\n');
  491. }
  492.  
  493. function onLogAdded(event) {
  494.     AnalyticsListen(0, event.message.toString(), streamUrl, isMute, volumeValue, totalTime, currentTime, playbackCompleted, html5Player.getVersion());
  495. }
  496.  
  497. function onPlayWaiting() {
  498.     isBuffering = true;
  499.     //if (fixFirefoxAutoplayBug) {
  500.     //  isBuffering = false;
  501.     //}
  502. }
  503.  
  504. function onPlayPlaying() {
  505.     isBuffering = false;
  506. }
  507.  
  508. function getErrMsg(code) {
  509.     if (code == '0x81000001') {
  510.         return 'VO_OSMP_SRC_ERR_FORMAT_UNSUPPORT';
  511.     } else if (code == '0x81000002') {
  512.         return 'VO_OSMP_SRC_ERR_CODEC_UNSUPPORT';
  513.     } else if (code == '0x81000003') {
  514.         return 'VO_OSMP_SRC_ERR_BROWSER_UNSUPPORT_MSE';
  515.     } else if (code == '0x81000004') {
  516.         return 'VO_OSMP_SRC_ERR_MANIFEST_DOWNLOAD_FAIL#請確認網路狀態,並關閉播放器重試(htl04)';
  517.     } else if (code == '0x81000005') {
  518.         return 'VO_OSMP_SRC_ERR_MANIFEST_PARSE_FAIL';
  519.     } else if (code == '0x81000006') {
  520.         return 'VO_OSMP_SRC_ERR_CONTENT_DOWNLOAD_FAIL#請確認網路狀態,並關閉播放器重試(htl06)';
  521.     } else if (code == '0x81000007') {
  522.         return 'VO_OSMP_SRC_ERR_CONTENT_PARSE_FAIL';
  523.     } else if (code == '0x81000008') {
  524.         return 'VO_OSMP_SRC_ERR_TEXT_TRACK_PARSE_FAIL';
  525.     } else if (code == '0x81000009') {
  526.         return 'VO_OSMP_SRC_ERR_SOURCE_BUFFER_ERROR';
  527.     } else if (code == '0x8100000A' || code == '0x8100000a') {
  528.         return 'VO_OSMP_SRC_ERR_OUTMEMORY';
  529.     } else if (code == '0x8100000B' || code == '0x8100000b') {
  530.         return 'VO_OSMP_SRC_ERR_UNKNOWN';
  531.     } else if (code == '0x8100000C' || code == '0x8100000c') {
  532.         return 'VO_OSMP_DRM_ERR_BROWSER_UNSUPPORT#請確認瀏覽器版本是否支援(htl0C)';
  533.     } else if (code == '0x8100000D' || code == '0x8100000d') {
  534.         return 'VO_OSMP_DRM_ERR_KEY_FAIL#請稍候再試(htl0D)';
  535.     } else if (code == '0x8100000E' || code == '0x8100000e') {
  536.         return 'VO_OSMP_DRM_ERR_KEY_SESSION_FAIL#請稍候再試(htl0E)';
  537.     } else if (code == '0x8100000F' || code == '0x8100000f') {
  538.         return 'VO_OSMP_DRM_ERR_LICENSE_REQUEST_FAIL#請稍候再試(htl0F)';
  539.     } else if (code == '0x81000010') {
  540.         return 'VO_OSMP_DRM_ERR_SELECT_KEY_SYSTEM_FAIL#請確認瀏覽器版本是否支援(htl10)';
  541.     } else if (code == '0x81000011') {
  542.         return 'VO_OSMP_DRM_ERR_DECRYPT_FAIL';
  543.     } else {
  544.         return 'VO_OSMP_SRC_ERR_UNKNOWN';
  545.     }  
  546. }
  547. /*********************** Callback from Player end  **********************/
  548.  
  549.  
  550. function updatePlayTime() {
  551.     if (playerIsInit) {
  552.         if (streamingType == 'VOD') {
  553.             var duration = html5Player.getDuration();
  554.             if (!isNaN(duration)) {
  555.                 currentTime = html5Player.getPosition();
  556.                 setDisplayTime('total',duration);
  557.                 setDisplayTime('current',currentTime);
  558.                 if (duration - currentTime < 1) {
  559.                     isPlaying = false;
  560.                 }
  561.                
  562.                 if (_stopPlayUpdate == false) {
  563.                     //if (ctype == '1') {
  564.                         if (!skipEnd && easterEgg > 0 && (currentTime > videoCoda+1) && (currentTime < easterEgg)) {
  565.                             $("#jumpEasterEgg").css('display','block');
  566.                         } else if (easterEgg > 0 && (currentTime > easterEgg)) {
  567.                             $("#jumpEasterEgg").css('display','none');
  568.                         } else if (!skipCoda && videoCoda > 0 && (currentTime > videoCoda)) {
  569.                             $("#jumpCoda").css('display','block');
  570.                         } else if (currentTime > videoStart) {
  571.                             $("#jumpStart").css('display','none');
  572.                         } else if (!skipStart && (currentTime < videoStart)) {
  573.                             $("#jumpStart").css('display','block');
  574.                             $("#jumpStart").css('right','calc(100% - 160px)');
  575.                         }
  576.                     //}
  577.                 }
  578.                
  579.                 if (isBuffering) {
  580.                     $('.playloading').css('display','block');
  581.                 } else {
  582.                     $('.playloading').css('display','none');
  583.                 }
  584.             }
  585.         } else {
  586.             if (isBuffering) {
  587.                 $('.playloading').css('display','block');
  588.             } else {
  589.                 $('.playloading').css('display','none');
  590.             }
  591.         }
  592.     }
  593. }
  594.  
  595. function updateThumbPos() {
  596.     if (playerIsInit) {
  597.         var duration = html5Player.getDuration();
  598.         var percent = barWidth * (currentTime/duration);
  599.         $("#range").slider('setValue', percent);
  600.     }
  601. }
  602.  
  603. function setDisplayTime(type, time) {
  604.     var timeHMS = timeToHms(time);
  605.     if (type == 'total') {
  606.         $('.videoContainer #totalTime').html(timeHMS); 
  607.     } else if (type == 'current') {
  608.         $('.videoContainer #playTime').html(timeHMS);
  609.     }
  610. }
  611.  
  612. function getHtml5Subtitle() {
  613.     if($('#subtitleList').html()!="")
  614.         return;
  615.     var sl = streaming.subtitles.length;
  616.     var subList = "";
  617.     if (sl > 0) {
  618.         var subClass = curSub==-1?'class="active"':'';
  619.         subList = '<a onclick="changeHtml5Subtitle(-1);" ' + subClass + '>不顯示</a>';
  620.         for (var i = 0; i < streaming.subtitles.length ; i++) {
  621.             var name = streaming.subtitles[i].name;
  622.             subClass = curSub == i ? 'class="active"' : '';
  623.             subList += '<a onclick="changeHtml5Subtitle('+i+');"' + subClass + '>' + name + '</a>';
  624.         }
  625.     } else {
  626.         $('#butSubtitle').css('display','none');
  627.     }
  628.     $('#subtitleList').html(subList);
  629. }
  630.  
  631. function changeHtml5Subtitle(var1) {
  632.     curSub = var1;
  633.     $('#subtitleValue').val(var1);
  634.    
  635.     if (var1 != -1) {      
  636.         $('track').remove();
  637.        
  638.         var subtitles_url = "";
  639.         if (streaming.subtitles.length > 0) {
  640.             subtitles_url = streaming.subtitles[var1].url;
  641.             subtitles_url = subtitles_url.replace("http://", "https://");
  642.         }
  643.         $('video').append('<track id="subtitle" src="'+subtitles_url+'" label="subtitle" kind="subtitles" srclang="eng" default="true" />');
  644.        
  645.         if (vid.textTracks.length>0) {
  646.             vid.textTracks[0].mode = "showing";
  647.         }
  648.     } else {
  649.         vid.textTracks[0].mode = "hidden";
  650.     }
  651.    
  652.     $('#subtitleList').html('');
  653.     getHtml5Subtitle();
  654.    
  655.     t2 = "設定", t3 = "字幕";
  656.     WTctr_play();
  657.    
  658. }
  659.  
  660. function getHtml5Audio() {
  661.     if($('#audioList').html()!="")
  662.         return;
  663.    
  664.     var audioTracks = html5Player.getAudioTracks();
  665.     var audClass = "";
  666.     var audList = "";
  667.     for (var i = 0; i < audioTracks.length; i++) {
  668.         var audioProperty = audioTracks[i];
  669.         var name = getChineseAudio(audioProperty.lang);
  670.        
  671.         if (curAud=="") {
  672.             if (audioProperty.lang == streaming.mainTrack) {
  673.                 audClass = 'class="active"';
  674.             } else {
  675.                 if (streaming.mainTrack==null && i==0) {
  676.                     audClass = 'class="active"';
  677.                 } else if (matchAud==false && i==0) {
  678.                     audClass = 'class="active"';
  679.                 } else {
  680.                     audClass = '';
  681.                 }
  682.             }
  683.         } else {
  684.             audClass = curAud == audioProperty.id ? 'class="active"' : '';
  685.         }
  686.         audList += '<a onclick="changeHtml5Audio(\''+audioProperty.id+'\');"' + audClass + '>' + name + '</a>';
  687.     }
  688.     $('#audioList').html(audList);
  689. }
  690.  
  691. function changeHtml5Audio(var1) {
  692.     curAud = var1;
  693.     html5Player.selectAudioTrack(curAud);
  694.     $('#audioList').html('');
  695.     getHtml5Audio();
  696.     t2 = "設定", t3 = "語言" ;
  697.     WTctr_play();
  698. }
  699.    
  700. function timeToHms(d) {
  701.     d = Number(d);
  702.     var h = Math.floor(d / 3600);
  703.     var m = Math.floor(d % 3600 / 60);
  704.     var s = Math.floor(d % 3600 % 60);
  705.     return ((h > 0 ? h + " : " + (m < 10 ? "0" : "") : "") + m + " : " + (s < 10 ? "0" : "") + s);
  706. }
  707.  
  708. function isFullScreen() {
  709.     return document.fullscreenElement || document.msFullscreenElement || document.mozFullScreen || document.webkitIsFullScreen;
  710. }
  711. //
  712. var fullScreen = false;
  713. function enterFullScreen() {
  714.     if (videoContainer.requestFullscreen) {
  715.         videoContainer.requestFullscreen();
  716.     } else if (videoContainer.msRequestFullscreen) {
  717.         videoContainer.msRequestFullscreen();
  718.     } else if (videoContainer.mozRequestFullScreen) {
  719.         videoContainer.mozRequestFullScreen();
  720.     } else {
  721.         videoContainer.webkitRequestFullScreen();
  722.     }
  723.     fullScreen = true;
  724. }
  725.  
  726. function exitFullScreen() {
  727.     if (document.exitFullscreen) {
  728.         document.exitFullscreen();
  729.     } else if (document.mozCancelFullScreen) {
  730.         document.mozCancelFullScreen();
  731.     } else if (document.msExitFullscreen) {
  732.         document.msExitFullscreen();
  733.     } else {
  734.         document.webkitCancelFullScreen();
  735.     }
  736.     fullScreen = false;
  737. }
  738.  
  739. $(document).on("mozfullscreenchange webkitfullscreenchange fullscreenchange", fullscreenChange);
  740. function fullscreenChange(){
  741.     if (!isFullScreen()) {
  742.         fullScreen = false;
  743.     }
  744. }
  745.  
  746. function closeHtml5Movie() {
  747.     isClose = true;
  748.     PlayerActionUtil.startPlayUpdate(playUpdateCallback);
  749.     h5player.pause();
  750.     //PlayerActionUtil.removeHotkeys();
  751.     h5player.closePlayer();
  752.     playNextFlag = false;
  753.     loadingFlag = true;
  754.     fixFirefoxAutoplayBug = false; 
  755.     errorShowFlag = true;
  756.     errorTime = 0;
  757.     $('#subtitleValue').val('');
  758. }
  759.  
  760. function PlayerActionUtil() {}
  761. PlayerActionUtil.bindMovieControlBarEvents = function() {
  762.     movieControlBarIsInit = true;
  763.     var skipSeconds = 30;
  764.     var mouseX_window = "";
  765.    
  766.     $(function() {
  767.         //播放按鍵
  768.         $("#btnVODPlay").on('click', function() {
  769.             if ($('#btnVODPlay').hasClass('paused')) {
  770.                 $('#btnVODPlay').removeClass('paused');
  771.                 h5player.pause();
  772.             } else {
  773.                 $('#btnVODPlay').addClass('paused');
  774.                 h5player.play();
  775.             }          
  776.         });
  777.        
  778.        
  779.         //快轉按鍵
  780.         $("#btnFwd").on('click', function() {
  781.             var pos = h5player.currentTime();
  782.             h5player.jumpTo(pos+skipSeconds);          
  783.         });
  784.        
  785.        
  786.         //倒轉按鍵
  787.         $("#btnBck").on('click', function() {
  788.             var pos = h5player.currentTime();
  789.             if (pos-skipSeconds>0) {
  790.                 h5player.jumpTo(pos-skipSeconds);    
  791.             } else {
  792.                 h5player.jumpTo(0);
  793.             }
  794.         });
  795.        
  796.        
  797.         //音量按鍵
  798.         $(".btn-volume").on('click', function() {
  799.             if (playerIsInit) {
  800.                 if($('.btn-volume').hasClass('mute')) {
  801.                     h5player.volume(0);
  802.                 } else {
  803.                     h5player.volume(0.5);
  804.                     $("#volume-bar").slider('setValue', 10);
  805.                 }      
  806.             }
  807.         });
  808.        
  809.         var volDrag = false;
  810.         $('#volume-bar').slider().on('slideStart', function(ev) {
  811.             originalVal = $('#volume-bar').data('slider').getValue();
  812.             if (playerIsInit) {
  813.                 volDrag = true;
  814.             }
  815.         });
  816.  
  817.         $('#volume-bar').slider().on('slideStop', function(ev) {
  818.             var newVal = $('#volume-bar').data('slider').getValue();
  819.             if (originalVal != newVal) {
  820.                 if (volDrag) {
  821.                     volDrag = false;
  822.                    
  823.                     var pos = newVal / volWidth;
  824.                     if (pos >= 1) {
  825.                         pos = 1;
  826.                     } else if (pos <= 0) {
  827.                         pos = 0
  828.                     }
  829.                    
  830.                     var realVolume = pos;
  831.                     h5player.volume(realVolume);
  832.                     $('#volume-bar').slider({
  833.                         value:newVal
  834.                     });
  835.                 }      
  836.             }
  837.         });
  838.  
  839.  
  840.         //Seek Bar
  841.         var playFlag = false;
  842.         var maxduration;
  843.         var clipPos;
  844.         $('#range').slider().on('change', function(event) {
  845.             var a = event.value.newValue;
  846.             var b = event.value.oldValue;
  847.             if (a!=b) {
  848.                 isSeeking = true;
  849.                 maxduration = h5player.duration();
  850.                    
  851.                 if (playerIsInit) {
  852.                     if (isPlaying) {
  853.                         h5player.pause();
  854.                         playFlag = true;
  855.                     }      
  856.                 }
  857.  
  858.                 var rangeX_start = $('#range-slider').offset().left;
  859.                 var mouseX_range = mouseX_window - rangeX_start; //滑鼠在range上的X位置
  860.                 var rangeWidth = $('#range-slider').outerWidth(); //range寬度
  861.                 var pos = a / (rangeWidth-1) * maxduration;
  862.                    
  863.                 if (clipPos!='') {
  864.                     pos = clipPos;
  865.                 } else {
  866.                     pos = (maxduration/barWidth)*a;
  867.                 }
  868.                    
  869.                 $('.playloading').css('display','block');
  870.                 h5player.jumpTo(pos);
  871.                
  872.                 if (playFlag) {
  873.                     h5player.play();
  874.                     playFlag = false;
  875.                    
  876.                     t2 = "錨點", t3 = "na";
  877.                     WTctr_play();
  878.                 }
  879.             }
  880.         });
  881.        
  882.        
  883.         //跳轉章節
  884.         var swiper = "";
  885.         $("#btnChapters").on('click', function() {
  886.             $("#btnVODPlay").click();
  887.  
  888.             $('#chapter-popup').css('display','block');
  889.            
  890.             if (swiper != "") {
  891.                 swiper.destroy();
  892.             }
  893.             swiper = new Swiper('#chapter-swiper', {
  894.                 slidesPerView: 4,
  895.                 spaceBetween: 30,
  896.                 slidesPerGroup: 4,
  897.                 loop: false,
  898.                 loopFillGroupWithBlank: true,
  899.                 lazy: true,
  900.                 navigation: {
  901.                     nextEl: '.swiper-button-next',
  902.                     prevEl: '.swiper-button-prev',
  903.                 },
  904.             });
  905.         });
  906.  
  907.        
  908.         //全螢幕
  909.         $("#fullscreen").on('click', function() {
  910.             h5player.fullscreen();
  911.         });
  912.  
  913.  
  914.         //設定
  915.         $('.btn-menu').on('click', function() {
  916.             var _this = $('#setting');
  917.             //if ($(_this).css("display") == "none") {//hide->show
  918.                 getHtml5Subtitle();
  919.                 getHtml5Audio(); //等音軌版本
  920.                 //$(_this).slideDown();
  921.             //} else {//show->hide
  922.                 //$(_this).slideUp();
  923.             //}
  924.         });
  925.  
  926.         // setting
  927.         $("#setting").on("click", "a", function(){
  928.             t2 = $(this).closest(".t2").attr("t2");
  929.             t3 = $(this).closest("li").find(".title").html();
  930.             WTctr_play();
  931.         })
  932.        
  933.         //畫質
  934.         $("#butQuality a").click(function() {  
  935.             var quality = $(this).attr('lid');
  936.             var qualityIdx = quality.split("bQ")[1];
  937.            
  938.             var qualityLevels = html5Player.getQualityLevels();
  939.             if (qualityLevels.length>3 && qualityIdx>-1) {
  940.                 var videoProperty = qualityLevels[qualityIdx];
  941.                 h5player.videoQuality(videoProperty.id);               
  942.             } else {
  943.                 h5player.videoQuality('');
  944.             }
  945.  
  946.             $('#butQuality a').removeClass('active');
  947.             $(this).addClass('active');
  948.         });
  949.  
  950.        
  951.         //倍速
  952.         $('#btnSpeed a').on('click', function() {
  953.             var speed = $(this).attr('lid');
  954.             var speedIdx = speed.split("bS")[1];
  955.             h5player.playbackRate(speedIdx);
  956.             $('#btnSpeed a').removeClass('active');
  957.             $(this).addClass('active');
  958.         });
  959.  
  960.  
  961.         //縮圖顯示
  962.         $('#range-slider').mousemove(function( event ) {
  963.             if (!is_preview_movie) {
  964.                 var videoWidth = $('#movie_player').outerWidth(); //video寬度        
  965.                 var rangeWidth = $('#range-slider').outerWidth(); //range寬度        
  966.                 mouseX_window = event.pageX; //滑鼠所在螢幕X位置
  967.                 var rangeX_start = $('#range-slider').offset().left; //range啟始的X位置               
  968.                 var rangeGap = (videoWidth - rangeWidth) / 2;
  969.                 var mouseX_range = mouseX_window - rangeX_start; //滑鼠在range上的X位置                 
  970.                 var clipWidth = $('.clip-box').outerWidth(); //預覽圖寬度         
  971.                 var clipX_end = mouseX_range + (clipWidth/2);
  972.                
  973.                 var clipP;
  974.                 if (mouseX_range > clipWidth/2) {
  975.                     if (clipX_end < rangeWidth) {
  976.                         clipP = mouseX_range-(clipWidth/2)+rangeGap;
  977.                     } else {
  978.                         clipP = rangeWidth+rangeGap-clipWidth;
  979.                     }
  980.                     $("#clipView").show().css({ left: clipP });
  981.                 } else {
  982.                     $("#clipView").show().css({ left: rangeGap });
  983.                 }
  984.    
  985.                 maxduration = h5player.duration();
  986.                 var pos;
  987.                 if (mouseX_range < 0) {
  988.                     pos = 0;
  989.                 } else {
  990.                     if (mouseX_range < (rangeWidth-1)) {
  991.                         pos = mouseX_range / (rangeWidth-1) * maxduration;
  992.                     } else {
  993.                         pos = (rangeWidth-1) / (rangeWidth-1) * maxduration;
  994.                     }
  995.                 }
  996.    
  997.                 if (isNaN(pos)) {
  998.                     $('#clip-box-info').html("0 : 00");
  999.                 } else {
  1000.                     if (positionList!="") {
  1001.                         if (pos>=videoCoda && videoCoda>0 && easterEgg==0) {
  1002.                             $("#jumpCoda").css('display','block');
  1003.                             setTimeout(function() {
  1004.                                 $("#jumpCoda").css('display','none');
  1005.                             }, 4000);
  1006.                         } else if (pos>=easterEgg && easterEgg>0) {
  1007.                             $("#jumpEasterEgg").css('display','block');
  1008.                             setTimeout(function() {
  1009.                                 $("#jumpEasterEgg").css('display','none');
  1010.                             }, 4000);
  1011.                         }
  1012.                     }
  1013.                     $('#clip-box-info').html(timeToHms(pos));
  1014.                 }
  1015.                 clipPos = pos;
  1016.                
  1017.                 var pic = Math.ceil(pos / (60*20)); //20分鐘一張圖
  1018.                 var pic_num = pic>0 ? pic:1;
  1019.                 $("#clip-box-img").attr("src",config_imageDomain+"/THUMB/"+streaming.streamingId+"/"+streaming.streamingId+"_thumb_"+pic_num+"_L.jpg");
  1020.    
  1021.                 var picTemp = parseInt(pic_num)-1;
  1022.                 var thumbnail = Math.ceil((pos-(picTemp*60*20)) / 10);
  1023.                 if (thumbnail == 0) {
  1024.                     thumbnail = 1;
  1025.                 }
  1026.    
  1027.                 var thumbnail_int = parseInt(thumbnail / 10);
  1028.                 var thumbnail_remainder = thumbnail % 10;
  1029.                 var thumbnail_X;
  1030.                 if (thumbnail > 10) {
  1031.                     if (thumbnail_remainder == 0) {
  1032.                         thumbnail_X = thumbnail_int-1;
  1033.                     } else {
  1034.                         thumbnail_X = thumbnail_int;
  1035.                     }
  1036.                 } else {
  1037.                     thumbnail_X = 0;
  1038.                 }
  1039.                 var thumbnail_Y = thumbnail_remainder>0 ? (thumbnail_remainder-1):9;
  1040.    
  1041.                 $("#clip-box-img").css("margin",((-112.6)*thumbnail_X)+"px "+ "0px 0px"+" "+((-200)*thumbnail_Y)+"px"); //高112 寬200
  1042.                 $('.clip-box').css('display','block');
  1043.             }
  1044.         });
  1045.        
  1046.         $('#range-slider').mouseleave(function() {
  1047.             $('.clip-box').css('display','none');
  1048.             clipPos = '';
  1049.         });
  1050.     });
  1051. }
  1052.  
  1053. PlayerActionUtil.bindTVControlBarEvents = function() {
  1054.     tvControlBarIsInit = true;
  1055.    
  1056.     //播放按鍵
  1057.     $("#btnPlay").on('click', function() {
  1058.         if ($('#btnPlay').hasClass('paused')) {
  1059.             $('#btnPlay').removeClass('paused');
  1060.             h5player.pause();
  1061.         } else {
  1062.             $('#btnPlay').addClass('paused');
  1063.             h5player.play();
  1064.         }          
  1065.     });
  1066.    
  1067.     //音量按鍵
  1068.     $(".btn-volume").on('click', function() {
  1069.         if (playerIsInit) {
  1070.             if($('.btn-volume').hasClass('mute')) {
  1071.                 h5player.volume(0);
  1072.             } else {
  1073.                 vid.muted = false;
  1074.                 h5player.volume(0.5);
  1075.                 $("#volume-bar").slider('setValue', 10);
  1076.             }      
  1077.         }
  1078.     });
  1079.    
  1080.     var volDrag = false;
  1081.     $('#volume-bar').slider().on('slideStart', function(ev) {
  1082.         originalVal = $('#volume-bar').data('slider').getValue();
  1083.         if (playerIsInit) {
  1084.             volDrag = true;
  1085.         }
  1086.     });
  1087.  
  1088.     $('#volume-bar').slider().on('slideStop', function(ev) {
  1089.         var newVal = $('#volume-bar').data('slider').getValue();
  1090.         if (originalVal != newVal) {
  1091.             if (volDrag) {
  1092.                 volDrag = false;
  1093.                
  1094.                 var pos = newVal / volWidth;
  1095.                 if (pos >= 1) {
  1096.                     pos = 1;
  1097.                 } else if (pos <= 0) {
  1098.                     pos = 0
  1099.                 }
  1100.                
  1101.                 var realVolume = pos;
  1102.                 h5player.volume(realVolume);
  1103.                 $('#volume-bar').slider({
  1104.                     value:newVal
  1105.                 });
  1106.             }      
  1107.         }
  1108.     });
  1109.    
  1110.     //全螢幕
  1111.     $("#fullscreen").on('click', function() {
  1112.         h5player.fullscreen();
  1113.     });
  1114. }
  1115.  
  1116. PlayerActionUtil.startPlayUpdateTimer = function(time, playUpdateCallback) {
  1117.     setTimeout(
  1118.             function() {
  1119.                 _playUpdateTimerStarted = true;
  1120.                 if(!is_preview_movie)
  1121.                     PlayerActionUtil.startPlayUpdate(playUpdateCallback);
  1122.                 PlayerActionUtil.startPlayUpdateTimer(time, playUpdateCallback);
  1123.             }, time);
  1124. }
  1125.  
  1126. PlayerActionUtil.startPlayUpdate = function(playUpdateCallback) {
  1127.     var playUpdateParams = {
  1128.             contentId : streaming.contentId,
  1129.             contentType : streaming.contentType,
  1130.             streamingId : streaming.streamingId,
  1131.             stopTime : Math.round(h5player.currentTime())
  1132.         };
  1133.    
  1134.     if (!_stopPlayUpdate && (getCookie("dbCrashFlag") != "911")) {
  1135.         VenusAPI.playUpdate(null, playUpdateParams, playUpdateCallback);
  1136.         if (isClose) {
  1137.             VenusAPI.playStop();
  1138.         }
  1139.     }
  1140. }
  1141.  
  1142. PlayerActionUtil.bindHotkeyEvents = function() {
  1143.     shortcut.add("esc",function() {
  1144.         if (isFullScreen()) {
  1145.             exitFullScreen();
  1146.         } else {
  1147.             isClose = true;
  1148.             PlayerActionUtil.startPlayUpdate(playUpdateCallback);
  1149.             h5player.pause();
  1150.             PlayerActionUtil.removeHotkeys();  
  1151.             h5player.closePlayer();
  1152.             playNextFlag = false;
  1153.             loadingFlag = true;
  1154.             errorShowFlag = true;
  1155.             errorTime = 0;
  1156.             closePopup();
  1157.         }
  1158.     });
  1159. }
  1160.  
  1161. PlayerActionUtil.removeHotkeys = function() {
  1162.     var hotKeys =
  1163.         [
  1164.             "esc"
  1165.         ];
  1166.    
  1167.     for (var i=0; i<hotKeys.length; i++) {
  1168.         shortcut.remove(hotKeys[i]);
  1169.     }
  1170. }
  1171.  
  1172. function jumpChapter(type, pos) {
  1173.     if (type == "start") {
  1174.         html5Player.setPosition(videoStart);
  1175.         $("#jumpStart").css('display','none');
  1176.        
  1177.         t2 = "跳過片頭", t3 = "na" ;
  1178.     } else if (type == "coda") {
  1179.         skipCoda = true;
  1180.         html5Player.setPosition(totalTime-2);
  1181.         $("#jumpCoda").css('display','none');
  1182.        
  1183.         t2 = "跳過片尾", t3 = "na" ;
  1184.        
  1185.     } else if (type == "easterEgg") {
  1186.         html5Player.setPosition(easterEgg);
  1187.         $("#jumpEasterEgg").css('display','none');
  1188.        
  1189.         t2 = "跳過片尾 看彩蛋", t3 = "na" ;
  1190.        
  1191.     } else if (type == "chapter") {
  1192.         html5Player.setPosition(pos);
  1193.         $("#btnVODPlay").click();
  1194.         $("#chapter-popup").css('display','none');
  1195.         t2 = "跳轉章節icon", t3 = "章節縮圖" ;
  1196.     }
  1197.     WTctr_play();  
  1198. }
  1199.  
  1200. function jumpHidden(type) {
  1201.     if (type == "start") {
  1202.         skipStart = true;
  1203.         $("#jumpStart").css('display','none');
  1204.     } else if (type == "coda") {
  1205.         $("#jumpCoda").css('display','none');
  1206.     } else if (type == "easterEgg") {
  1207.         skipEnd = true;
  1208.         $("#jumpEasterEgg").css('display','none');
  1209.     }
  1210. }
  1211.  
  1212. var sec = 10;
  1213. function timer() {
  1214.     $(".timer .number").text(sec);
  1215.     if(sec > 0) {
  1216.         sec--;
  1217.         $(".timer .number").text(sec);
  1218.     } else {
  1219.         // WT 自動續播
  1220.         parent.videoplay_tracking("自動續播");
  1221.         clearInterval(nextTimer);
  1222.         sec = 10;
  1223.         $(".timer-box").fadeOut(500);
  1224.        
  1225.         var sHref=top.location.href;
  1226.         parent.$.fancybox.close();
  1227.         if(sHref.indexOf("chapter")> 0){
  1228.             var name = "#playbutton_"+(playIndex+1);
  1229.             parent.$(name).trigger('click');
  1230.         }else{
  1231.             parent.$(".play-button-box").data('src', "/player?sid="+nextSid+"&stype="+stype+"&ctype="+ctype+"&cid="+nextCid+"&epi="+nextEpisodeName);
  1232.             parent.$("#playbutton").trigger('click');
  1233.         }
  1234.     }
  1235. }
  1236.  
  1237. function clickRecommend(url, type) {
  1238.     if (type == "play") {
  1239.         setCookie("recommend_autoplay", "1");
  1240.         setCookie("eventPageId", "05");
  1241.     }
  1242.     parent.window.location = url;
  1243. }
  1244.  
  1245. function closeRecommendPopup(type) {
  1246.     $('#recommend-popup1').css('display','none');
  1247.     $('#recommend-popup2').css('display','none');
  1248.     $('#recommend-popup3').css('display','none');
  1249.     $('#chapter-popup').css('display','none');
  1250.    
  1251.     if (ctype != 1) {
  1252.         clearInterval(nextTimer);
  1253.     }
  1254.    
  1255.     if (type == "replay") {
  1256.         $("#btnVODPlay").click();
  1257.     } else if (type == "next" || type == "last") {
  1258.         var sHref=top.location.href;
  1259.         parent.$.fancybox.close();
  1260.         if(sHref.indexOf("chapter") > 0 ){
  1261.             var name;
  1262.             if (type == "next") {
  1263.                 name = "#playbutton_"+(playIndex+1);
  1264.                 // WT 續播
  1265.                 parent.videoplay_tracking("續播");
  1266.             } else {
  1267.                 name = "#playbutton_"+(playIndex-1);
  1268.             }
  1269.             parent.$(name).trigger('click');
  1270.         } else {
  1271.             if (type == "next") {
  1272.                 // WT 續播
  1273.                 parent.videoplay_tracking("續播");
  1274.                 parent.$(".play-button-box").data('src', "/player?sid="+nextSid+"&stype="+stype+"&ctype="+ctype+"&cid="+nextCid+"&epi="+nextEpisodeName);
  1275.             } else {
  1276.                 parent.$(".play-button-box").data('src', "/player?sid="+lastSid+"&stype="+stype+"&ctype="+ctype+"&cid="+lastCid+"&epi="+lastEpisodeName);
  1277.             }
  1278.             parent.$("#playbutton").trigger('click');
  1279.         }
  1280.     } else if (type == "chapter") {
  1281.         $("#btnVODPlay").click();
  1282.     }
  1283.     return false;
  1284. }
  1285.  
  1286. function FirefoxAutoplay() {
  1287.     if (!fixFirefoxAutoplayBug) {
  1288.         if (is_preview_movie) {
  1289.             fixFirefoxAutoplayBug = true;
  1290.             setTimeout(
  1291.                     function(){
  1292.                         h5player.pause();
  1293.                         h5player.play();
  1294.                     }, 2000);
  1295.         } else {
  1296.             h5player.pause();
  1297.             h5player.play();
  1298.         }
  1299.        
  1300.     } else {
  1301.         isBuffering = false;
  1302.     }
  1303. }
  1304.  
  1305.  
  1306. //WT CTR
  1307. var WT_block = "PLAYER";
  1308. function WTctr_play(){
  1309.     if(typeof t3 === "undefined") t3 = "na";
  1310.     if(typeof t2 === "undefined" && typeof t3 !== "undefined"){
  1311.         t2 = t3, t3 = "na";
  1312.     }
  1313.     t1 = getContentTypeName(streaming.contentType);
  1314.     if(t2) WTctr_player(WT_block, t1, t2, t3);
  1315.    
  1316. }
  1317.  
  1318. function WTctr_player(block, t1, t2, t3){
  1319.   if((block != "") && (typeof t1 !== "undefined") && (typeof t2 !== "undefined")){
  1320.     dcsMultiTrack('DCS.dcsuri', '/CTR.dat', 'DCSext.WTlayout_block', block, 'DCSext.WTlayout_type', t1, 'DCSext.WTlayout_type2', t2, 'DCSext.WTlayout_type3', t3);    
  1321.   }
  1322. }
  1323.  
  1324. function getChineseAudio(name) {
  1325.     var changeName = name;
  1326.     if (name=="def") {
  1327.         changeName = "預設";
  1328.     } else if (name=="chi"){
  1329.         changeName = "華語";
  1330.     } else if (name=="kor") {
  1331.         changeName = "韓語";
  1332.     } else if (name=="jpn") {
  1333.         changeName = "日語";
  1334.     } else if (name=="fre") {
  1335.         changeName = "法語";
  1336.     } else if (name=="ger") {
  1337.         changeName = "德語";
  1338.     } else if (name=="eng") {
  1339.         changeName = "英語";
  1340.     } else if (name=="hkg") {
  1341.         changeName = "粵語"; 
  1342.     } else if (name=="ita") {
  1343.         changeName = "義大利語";
  1344.     } else if (name=="spa") {
  1345.         changeName = "西班牙語";
  1346.     } else if (name=="twn") {
  1347.         changeName = "閩南語";
  1348.     } else if (name=="tha") {
  1349.         changeName = "泰語";
  1350.     } else if (name=="tib") {
  1351.         changeName = "藏語";
  1352.     } else if (name=="hin") {
  1353.         changeName = "印度語";
  1354.     } else if (name=="dan") {
  1355.         changeName = "丹麥語";
  1356.     } else if (name=="vie") {
  1357.         changeName = "越南語";
  1358.     } else if (name=="swe") {
  1359.         changeName = "瑞典語";
  1360.     } else if (name=="may") {
  1361.         changeName = "馬來語";
  1362.     } else if (name=="dut") {
  1363.         changeName = "荷蘭語";
  1364.     } else if (name=="pol") {
  1365.         changeName = "波蘭語";
  1366.     } else if (name=="ind") {
  1367.         changeName = "印尼語";
  1368.     } else if (name=="per") {
  1369.         changeName = "波斯語";
  1370.     } else if (name=="gre") {
  1371.         changeName = "希臘語";
  1372.     } else if (name=="lat") {
  1373.         changeName = "拉丁語";
  1374.     } else if (name=="bur") {
  1375.         changeName = "緬甸語";
  1376.     } else if (name=="egy") {
  1377.         changeName = "埃及語";
  1378.     } else if (name=="ice") {
  1379.         changeName = "冰島語";
  1380.     } else if (name=="dzo") {
  1381.         changeName = "不丹語";
  1382.     } else if (name=="cze") {
  1383.         changeName = "捷克語";
  1384.     } else if (name=="kur") {
  1385.         changeName = "庫德語";
  1386.     } else if (name=="lao") {
  1387.         changeName = "寮國語";
  1388.     } else if (name=="mya") {
  1389.         changeName = "瑪雅語";
  1390.     } else if (name=="mon") {
  1391.         changeName = "蒙古語";
  1392.     } else if (name=="afr") {
  1393.         changeName = "南非語";
  1394.     } else if (name=="nor") {
  1395.         changeName = "挪威語";
  1396.     } else if (name=="zul") {
  1397.         changeName = "祖魯語";
  1398.     } else if (name=="rus") {
  1399.         changeName = "俄羅斯語";
  1400.     } else if (name=="heb") {
  1401.         changeName = "希伯來語";
  1402.     } else if (name=="por") {
  1403.         changeName = "葡萄牙語";
  1404.     } else if (name=="tam") {
  1405.         changeName = "坦米爾語";
  1406.     } else if (name=="hun") {
  1407.         changeName = "匈牙利語";
  1408.     } else if (name=="phl") {
  1409.         changeName = "菲律賓語";
  1410.     } else if (name=="mac") {
  1411.         changeName = "馬其頓語";
  1412.     } else if (name=="ara") {
  1413.         changeName = "阿拉伯語";
  1414.     } else if (name=="aut") {
  1415.         changeName = "奧地利語";
  1416.     } else if (name=="bam") {
  1417.         changeName = "班巴拉語";
  1418.     } else if (name=="lin") {
  1419.         changeName = "林格拉語";
  1420.     } else if (name=="hat") {
  1421.         changeName = "克里奧語";
  1422.     } else if (name=="kaz") {
  1423.         changeName = "哈薩克語";
  1424.     } else if (name=="khm") {
  1425.         changeName = "柬埔寨語";
  1426.     } else if (name=="lit") {
  1427.         changeName = "立陶宛語";
  1428.     } else if (name=="ben") {
  1429.         changeName = "孟加拉語";
  1430.     } else if (name=="nep") {
  1431.         changeName = "尼泊爾語";
  1432.     } else if (name=="geo") {
  1433.         changeName = "喬治亞語";
  1434.     } else if (name=="lso") {
  1435.         changeName = "塞索托語";
  1436.     } else if (name=="sin") {
  1437.         changeName = "僧伽羅語";
  1438.     } else if (name=="tgl") {
  1439.         changeName = "他加祿語";
  1440.     } else if (name=="tel") {
  1441.         changeName = "泰盧固語";
  1442.     } else if (name=="tur") {
  1443.         changeName = "土耳其語";
  1444.     } else if (name=="bul") {
  1445.         changeName = "保加利亞語";
  1446.     } else if (name=="amh") {
  1447.         changeName = "阿姆哈拉語";
  1448.     } else if (name=="est") {
  1449.         changeName = "愛沙尼亞語";
  1450.     } else if (name=="bos") {
  1451.         changeName = "波士尼亞語";
  1452.     } else if (name=="fla") {
  1453.         changeName = "法蘭德斯語";
  1454.     } else if (name=="scc") {
  1455.         changeName = "塞爾維亞語";
  1456.     } else if (name=="lav") {
  1457.         changeName = "拉脫維亞語";
  1458.     } else if (name=="rum") {
  1459.         changeName = "羅馬尼亞語";
  1460.     } else if (name=="slo") {
  1461.         changeName = "斯洛伐克語";
  1462.     } else if (name=="cat") {
  1463.         changeName = "加泰隆尼亞語";
  1464.     } else if (name=="scr") {
  1465.         changeName = "克羅埃西亞語";
  1466.     } else if (name=="alb") {
  1467.         changeName = "阿爾巴尼亞語";
  1468.     } else if (name=="slv") {
  1469.         changeName = "斯洛維尼亞語";
  1470.     } else if (name=="oth") {
  1471.         changeName = "其他";
  1472.     }
  1473.     return changeName;
  1474. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement