var vimeoReplaceApi = '/pl/fileservice/video/vimeo-replace'; var vimeoSubstring = 'player.vimeo.com'; var xhrSuccessState = 4; function printCdnPlayerDiv (fileId) { var css = ""; return css + "
" + "
"; } function startCdnPlayer (fileId, videoHash) { new Clappr.Player({ language: 'ru-RU', parentId: "#cdn-player-" + fileId, source: "https://vh02.gcfiles.net:8083/vod_hls/fileservice/file/download-proxy/h/" + videoHash + "/master.m3u8", autoPlay: false, width: '100%', height: '100%', playback: { debug: true } }); } function isJson (string) { try { var json = JSON.parse(string); } catch (exception) { return false; } return true; } /** * * @param {string} videoId * @param {HTMLIFrameElement} iframe */ function getIframeSrcByVideoId (videoId, iframe) { var url = vimeoReplaceApi + '?videoId=' + parseInt(videoId); var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.onload = function (e) { if (xhr.readyState === xhrSuccessState) { if( xhr.status === 200 ) { var responseObject; var wrapper = document.createElement('div'); if( xhr.responseText === 'false') { return; } if( isJson(xhr.responseText) ) { responseObject = JSON.parse(xhr.responseText); iframe.parentNode.classList.remove('videoWrapper'); iframe.parentNode.insertBefore(wrapper, iframe); wrapper.appendChild(iframe); wrapper.innerHTML = printCdnPlayerDiv(responseObject.id); startCdnPlayer(responseObject.id, responseObject.hash); var playerElement = document.getElementById("cdn-player-" + responseObject.id); var player = playerElement.querySelector('video[data-html5-video]'); var conatainer = playerElement.querySelector('.container[data-container]'); // conatainer.style.position = "initial"; // player.style.position = "initial"; // player.style.width = "initial"; return; } iframe.parentNode.classList.remove('videoWrapper'); iframe.parentNode.insertBefore(wrapper, iframe); wrapper.appendChild(iframe); wrapper.innerHTML = xhr.responseText; runAlternateCdn(); } } }; xhr.onerror = function (e) { }; xhr.send(null); } /** * * @param src * * @returns {null|string} */ function getVideoIdFromSrc (src) { var regGroups = src.match(/player\.vimeo\.com\/video\/(\d+)/); if (regGroups === null) { return null; } return regGroups[1]; } function upgradeCdn(data) { var url = '/pl/fileservice/video/upgrade-cdn'; var xhr = new XMLHttpRequest(); xhr.open("POST", url, false); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send(JSON.stringify({'video-hash' : data.videoHash})); } function feedbackCdn(data) { var url = '/pl/fileservice/video/feedback-cdn'; var xhr = new XMLHttpRequest(); xhr.open("POST", url, false); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send(JSON.stringify({'reason' : data.reason, 'result' : data.result})); } function closeFeedback() { var url = '/pl/fileservice/video/close-feedback'; var xhr = new XMLHttpRequest(); xhr.open("POST", url, false); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send(JSON.stringify({'reason' : 'close', 'result' : 'close'})); } function buildQuestion(data) { var question = data.question; var answers = ''; data.answers.forEach(function (answer) { answers += answer; }); return question + answers; } function show(el) { el.style.display = 'block'; } function close(el) { el.style.display = 'none'; } function remove(el) { el.parentNode.removeChild(el); } function runAlternateCdn() { var changes = document.querySelectorAll('.vhe-cdn-change'); changes.forEach(function (change) { change.style.display = 'none'; }); var change = document.querySelector('.vhe-cdn-change'); if (!change) { // console.log('No cdn change container!'); return; } var link = change.querySelector('.disclaimer-url'); var feedbackReason = change.querySelector('.feedback#reason'); var feedbackResult = change.querySelector('.feedback#result'); var feedbackClose = change.querySelector('.feedback#close'); var feedbackStatus = change.dataset['feedbackStatus']; var currentCdn = change.dataset['currentCdn']; change.style.display = 'block'; feedbackReason.style.display = 'none'; feedbackResult.style.display = 'none'; if (currentCdn === 'integros' || currentCdn === '') { //change.style.height = '35px'; link.innerHTML = window.tt('common', 'Speed problem'); } else { feedbackReason.innerHTML = buildQuestion(reasonQuestions); feedbackResult.innerHTML = buildQuestion(resultQuestions); link.innerHTML = window.tt('common', 'Вернуться на основной плеер'); switch (feedbackStatus) { case 'noFeedback' : show(feedbackReason); close(feedbackResult); break; case 'hasReason' : show(feedbackResult); close(feedbackReason); break; case 'hasResult' : //change.style.height = '35px'; remove(feedbackReason); remove(feedbackResult); break; } } var btns = change.querySelectorAll('.btn'); btns.forEach(function (btn) { btn.addEventListener('click', function (e) { if (btn.classList.contains('reason-btn')) { change.dataset.reason = btn.id; show(feedbackResult); close(feedbackReason); } if (btn.classList.contains('result-btn')) { change.dataset.result = btn.id; feedbackCdn(change.dataset); feedbackResult.innerHTML = 'Спасибо!'; if (btn.id === 'back') { upgradeCdn(change.dataset); window.location.reload(); } setTimeout(function () { remove(feedbackReason); remove(feedbackResult); //change.style.height = 'auto'; }, 2000); } }); }); feedbackClose.addEventListener('click', function (e) { e.preventDefault(); closeFeedback(); close(change); }); link.addEventListener('click', function (e) { e.preventDefault(); upgradeCdn(change.dataset); window.location.reload(); }); } document.addEventListener('DOMContentLoaded', function() { if(window.params_52 !== 1) { //return; } var iframes = document.getElementsByTagName('iframe'); for (var i = 0; i < iframes.length; i++) { var src = iframes[i].getAttribute('src'); if(src.indexOf(vimeoSubstring) !== -1) { var videoId = getVideoIdFromSrc(src); if (videoId === null) { continue; } getIframeSrcByVideoId(videoId, iframes[i]); } } });