(function() {
'use strict';
// youtube or vimeo
function checkPlayerName(url) {
if (url === 'false') return false;
var result = url.match(/(http:|https:|)\/\/(player.|www.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com))\/(video\/|embed\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(&\S+)?/);
if (result && /youtube/g.test(result[3])) {
return 'youtube';
} else if (result && /vimeo/g.test(result[3])) {
return 'vimeo';
}
return false;
}
// youtube or vimeo
function getVideoId(url) {
if (url === 'false') return false;
var result = url.match(/(http:|https:|)\/\/(player.|www.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com))\/(video\/|embed\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(&\S+)?/);
return result ? result[6] : false;
}
function getYTPreviewUrl(videoId, quality) {
return 'https://img.youtube.com/vi/' + videoId + '/' +
(quality || '') + 'default.jpg';
}
function getVimeoPreviewUrl(vimeoId, callback) {
var request = new XMLHttpRequest();
request.open('GET', 'https://vimeo.com/api/v2/video/' + vimeoId + '.json', true);
request.onreadystatechange = function() {
if (this.readyState === 4) {
if (this.status >= 200 && this.status < 400) {
var response = JSON.parse(this.responseText);
callback(response[0].thumbnail_large);
}
}
};
request.send();
request = null;
}
var getYTPreviewUrlWithBestQuality = (function() {
var cache = {};
return function(id) {
var def = $.Deferred();
if (id in cache) {
if (cache[id]) {
def.resolve(cache[id]);
} else {
def.reject('Preview image not found.');
}
} else {
$('').on('load', function() {
if (120 === (this.naturalWidth || this.width)) {
// selection of preview in the best quality
var file = this.src.split('/').pop();
switch (file) {
case 'maxresdefault.jpg':
this.src = this.src.replace(file, 'sddefault.jpg');
break;
case 'sddefault.jpg':
this.src = this.src.replace(file, 'hqdefault.jpg');
break;
case 'hqdefault.jpg':
this.src = this.src.replace(file, 'default.jpg');
break;
default:
cache[id] = null;
def.reject('Preview image not found.');
break;
}
} else {
def.resolve(cache[id] = this.src);
}
}).attr('src', getYTPreviewUrl(id, 'maxres'));
}
return def;
};
})();
/*
* check for youtube/vimeo video section and
* load videopreview from youtube/vimeo on 'add' event and enable YTPlayer/vimeo_player
* */
if (!$('html').hasClass('is-builder')) {
$(document).on('add.cards', function(event) {
if (!$(event.target).hasClass('carousel')) return;
var isDesktop = $('html').hasClass('desktop');
$(event.target).outerFind('[data-bg-video-slide]').each(function() {
var videoId = getVideoId($(this).attr('data-bg-video-slide'));
if (!videoId) return;
var $preview = $('