Why is Columbo no longer on MeTV? (2024)

'); $videoEl.append('' + '' + ''); setTimeout(function(){ $('.mute-overlay').on('touchstart click', function(e){ if(e.handled === false) return; e.stopPropagation(); e.preventDefault(); e.handled = true; player.muted(false); //console.log("volumee " + WVM.activePlayer.volume()); $(this).hide(); $(this).css('display', 'none'); var currentTime = player.currentTime(); if(currentTime < 3){ player.currentTime(0); } var adsManager = player.ima.getAdsManager(); adsManager.setVolume(player.volume()); }); $('.video-close-floating').on('click', function(){ WVM['player_state' + videoId]['CANCEL_FLOATING'] = true; WVM.IS_FLOATING = false; window.dispatchEvent(WVM.FloatEventEnd); $('#media-container-' + videoId).css('width', "100%"); $('#media-container-' + videoId).removeClass('floating-video'); $('#media-placeholder-' + videoId).css('display', 'none'); player.pause(); WVM.NO_FLOAT_COOKIE(); var adsManager = player.ima.getAdsManager(); if(adsManager){ adsManager.pause(); } }); if(hideClose){ setTimeout(function(){ $('.video-close-floating').css('display', 'none'); $('.video-close-floating').remove(); }, 500); } }, 500); } else{ //wait 500 sec call again setTimeout(function(){ WVM.addMuteButton(videoId, player, hideClose); }, 500); } }; WVM.addFloatingAbility = function(videoId, player){ var deviceName = 'desktop'; if($('#media-container-' + videoId).length > 0){ if(deviceName == 'desktop'){ WVM.VIDEO_TOP = $('#media-container-' + videoId).offset().top; }else{ WVM.VIDEO_TOP = $('#media-container-' + videoId).offset().top - $('.next-dropdown-accordion').height(); } if(deviceName == 'desktop'){ WVM.VIDEO_HEIGHT = $('#html5-video-' + videoId).outerHeight(); }else{ WVM.VIDEO_HEIGHT = $('#html5-video-' + videoId).outerHeight(); } WVM.CONTAINER_HEIGHT = $('#media-container-' + videoId).height(); //console.log("container height: " + WVM.CONTAINER_HEIGHT); $(window).on( "resize", function() { if(deviceName == 'desktop'){ WVM.VIDEO_TOP = $('#media-container-' + videoId).offset().top; }else{ WVM.VIDEO_TOP = $('#media-container-' + videoId).offset().top - $('.next-dropdown-accordion').height(); } if(deviceName == 'desktop'){ WVM.VIDEO_HEIGHT = $('#html5-video-' + videoId).outerHeight(); }else{ WVM.VIDEO_HEIGHT = $('#html5-video-' + videoId).outerHeight(); } WVM.CONTAINER_HEIGHT = $('#media-container-' + videoId).height(); console.log("container height: " + WVM.CONTAINER_HEIGHT); }); //console.log("VIDEOTOP: " + WVM.VIDEO_TOP); //console.log("VIDEOHEIGHT: " + WVM.VIDEO_HEIGHT); $(window).on( "scroll", function() { if(!WVM.IS_FLOATING){ if(deviceName == 'desktop'){ WVM.CONTAINER_HEIGHT = $('#media-container-' + videoId).height(); }else{ WVM.CONTAINER_HEIGHT = $('#media-container-' + videoId + " .hlsvideo-wrapper").height() + $('#media-container-' + videoId + " .now-playing-container").height(); } } //var top = $('#media-container-' + videoId).offset().top; var offset = WVM.VIDEO_TOP + (WVM.VIDEO_HEIGHT / 2); var offsetBack = WVM.VIDEO_TOP; var changed = false; //console.log("VIDEOTOP: " + WVM.VIDEO_TOP); //console.log("VIDEOHEIGHT: " + WVM.VIDEO_HEIGHT); //console.log("scrolltop " + $(window).scrollTop()); //only float if playing var isPlaying = WVM['player_state' + videoId]['IS_PLAYING'] || WVM['player_state' + videoId]['AD_IS_PLAYING']; if(isPlaying){ $('.vjs-loading-spinner').hide(); } var offsetFloatAd = 99999999; if(deviceName == 'desktop' && $('#float_anchor').length > 0){ offsetFloatAd = $('#float_anchor').offset().top - WVM.VIDEO_HEIGHT; //console.log("float anchor offset top " + offsetFloatAd); } if($(window).scrollTop() > offset && isPlaying && !WVM['player_state' + videoId]['CANCEL_FLOATING']){ $('#media-placeholder-' + videoId).height(WVM.CONTAINER_HEIGHT); $('#media-placeholder-' + videoId).css('display', 'block'); if(!WVM.IS_FLOATING){ changed = true; window.dispatchEvent(WVM.FloatEventStart); } WVM.IS_FLOATING = true; $('#media-container-' + videoId).addClass('floating-video'); //set right var sWidth = window.innerWidth || document.documentElement.clientWidth; var sHeight = window.innerHeight || document.documentElement.clientHeight; if(sWidth > 700 && WADS.IS_STICKING){ $('#media-container-' + videoId).addClass('desktop-ad-is-sticky'); }else if(!WADS.IS_STICKING){ $('#media-container-' + videoId).removeClass('desktop-ad-is-sticky'); } if(sWidth <= 700 && WADS.IS_STICKING){ $('#media-container-' + videoId).addClass('mobile-ad-is-sticky'); }else if(sWidth <= 700 && !WADS.IS_STICKING){ $('#media-container-' + videoId).removeClass('mobile-ad-is-sticky'); } if(deviceName == 'desktop' || sWidth > 900){ var leftPos2 = $('aside').get(0).getBoundingClientRect().left; var leftPos = $('aside').offset().left - 50; $('#media-container-' + videoId).css('left', leftPos + "px"); var newWidth = Math.floor(sWidth / 3.5); $('#media-container-' + videoId).css('width', newWidth + "px"); } else{ $('#media-container-' + videoId).css('width', "100% !important"); if(!WVM['player_state' + videoId]['PROMO_PLAYER']){ $('#media-container-' + videoId + ' .now-playing-container').css('display', 'block'); $('#media-container-' + videoId + ' .next-dropdown-accordion').css('display', 'block'); } } if(sWidth < 900 && sWidth > 500 && WVM['player_state' + videoId]['PROMO_PLAYER']){ $('#media-container-' + videoId).addClass('floating-video'); $('#media-container-' + videoId).addClass('mobile-container'); $('#media-container-' + videoId).addClass('promo-playlist'); } //floating-video $('#media-container-' + videoId + " " + '.page-carousel-wrapper').hide(); setTimeout(function(){ var hWrapper = $('.floating-video .hlsvideo-wrapper').height(); var npWidth = $('.floating-video .now-playing-container').height(); var ndWidth = $('.floating-video .next-dropdown-header').height() + 20; var scrollerHeight = sHeight - (hWrapper + npWidth + ndWidth); scrollerHeight = 180; //scrollerHeight = parseInt(scrollerHeight * 0.5); if(WVM.device_name == 'desktop'){ $('#media-container-' + videoId + " " + " .mobile-list-videos").height(scrollerHeight); } }, 100); } if($(window).scrollTop() < offsetBack || $(window).scrollTop() > offsetFloatAd){ if(WVM.IS_FLOATING){ changed = true; window.dispatchEvent(WVM.FloatEventEnd); } WVM.IS_FLOATING = false; $('#media-container-' + videoId).css('width', "100%"); $('#media-container-' + videoId).removeClass('desktop-ad-is-sticky'); $('#media-container-' + videoId).removeClass('mobile-ad-is-sticky'); $('#media-container-' + videoId).removeClass('floating-video'); $('#media-placeholder-' + videoId).css('display', 'none'); $('#media-container-' + videoId + ' .now-playing-container').css('display', 'block'); if(WVM['player_state' + videoId]['PROMO_PLAYER']){ $('#media-container-' + videoId + ' .now-playing-container').css('display', 'none'); $('#media-container-' + videoId + ' .next-dropdown-accordion').css('display', 'none'); } } if($('#next-dropdown-accordion-button-' + videoId).find('i').hasClass('fa-chevron-up')){ if(deviceName == "desktop" && !$('#media-container-' + videoId).hasClass('floating-video')){ $('#media-container-' + videoId + " " + '.page-carousel-wrapper').show(); $('#media-container-' + videoId + " " + '.mobile-list-wrapper').hide(); //console.log("showing desktop"); if(!WVM.player_state225157['CAROUSEL_INIT']){ WVM.setupCarousel(videoId); } }else{ if(changed){ //default closed for mobile/floating player $('#next-dropdown-accordion-button-' + videoId).find('i').removeClass('fa-chevron-up'); $('#next-dropdown-accordion-button-' + videoId).find('i').addClass('fa-chevron-down'); $('#media-container-' + videoId + " " + '.page-carousel-wrapper').hide(); $('#media-container-' + videoId + " " + '.mobile-list-wrapper').hide(); var currVideoId = WVM['player_state' + videoId]['VIDEO_ID']; if(currVideoId == '9999999999'){ currVideoId = WVM.playlist_ids[0]; } var nextVideoId = WVM.getNextPlaylistIndex(currVideoId); var myTitle = WVM.getPlaylistData(videoId, currVideoId, 'noprefixtitle'); $('#video-slider-nexttitle' + videoId).css('display', 'inline'); $('#video-slider-nexttitle' + videoId).html(myTitle); }else{ $('#media-container-' + videoId + " " + '.page-carousel-wrapper').hide(); $('#media-container-' + videoId + " " + '.mobile-list-wrapper').show(); } } }else{ $('#media-container-' + videoId + " " + '.page-carousel-wrapper').hide(); $('#media-container-' + videoId + " " + '.mobile-list-wrapper').hide(); } } ); $('#media-container-' + videoId + ' .video-close').on('click',function(){ //set back to paused and stop floating WVM['player_state' + videoId]['CANCEL_FLOATING'] = true; WVM.IS_FLOATING = false; window.dispatchEvent(WVM.FloatEventEnd); $('#media-container-' + videoId).css('width', "100%"); $('#media-container-' + videoId).removeClass('desktop-ad-is-sticky'); $('#media-container-' + videoId).removeClass('mobile-ad-is-sticky'); $('#media-container-' + videoId).removeClass('floating-video'); $('#media-placeholder-' + videoId).css('display', 'none'); WVM.NO_FLOAT_COOKIE(); player.pause(); player.ima.getAdsManager().pause(); }); } }; WVM.setupCarousel = function(fullVideoId, player){ // initialize Masonry after all images have loaded //alert("setting up carousel"); console.log("setting up carousel on desktop"); $('#page-carousel-' + fullVideoId).css('display', 'block'); WVM['player_state' + fullVideoId]['CAROUSEL_INIT'] = true; if($('#page-carousel-' + fullVideoId).length > 0){ var container = document.querySelector('#page-carousel-' + fullVideoId); imagesLoaded( container, function() { var screenWidth = window.innerWidth || document.documentElement.clientWidth; if(screenWidth > 850){ //alert("setting up carousel3"); WVM.IS_DESKTOP = true; $('#page-carousel-' + fullVideoId + ' .page-carousel-lg-slides').css('display', 'block'); WVM['player_settings' + fullVideoId].slider = $('#page-carousel-' + fullVideoId).owlCarousel({ loop: false, center: false, nav: false, dots: false, autoplay: false, autoplayHoverPause: true, margin: 25, responsiveClass: true, animateOut: 'slideOutDown', animateIn: 'flipInX', navText : ["",""], responsive:{ 0:{ items:3 } } }); }else{ WVM.IS_DESKTOP = false; $('.page-carousel-wrapper').css('display', 'block'); } }); } }; WVM.setupToggleButton = function(fullVideoId, player){ if($('.nextplay-switch-' + fullVideoId).length > 0){ new DG.OnOffSwitchAuto({ cls:'.nextplay-switch-' + fullVideoId, height: 24, trackColorOn:'#F9F9F9', trackColorOff:'#222', textColorOn: '#222', textColorOff: '#222', textOn:'On', textOff:'Off', listener:function(name, checked){ var theVal = 1; if(!checked){ theVal = 0; } $.ajax({ url: '/ajax/update_autoplay_video/', data: { autoplay_on: theVal }, type: 'POST', dataType: 'json', success: function(data) { WVM['player_settings' + fullVideoId]['autoplay'] = checked; }, error : function(){ console.log("Error loading video"); } }); } }); } }; WVM.setupAccordionButton = function(fullVideoId){ var deviceName = 'desktop'; $('#next-dropdown-accordion-button-' + fullVideoId).on('click', function(){ if($(this).find('i').hasClass('fa-chevron-up')){ //hide $(this).find('i').removeClass('fa-chevron-up'); $(this).find('i').addClass('fa-chevron-down'); if(deviceName == "desktop" && !$('#media-container-' + fullVideoId).hasClass('floating-video')){ $('#media-container-' + fullVideoId + " " + '.page-carousel-wrapper').slideUp(); $('#media-container-' + fullVideoId + " " + '.mobile-list-wrapper').hide(); }else{ $('#media-container-' + fullVideoId + " " + '.mobile-list-wrapper').slideUp(); $('#media-container-' + fullVideoId + " " + '.page-carousel-wrapper').hide(); } var currVideoId = WVM['player_state' + fullVideoId]['VIDEO_ID']; if(currVideoId == '9999999999'){ currVideoId = WVM.playlist_ids[0]; } var nextVideoId = WVM.getNextPlaylistIndex(currVideoId); //playerId, mediaId, fieldName var myTitle = WVM.getPlaylistData(fullVideoId, nextVideoId, 'noprefixtitle'); //alert("Getting title " + myTitle); $('#video-slider-nexttitle' + fullVideoId).css('display', 'inline'); $('#video-slider-nexttitle' + fullVideoId).html(myTitle); }else{ //expand $(this).find('i').addClass('fa-chevron-up'); $(this).find('i').removeClass('fa-chevron-down'); $('#media-container-' + fullVideoId + " " + '.mobile-list-wrapper').css('display', 'block'); if(deviceName == "desktop" && !$('#media-container-' + fullVideoId).hasClass('floating-video')){ $('#media-container-' + fullVideoId + " " + '.page-carousel-wrapper').css('display', 'block'); $('#media-container-' + fullVideoId + " " + '.page-carousel-wrapper').slideDown(); $('#media-container-' + fullVideoId + " " + '.mobile-list-wrapper').hide(); if(!WVM.player_state225157['CAROUSEL_INIT']){ WVM.setupCarousel(fullVideoId); } }else{ $('#media-container-' + fullVideoId + " " + '.mobile-list-wrapper').slideDown(); $('#media-container-' + fullVideoId + " " + '.page-carousel-wrapper').hide(); if(!$('#media-container-' + fullVideoId).hasClass('floating-video')){ if(!WVM.player_state225157['CAROUSEL_INIT']){ WVM.setupCarousel(fullVideoId); } } } $('#video-slider-nexttitle' + fullVideoId).css('display', 'none'); } }); var currVideoId = WVM['player_state' + fullVideoId]['VIDEO_ID']; if(currVideoId == '9999999999'){ currVideoId = WVM.playlist_ids[0]; } //console.log("current Video " + currVideoId); var nextVideoId = WVM.getNextPlaylistIndex(currVideoId); var myTitle = WVM.getPlaylistData(fullVideoId, nextVideoId, 'noprefixtitle'); //console.log("setting title " + myTitle); $('#video-slider-nexttitle' + fullVideoId).css('display', 'inline'); $('#video-slider-nexttitle' + fullVideoId).html(myTitle); }; WVM.sendbeacon = function(action, nonInteraction, value, eventLabel) { if(WCS.ONLY_CONTENT || WEBVIEW.is_webview){ WEBVIEW.log_stats("video-" + action, value, WCS.THREAD_URL); var eventCategory = 'app_video'; if (window.gtag) { gtag('event', action, { 'event_category': eventCategory, 'event_label': eventLabel, 'value': value, 'non_interaction': nonInteraction }); } }else{ console.log('test'); var eventCategory = 'video'; if (window.gtag) { gtag('event', action, { 'event_category': eventCategory, 'event_label': eventLabel, 'value': value, 'non_interaction': nonInteraction }); } } }; WVM.getNextPlaylistIndex = function(mediaId, returnArrayIndex){ var currId = null; if(mediaId == null){ return null; } var found = false; for(var x =0; x < WVM.playlist_ids.length; x++){ var myMediaId = WVM.playlist_ids[x]; if(myMediaId == mediaId){ found = true; currId = myMediaId; break; } } var nextId = x + 1; if(nextId < WVM.playlist_ids.length && currId !== null){ if(!returnArrayIndex){ return WVM.playlist_ids[nextId]; }else{ return nextId; } } return null; }; WVM.getPlaylistArrayId = function(mediaId){ for(var x =0; x < WVM.playlist_ids.length; x++){ var myMediaId = WVM.playlist_ids[x]; if(myMediaId == mediaId){ return x; } } return null; }; //unimportant stuff like tracking... don't put anything platform specific here WVM.finishPlayer = function(player, playerState, playerSettings){ var percentsPlayedInterval = 25; //player.off('ready'); player.on('ready', function(){ playerState.PLAYER_READY = true; }); //player.off(['waiting', 'pause']); player.on(['waiting', 'pause'], function() { playerState.IS_PLAYING = false; $('.vjs-loading-spinner').removeClass('badspinner'); }); //player.off('playing'); player.on('playing', function() { console.log('playing'); }); player.on('loadedmetadata', function(){ if(playerState.PLAYER_META){ return; } playerState.PLAYER_META = true; var currId = playerState.VIDEO_ID; if(currId == '9999999999'){ currId = WVM.playlist_ids[0]; } if(!playerState.PROMO_PLAYER){ WVM.sendbeacon("loadedmetadata", true, currId, playerState.VIDEO_TITLE); }else{ WVM.sendbeacon("promoloadedmetadata", true, currId, playerState.VIDEO_TITLE); } }); //player.off('adstart'); player.on('adstart', function(){ console.log("starting ads"); WVM.lastAdRequest = new Date().getTime() / 1000; playerState.AD_IS_PLAYING = true; playerState.PLAYED_AD = true; var currId = playerState.VIDEO_ID if(currId == '9999999999'){ currId = WVM.playlist_ids[0]; } if(!playerState.PROMO_PLAYER){ WVM.sendbeacon("adstart", true, currId, playerState.VIDEO_TITLE); } else{ WVM.sendbeacon("promoadstart", true, currId, playerState.VIDEO_TITLE); } }); //player.off('adend'); player.on('adend', function(){ var playPromise = null; console.log("ad end"); playerState.AD_IS_PLAYING = false; setTimeout(function(){ if(!playerState.IS_PLAYING || player.paused()){ } }, 500); WVM.lastAdRequest = new Date().getTime() / 1000; var currId = playerState.VIDEO_ID; if(currId == '9999999999'){ currId = WVM.playlist_ids[0]; } if(!playerState.PROMO_PLAYER){ WVM.sendbeacon("adend", true, currId, playerState.VIDEO_TITLE); } else{ WVM.sendbeacon("promoadend", true, currId, playerState.VIDEO_TITLE); } }); //player.off('timeupdate'); player.on('timeupdate', function(){ playerState.IS_PLAYING = true; var fullDuration = this.duration() * 1000; var fullCurrent = this.currentTime() * 1000; var rand = parseInt(Math.random() * 100); //console.log("timeupdate " + fullCurrent + " out of " + fullDuration); if(rand > 20){ if(fullDuration > 1 && ((fullDuration - fullCurrent) > 1) && !$('.vjs-loading-spinner').hasClass('badspinner')){ console.log("hiding spinner"); $('.vjs-loading-spinner').addClass('badspinner'); } } var duration_time = Math.floor(this.duration()); //this is a hack because the end video event is not firing... var current_time = Math.floor(this.currentTime()); if ( current_time > 0 && ( fullCurrent >= (fullDuration - 10) )){ var currId = playerState.VIDEO_ID; if(currId == '9999999999'){ currId = WVM.playlist_ids[0]; } var newMediaId = WVM.getNextPlaylistIndex(currId); //if(playerSettings.autoplay_next && newMediaId){ if(newMediaId){ if('desktop' == "iphone" && playerState.AD_ERROR){ console.log("skipped timeupdate end"); }else{ WVM.load_video(newMediaId, true, playerState.ORIGINAL_ID); } } } if(!playerState.START_SENT){ if(!playerState.PROMO_PLAYER){ WVM.sendbeacon('start', true, currId, playerState.VIDEO_TITLE); }else{ WVM.sendbeacon('promostart', true, currId, playerState.VIDEO_TITLE); } playerState.START_SENT = true; } var currentTime, duration, percent, percentPlayed, _i; currentTime = Math.round(this.currentTime()); duration = Math.round(this.duration()); percentPlayed = Math.round(currentTime / duration * 100); for (percent = _i = 0; _i <= 99; percent = _i += percentsPlayedInterval) { if (percentPlayed >= percent && __indexOf.call(playerState['PERCENTS_TRACKED'], percent) < 0) { if (percentPlayed !== 0) { if(!playerState.PROMO_PLAYER){ WVM.sendbeacon('percent-' + percent, true, currId, playerState.VIDEO_TITLE); } else{ WVM.sendbeacon('promopercent-' + percent, true, currId, playerState.VIDEO_TITLE); } } if (percentPlayed > 0) { playerState['PERCENTS_TRACKED'].push(percent); } } } }); //player.off('ended'); player.on('ended', function(){ console.log("ended"); playerState.IS_PLAYING = false; var currId = playerState.VIDEO_ID; if(currId == '9999999999'){ currId = WVM.playlist_ids[0]; } if(!playerState.PROMO_PLAYER){ WVM.sendbeacon("complete", true, currId, playerState.VIDEO_TITLE); } else{ WVM.sendbeacon("promocomplete", true, currId, playerState.VIDEO_TITLE); } console.log("current id " + currId); console.log("playlist ids"); console.log(WVM.playlist_ids); var newMediaId = WVM.getNextPlaylistIndex(currId); //if(playerSettings.autoplay_next && newMediaId){ if(newMediaId){ WVM.load_video(newMediaId, true, playerState.ORIGINAL_ID); }else{ var videoId = playerState.ORIGINAL_ID; WVM['player_state' + videoId]['CANCEL_FLOATING'] = true; WVM.IS_FLOATING = false; window.dispatchEvent(WVM.FloatEventEnd); $('#media-container-' + videoId).css('width', "100%"); $('#media-container-' + videoId).removeClass('floating-video'); $('#media-placeholder-' + videoId).css('display', 'none'); console.log("Playlist complete (no more videos)"); } }); //player.off('adserror'); player.on('adserror', function(e){ //$('#ima-ad-container').remove(); WVM.lastAdRequest = new Date().getTime() / 1000; console.log(e); console.log("ads error"); var errMessage = e['data']['AdError']['l']; playerState.AD_IS_PLAYING = false; playerState.IS_PLAYING = false; // && errMessage == 'The VAST response document is empty.' if(!playerState.AD_ERROR){ var dTime = new Date().getTime(); WVM.firstPrerollTagUrl = WVM.getFirstPrerollUrl(); //console.log("not calling backup ad tag url: " + WVM.adTagUrl); /* WVM.activePlayer.ima.changeAdTag(WVM.adTagUrl + "?" + dTime); WVM.activePlayer.ima.requestAds(); //reload src WVM.activePlayer.src({ src: masterSrc, type: 'video/mp4' }); //firefox *really* hates this load event WVM.activePlayer.load(); */ } playerState.AD_ERROR = true; }); //player.off('error'); player.on('error', function(event) { if (player.error().code === 4) { player.error(null); // clear out the old error player.options().sources.shift(); // drop the highest precedence source console.log("now doing src"); console.log(player.options().sources[0]); player.src(player.options().sources[0]); // retry return; } }); //player.off('volumechange'); player.on('volumechange', function(event) { console.log(event); var theHeight = $('#media-container-' + playerState.ORIGINAL_ID + ' .vjs-volume-level').css('height'); var cssVolume = 0; if(theHeight){ cssVolume = parseInt(theHeight.replace('%', '')); } var theVolume = player.volume(); if(theVolume > 0.0 || cssVolume > 0){ $('#media-container-' + playerState.ORIGINAL_ID + ' .mute-overlay').css('display', 'none'); }else{ $('#media-container-' + playerState.ORIGINAL_ID + ' .mute-overlay').css('display', 'block'); } }); //WVM.reinitRawEvents(playerState.ORIGINAL_ID); //setInterval(function(){ // WVM.reinitRawEvents(playerState.ORIGINAL_ID); //}, 2000); WVM.allPlayers.push(player); } if(!WVM.rawCompleteEvent){ WVM.rawCompleteEvent = function(e){ var playerState = WVM['player_state225157']; }; } if(!WVM.rawTimeupdateEvent){ WVM.rawTimeupdateEvent = function(e){ var playerState = WVM['player_state225157']; var rawVideoElem = document.getElementById('html5-video-' + playerState['ORIGINAL_ID'] + '_html5_api'); var fullCurrent = rawVideoElem.currentTime * 1000; var fullDuration = rawVideoElem.duration * 1000; var current_time = Math.floor(rawVideoElem.currentTime); console.log("raw timeupdate: " + fullCurrent + " out of " + fullDuration); if ( current_time > 0 && ( fullCurrent >= (fullDuration - 50) )){ var currId = playerState.VIDEO_ID; if(currId == '9999999999'){ currId = WVM.playlist_ids[0]; } var newMediaId = WVM.getNextPlaylistIndex(currId); if(newMediaId){ console.log("loading new video from rawtimeupdate"); WVM.load_video(newMediaId, true, playerState.ORIGINAL_ID); } } if(!$('.vjs-loading-spinner').hasClass('badspinner')){ $('.vjs-loading-spinner').addClass('badspinner') } }; } WVM.reinitRawEvents = function(playerId){ var playerState = WVM['player_state' + playerId]; var rawVideoElem = document.getElementById('html5-video-' + WVM['player_state' + playerId]['ORIGINAL_ID'] + '_html5_api'); //COMPLETE EENT if( WVM['player_state' + playerId].COMPLETE_EVENT){ rawVideoElem.removeEventListener('ended', WVM.rawCompleteEvent, false); } rawVideoElem.addEventListener('ended', WVM.rawCompleteEvent, false); //TIME UPDATE EVENT if( WVM['player_state' + playerId].TIMEUPDATE_EVENT){ rawVideoElem.removeEventListener('ended', WVM.rawTimeupdateEvent, false); } rawVideoElem.addEventListener('ended', WVM.rawTimeupdateEvent, false); WVM['player_state' + playerId].COMPLETE_EVENT = true; WVM['player_state' + playerId].TIMEUPDATE_EVENT = true; };

