/** * Video cues v1.0.3 * Video player with cue points and continue watching functionality */ var params = new URLSearchParams(window.location.search); var debug = params.has('debug') ? params.get('debug') : false; var test = params.has('test') ? params.get('test') : false; var effortId = params.has('eid') ? params.get('eid') : ''; var campaignId = params.has('cid') ? params.get('cid') : ''; // Video elements and configuration var eVideo = { container: document.querySelector('.container-video'), el: document.querySelector('.e-video'), }; eVideo.id = eVideo.el?.getAttribute('data-e-video-id') || ''; eVideo.playerColor = eVideo.el?.getAttribute('data-e-player-color') || ''; eVideo.playbar = eVideo.el?.hasAttribute('data-e-playbar') || (params.has('playbar') ? params.get('playbar') : false); eVideo.resumeEnabled = eVideo.el?.hasAttribute('data-e-resume') && eVideo.el.getAttribute('data-e-resume') !== 'false'; eVideo.overlay = document.querySelector('.overlay-video'); eVideo.actions = eVideo.overlay?.querySelector('.actions-video'); eVideo.actions.content = eVideo.actions?.querySelectorAll('.actions-video-content') || []; eVideo.btnResume = eVideo.overlay?.querySelector('.btn-resume'); eVideo.btnRestart = eVideo.overlay?.querySelector('.btn-restart'); eVideo.storageKey = 'wistia_resume_time_' + eVideo.id; eVideo.savedTime = 0; // Utility functions function removeVideoOverlay() { eVideo.overlay.classList.add('animate-fade-out'); setTimeout(function() { eVideo.overlay.remove(); }, 1000); } function showVideoActions() { // Show video actions panel eVideo.actions.classList.add('animate-fade-in'); // Show other actions content with stagger setTimeout(function() { eVideo.actions.content.forEach(function(el, index) { setTimeout(function() { el.classList.add('animate-slide-up'); }, index * 100); }); }, 500); } function hideWistiaBigPlayButton() { setTimeout(function() { var bigPlayBtn = eVideo.el.querySelector('.w-big-play-button'); if (bigPlayBtn) bigPlayBtn.style.display = 'none'; }, 500); } function parseCueTimes(dataCues) { var cueTimes = dataCues.includes(',') ? dataCues.split(',') : [dataCues]; var cues = {}; cueTimes.forEach(function(cue, index) { var cueTime = cue.trim(); var cueClass = 'cue-' + (index + 1); var cueSplit = cue.split(':'); var cueSeconds = (+cueSplit[0]) * 3600 + (+cueSplit[1]) * 60 + (+cueSplit[2]); cues[index + 1] = { class: cueClass, time: cueTime, seconds: cueSeconds }; }); return { cues: cues, times: cueTimes }; } function eCreateScript(src, className) { var script = document.createElement('script'); script.className = className; script.src = src; document.body.appendChild(script); return script; } // Video element setup eVideo.el.innerHTML = '
'; // Load Wistia scripts eCreateScript('https://fast.wistia.com/embed/medias/' + eVideo.id + '.jsonp', 'wistia-script-1'); eCreateScript('https://fast.wistia.com/assets/external/E-v1.js', 'wistia-script-Ev1'); // Wistia player initialization window._wq = window._wq || []; _wq.push({ id: eVideo.id, onReady: function(video) { // Hide loader eVideo.overlay.querySelector('.video-loader').style.display = 'none'; // Handle saved time and overlay if (eVideo.resumeEnabled) { var eStoredTime = localStorage.getItem(eVideo.storageKey); if (eStoredTime && parseFloat(eStoredTime) > 5) { eVideo.savedTime = parseFloat(eStoredTime); showVideoActions(); setTimeout(function() { eVideo.el.classList.add('animate-fade-in'); }, 500); hideWistiaBigPlayButton(); } else { eVideo.el.classList.add('animate-fade-in'); removeVideoOverlay(); } // Save progress periodically var eLastSavedTime = 0; video.bind('secondchange', function(seconds) { if (Math.abs(seconds - eLastSavedTime) >= 5) { localStorage.setItem(eVideo.storageKey, seconds); eLastSavedTime = seconds; } }); // Resume button handler eVideo.btnResume.addEventListener('click', function() { if (eVideo.savedTime > 1) { video.time(eVideo.savedTime); } video.play(); removeVideoOverlay(); }); // Restart button handler eVideo.btnRestart.addEventListener('click', function() { localStorage.removeItem(eVideo.storageKey); video.time(0); video.play(); removeVideoOverlay(); }); } else { removeVideoOverlay(); eVideo.el.classList.add('animate-fade-in'); } // Playing state management video.bind('play', function() { eVideo.container.classList.add('playing'); }); video.bind('pause', function() { eVideo.container.classList.remove('playing'); }); // Cue handling var dataCues = eVideo.el.getAttribute('data-e-cues'); if (dataCues) { var cueData = parseCueTimes(dataCues); var cues = cueData.cues; var cueTimes = cueData.times; video.bind('secondchange', function() { var currentTime = video.time(); var eViewsCounted = eViewCount || 0; cueTimes.forEach(function(cue, index) { var cueIndex = index + 1; if (currentTime >= cues[cueIndex].seconds || eViewsCounted > 1) { var cueElement = document.querySelector('.' + cues[cueIndex].class); if (cueElement && !cueElement.classList.contains('show')) { cueElement.classList.add('show'); } } }); }); } if (typeof debug !== 'undefined' && debug) { console.group('eVideo'); console.log('Stored Time:', eStoredTime); console.log('Cues:', cues); console.groupEnd(); } }, options: { videoFoam: false, playbar: eVideo.playbar, playerColor: eVideo.playerColor, fullscreenButton: false } });