(function () {
'use strict';
function decodeHtml(s) {
var t = document.createElement('textarea');
t.innerHTML = s || '';
return t.value;
}
function parseFlashVars(str) {
var out = {};
if (!str) return out;
str = decodeHtml(str);
str.split('&').forEach(function (part) {
var i = part.indexOf('=');
if (i === -1) {
out[decodeURIComponent(part)] = '';
return;
}
var key = decodeURIComponent(part.slice(0, i));
var val = decodeURIComponent(part.slice(i + 1));
out[key] = val;
});
return out;
}
function getParam(objectEl, name) {
if (!objectEl) return '';
var params = objectEl.getElementsByTagName('param');
for (var i = 0; i < params.length; i++) {
var n = (params[i].getAttribute('name') || '').toLowerCase();
if (n === name.toLowerCase()) {
return params[i].getAttribute('value') || '';
}
}
return '';
}
function normalizePath(file) {
if (!file) return '';
file = file.trim();
file = file.replace(/^["']+|["']+$/g, '');
if (file.indexOf('../video/') === 0) {
file = '../../' + file.substring(3);
}
return file;
}
function createTitle(text) {
var title = document.createElement('div');
title.style.color = '#8a5a00';
title.style.fontSize = '18px';
title.style.margin = '0 0 12px 0';
title.style.textAlign = 'center';
title.textContent = text || '';
return title;
}
function createVideo(src) {
var v = document.createElement('video');
v.controls = true;
v.preload = 'metadata';
v.style.width = '100%';
v.style.maxWidth = '640px';
v.style.height = 'auto';
v.style.background = '#000';
v.style.display = 'block';
v.style.margin = '0 auto';
var source = document.createElement('source');
source.src = src;
source.type = 'video/mp4';
v.appendChild(source);
return v;
}
function createAudio(src) {
var a = document.createElement('audio');
a.controls = true;
a.preload = 'metadata';
a.style.width = '100%';
a.style.maxWidth = '640px';
a.style.display = 'block';
a.style.margin = '20px auto';
var source = document.createElement('source');
source.src = src;
source.type = 'audio/mpeg';
a.appendChild(source);
return a;
}
function createFallback(src, text) {
var wrap = document.createElement('div');
wrap.style.textAlign = 'center';
wrap.style.padding = '20px';
var p = document.createElement('p');
p.textContent = text || 'Не удалось встроить медиа.';
wrap.appendChild(p);
if (src) {
var a = document.createElement('a');
a.href = src;
a.target = '_blank';
a.rel = 'noopener';
a.textContent = 'Открыть файл';
wrap.appendChild(a);
}
return wrap;
}
function replaceFlashObject(objectEl) {
if (!objectEl || objectEl.getAttribute('data-replaced') === '1') return;
var flashvars = getParam(objectEl, 'flashvars');
var vars = parseFlashVars(flashvars);
var file = normalizePath(vars.file || '');
var comment = vars.comment || '';
if (!file) return;
var ext = file.split('?')[0].split('#')[0].toLowerCase();
var container = document.createElement('div');
container.className = 'html5-player-replacement';
container.style.width = '100%';
container.style.maxWidth = '640px';
container.style.margin = '0 auto';
container.style.textAlign = 'center';
if (comment) {
container.appendChild(createTitle(comment));
}
if (/\.mp4$/i.test(ext) || /\.m4v$/i.test(ext) || /\.webm$/i.test(ext)) {
container.appendChild(createVideo(file));
} else if (/\.mp3$/i.test(ext) || /\.m4a$/i.test(ext) || /\.ogg$/i.test(ext)) {
container.appendChild(createAudio(file));
} else {
container.appendChild(createFallback(file, 'Файл найден, но тип медиа не распознан.'));
}
objectEl.setAttribute('data-replaced', '1');
objectEl.parentNode.replaceChild(container, objectEl);
}
function scanFlashPlayers() {
var objects = document.getElementsByTagName('object');
var list = [];
for (var i = 0; i < objects.length; i++) {
list.push(objects[i]);
}
for (var j = 0; j < list.length; j++) {
var obj = list[j];
var type = (obj.getAttribute('type') || '').toLowerCase();
var data = (obj.getAttribute('data') || '').toLowerCase();
var flashvars = getParam(obj, 'flashvars');
if (
type === 'application/x-shockwave-flash' ||
/\.swf(\?|#|$)/i.test(data) ||
/(^|&)file=/.test(flashvars)
) {
replaceFlashObject(obj);
}
}
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', scanFlashPlayers);
} else {
scanFlashPlayers();
}
window.swfobject = {
embedSWF: function () {
scanFlashPlayers();
},
registerObject: function () {
scanFlashPlayers();
},
getFlashPlayerVersion: function () {
return { major: 99, minor: 0, release: 0 };
},
hasFlashPlayerVersion: function () {
return true;
},
createSWF: function () {
scanFlashPlayers();
},
removeSWF: function () {},
createCSS: function () {},
addDomLoadEvent: function (fn) {
if (typeof fn === 'function') {
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', fn);
} else {
fn();
}
}
},
addLoadEvent: function (fn) {
if (typeof fn === 'function') {
window.addEventListener('load', fn);
}
},
getQueryParamValue: function (name) {
var url = new URL(window.location.href);
return url.searchParams.get(name) || '';
},
expressInstallCallback: function () {}
};
})();