I am an expert in web development and JavaScript, particularly in the context of video players and front-end technologies. My expertise is grounded in practical experience, having developed and optimized various video player implementations for seamless user experiences.

Now, let's delve into the provided JavaScript code. The code appears to be part of a larger web application, specifically related to a video player on a website. Here's a breakdown of the concepts used in the code:

  1. Event Handling:

    • The code extensively uses event handling with functions like on, off, and trigger. Events such as 'click,' 'scroll,' and 'resize' are being captured.
  2. DOM Manipulation:

    • jQuery is utilized for DOM manipulation, selecting elements, adding or removing classes, setting styles, and handling various interactions.
  3. Responsive Design:

    • The code includes logic for handling responsive design, adjusting the layout and styles based on the device's screen size. This is evident in functions like addFloatingAbility where the layout is adjusted based on the device type.
  4. Video Player Controls:

    • The code involves the creation and manipulation of video player controls. Elements such as play/pause buttons, volume controls, and mute overlays are being managed.
  5. Floating Video Player:

    • There's a section of code related to making the video player "float" as the user scrolls. This is common in scenarios where a video follows the user as they navigate through the page.
  6. Carousel Setup:

    • Functions like setupCarousel suggest the implementation of a carousel for video playlists. This is likely for displaying a set of videos in a visually appealing manner.
  7. AJAX Requests:

    • The code makes use of AJAX requests, sending and receiving data from the server asynchronously. This is seen in functions like $.ajax.
  8. Error Handling:

    • There are sections of the code dedicated to handling errors, both for regular video playback and for ad-related errors.
  9. Analytics Integration:

    • The code integrates with analytics services, such as Google Analytics (gtag), to track various video-related events, like start, complete, ad start, ad end, etc.
  10. Promotional Player:

    • There are indications that the player can handle promotional content separately, with functions like promoloadedmetadata and promocomplete specifically related to promotional videos.
  11. Autoplay Control:

    • The code includes functionality for toggling autoplay settings based on user interactions. Autoplay behavior can be controlled by the user with an on/off switch.
  12. Dynamic Styling:

    • There are dynamic adjustments to styles and layout based on the screen size, device type, and other conditions. This is crucial for creating a responsive and visually appealing design.

In summary, this JavaScript code represents a sophisticated implementation of a video player on a website, incorporating features like responsive design, event handling, AJAX communication, floating video player behavior, and analytics integration.

Why is Columbo no longer on MeTV? (2024)
Top Articles
Latest Posts
Article information

Author: Nathanial Hackett

Last Updated:

Views: 5507

Rating: 4.1 / 5 (72 voted)

Reviews: 87% of readers found this page helpful

Author information

Name: Nathanial Hackett

Birthday: 1997-10-09

Address: Apt. 935 264 Abshire Canyon, South Nerissachester, NM 01800

Phone: +9752624861224

Job: Forward Technology Assistant

Hobby: Listening to music, Shopping, Vacation, Baton twirling, Flower arranging, Blacksmithing, Do it yourself

Introduction: My name is Nathanial Hackett, I am a lovely, curious, smiling, lively, thoughtful, courageous, lively person who loves writing and wants to share my knowledge and understanding with you.