Created
January 30, 2021 03:10
-
-
Save batFormat/336c6fe65b5515a58af2a3ec05840c00 to your computer and use it in GitHub Desktop.
Плеер который написан в Forecast
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var storageAvailable, | |
storageData = {}; | |
function storageAvailable(e) { | |
try { | |
var t = window[e], | |
r = '__storage_test__'; | |
return t.setItem(r, r), t.removeItem(r), !0; | |
} catch (e) { | |
return !1; | |
} | |
} | |
function writeStorage(e, t) { | |
try { | |
if (storageAvailable) window.localStorage.setItem(e, t); | |
else { | |
var r = { | |
origin: 'Facecast_player', | |
source_frame: code, | |
type: 'write_storage', | |
key: e, | |
value: t, | |
}; | |
window.parent.postMessage(JSON.stringify(r), '*'); | |
} | |
} catch (e) { | |
console.log(e.toString()); | |
} | |
} | |
function readStorage(e) { | |
var t; | |
try { | |
t = storageAvailable ? window.localStorage.getItem(e) : storageData[e]; | |
} catch (e) { | |
console.log(e.toString()); | |
} | |
return t; | |
} | |
function updateStorageData() { | |
try { | |
window.parent.postMessage( | |
JSON.stringify({ | |
origin: 'Facecast_player', | |
source_frame: code, | |
type: 'update_storage', | |
}), | |
'*' | |
), | |
setTimeout(updateStorageData, 1e3); | |
} catch (e) { | |
console.log(e.toString()); | |
} | |
} | |
(storageAvailable = storageAvailable('localStorage')) || updateStorageData(); | |
var thumbnailPlayer, | |
bindThumbnailPlayer, | |
settingsOpen, | |
speedSelectOpen, | |
multicamOn, | |
chatOpen, | |
logo_image, | |
player, | |
pollResultId, | |
pollVoteId, | |
pollWidgetId, | |
code = window.location.href.substr( | |
window.location.href.indexOf('/v/') + 3, | |
6 | |
), | |
no_animation = 0 <= window.location.href.indexOf('noanimation'), | |
no_label = 0 <= window.location.href.indexOf('nolabel'), | |
no_date = 0 <= window.location.href.indexOf('nodate'), | |
sh_chat = 0 <= window.location.href.indexOf('showchat'), | |
sh_cnt = 0 <= window.location.href.indexOf('showcnt'), | |
clappr_debug = 0 <= window.location.href.indexOf('clapprdebug'), | |
$spinner = $('.LNIframe .waiter'), | |
prefix = document.location.protocol + '//', | |
p = { | |
sid: '', | |
hc: '', | |
cdn: 'auto', | |
player: {}, | |
images: [], | |
servers_cnt: 0, | |
chat_cnt: 0, | |
answ_cnt: 0, | |
show_live_label: !0, | |
def_poster: '/f/images/255-preview20.jpg', | |
logo: !1, | |
locale: 'ru', | |
lang: 'ru', | |
autorun: 'auto', | |
hideMediaControl: !0, | |
muted: !1, | |
startLevel: 3, | |
live_duration: 10, | |
delay_switching_to_auto_mode: 5e3, | |
auth_hb_error_cnt: 0, | |
poll_hb_delay: 5, | |
}, | |
url = { | |
server: {}, | |
media: '', | |
event: '', | |
hb: '', | |
req_cnt: 0, | |
answ_cnt: 0, | |
group: 0, | |
bandwidth: 0, | |
a: [], | |
remote_addr: [], | |
sequence: 0, | |
}, | |
speedtest = [], | |
mobileBrowserRegex = /Mobile|iP(hone|od|ad)|Android|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/; | |
(p.isMobile = mobileBrowserRegex.test(navigator.userAgent)), | |
'c0b813' == code && | |
(window.location.href = 'http://pro-stream.ru/broadcasts/prasium/'), | |
'y5hf49' == code && (p.key = 'cstf8ru7'), | |
'efnr9i' == code && (p.key = 'vvi3ttm6'); | |
try { | |
(pollResultId = JSON.parse(readStorage('pollResultId')) || []), | |
(pollVoteId = JSON.parse(readStorage('pollVoteId')) || []), | |
(pollWidgetId = JSON.parse(readStorage('pollWidgetId')) || []); | |
} catch (e) { | |
(pollResultId = []), (pollVoteId = []), (pollWidgetId = []); | |
} | |
var isPollOverlayEnabled = !1, | |
pollRecordResultId = [], | |
userErr = { | |
empty: { | |
name: | |
'ru' === p.lang | |
? 'Введите полное имя' | |
: 'Enter your full name', | |
email: 'ru' === p.lang ? 'Введите email' : 'Enter your email', | |
phone: | |
'ru' === p.lang | |
? 'Введите телефон' | |
: 'Enter your phone number', | |
accept: | |
'ru' === p.lang | |
? 'Поставьте галочку' | |
: 'Check the checkbox', | |
}, | |
invalid: { | |
email: | |
'ru' === p.lang | |
? 'Введите корректный email' | |
: 'Enter a valid email', | |
}, | |
}; | |
try { | |
p.guid = readStorage('guid'); | |
} catch (e) { | |
console.log(e); | |
} | |
if (!p.guid) { | |
p.guid = guidGenerator(); | |
try { | |
writeStorage('guid', p.guid); | |
} catch (e) { | |
console.log(e); | |
} | |
} | |
function guidGenerator() { | |
function e() { | |
return ((65536 * (1 + Math.random())) | 0).toString(16).substring(1); | |
} | |
return e() + e() + '-' + e() + '-' + e() + '-' + e() + '-' + e() + e() + e(); | |
} | |
function getJsonFromUrl(e) { | |
var t = (e = e || location.search).lastIndexOf('/'); | |
t && (e = e.substr(t)); | |
var r = e.lastIndexOf('?'); | |
r && (e = e.substr(r)); | |
var n = e.substr(1), | |
s = {}; | |
return ( | |
n.split('&').forEach(function (e) { | |
var t = e.split('='); | |
s[t[0]] = decodeURIComponent(t[1]); | |
}), | |
s | |
); | |
} | |
newrelic.setCustomAttribute('uid', p.guid); | |
var cdn_threshold = 15, | |
threshold = [8, 14], | |
servers = [ | |
{ | |
src: 'e10-fd.facecast.net', | |
data: 0, | |
event: 0, | |
delay: 0, | |
group: 1, | |
priority: 100, | |
backup: 0, | |
}, | |
{ | |
src: 'edge-7.facecast.net', | |
data: 0, | |
event: 0, | |
delay: 0, | |
group: 2, | |
priority: 100, | |
backup: 1, | |
}, | |
{ | |
src: 'edge-8.facecast.net', | |
data: 0, | |
event: 0, | |
delay: 0, | |
group: 2, | |
priority: 100, | |
backup: 1, | |
}, | |
{ | |
src: 'edge-9.facecast.net', | |
data: 1, | |
event: 1, | |
delay: 0, | |
group: 2, | |
priority: 100, | |
backup: 0, | |
}, | |
{ | |
src: 'edge-10.facecast.net', | |
data: 1, | |
event: 1, | |
delay: 0, | |
group: 2, | |
priority: 100, | |
backup: 1, | |
}, | |
{ | |
src: 'edge-11.facecast.net', | |
data: 1, | |
event: 1, | |
delay: 0, | |
group: 2, | |
priority: 100, | |
backup: 1, | |
}, | |
{ | |
src: 'edge-12.facecast.net', | |
data: 0, | |
event: 0, | |
delay: 0, | |
group: 2, | |
priority: 100, | |
backup: 1, | |
}, | |
{ | |
src: 'e10-ll.facecast.net', | |
data: 0, | |
event: 0, | |
delay: 0, | |
group: 2, | |
priority: 100, | |
backup: 1, | |
}, | |
{ | |
src: 'edge-de-1.facecast.net', | |
data: 0, | |
event: 0, | |
delay: 0, | |
group: 4, | |
priority: 100, | |
backup: 0, | |
}, | |
{ | |
src: 'edge-de-2.facecast.net', | |
data: 1, | |
event: 1, | |
delay: 0, | |
group: 4, | |
priority: 100, | |
backup: 0, | |
}, | |
{ | |
src: 'edge-nyc-1.facecast.net', | |
data: 1, | |
event: 1, | |
delay: 0, | |
group: 5, | |
priority: 100, | |
backup: 0, | |
}, | |
{ | |
src: 'cdn-1.facecast.net', | |
data: 1, | |
event: 1, | |
delay: 0, | |
group: 101, | |
priority: 100, | |
backup: 0, | |
cdn: 1, | |
}, | |
{ | |
src: 'cdn-2.facecast.net', | |
data: 1, | |
event: 1, | |
delay: 0, | |
group: 102, | |
priority: 100, | |
backup: 0, | |
cdn: 1, | |
}, | |
{ | |
src: 'cdn-3.facecast.net', | |
data: 1, | |
event: 1, | |
delay: 0, | |
group: 103, | |
priority: 100, | |
backup: 0, | |
cdn: 1, | |
}, | |
], | |
auth_hb_servers = [ | |
{ src: 'auth-1.facecast.net' }, | |
{ src: 'auth-2.facecast.net' }, | |
{ src: 'auth-3.facecast.net' }, | |
]; | |
function get_urls() { | |
return p.src | |
? (run_player(), void $('.name').fadeOut(2e3)) | |
: (p.srv | |
? ('.net' !== p.srv.substr(-4) && (p.srv += '.facecast.net'), | |
speedtest.push({ timeline: 1, src: p.srv, priority: 100 }), | |
(url.media = p.srv), | |
(url.event = p.srv), | |
(url.done = 1), | |
(url.server = {}), | |
(url.event_server = {}), | |
(url.hb = 'edge-aux.facecast.net'), | |
init_event()) | |
: (get_srv_from_ls(), | |
window.addEventListener( | |
'first_edgetest_answer', | |
on_first_edgetest_asnwer | |
), | |
edgetest()), | |
!0); | |
} | |
function get_srv_from_ls() { | |
if ( | |
(dmesg('Getting fastest server(fastest_srv_ls) from local storage.'), | |
(p.fastest_srv_ls = readStorage('fastest_srv_ls')), | |
!p.fastest_srv_ls) | |
) | |
return ( | |
dmesg('Fastest server(fastest_srv_ls) not found in local storage.'), | |
(p.fastest_srv_ls = null), | |
!1 | |
); | |
try { | |
(p.fastest_srv_ls = JSON.parse(p.fastest_srv_ls)), | |
dmesg( | |
'Got fastest server(fastest_srv_ls) from local storage: ' + | |
p.fastest_srv_ls.srv + | |
'.', | |
1 | |
); | |
} catch (e) { | |
return ( | |
(p.fastest_srv_ls = null), | |
dmesg('Error parsing fastest_srv_ls. ' + e.toString(), 3), | |
!1 | |
); | |
} | |
if (+Date.now() > +p.fastest_srv_ls.expire) | |
return ( | |
dmesg('Fastest server(fastest_srv_ls) is expired.'), | |
(p.fastest_srv_ls = null), | |
!1 | |
); | |
var e = servers.filter(function (e) { | |
return -1 !== e.src.indexOf(p.fastest_srv_ls.srv); | |
}); | |
if (!e.length) | |
return ( | |
dmesg( | |
'Fastest server(fastest_srv_ls) ' + | |
p.fastest_srv_ls.srv + | |
' is not found in servers array.' | |
), | |
(p.fastest_srv_ls = null), | |
!1 | |
); | |
e = e[0]; | |
} | |
function edgetest() { | |
return ( | |
(p.edgetest_in_progress = !0), | |
p.edgetests_cnt++, | |
dmesg('Starting edgetest #' + p.edgetests_cnt + ' ...'), | |
(p.edgetest_answ_cnt = 0), | |
(p.edgetest_req_cnt = 0), | |
(p.edgetest_pings = []), | |
(p.edgetest_xhrs_req = []), | |
(p.edgetest_xhrs_res = []), | |
(p.first_edgetest_answer = null), | |
(p.edgetest_timeout_exceeded = !1), | |
(p.edgetest_done = !1), | |
servers.forEach(function (e, t) { | |
(e.id = t), | |
e.pings || (e.pings = []), | |
e.ping_avg || (e.ping_avg = 1e4), | |
e.ping_min || (e.ping_min = 1e4), | |
(e.event || e.data) && (p.edgetest_req_cnt++, edgetest_send_req(e)); | |
}), | |
setTimeout(on_edgetest_timeout_exceed, p.edgetest_timeout), | |
!0 | |
); | |
} | |
function edgetest_send_req(n) { | |
var s = Date.now(), | |
i = $.ajax({ | |
type: 'GET', | |
crossDomain: !0, | |
url: '//' + n.src + '/lb/edgetest.json', | |
dataType: 'json', | |
error: function (e, t, r) { | |
p.edgetest_xhrs_res.push({ src: n.src, xhr: e }), p.edgetest_answ_cnt++; | |
n.pings.push(1e4), | |
(n.allow = 0), | |
calc_ping(n), | |
0 < +p.edgetest_answ_cnt && | |
+p.edgetest_answ_cnt == +p.edgetest_req_cnt && | |
on_edgetest_end(); | |
}, | |
success: function (e) { | |
if (e.allow) { | |
p.edgetest_answ_cnt++; | |
var t = Date.now() - s; | |
if ( | |
(n.pings.push(t), | |
p.edgetest_pings.push(t), | |
(n.allow = e.allow), | |
(n.remote_addr = e.remote_addr), | |
calc_ping(n), | |
dmesg( | |
'Edgetest #' + | |
p.edgetests_cnt + | |
' reply from: \t' + | |
n.src + | |
', delay ' + | |
t + | |
'ms. \tClient ip:' + | |
e.remote_addr | |
), | |
-1 == url.remote_addr.join().search(e.remote_addr) && | |
(url.remote_addr.length && | |
dmesg( | |
'Diff IP address for server ' + | |
n.remote_addr + | |
' from ' + | |
n.src, | |
2 | |
), | |
p.dont_add_remote_addr || url.remote_addr.push(e.remote_addr)), | |
p.first_edgetest_answer || | |
((p.first_edgetest_answer = n), | |
window.dispatchEvent( | |
new CustomEvent('first_edgetest_answer', { | |
detail: { first_edgetest_answer: p.first_edgetest_answer }, | |
}) | |
)), | |
p.edgetest_xhrs_res.push({ src: n.src, xhr: i }), | |
0 < +p.edgetest_answ_cnt && | |
+p.edgetest_answ_cnt == +p.edgetest_req_cnt && | |
on_edgetest_end(), | |
url.a[n.group]) | |
) | |
for (var r = 0; r < speedtest.length; r++) | |
speedtest[r].group == n.group && | |
((0 == n.backup && 1 == speedtest[r].backup) || | |
(1 == n.backup && n.id < speedtest[r].id)) && | |
(dmesg( | |
'Reordering speedtest array, ' + | |
speedtest[r].src + | |
' -> ' + | |
n.src | |
), | |
(speedtest[r] = n)); | |
else speedtest.push(n); | |
(url.a[n.group] = 1), | |
!url.event && | |
n.event && | |
((url.event_server = n), (url.event = n.src), init_event()), | |
1 == +p.edgetests_cnt && | |
p.fastest_srv_ls && | |
-1 !== n.src.indexOf(p.fastest_srv_ls.srv) && | |
try_srv_from_ls(n); | |
} else | |
p.edgetest_answ_cnt++, | |
(n.allow = 0), | |
dmesg('Edgetest deny: ' + n.src, 2), | |
0 < +p.edgetest_answ_cnt && | |
+p.edgetest_answ_cnt == +p.edgetest_req_cnt && | |
on_edgetest_end(); | |
}, | |
}); | |
p.edgetest_xhrs_req.push({ src: n.src, xhr: i }), | |
dmesg('Edgetest #' + p.edgetests_cnt + ' request sent to:\t' + n.src); | |
} | |
function calc_ping(e) { | |
return ( | |
e.pings.length && | |
((e.ping_min = +Math.min.apply(Math, e.pings).toFixed(2)), | |
(e.ping_avg = | |
e.pings.reduce(function (e, t) { | |
return e + t; | |
}) / e.pings.length)), | |
!0 | |
); | |
} | |
function on_first_edgetest_asnwer(e) { | |
var t = e.detail.first_edgetest_answer; | |
dmesg('Edgetest #' + p.edgetests_cnt + ' first answer: ' + t.src, 1), | |
p.edgetest_timeout_exceeded && | |
(dmesg('Edgetest #' + p.edgetests_cnt + ' timeout exceeded.', 2), | |
get_xhrs_unresponsed().forEach(function (e) { | |
dmesg('Edgetest #' + p.edgetests_cnt + ' abort request: ' + e.src), | |
e.xhr.abort(); | |
})); | |
return 2 != +p.edgetests_cnt || p.first_load || first_player_load(t), !0; | |
} | |
function try_srv_from_ls(e) { | |
return ( | |
clearTimeout(window.trySrvFromLSTimeout), | |
!!p.fastest_srv_ls && | |
(p.event | |
? 6 == +p.event.view_mode_id && e.cdn | |
? (dmesg( | |
'fastest_srv_ls: ' + | |
e.src + | |
' cannot be used for view_mode_id == 6.', | |
3 | |
), | |
(window.trySrvFromLSTimeout = null), | |
!1) | |
: -1 !== e.src.indexOf(p.fastest_srv_ls.srv) | |
? (dmesg( | |
'Have reply from fastest server(fastest_srv_ls) ' + | |
p.fastest_srv_ls.srv + | |
'.', | |
1 | |
), | |
dmesg('Switch to fastest_srv_ls: ' + p.fastest_srv_ls.srv + '.', 1), | |
first_player_load(e), | |
!(window.trySrvFromLSTimeout = null)) | |
: ((window.trySrvFromLSTimeout = null), !1) | |
: ((window.trySrvFromLSTimeout = setTimeout(function () { | |
try_srv_from_ls(e); | |
}, 100)), | |
!1)) | |
); | |
} | |
function on_edgetest_timeout_exceed() { | |
if (!p.edgetest_done) | |
return ( | |
(p.edgetest_timeout_exceeded = !0), | |
p.first_edgetest_answer && | |
(dmesg('Edgetest #' + p.edgetests_cnt + ' timeout exceeded.', 2), | |
get_xhrs_unresponsed().forEach(function (e) { | |
dmesg('Edgetest #' + p.edgetests_cnt + ' abort request: ' + e.src), | |
e.xhr.abort(); | |
})), | |
!0 | |
); | |
} | |
function get_xhrs_unresponsed() { | |
var t = p.edgetest_xhrs_res.map(function (e) { | |
return e.src; | |
}); | |
return p.edgetest_xhrs_req.filter(function (e) { | |
return -1 === t.indexOf(e.src); | |
}); | |
} | |
function on_edgetest_end() { | |
if ( | |
(clearTimeout(window.onEdgetestEndTimeout), | |
!p.event || window.trySrvFromLSTimeout) | |
) | |
return (window.onEdgetestEndTimeout = setTimeout(on_edgetest_end, 100)), !1; | |
if ( | |
+p.on_edgetest_end_cnt != +p.edgetests_cnt && | |
(p.on_edgetest_end_cnt++, | |
(p.edgetest_done = !0), | |
(url.min_ping_avg = 1e5), | |
(+p.edgetests_cnt > +p.edgetest_heat_cnt || | |
(p.first_load && +p.edgetests_cnt == +p.edgetest_heat_cnt)) && | |
servers.forEach(function (e) { | |
e.allow && | |
-1 === url.remote_addr.indexOf(e.remote_addr) && | |
(e.allow = !1); | |
}), | |
(servers = servers.filter(function (e) { | |
return ( | |
!e.cdn || | |
6 != +p.event.view_mode_id || | |
(dmesg( | |
'CDN cannot be used for view_mode_id == 6. Remove ' + | |
e.src + | |
' from servers array.' | |
), | |
!1) | |
); | |
})).forEach(function (e, t) { | |
e.allow && | |
e.ping_avg && | |
+e.ping_avg < +url.min_ping_avg && | |
((url.min_ping_avg = e.ping_avg), | |
(url.fastest_avg = t), | |
e.cdn || (url.hb = e.src)); | |
}), | |
void 0 !== url.min_ping_avg && void 0 !== url.fastest_avg) | |
) { | |
if ( | |
(+p.edgetests_cnt <= +p.edgetest_heat_cnt && | |
(dmesg( | |
'Edgetest #' + | |
p.edgetests_cnt + | |
' done. Fastest: ' + | |
servers[url.fastest_avg].src + | |
' - ' + | |
servers[url.fastest_avg].ping_avg + | |
'ms', | |
1 | |
), | |
dmesg('Statistics heartbeat server: ' + url.hb, 1)), | |
p.first_load && | |
p.event && | |
(2 == +p.event.view_mode_id || | |
4 == +p.event.view_mode_id || | |
5 == +p.event.view_mode_id || | |
6 == +p.event.view_mode_id || | |
7 == +p.event.view_mode_id) && | |
(p.dont_add_remote_addr = !0), | |
+p.edgetests_cnt < +p.edgetest_heat_cnt && !p.first_load) | |
) | |
return (p.edgetest_in_progress = !1), edgetest(), !0; | |
if (+p.edgetests_cnt == +p.edgetest_heat_cnt && !p.first_load) | |
return ( | |
(p.edgetest_in_progress = !1), | |
first_player_load(servers[url.fastest_avg]), | |
!0 | |
); | |
if ( | |
+p.edgetests_cnt > +p.edgetest_heat_cnt || | |
(p.first_load && +p.edgetests_cnt == +p.edgetest_heat_cnt) | |
) { | |
if ( | |
((p.edgetest_in_progress = !1), | |
('buffering' !== p.edgetest_trigger && 'xhr' !== p.edgetest_trigger) || | |
(dmesg('Starting speedtest...'), | |
(p.speedtest_seq = 0), | |
(p.speedtest_in_progress = !1), | |
speed_test()), | |
'resolution' === p.edgetest_trigger) | |
) { | |
(p.edgetest_pings = p.edgetest_pings | |
.filter(function (e) { | |
return +e; | |
}) | |
.sort(function (e, t) { | |
return e - t; | |
}) | |
.filter(function (e, t, r) { | |
return r.indexOf(e) === t; | |
})), | |
1 < p.edgetest_pings.length && | |
(p.edgetest_pings = p.edgetest_pings.slice(0, -1)); | |
var e = p.edgetest_pings.reduce(function (e, t) { | |
return e + t; | |
}), | |
t = Math.ceil(e / p.edgetest_pings.length || 0); | |
dmesg( | |
p.edge_test_pings + | |
' ' + | |
t + | |
' ' + | |
p.speedtest_min_ping_resolution_trigger | |
), | |
+p.speedtest_min_ping_resolution_trigger > +t | |
? (dmesg('Starting speedtest'), | |
(p.speedtest_seq = 0), | |
(p.speedtest_in_progress = !1), | |
speed_test()) | |
: afterEdgetestSpeedtest(); | |
} | |
return !0; | |
} | |
p.edgetest_in_progress = !1; | |
} | |
} | |
function first_player_load(e) { | |
p.first_load || | |
((p.first_load = !0), | |
(p.srv = e.src.split('.')[0]), | |
(url.server = e), | |
(url.media = e.src), | |
(url.done = 1), | |
firstLoadFastest(), | |
set_bufferfull_listener(), | |
set_player_play_intent_listener()); | |
} | |
function set_bufferfull_listener() { | |
player && player.core && player.core.getCurrentPlayback() | |
? player.core | |
.getCurrentPlayback() | |
.on(Clappr.Events.PLAYBACK_BUFFERFULL, buffer_full_callback) | |
: setTimeout(set_bufferfull_listener, 0); | |
} | |
function buffer_full_callback() { | |
dmesg('PLAYBACK_BUFFERFULL. Starting speedtest'), | |
(p.speedtest_seq = 0), | |
(p.speedtest_in_progress = !1), | |
speed_test(), | |
player.core | |
.getCurrentPlayback() | |
.off(Clappr.Events.PLAYBACK_BUFFERFULL, buffer_full_callback); | |
} | |
function set_player_play_intent_listener() { | |
player && player.core && player.core.getCurrentPlayback() | |
? player.core | |
.getCurrentPlayback() | |
.once(Clappr.Events.PLAYBACK_PLAY_INTENT, function () { | |
setTimeout( | |
bufferfull_timeout_callback, | |
p.speedtest_bufferfull_timeout | |
); | |
}) | |
: setTimeout(set_player_play_intent_listener, 0); | |
} | |
function bufferfull_timeout_callback() { | |
return ( | |
+p.speedtest_cnt < 1 && | |
!p.speedtest_in_progress && | |
(player.core | |
.getCurrentPlayback() | |
.off(Clappr.Events.PLAYBACK_BUFFERFULL, buffer_full_callback), | |
dmesg('Speedtest bufferfull timeout exceeded. Starting speedtest...'), | |
(p.speedtest_seq = 0), | |
(p.speedtest_in_progress = !1), | |
speed_test()), | |
!0 | |
); | |
} | |
function speed_test() { | |
if ( | |
((p.speedtest_in_progress = !0), | |
0 == +p.speedtest_seq && | |
((p.speedtest_answ_cnt = 0), (p.speedtest_req_cnt = 0)), | |
!p || | |
!p.event || | |
(2 != +p.event.view_mode_id && | |
4 != +p.event.view_mode_id && | |
5 != +p.event.view_mode_id && | |
6 != +p.event.view_mode_id && | |
7 != +p.event.view_mode_id) || | |
p.auth) | |
) | |
if (+p.speedtest_seq >= +servers.length) parse_speedtest(); | |
else if (p.master_playlist && p.chunk_path) { | |
var e = p.speedtest_seq; | |
servers[e].has_speedtest || | |
servers[e].init_speedtest || | |
(servers[e].allow | |
? init_speedtest(servers[e]) | |
: (p.speedtest_seq++, speed_test())); | |
} else get_master_url(); | |
else | |
dmesg( | |
'Speedtest: viewer is not authorized. Vaiting for authorization...', | |
2 | |
); | |
} | |
function get_master_url() { | |
var r = []; | |
if (p.master_playlist) get_chunk_playlist(); | |
else { | |
var n, | |
e, | |
t = ['?live=' + p.live_duration, '']; | |
if ( | |
p && | |
p.event && | |
(2 == +p.event.view_mode_id || | |
4 == +p.event.view_mode_id || | |
5 == +p.event.view_mode_id || | |
6 == +p.event.view_mode_id || | |
7 == +p.event.view_mode_id) && | |
p.auth | |
) | |
(e = url.server.cdn ? p.auth.cdn_src : p.auth.edge_src), | |
(n = prefix + url.media + '/' + e + '.m3u8' + t[p.event.use_dvr]); | |
else | |
(n = prefix + url.media + '/public/' + p.event.id + '.m3u8'), | |
(n += t[p.event.use_dvr]); | |
dmesg('Speedtest getting master playlist... ' + n), | |
$.ajax({ | |
type: 'GET', | |
url: n, | |
dataType: 'text', | |
error: function (e, t, r) { | |
console.log('ajax_error\n' + r + '\n' + t + '\n' + e.statusText), | |
dmesg( | |
'Error getting master playlist: ' + | |
n + | |
' ' + | |
r + | |
' ' + | |
t + | |
' ' + | |
e.statusText, | |
3 | |
), | |
(url.min_ping_avg = 1e4), | |
servers.forEach(function (e) { | |
e.src === url.server.src && (e.allow = 0); | |
}), | |
servers.forEach(function (e) { | |
e.allow && | |
e.ping_min && | |
+e.ping_min < +url.min_ping_avg && | |
((url.min_ping_avg = e.ping_min), | |
(url.server = e), | |
(url.media = e.src)); | |
}), | |
setTimeout(function () { | |
dmesg('Trying to get master playlist from ' + url.media), | |
get_master_url(); | |
}, 1e3); | |
}, | |
success: function (e) { | |
if (e && 0 < e.length) { | |
e.split('\n').forEach(function (e) { | |
-1 == e.indexOf('#') && 2 < e.length && r.push(e); | |
}), | |
r.reverse(); | |
var t = new URL(n); | |
(p.master_playlist = | |
t.protocol + | |
'//' + | |
t.host + | |
t.pathname.split('.')[0] + | |
'/' + | |
r[0].split('/')[1]), | |
dmesg('Got master playlist.', 1), | |
get_chunk_playlist(); | |
} | |
}, | |
}); | |
} | |
} | |
function get_chunk_playlist() { | |
dmesg('Speedtest getting chunk playlist... ' + p.master_playlist); | |
var n = []; | |
$.ajax({ | |
type: 'GET', | |
url: p.master_playlist, | |
dataType: 'text', | |
error: function (e, t, r) { | |
console.log('ajax_error\n' + r + '\n' + t + '\n' + e.statusText), | |
dmesg( | |
'Error getting chunk playlist: ' + | |
p.master_playlist + | |
' ' + | |
r + | |
' ' + | |
t + | |
' ' + | |
e.statusText, | |
3 | |
), | |
(p.master_playlist = null), | |
setTimeout(function () { | |
dmesg('Trying to get master playlist again'), get_master_url(); | |
}, 1e3); | |
}, | |
success: function (e) { | |
if (e && 0 < e.length) { | |
e.split('\n').forEach(function (e) { | |
-1 == e.indexOf('#') && 2 < e.length && n.push(e); | |
}), | |
n.reverse(); | |
var t = 10 < n.length ? 10 : n.length - 1, | |
r = new URL(p.src); | |
(p.chunk_path = p.edge_chunk_path = | |
r.pathname.split('.')[0] + '/' + n[t]), | |
p && | |
p.event && | |
(2 == +p.event.view_mode_id || | |
4 == +p.event.view_mode_id || | |
5 == +p.event.view_mode_id || | |
6 == +p.event.view_mode_id || | |
7 == +p.event.view_mode_id) && | |
p.auth && | |
((p.edge_chunk_path = '/' + p.auth.edge_src + '/' + n[t]), | |
(p.chunk_path = '/' + p.auth.cdn_src + '/' + n[t])), | |
dmesg('Got chunk playlist.', 1), | |
speed_test(); | |
} | |
}, | |
}); | |
} | |
function init_speedtest(s) { | |
dmesg('Speedtest started for ' + s.src, 0), | |
p.speedtest_req_cnt++, | |
(s.init_speedtest = 1); | |
var i = Date.now(), | |
e = s.cdn ? p.chunk_path : p.edge_chunk_path; | |
$.ajax({ | |
type: 'GET', | |
crossDomain: !0, | |
cache: !0, | |
url: 'https://' + s.src + e, | |
dataType: 'text', | |
error: function (e, t, r) { | |
p.speedtest_answ_cnt++, | |
(s.has_speedtest = 1), | |
(s.speed_avg = 0), | |
(s.speedtests = []), | |
dmesg( | |
'Speedtest error (' + | |
p.speedtest_answ_cnt + | |
' of ' + | |
p.speedtest_req_cnt + | |
') from: ' + | |
s.src + | |
' ' + | |
r + | |
t + | |
' ' + | |
e.statusText, | |
3 | |
); | |
}, | |
success: function (e) { | |
p.speedtest_answ_cnt++, (s.has_speedtest = 1); | |
var t = (Date.now() - i) / 1e3; | |
(s.bytes = e.length), | |
(s.speed = +(Math.round((e.length / t) * 8) / 1e6).toFixed(2)), | |
s.speedtest || (s.speedtest = []), | |
3 < s.speedtest.length && (s.speedtest = s.speedtest.slice(1, 4)), | |
s.id == p.best_server && | |
0 == | |
player.core.getCurrentPlayback()._hls.levelController | |
.currentLevelIndex && | |
(s.speedtest = []), | |
s.speedtest.push(s.speed); | |
for (var r = 0, n = 0; n < s.speedtest.length; n++) r += s.speedtest[n]; | |
(s.speed_avg = +(r / s.speedtest.length).toFixed(2)), | |
(s.timeline = Date.now()), | |
(s.timeline += (t * (100 - s.priority)) / 100), | |
(url.bandwidth += s.speed), | |
dmesg( | |
'Speedtest reply (' + | |
p.speedtest_answ_cnt + | |
' of ' + | |
p.speedtest_req_cnt + | |
'):\t' + | |
s.src + | |
',\tspeed: ' + | |
s.speed + | |
' Mbps, priority ' + | |
s.priority + | |
'%' | |
); | |
}, | |
complete: function () { | |
p.speedtest_seq++, | |
p.speedtest_seq >= servers.length | |
? parse_speedtest() | |
: setTimeout(function () { | |
speed_test(); | |
}, p.speedtest_delay); | |
}, | |
}); | |
} | |
function parse_speedtest() { | |
(p.speedtest_seq = 0), p.speedtest_cnt++; | |
for (var e = (url.best_speed = 0); e < servers.length; e++) | |
url.best_speed < servers[e].speed && | |
servers[e].allow && | |
((url.best_speed = servers[e].speed), | |
(p.best_server = servers[e]), | |
(url.server = servers[e]), | |
(url.media = servers[e].src), | |
servers[e].cdn || (url.hb = servers[e].src)), | |
(servers[e].has_speedtest = void 0), | |
(servers[e].init_speedtest = void 0); | |
dmesg( | |
'Speedtest done. Fastest: ' + | |
p.best_server.src + | |
', speed: ' + | |
p.best_server.speed + | |
' Mbps', | |
1 | |
), | |
dmesg('Statistics heartbeat server: ' + url.hb, 1), | |
(p.srv = p.best_server.src.split('.')[0]), | |
(Clappr.Browser.isiOS && 1 == +p.speedtest_cnt) || sw(p.srv), | |
void 0 !== window.speedTestListener && | |
(window.speedTestListener.speedTest = 0), | |
fin_speedtest(), | |
set_speedtest_listeners(), | |
dmesg('Write fastest_srv_ls: ' + p.srv + ' to local storage.'), | |
writeStorage( | |
'fastest_srv_ls', | |
JSON.stringify({ | |
srv: p.srv, | |
expire: +Date.now() + p.fastest_srv_ls_expire, | |
}) | |
), | |
(p.speedtest_in_progress = !1), | |
1 < +p.speedtest_cnt && afterEdgetestSpeedtest(); | |
} | |
function afterEdgetestSpeedtest() { | |
clearTimeout(window.playback_seek_listen_buffering), | |
clearTimeout(window.playback_seek_listen_buffering_after_test), | |
clearTimeout(window.stillBufferringTimeout), | |
clearTimeout(window.checkLevelTimeout), | |
(p.listen_buffering = !1), | |
dmesg( | |
"After edgetest/speedtest: Don't trigger edgetest + speedtest on buffering for " + | |
p.speedtest_listener_off_time * p.edgetests_cnt + | |
'ms.' | |
), | |
(window.playback_seek_listen_buffering_after_test = setTimeout(function () { | |
dmesg( | |
'After edgetest/speedtest: ' + | |
p.speedtest_listener_off_time * p.edgetests_cnt + | |
'ms elapsed. Trigger for edgetest + speedtest is on.' | |
), | |
(p.listen_buffering = !0), | |
(window.playback_seek_listen_buffering_after_test = null), | |
(window.checkLevelTimeout = setTimeout( | |
check_level, | |
p.check_level_timeout | |
)); | |
}, p.speedtest_listener_off_time * p.edgetests_cnt)); | |
} | |
function set_speedtest_listeners() { | |
p.speed_test_listeners_set || | |
p.srv_query || | |
(dmesg('Setting speedtest listeners...'), | |
player.core | |
.getCurrentPlayback() | |
.on(Clappr.Events.PLAYBACK_BUFFERING, buffering_callback), | |
player.core | |
.getCurrentPlayback() | |
.on(Clappr.Events.PLAYBACK_SEEK, seek_callback), | |
Clappr.Browser.isiOS || check_level(), | |
speedtest_check_buffering(), | |
(p.speed_test_listeners_set = !0)); | |
} | |
function seek_callback() { | |
window.playback_seek_listen_buffering_after_test | |
? dmesg('PLAYER_SEEK') | |
: (dmesg( | |
"PLAYER_SEEK. Don't trigger edgetest + speedtest on buffering for " + | |
p.speedtest_listener_off_time + | |
'ms.' | |
), | |
(p.listen_buffering = !1), | |
clearTimeout(window.playback_seek_listen_buffering), | |
(window.playback_seek_listen_buffering = setTimeout(function () { | |
dmesg( | |
p.speedtest_listener_off_time + | |
'ms elapsed. Trigger for edgetest + speedtest is on.' | |
), | |
(p.listen_buffering = !0); | |
}, p.speedtest_listener_off_time))); | |
} | |
function buffering_callback() { | |
dmesg('PLAYER_BUFFERING'), | |
p.edgetest_in_progress || | |
p.speedtest_in_progress || | |
!p.listen_buffering || | |
(p.speedtest_buffering_counter.push(Date.now()), | |
1 < p.speedtest_buffering_counter.length && | |
p.speedtest_buffering_counter.slice(-1)[0] - | |
p.speedtest_buffering_counter.slice(-2, -1)[0] < | |
6e4 && | |
((p.edgetest_trigger = 'buffering'), | |
(p.speedtest_buffering_counter = []), | |
p.edgetest_in_progress || | |
p.speedtest_in_progress || | |
((p.listen_buffering = !1), | |
clearTimeout(window.playback_seek_listen_buffering), | |
edgetest())), | |
clearTimeout(window.stillBufferringTimeout), | |
(window.stillBufferringTimeout = setTimeout(function () { | |
player.core.getCurrentPlayback().buffering && | |
p.listen_buffering && | |
((p.speedtest_buffering_counter = []), | |
(p.edgetest_trigger = 'buffering'), | |
p.edgetest_in_progress || | |
p.speedtest_in_progress || | |
(dmesg( | |
'Player is buffering more than 3 seconds. Starting edgetest...' | |
), | |
(p.listen_buffering = !1), | |
clearTimeout(window.playback_seek_listen_buffering), | |
edgetest())); | |
}, 3e3))); | |
} | |
function check_level() { | |
if ( | |
player && | |
!p.edgetest_in_progress && | |
!p.speedtest_in_progress && | |
p.listen_buffering | |
) { | |
var e = player.getPlugin('level_selector'), | |
t = null; | |
e && e.currentLevel && (t = e.currentLevel.level.height), | |
t && | |
160 == +t && | |
e.selectedLevelId && | |
-1 == +e.selectedLevelId && | |
((p.edgetest_trigger = 'resolution'), | |
dmesg('Low resolution. Starting edgetest...'), | |
p.edgetest_in_progress || | |
p.speedtest_in_progress || | |
((p.listen_buffering = !1), | |
clearTimeout(window.playback_seek_listen_buffering), | |
edgetest())); | |
} | |
clearTimeout(window.checkLevelTimeout), | |
(window.checkLevelTimeout = setTimeout(check_level, p.check_level_timeout)); | |
} | |
function speedtest_check_buffering() { | |
clearTimeout(window.speedtest_check_buffering_timeout), | |
p.listen_buffering && | |
(player.core.getCurrentPlayback().buffering && | |
(dmesg('PLAYER_BUFFERING'), | |
p.speedtest_buffering_counter.push(Date.now())), | |
1 < p.speedtest_buffering_counter.length && | |
p.speedtest_buffering_counter.slice(-1)[0] - | |
p.speedtest_buffering_counter.slice(-2, -1)[0] < | |
6e4 && | |
((p.edgetest_trigger = 'buffering'), | |
(p.speedtest_buffering_counter = []), | |
p.edgetest_in_progress || | |
p.speedtest_in_progress || | |
((p.listen_buffering = !1), | |
clearTimeout(window.playback_seek_listen_buffering), | |
edgetest()))); | |
window.speedtest_check_buffering_timeout = setTimeout( | |
speedtest_check_buffering, | |
p.speedtest_check_buffering_timeout | |
); | |
} | |
function reset_speedtest_listeners() { | |
dmesg('Reset speedtest listeners'), | |
(p.speed_test_listeners_set = !1), | |
player.core | |
.getCurrentPlayback() | |
.off(Clappr.Events.PLAYBACK_BUFFERING, buffering_callback), | |
player.core | |
.getCurrentPlayback() | |
.off(Clappr.Events.PLAYBACK_SEEK, seek_callback), | |
setTimeout(set_speedtest_listeners, 1e3); | |
} | |
function sw(e) { | |
if ( | |
(dmesg('Switch to ' + e, 1), | |
(p.srv = e), | |
Clappr.Browser.isiOS || Clappr.Browser.isMobile || Clappr.Browser.isMobile) | |
) { | |
var t = player.core.getCurrentPlayback().getCurrentTime(), | |
r = player.core.getCurrentContainer(), | |
n = player.core.getCurrentPlayback(), | |
s = servers.filter(function (e) { | |
return -1 !== e.src.indexOf(p.srv); | |
})[0], | |
i = n._options.src, | |
a = new URL(i); | |
if (a.host == s.src) return void dmesg('SRC is already ' + s.src); | |
var o = a.pathname; | |
if ( | |
p && | |
p.event && | |
(2 == +p.event.view_mode_id || | |
4 == +p.event.view_mode_id || | |
5 == +p.event.view_mode_id || | |
6 == +p.event.view_mode_id || | |
7 == +p.event.view_mode_id) && | |
p.auth | |
) { | |
var l = o.split(p.auth.cdn_src); | |
(o = 1 < l.length ? l[1] : o.split(p.auth.edge_src)[1]), | |
(o = (s = servers.filter(function (e) { | |
return -1 !== e.src.indexOf(p.srv); | |
})[0]).cdn | |
? '/' + p.auth.cdn_src + o | |
: '/' + p.auth.edge_src + o); | |
} | |
var d = 'https://' + s.src + o; | |
(d += ['?live=' + p.live_duration, ''][p.event.use_dvr]), | |
r && (r.options.source = d), | |
n && (n.options.source = d), | |
(p.listen_buffering = !1), | |
player.load(d), | |
player.play(), | |
n.unmute(), | |
player.unmute(), | |
player.core | |
.getCurrentPlayback() | |
.once(Clappr.Events.PLAYBACK_PLAY, function (e) { | |
(p.listen_buffering = !1), | |
player.seek(t), | |
n.unmute(), | |
player.unmute(), | |
reset_speedtest_listeners(); | |
}); | |
} | |
} | |
function success_event() { | |
19318 == p.event.id && | |
($('.userreg__body__phone > h3') | |
.html('Должность,<br>организация') | |
.css('width', '110'), | |
$('.userreg__body__accept > label').html( | |
'Я принимаю <a href="http://webinars.kpmg.ru/privacy" target="_blank">соглашение</a> на обработку персональных данных' | |
), | |
'en' == p.lang && | |
$('.userreg__body__phone > h3').html('Company,<br>your position'), | |
$('.userreg__body__name > h3').css('width', '110'), | |
$('.userreg__body__email > h3').css('width', '110'), | |
$('.userreg__body__phone > h3').css('width', '110'), | |
$('.userreg__footer > a').css('display', 'none'), | |
$('.userreg__body__accept > label').css('padding-left', '140px'), | |
$('.userreg__body__accept > input[type="checkbox"]').css( | |
'margin-left', | |
'117px' | |
), | |
(userErr.empty.phone = | |
'ru' === p.lang | |
? 'Введите должность' | |
: 'Enter your job title')); | |
} | |
(p.fastest_srv_ls = null), | |
(p.edgetest_in_progress = !1), | |
(p.edgetests_cnt = 0), | |
(p.first_edgetest_answer = null), | |
(p.edgetest_timeout_exceeded = !1), | |
(p.edgetest_answ_cnt = 0), | |
(p.edgetest_req_cnt = 0), | |
(p.edgetest_pings = []), | |
(p.edgetest_timeout = 2e3), | |
(p.edgetest_done = !1), | |
(p.edgetest_xhrs_req = []), | |
(p.edgetest_xhrs_res = []), | |
(p.first_load = !1), | |
(p.dont_add_remote_addr = !1), | |
(p.on_edgetest_end_cnt = 0), | |
(p.edgetest_heat_cnt = 2), | |
(p.speedtest_cnt = 0), | |
(p.speedtest_answ_cnt = 0), | |
(p.speedtest_req_cnt = 0), | |
(p.speedtest_delay = 300), | |
(p.speedtest_bufferfull_timeout = 5e3), | |
(p.speedtest_in_progress = !1), | |
(p.speedtest_listener_off_time = 1e4), | |
(p.speedtest_buffering_counter = []), | |
(p.fastest_srv_ls_expire = 864e5), | |
(p.listen_buffering = !0), | |
(p.speedtest_min_ping_resolution_trigger = 300), | |
(p.check_level_timeout = 5e3), | |
(p.speedtest_check_buffering_timeout = 2e3); | |
var preselected_cdn, | |
SMS_REPEAT_INTERVAL = ''; | |
function fin_speedtest() { | |
for (var e = 0; e < speedtest.length; e++) | |
speedtest[e].timeline && | |
speedtest[e].timeline <= Date.now() && | |
(!url.done && | |
speedtest[e].cdn && | |
speedtest[e].speed > cdn_threshold && | |
null == preselected_cdn && | |
2 < speedtest.length && | |
dmesg('Preselect ' + speedtest[(preselected_cdn = e)].src), | |
!url.done && | |
speedtest[e].speed < cdn_threshold && | |
null == preselected_cdn && | |
((url.server = speedtest[e]), | |
(url.media = speedtest[e].src), | |
(url.done = 1), | |
dmesg( | |
'Speedtest done (low speed, no preselect), source = \t' + | |
url.media + | |
',\tspeed: ' + | |
speedtest[e].speed + | |
' Mbit', | |
1 | |
)), | |
!url.done && | |
speedtest[e].speed > cdn_threshold && | |
!speedtest[e].cdn && | |
((url.server = speedtest[e]), | |
(url.media = speedtest[e].src), | |
(url.done = 1), | |
dmesg( | |
'Speedtest done (high speed), source = \t' + | |
url.media + | |
',\tspeed: ' + | |
speedtest[e].speed + | |
' Mbit', | |
1 | |
)), | |
!url.done && | |
!speedtest[e].cdn && | |
speedtest[e].speed <= cdn_threshold && | |
null != preselected_cdn && | |
((url.server = speedtest[preselected_cdn]), | |
(url.media = speedtest[preselected_cdn].src), | |
(url.done = 1), | |
dmesg( | |
'Speedtest done (low speed, use preselect), source = \t' + | |
url.media + | |
',\tspeed: ' + | |
speedtest[preselected_cdn].speed + | |
' Mbit', | |
1 | |
)), | |
url.hb || | |
speedtest[e].cdn || | |
!speedtest[e].src || | |
((url.hb = speedtest[e].src), | |
dmesg('Statistics heartbeat server: ' + url.hb, 1))); | |
url.done && !p.src && hb_schedule(); | |
} | |
function on_src_receive() { | |
duration(p.src), dmesg('SRC = ' + p.src, 1), try_load(); | |
} | |
function auth_window() { | |
p.key | |
? ($('.LNIframe .event_form #pass').val(p.key), | |
p.no_auto_login | |
? $('.a-window, .a-header, .a-auth, .a-body') | |
.show() | |
.css('display', 'flex') | |
: look_by_multipassword()) | |
: $('.a-window, .a-header, .a-auth, .a-body').show().css('display', 'flex'), | |
p.ref.indexOf('admin') < 0 && | |
-1 == document.location.href.indexOf('nofocus') && | |
$('#pass').focus(); | |
} | |
var start, | |
INPUT_PHONE_NUMBER = ''; | |
function showFullUserregForm() { | |
$('.userreg__code_error').html(''), | |
$('.userreg__window-short').hide(), | |
$('.userreg__window').show(); | |
} | |
function backToShortUserregForm() { | |
$('.userreg__error_field').html(''), | |
$('.userreg__window').hide(), | |
$('.userreg__window-short').show(); | |
} | |
function show_userreg_window() { | |
var e = Cookies.get('userreg', { path: '/v' }); | |
e = (e = e || readStorage('userreg')) ? JSON.parse(e) : {}; | |
var t = p.event.viewer_data ? p.event.viewer_data.split(';') : ''; | |
t && (t[t.length - 1] || (t = t.slice(0, -1))), (p.event.customFields = t); | |
for (var r = 0; r < t.length; r++) { | |
if (-1 !== t[r].toLowerCase().indexOf('email')) | |
var n = | |
'<div class="userreg__body__custom"><h3 class="userreg__code">' + | |
t[r] + | |
'</h3><input type="text" id="userreg-user-email" onkeydown="validateEmailInput(event)" onkeyup="validateEmailInput(event)" onkeypress="validateEmailInput(event)"></div><div class="userreg__body__email-error userreg__error_field"></div>'; | |
else if ( | |
!p.event.has_phone_validation || | |
(-1 === t[r].toLowerCase().indexOf('phone') && | |
-1 === t[r].toLowerCase().indexOf('телефон')) | |
) | |
n = | |
'<div class="userreg__body__custom"><h3 class="userreg__code">' + | |
t[r] + | |
'</h3><input type="text" id="userreg-custom-' + | |
r + | |
'" ></div><div class="userreg__error_custom userreg__error-' + | |
r + | |
'"></div>'; | |
else | |
var n = | |
'<div class="userreg__body__custom"><h3 class="userreg__code">' + | |
t[r] + | |
'</h3><div class="userreg-input-group-prepend"><div>+</div><input type="text" id="userreg-user-phone"></div></div><div class="userreg__body__phone-error userreg__error_field"></div>'; | |
$('.userreg__custom').append(n); | |
} | |
if ( | |
(p.key | |
? ($('#userreg-pass').val(p.key), | |
p.no_auto_login ? backToShortUserregForm() : look_by_multipassword()) | |
: e[p.event.id] | |
? ((p.key = e[p.event.id].key), look_by_multipassword()) | |
: $('.userreg__window').show(), | |
p.ref.indexOf('admin') < 0 && $('#userreg-user-name').focus(), | |
1 != p.event.userreg_strict && | |
$('.userreg-goback, .userreg__warning').hide(), | |
p.event.has_phone_validation || $('.userreg_phone_warning').hide(), | |
p.event.has_phone_validation && | |
$('#userreg-user-phone').on('keydown', function (e) { | |
setTimeout(validateInput, 0); | |
}), | |
'ec7mtl' === p.event.code) | |
) { | |
$('.userreg__footer').append( | |
'<p class="userreg__warning" >** Ваша регистрация будет проверена нашими менеджерами, и персональный билет будет отправлен Вам на электронную почту.</p>' | |
); | |
} | |
} | |
function validateInput() { | |
var e = $('#userreg-user-phone').val(); | |
e.match(/^(?![0])(\d{0,15})?$/) | |
? (INPUT_PHONE_NUMBER = e) | |
: (e = INPUT_PHONE_NUMBER), | |
$('#userreg-user-phone').val(e); | |
} | |
function validateEmailInput(e) { | |
'Space' == (e = e || window.event).code && e.preventDefault(); | |
} | |
function init_event() { | |
var e = | |
url.event + | |
'/eventdata?init&code=' + | |
code + | |
'&ref=' + | |
p.ref + | |
'&sid=' + | |
p.sid; | |
dmesg('Getting eventdata...\t\t' + prefix + e), | |
$.ajax({ | |
url: prefix + e, | |
method: 'GET', | |
dataType: 'json', | |
cache: !1, | |
error: function (e, t, r) { | |
console.log('ajax_error\n' + r + '\n' + t + '\n' + e.statusText), | |
dmesg( | |
'Error getting eventdata from: ' + | |
url.event + | |
r + | |
' ' + | |
t + | |
' ' + | |
e.statusText, | |
3 | |
), | |
1 === servers.length | |
? (dmesg('Reconnect to the last server.', 1), | |
setTimeout(init_event, 1e4)) | |
: ((servers = servers.filter(function (e) { | |
return e.src !== url.event; | |
})), | |
dmesg( | |
'Server ' + | |
url.event + | |
' has been successfully removed from the list.', | |
1 | |
), | |
dmesg('Starting reelection...', 2), | |
setTimeout(reload_player, 3e3)); | |
}, | |
success: function (e) { | |
if ( | |
((p.event = e), | |
success_event(), | |
dmesg( | |
'Eventdata done: EID = ' + p.event.id + ' "' + p.event.name + '"', | |
1 | |
), | |
2957 == p.event.user_id && addGTM(), | |
'auto' === p.autorun && | |
(1 == p.event.is_live | |
? (p.autorun = !0) | |
: 1 < p.event.view_mode_id && | |
0 != p.autorun && | |
'false' != p.autorun && | |
(p.autorun = !0)), | |
null != p.event.has_hd && (cdn_threshold = threshold[p.event.has_hd]), | |
p.event.hypercomments_auth) | |
) { | |
p.hc = p.event.hypercomments_auth; | |
var t = p.hc.split('_'); | |
dmesg('HC_Auth = ' + Base64.decode(t[0]).split('"')[3]); | |
} | |
4 === p.event.view_mode_id && | |
($('#pass').addClass('inp4'), $('#buy-btn').show()), | |
1 != p.event.view_mode_id && | |
7 != p.event.view_mode_id && | |
'https://' != prefix && | |
(document.location.href = | |
document.location.href.replace('http:', 'https:') + | |
(-1 == document.location.href.indexOf('?') ? '?' : '&') + | |
'ref=' + | |
p.ref), | |
0 == p.event.has_whitelabel && | |
237 != p.event.user_id && | |
((p.logo = !0), dmesg('Player logo is Enabled')), | |
p.chat_on && (p.event.chat = 1), | |
$('.vcnt').html(+p.event.viewers_now + 1), | |
1 != p.event.is_live || | |
(!sh_cnt && 1 != p.event.show_cnt) || | |
$('.vcnt').show(); | |
var r = | |
moment(1e3 * p.event.date_plan_start_ts).unix() - moment().unix(); | |
0 < r && !p.c && !p.isReload && (countdown_init(r), (p.c = 1)), | |
p.event.disable_message && | |
$('.disable').html(p.event.disable_message), | |
1 == p.event.has_disabled && $('.disable').show(), | |
p.srv && (firstLoadFastest(), fin_speedtest()), | |
1 != p.event.has_disable && init_src(); | |
}, | |
}); | |
} | |
function firstLoadFastest() { | |
if (p.event && url.done && url.media && !p.src) { | |
if ((hb_schedule(), p.event && 1 == p.event.view_mode_id)) { | |
var e = ['?live=' + p.live_duration, '']; | |
(p.src = prefix + url.media + '/public/' + p.event.id + '.m3u8'), | |
(p.src += e[p.event.use_dvr]), | |
on_src_receive(); | |
} | |
if ( | |
p.event && | |
p.event.view_mode_id && | |
1 != p.event.view_mode_id && | |
!p.auth_window | |
) { | |
if ( | |
((p.auth_window = 1), | |
$spinner.hide(), | |
dmesg( | |
'Event is secured (view_mode_id = ' + | |
p.event.view_mode_id + | |
'), open Auth window' | |
), | |
15 < p.event.duration && countdown_stop(), | |
p.event.event_id < 1) | |
) | |
return; | |
7 !== p.event.view_mode_id ? auth_window() : show_userreg_window(); | |
} | |
} | |
} | |
function get_event() { | |
$.ajax({ | |
url: prefix + url.media + '/eventdata?hb&code=' + code + '&ref=' + p.ref, | |
method: 'GET', | |
dataType: 'json', | |
error: function () {}, | |
success: function (e) { | |
if ( | |
(p.event.has_disabled != e.has_disabled && location.reload(), | |
p.event.has_banners !== e.has_banners && | |
window.player && | |
'function' == typeof window.player.getPlugin && | |
window.player.getPlugin('adv-banners') && | |
(Boolean(e.has_banners) | |
? window.player.getPlugin('adv-banners').enable() | |
: window.player.getPlugin('adv-banners').disable()), | |
window.player && | |
'function' == typeof window.player.getPlugin && | |
window.player.getPlugin('adv-banners')) | |
) { | |
var t = []; | |
try { | |
t = JSON.parse(e.banner_urls); | |
} catch (e) {} | |
window.player | |
.getPlugin('adv-banners') | |
.updateConf({ | |
loop: 'number' != typeof e.banner_loop || Boolean(e.banner_loop), | |
closable: | |
'number' != typeof e.banner_closable || | |
Boolean(e.banner_closable), | |
bannerUrls: t, | |
bannerShowTime: | |
'number' == typeof e.banner_show_time ? e.banner_show_time : 10, | |
bannerShowDelay: | |
'number' == typeof e.banner_show_delay ? e.banner_show_time : 60, | |
}); | |
} | |
var r = p.event.is_live, | |
n = p.event.duration, | |
s = e.duration, | |
i = p.event.has_episodes; | |
writeStorage('duration', e.duration), | |
(p.event = e), | |
(p.event.is_live = r), | |
(p.event.duration = n), | |
(p.event.edatadur = s), | |
i && | |
!p.event.has_episodes && | |
($('.trigger-episode-button').hide(), | |
player.getPlugin('episodes-navigation-container').isOpened && | |
(player.getPlugin('episodes-navigation-container').slide(), | |
reload_background())), | |
+e.poll_hb_delay && (p.poll_hb_delay = e.poll_hb_delay), | |
0 == p.event.is_live && $('.vcnt').hide(), | |
pollOverlayInit(), | |
$('.vcnt').html(1 * p.event.viewers_now), | |
p.player.loaded || try_load(); | |
}, | |
}); | |
} | |
var dmsg = []; | |
function dmesg(e, t) { | |
(start = start || new Date().getTime()), (t = t || 0); | |
var r = new Date().getTime(), | |
n = Math.floor((r - start) / 1e3), | |
s = r - start - 1e3 * n, | |
i = ''; | |
s < 100 && (i = '0'), s < 10 && (i += '0'); | |
var a = | |
'<font ' + | |
['', 'color=green', 'color=orange', 'color=red'][t] + | |
'>' + | |
(n + '.' + i + (r - start - 1e3 * n)) + | |
'\t' + | |
escapeHtml(e) + | |
'</font><br>'; | |
dmsg.push(a), | |
-1 < (window.location.href + p.ref).indexOf('fcdebug') && console.log(e), | |
$('#dmesg').append(a); | |
} | |
function fcdebug() { | |
$('#fcdebug').show(); | |
} | |
function countdown_init(e) { | |
$spinner.hide(), | |
no_animation || | |
$(function () { | |
(ts = new Date().getTime() + 1e3 * e), | |
$('#countdown') | |
.countdown({ timestamp: ts, callback: function () {} }) | |
.css('margin-bottom', '12px'); | |
}); | |
} | |
function countdown_stop() { | |
$('#countdown').html('').hide(), | |
$('.Iframe_body .LNIframe .info-wrap').addClass('no-countdown'), | |
(p.c = void 0); | |
} | |
function js_after_playerload() { | |
var e = | |
0 == document.documentElement.clientWidth | |
? document.body.clientWidth | |
: document.documentElement.clientWidth; | |
$spinner.hide(), | |
$('.description').fadeOut(1e3), | |
setTimeout(function () { | |
$('.Iframe_body .comment_arrow, .lang_arrow').addClass('relax'), | |
$('.Iframe_body .trigger-episode-button').addClass('relax'); | |
}, 3e4), | |
setTimeout(function () { | |
$('.name').fadeOut(2e3); | |
}, 7e3), | |
setTimeout(function () { | |
$('.description-date').fadeOut(2e3), | |
$('.description-date-wrap').fadeOut(2e3); | |
}, 1e3), | |
e < 800 && | |
'0px' == $('#hypercomments_widget').css('right') && | |
$('#hypercomments_widget').css('right', 0); | |
} | |
function Player(e) { | |
switch (e) { | |
case 'load': | |
$spinner.show(), | |
$('.awa').hide(), | |
countdown_stop(), | |
p.logo && $spinner.hide(), | |
p.event.is_live && | |
0 != p.autorun && | |
'false' != p.autorun && | |
(p.autorun = !0), | |
p.player_loaded || ((p.player_loaded = 1), run_player()); | |
break; | |
case 'hide': | |
$('.player .play').hide(); | |
} | |
} | |
function hb() { | |
duration(p.src), | |
url.hb && | |
(p.src && | |
-1 == p.src.indexOf('csw_') && | |
1 == url.server.cdn && | |
player && | |
'function' == typeof player.isPlaying && | |
player.isPlaying() && | |
(1 == p.event.view_mode_id && | |
(p.stat_src = prefix + url.hb + '/public/' + p.event.id + '.m3u8'), | |
1 < p.event.view_mode_id && | |
(p.stat_src = prefix + url.hb + '/' + p.auth.edge_src + '.m3u8'), | |
$.ajax({ url: p.stat_src })), | |
p.src && | |
-1 < p.src.indexOf('csw_') && | |
player && | |
'function' == typeof player.isPlaying && | |
player.isPlaying() && | |
((p.stat_src = prefix + url.hb + '/public/' + p.event.id + '.m3u8'), | |
$.ajax({ url: p.stat_src }))); | |
} | |
function auth_hb() {} | |
function debounce(e, t) { | |
var r; | |
return function () { | |
clearTimeout(r), | |
(r = setTimeout(function () { | |
e(); | |
}, t)); | |
}; | |
} | |
function reload_background() { | |
var e = $(window).width(), | |
t = $('#hypercomments_widget'); | |
if ( | |
(chatOpen | |
? (t.show(), | |
t.css('right', 0), | |
800 <= e | |
? $('[data-player]').first().addClass('comments') | |
: ($('[data-player]').first().css('width', '100%'), | |
$('[data-player]').first().removeClass('comments'))) | |
: (t.css('right', -360), | |
$('[data-player]').first().removeClass('comments')), | |
!chatOpen && | |
player && | |
player.getPlugin && | |
player.getPlugin('episodes-navigation-container').isOpened && | |
(800 <= e | |
? $('[data-player]').first().addClass('comments') | |
: ($('[data-player]').first().css('width', '100%'), | |
$('[data-player]').first().removeClass('comments'))), | |
logo_image) | |
) | |
var r = 0, | |
n = setInterval(function () { | |
300 < r ? clearInterval(n) : ((r += 10), resize_logo()); | |
}, 10); | |
} | |
function resize_logo() { | |
var e = $('[data-player] > .logo > .logo-image'); | |
e.css({ height: 'auto' }), | |
$('[data-player] > .logo').css({ | |
'max-width': | |
Math.min( | |
p.logo_width, | |
$('#player [data-player]').first().width() - 60 | |
) + 'px', | |
'max-height': | |
Math.min( | |
p.logo_height, | |
$('#player [data-player]').first().height() - 100 | |
) + 'px', | |
}), | |
e.css({ height: e.width() / p.logo_aspect_ratio }); | |
} | |
function date_format() { | |
moment.locale(p.lang); | |
var e = moment(p.event.date_plan_start, 'DD.MM.YYYY HH:mm:ss').format('LL'), | |
t = moment(p.event.date_plan_start, 'DD.MM.YYYY HH:mm:ss').format('LT'), | |
r = 'ru' === p.lang ? 'РїРѕ РњРѕСЃРєРІРµ' : '(MSK, UTC+3)'; | |
$('.description-date').html( | |
'<span>' + e + '</span><br><span>' + t + '</span> <span>' + r + '</span>' | |
); | |
} | |
function sms_verification_repeat() { | |
$('.sms_verification_repeat_error') | |
.css('display', 'none') | |
.text('') | |
.css('color', 'black'), | |
$('.sms_verification_repeat_time_counter') | |
.css('display', 'none') | |
.text('') | |
.css('color', 'black'), | |
$('.validation_phone').hide().css('color', 'white'); | |
var e = p.event.id, | |
t = $('.LNIframe .event_form #pass').val() || p.key; | |
7 === p.event.view_mode_id && | |
(t = $('#userreg-pass').val() || $('#us-pass').val() || p.key), | |
p.event.userreg_strict && | |
(t = | |
$('.userreg__window-short #userreg-pass').val() || | |
$('#us-pass').val() || | |
p.key); | |
var r = Cookies.get('userreg_verification', { path: '/v' }), | |
n = ''; | |
(r = (r = r || readStorage('userreg_verification')) ? JSON.parse(r) : {})[ | |
e | |
] && | |
r[e].email && | |
(n = r[e].email); | |
var s = { event_id: e, password: t, email: n }; | |
(event.target.disabled = !0), | |
$.ajax({ | |
url: 'https://kassa.facecast.net/api/verification/send', | |
data: s, | |
method: 'POST', | |
dataType: 'json', | |
success: function (e) { | |
if ( | |
($('.sbtn-validation-repeat').prop('disabled', !1), | |
e.ok || console.log('Server error', e), | |
e.ok) | |
) { | |
e.ticket_id && ((p.ticket_id = e.ticket_id), (p.phone = e.phone)), | |
$('.sms_verification_repeat_error') | |
.css('display', 'block') | |
.text('Сообщение отправлено') | |
.css('color', 'green'); | |
var t = | |
'ru' == p.lang | |
? 'Код отправлен на номер: ' | |
: 'Code sent to: '; | |
$('.validation_phone') | |
.show() | |
.css('display', 'flex') | |
.text(t + p.phone), | |
$('.phone_validation_window').show().css('display', 'flex'), | |
Cookies.set('sms_send_error', 0, { path: '/v' }), | |
writeStorage('sms_send_error', 0); | |
} | |
return !0; | |
}, | |
error: function (e) { | |
if ( | |
($('.sbtn-validation-repeat').prop('disabled', !1), e.responseJSON) | |
) { | |
if ( | |
e.responseJSON.err && | |
'SMS_SEND_LIMIT' == e.responseJSON.err.type | |
) { | |
SMS_REPEAT_INTERVAL && clearInterval(SMS_REPEAT_INTERVAL); | |
var t = | |
'ru' == p.lang | |
? 'Лимит СМС исчерпан' | |
: 'SMS limit is exceeded'; | |
return void $('.sms_verification_repeat_time_counter') | |
.css('display', 'block') | |
.text(t) | |
.css('color', 'red'); | |
} | |
if (e.responseJSON.err && 'SMS_SEND_DELAY' == e.responseJSON.err.type) | |
return ( | |
SMS_REPEAT_INTERVAL && clearInterval(SMS_REPEAT_INTERVAL), | |
void (SMS_REPEAT_INTERVAL = setInterval(function () { | |
nextSMSCounter(e.responseJSON.err.time); | |
}, 1e3)) | |
); | |
if ( | |
e.responseJSON.err && | |
'CHECK_BALANCE' == e.responseJSON.err.type && | |
'INSUFFICIENT_SMS_FUNDS' == e.responseJSON.err.code | |
) { | |
Cookies.set('sms_send_error', 1, { path: '/v' }), | |
writeStorage('sms_send_error', 1); | |
t = | |
'ru' == p.lang | |
? 'Ошибка отправки СМС. Пожалуйста обратитесь к организатору трансляции' | |
: 'Error sending SMS. Please contact the broadcast organizer'; | |
return void $('.validation_phone') | |
.show() | |
.css('display', 'flex') | |
.css('color', 'red') | |
.text(t); | |
} | |
if ( | |
e.responseJSON.err && | |
'CHECK_BALANCE' == e.responseJSON.err.type && | |
'SMS_PRICE_NOT_FOUND' == e.responseJSON.err.code | |
) { | |
t = | |
'ru' == p.lang | |
? 'DB_ERROR_1, попробуйте позже' | |
: 'DB_ERROR_1, try again later'; | |
return void $('.validation_phone') | |
.show() | |
.css('display', 'flex') | |
.css('color', 'red') | |
.text(t); | |
} | |
} | |
$('.sms_verification_repeat_error') | |
.css('display', 'block') | |
.text( | |
'ru' == p.lang | |
? 'Ошибка отправки сообщения' | |
: 'SMS send error' | |
) | |
.css('color', 'red'), | |
console.log('Network Error', e); | |
}, | |
}); | |
} | |
function nextSMSCounter(e) { | |
var t = e - Date.now(), | |
r = (Math.floor(t / 864e5), Math.floor((t % 864e5) / 36e5)), | |
n = Math.floor(((t % 864e5) % 36e5) / 6e4), | |
s = Math.round(((t % 864e5) % 6e4) / 1e3); | |
if (s <= 0) | |
return ( | |
$('.sms_verification_repeat_time_counter') | |
.css('display', 'none') | |
.text('') | |
.css('color', 'black'), | |
0 | |
); | |
60 == s && ((s = 0), n++), | |
r < 10 && (r = '0' + r), | |
n < 10 && (n = '0' + n), | |
s < 10 && (s = '0' + s); | |
var i = | |
'ru' == p.lang | |
? 'Повторное сообщение можно отправить через: ' | |
: 'Next message can be sent in: '; | |
(i = i + r + ':' + n + ':' + s), | |
$('.sms_verification_repeat_time_counter') | |
.css('display', 'block') | |
.text(i) | |
.css('color', 'red'); | |
} | |
function verifyPhoneNumber(r) { | |
$('.verify_error').css('display', 'none'); | |
var e = p.event.id, | |
t = $('.LNIframe .event_form #pass').val() || p.key; | |
7 === p.event.view_mode_id && | |
(t = $('#userreg-pass').val() || $('#us-pass').val() || p.key), | |
p.event.userreg_strict && | |
(t = | |
$('.userreg__window-short #userreg-pass').val() || | |
$('#us-pass').val() || | |
p.key); | |
var n = Cookies.get('userreg_verification', { path: '/v' }), | |
s = ''; | |
(n = (n = n || readStorage('userreg_verification')) ? JSON.parse(n) : {})[ | |
e | |
] && | |
n[e].email && | |
(s = n[e].email); | |
var i = $('.validation_code_input').val(), | |
a = p.ticket_id, | |
o = !0; | |
if (!i || !i.length) { | |
var l = 'ru' == p.lang ? 'Введите код' : 'Enter a code'; | |
$('.verify_error').css('display', 'block').text(l).css('color', 'red'), | |
(o = !1); | |
} | |
var d = { ticket_id: a, code: i, email: s, password: t, event_id: e }; | |
o && | |
((r.target.disabled = !0), | |
$.ajax({ | |
url: 'https://kassa.facecast.net/api/verification/verify', | |
data: d, | |
method: 'POST', | |
dataType: 'json', | |
success: function (e) { | |
if (((r.target.disabled = !1), !e.ok)) { | |
var t = | |
'ru' == p.lang | |
? 'Ошибка верификации' | |
: 'Verification Error'; | |
$('.verify_error') | |
.css('display', 'block') | |
.text(t) | |
.css('color', 'red'); | |
} | |
return ( | |
e.ok && | |
((p.event.userreg_strict = !0), | |
$('.auth_window.a-window').remove(), | |
$('.userreg__window').remove(), | |
$('.userreg__window-short').remove(), | |
$('.phone_validation_window').hide(), | |
(p.key = e.key), | |
look_by_multipassword()), | |
!0 | |
); | |
}, | |
error: function (e) { | |
r.target.disabled = !1; | |
var t = | |
'ru' == p.lang | |
? 'Ошибка верификации' | |
: 'Verification Error'; | |
$('.verify_error').css('display', 'block').text(t).css('color', 'red'), | |
console.log('Network Error', e); | |
}, | |
})); | |
} | |
function look_by_multipassword() { | |
var n = $('.LNIframe .event_form #pass').val() || p.key; | |
if ( | |
(7 !== p.event.view_mode_id && | |
($('.userreg__window').remove(), | |
$('.userreg__window-short').remove(), | |
$('.us-window').remove()), | |
7 === p.event.view_mode_id && | |
(n = $('#userreg-pass').val() || $('#us-pass').val() || p.key), | |
p.event.userreg_strict && | |
(n = | |
$('.userreg__window-short #userreg-pass').val() || | |
$('#us-pass').val() || | |
p.key), | |
p.key || (p.key = n), | |
n) | |
) { | |
if ((p.event.view_mode_id, (p.key = n), !p.auth_req || 0 == p.auth_req)) { | |
p.auth_req = 1; | |
var e = | |
prefix + | |
url.media + | |
'/viewer_auth?eid=' + | |
p.event.id + | |
'&key=' + | |
n + | |
'&check=0&check_doubleview=0'; | |
$.ajax({ | |
url: e, | |
error: function () { | |
p.auth_req = 0; | |
}, | |
success: function (e) { | |
p.auth_req = 0; | |
try { | |
e = JSON.parse(e); | |
} catch (e) { | |
return; | |
} | |
if ( | |
7 === p.event.view_mode_id && | |
p.event.userreg_strict && | |
'PHONE_NOT_VERIFIED' === e.error_code | |
) | |
return ( | |
$('.auth_window').hide(), | |
$('.userreg__window-short').hide(), | |
void showPhoneVerificationWindow() | |
); | |
if ( | |
(e.error && | |
(dmesg('Auth error: ' + e.error, 2), | |
'Неверный код' === e.error && | |
(e.error = | |
'ru' === p.lang | |
? 'Неверный код' | |
: 'Invalid password'), | |
'Доступ ограничен, обратитесь к организатору' === | |
e.error && | |
(e.error = | |
'ru' === p.lang | |
? 'Доступ ограничен, обратитесь к организатору' | |
: 'Access restricted, contact the organizer'), | |
(p.key = void 0), | |
(n = void 0), | |
7 !== p.event.view_mode_id || p.event.userreg_strict | |
? 7 === p.event.view_mode_id && p.event.userreg_strict | |
? ($('.auth_body .event_error').html(e.error), | |
$('.userreg__window-short .userreg__code_error').html( | |
e.error | |
), | |
$('.userreg__window-short').show()) | |
: ($('.userreg__window').remove(), | |
$('.userreg__window-short').remove(), | |
$('.us-window').remove(), | |
$('.event_error').html(e.error), | |
$( | |
'.auth_window, .auth_header, .auth, .auth' + | |
p.event.view_mode_id | |
) | |
.show() | |
.css('display', 'flex')) | |
: ($('.userreg__window').hide(), | |
$('.userreg__window-short').show(), | |
$('.userreg__window-short .userreg__code_error').html( | |
e.error | |
))), | |
e.src || e.playlist_src) | |
) { | |
(p.auth = e), | |
2 != p.event.view_mode_id && | |
7 != p.event.view_mode_id && | |
1 === e.hb && | |
((p.auth_hb_req = 1), auth_hb_init()), | |
!url.event_server.cdn && url.server.cdn && (e.src = e.cdn_src); | |
var t = ['?live=' + p.live_duration, '']; | |
if ( | |
((p.src = | |
prefix + | |
url.media + | |
'/' + | |
e.src + | |
'.m3u8' + | |
t[p.event.use_dvr]), | |
(p.auth_stat_src = e.stat_src), | |
duration(p.src), | |
(p.event.pid = e.pid), | |
$('.auth_window').hide(), | |
p.key && | |
window.parent && | |
window.parent.postMessage( | |
JSON.stringify({ | |
type: 'auth', | |
key: p.key, | |
init: 'Facecast_player', | |
}), | |
'*' | |
), | |
dmesg('Auth success, SRC = ' + p.src, 1), | |
7 === p.event.view_mode_id) | |
) { | |
var r = Cookies.get('userreg', { path: '/v' }); | |
if (!(r = r && JSON.parse(r)) || !r[p.event.id]) | |
((r = r || {})[p.event.id] = { eid: p.event.id, key: p.key }), | |
Cookies.set('userreg', JSON.stringify(r), { path: '/v' }), | |
writeStorage('userreg', JSON.stringify(r)); | |
$('.userreg__window').hide(), $('.userreg__window-short').hide(); | |
} | |
!p.auth_hb && | |
2 < p.event.view_mode_id && | |
7 != p.event.view_mode_id && | |
(p.auth_hb = 1), | |
p.event.date_real_start_ts || | |
readStorage( | |
'successful_registration_popup_shown-' + p.event.id | |
) || | |
7 !== p.event.view_mode_id || | |
$('.alert_window_popup').css('display', 'flex').show(), | |
try_load(); | |
} | |
send_stat(); | |
}, | |
}), | |
dmesg('Auth request sent ' + e); | |
} | |
} else { | |
var t = 'ru' === p.lang ? 'Введите код' : 'Enter the code'; | |
7 !== p.event.view_mode_id || p.event.userreg_strict | |
? 7 === p.event.view_mode_id && p.event.userreg_strict | |
? $('.us-window .us-auth .us-body .event_form .event_error').html(t) | |
: $('.event_form .event_error').html(t) | |
: $('.userreg__window-short .userreg__code_error').html(t); | |
} | |
} | |
function fixPageXY(e) { | |
if (null == e.pageX && null != e.clientX) { | |
var t = document.documentElement, | |
r = document.body; | |
(e.pageX = e.clientX + (t.scrollLeft || (r && r.scrollLeft) || 0)), | |
(e.pageX -= t.clientLeft || 0), | |
(e.pageY = e.clientY + (t.scrollTop || (r && r.scrollTop) || 0)), | |
(e.pageY -= t.clientTop || 0); | |
} | |
} | |
function go_buy() { | |
dmesg( | |
'Opening new window: https://facecast.net/view/ticket/' + p.event.id + '/' | |
); | |
var e = getRef(), | |
t = Object.keys(p) | |
.filter(function (e) { | |
return e.match('utm'); | |
}) | |
.map(function (e) { | |
return [e, p[e]]; | |
}) | |
.map(function (e) { | |
return e[0] + '=' + e[1]; | |
}) | |
.join('&'), | |
r = ''; | |
if (getParentQueryString()) { | |
var n = parseQuery(getParentQueryString()); | |
r = Object.keys(n) | |
.filter(function (e) { | |
return e.match('utm'); | |
}) | |
.map(function (e) { | |
return [e, n[e]]; | |
}) | |
.map(function (e) { | |
return 'parent_' + e[0] + '=' + e[1]; | |
}) | |
.join('&'); | |
} | |
r | |
? window.open( | |
'https://kassa.facecast.net/events/' + | |
p.event.id + | |
'?lang=' + | |
p.lang + | |
'&' + | |
t + | |
'&ref=' + | |
e + | |
'&' + | |
r, | |
'_blank', | |
'' | |
) || | |
(window.location.href = | |
'https://kassa.facecast.net/events/' + | |
p.event.id + | |
'?lang=' + | |
p.lang + | |
'&' + | |
t + | |
'&ref=' + | |
e + | |
'&' + | |
r) | |
: window.open( | |
'https://kassa.facecast.net/events/' + | |
p.event.id + | |
'?lang=' + | |
p.lang + | |
'&' + | |
t + | |
'&ref=' + | |
e, | |
'_blank', | |
'' | |
) || | |
(window.location.href = | |
'https://kassa.facecast.net/events/' + | |
p.event.id + | |
'?lang=' + | |
p.lang + | |
'&' + | |
t + | |
'&ref=' + | |
e); | |
} | |
function register(n) { | |
var t = !0, | |
s = $('#userreg-user-email').val().trim(), | |
e = '', | |
r = $('#userreg-user-accept').prop('checked'), | |
i = [], | |
a = getRef(); | |
if (($('.userreg__error_field').css('display', 'none'), s.length)) { | |
if ( | |
!s.match( | |
/^[a-zA-Z0-9]+(([+._-]+[a-zA-Z0-9_]+)+|([a-zA-Z0-9_]?))@[a-zA-Z0-9]+(([._-]+[a-zA-Z0-9]+)+|([a-zA-Z0-9]?))\.[a-zA-Z]{2,6}$/gi | |
) | |
) { | |
o = | |
'ru' == p.lang | |
? 'Введите корректный email' | |
: 'Enter a valid email'; | |
$('.userreg__body__email-error').css('display', 'block').html(o), | |
(t = !1); | |
} | |
} else { | |
var o = 'ru' == p.lang ? 'Введите Email' : 'Enter Email'; | |
$('.userreg__body__email-error').css('display', 'block').html(o), (t = !1); | |
} | |
if ( | |
(60 < s.length && | |
($('.userreg__body__email-error') | |
.css('display', 'block') | |
.html( | |
'Максимальная длина почты 60 символов' | |
), | |
(t = !1)), | |
p.event.has_phone_validation) | |
) | |
if ((e = $('#userreg-user-phone').val()).length) | |
if (e.match(/^\d+$/)) { | |
if (15 < e.length) { | |
o = | |
'ru' == p.lang | |
? 'Максимальная длина номера телефона 15 символов' | |
: 'Maximum phone number length 15 characters'; | |
$('.userreg__body__phone-error').css('display', 'block').html(o), | |
(t = !1); | |
} else if (e.length < 10) { | |
o = | |
'ru' == p.lang | |
? 'Минимальная длина номера телефона 10 символов' | |
: 'Minimum phone number length 10 characters'; | |
$('.userreg__body__phone-error').css('display', 'block').html(o), | |
(t = !1); | |
} | |
} else { | |
var o = | |
'ru' == p.lang | |
? 'Телефонный номер должен состоять только из цифр' | |
: 'The phone number must consist of numbers only'; | |
$('.userreg__body__phone-error').css('display', 'block').html(o), | |
(t = !1); | |
} | |
else { | |
var o = | |
'ru' == p.lang | |
? 'Введите телефон' | |
: 'Enter your phone number'; | |
$('.userreg__body__phone-error').css('display', 'block').html(o), | |
(t = !1); | |
} | |
if (!r) { | |
o = | |
'ru' == p.lang | |
? 'Поставьте галочку' | |
: 'Check the checkbox'; | |
$('.userreg__body__accept-error').css('display', 'block').html(o), (t = !1); | |
} | |
var l = 0; | |
$('.userreg__custom input').each(function () { | |
if (((i[l] = $(this).val()), $(this).html(''), !i[l].length)) { | |
var e = 'ru' == p.lang ? 'Введите данные' : 'Enter data'; | |
$('.userreg__error-' + l).html(e), (t = !1); | |
} | |
l++; | |
}); | |
var d = []; | |
if ( | |
(Object.keys(p) | |
.filter(function (e) { | |
return e.match('utm'); | |
}) | |
.forEach(function (e) { | |
d.push([e, p[e]]); | |
}), | |
getParentQueryString()) | |
) { | |
var c = parseQuery(getParentQueryString()); | |
Object.keys(c) | |
.filter(function (e) { | |
return e.match('utm'); | |
}) | |
.forEach(function (e) { | |
d.push(['parent_' + e, c[e]]); | |
}); | |
} | |
var u = { | |
ajaj: 1, | |
event_id: p.event.id, | |
email: s, | |
phone: e, | |
viewer_data: JSON.stringify(i), | |
ref: a, | |
lang: p.lang, | |
utm: d, | |
}; | |
t | |
? (disableRegisterButton(n.target), | |
setTimeout(function () { | |
enableRegisterButton(n.target); | |
}, 7e3), | |
$.ajax({ | |
url: 'https://kassa.facecast.net/api/viewers/register', | |
data: u, | |
method: 'POST', | |
dataType: 'json', | |
success: function (e) { | |
if ( | |
(enableRegisterButton(n.target), | |
e.ticket_id && (p.ticket_id = e.ticket_id), | |
e.error && console.log('Server error', e), | |
!e.ok && 'NOT_ALLOWED_EMAIL_DOMAIN' === e.err) | |
) { | |
var t = | |
'ru' == p.lang | |
? 'Указанный адрес запрещён' | |
: 'The specified address is prohibited'; | |
$('.userreg__body__email-error').css('display', 'block').html(t); | |
} | |
if (e.ok && !e.userreg_strict) | |
(p.key = e.key), | |
$('#userreg-pass').val(''), | |
look_by_multipassword(); | |
else if ( | |
e.ok && | |
e.userreg_strict && | |
p.event.has_phone_validation && | |
!e.phone_validated | |
) { | |
p.event.userreg_strict = !0; | |
var r = {}; | |
(r[p.event.id] = { | |
event_id: p.event.id, | |
email: s, | |
ticket_id: p.ticket_id, | |
}), | |
Cookies.set('userreg_verification', JSON.stringify(r), { | |
path: '/v', | |
}), | |
writeStorage('userreg_verification', JSON.stringify(r)), | |
Cookies.set('sms_send_error', 0, { path: '/v' }), | |
writeStorage('sms_send_error', 0), | |
$('.auth_window.a-window').remove(), | |
$('.userreg__window').remove(), | |
$('.userreg__window-short').remove(), | |
showPhoneVerificationWindow(); | |
} else | |
e.ok && | |
e.userreg_strict && | |
p.event.has_phone_validation && | |
e.phone_validated | |
? ((p.event.userreg_strict = !0), | |
$('.auth_window.a-window').remove(), | |
$('.userreg__window').remove(), | |
$('.userreg__window-short').remove(), | |
$('.us-window, .us-header, .us-auth, .us-body') | |
.show() | |
.css('display', 'flex')) | |
: e.ok && | |
e.userreg_strict && | |
!p.event.has_phone_validation && | |
((p.event.userreg_strict = !0), | |
$('.auth_window.a-window').remove(), | |
$('.userreg__window').remove(), | |
$('.userreg__window-short').remove(), | |
$('.us-window, .us-header, .us-auth, .us-body') | |
.show() | |
.css('display', 'flex')); | |
return !0; | |
}, | |
error: function (e) { | |
if ( | |
(enableRegisterButton(n.target), | |
e.responseJSON && | |
'NOT_VALID_PHONE' == e.responseJSON.err && | |
$('.userreg__body__phone-error') | |
.css('display', 'block') | |
.html(e.responseJSON.message), | |
e.responseJSON && | |
'SMS_SEND_ERROR' == e.responseJSON.message && | |
'INSUFFICIENT_SMS_FUNDS' == e.responseJSON.err.stack.code) | |
) { | |
(p.event.userreg_strict = !0), (p.SMS_SEND_ERROR = !0); | |
var t = {}; | |
(t[p.event.id] = { event_id: p.event.id, email: s }), | |
Cookies.set('userreg_verification', JSON.stringify(t), { | |
path: '/v', | |
}), | |
writeStorage('userreg_verification', JSON.stringify(t)), | |
Cookies.set('sms_send_error', 1, { path: '/v' }), | |
writeStorage('sms_send_error', 1), | |
$('.auth_window.a-window').remove(), | |
$('.userreg__window').remove(), | |
$('.userreg__window-short').remove(), | |
showPhoneVerificationWindow(); | |
} | |
e.responseJSON && | |
'SMS_SEND_ERROR' == e.responseJSON.message && | |
'SMS_PRICE_NOT_FOUND' == e.responseJSON.err.stack.code && | |
((p.DB_ERROR_1 = 1), | |
$('.auth_window.a-window').remove(), | |
$('.userreg__window').remove(), | |
$('.userreg__window-short').remove(), | |
showPhoneVerificationWindow()), | |
console.log('Network Error', e); | |
}, | |
})) | |
: console.log('Form Error'); | |
} | |
function disableRegisterButton(e) { | |
e.disabled = !0; | |
var t = 'ru' == p.lang ? 'РЕГРРЎРўР РђР¦РРЇ...' : 'REGISTRATION...'; | |
e.value = t; | |
} | |
function enableRegisterButton(e) { | |
e.disabled = !1; | |
var t = 'ru' == p.lang ? 'ЗАРЕГРРЎРўР РРОВАТЬСЯ' : 'REGISTER'; | |
e.value = t; | |
} | |
function showPhoneVerificationWindow() { | |
if (($('.validation_phone').css('color', 'white').hide(), p.DB_ERROR_1)) { | |
var e = | |
'ru' == p.lang | |
? 'DB_ERROR_1, попробуйте позже' | |
: 'DB_ERROR_1, try again later'; | |
return ( | |
$('.validation_phone') | |
.show() | |
.css('display', 'flex') | |
.css('color', 'red') | |
.text(e), | |
void $('.phone_validation_window').show().css('display', 'flex') | |
); | |
} | |
if (p.SMS_SEND_ERROR) { | |
e = | |
'ru' == p.lang | |
? 'Ошибка отправки СМС. Пожалуйста обратитесь к организатору трансляции' | |
: 'Error sending SMS. Please contact the broadcast organizer'; | |
return ( | |
$('.validation_phone') | |
.show() | |
.css('display', 'flex') | |
.css('color', 'red') | |
.text(e), | |
void $('.phone_validation_window').show().css('display', 'flex') | |
); | |
} | |
if (+Cookies.get.sms_send_error) { | |
e = | |
'ru' == p.lang | |
? 'Ошибка отправки СМС. Пожалуйста обратитесь к организатору трансляции' | |
: 'Error sending SMS. Please contact the broadcast organizer'; | |
return ( | |
$('.validation_phone') | |
.show() | |
.css('display', 'flex') | |
.css('color', 'red') | |
.text(e), | |
void $('.phone_validation_window').show().css('display', 'flex') | |
); | |
} | |
if (+readStorage('sms_send_error')) { | |
e = | |
'ru' == p.lang | |
? 'Ошибка отправки СМС. Пожалуйста обратитесь к организатору трансляции' | |
: 'Error sending SMS. Please contact the broadcast organizer'; | |
return ( | |
$('.validation_phone') | |
.show() | |
.css('display', 'flex') | |
.css('color', 'red') | |
.text(e), | |
void $('.phone_validation_window').show().css('display', 'flex') | |
); | |
} | |
var t = p.event.id, | |
r = $('.LNIframe .event_form #pass').val() || p.key; | |
7 === p.event.view_mode_id && | |
(r = $('#userreg-pass').val() || $('#us-pass').val() || p.key), | |
p.event.userreg_strict && | |
(r = | |
$('.userreg__window-short #userreg-pass').val() || | |
$('#us-pass').val() || | |
p.key); | |
var n = Cookies.get('userreg_verification', { path: '/v' }), | |
s = ''; | |
(n = (n = n || readStorage('userreg_verification')) ? JSON.parse(n) : {})[ | |
t | |
] && | |
n[t].email && | |
(s = n[t].email), | |
(data = { event_id: t, email: s, password: r }), | |
$.ajax({ | |
url: 'https://kassa.facecast.net/api/verification/get_phone', | |
data: data, | |
method: 'POST', | |
dataType: 'json', | |
success: function (e) { | |
if (((event.target.disabled = !1), e.phone)) { | |
p.phone = e.phone; | |
var t = | |
'ru' == p.lang | |
? 'Код отправлен на номер: ' | |
: 'Code sent to: '; | |
$('.validation_phone') | |
.show() | |
.css('display', 'flex') | |
.text(t + p.phone), | |
$('.phone_validation_window').show().css('display', 'flex'); | |
} | |
return ( | |
e.error && | |
($('.phone_validation_window').show().css('display', 'flex'), | |
console.log('Server error', e)), | |
!0 | |
); | |
}, | |
error: function (e) { | |
(event.target.disabled = !1), | |
$('.phone_validation_window').show().css('display', 'flex'), | |
console.log('Network Error', e); | |
}, | |
}); | |
} | |
function getRef() { | |
var e = encodeURIComponent(p.ref); | |
return ( | |
-1 !== window.location.search.indexOf('ref') && | |
(e = encodeURIComponent( | |
window.location.search.substr(window.location.search.indexOf('ref') + 4) | |
)), | |
e | |
); | |
} | |
function getParentQueryString() { | |
return document.referrer ? '?' + document.referrer.split('?')[1] : ''; | |
} | |
function parseQuery(e) { | |
for ( | |
var t = {}, r = ('?' === e[0] ? e.substr(1) : e).split('&'), n = 0; | |
n < r.length; | |
n++ | |
) { | |
var s = r[n].split('='); | |
t[decodeURIComponent(s[0])] = decodeURIComponent(s[1] || ''); | |
} | |
return t; | |
} | |
function show_chat_button() { | |
'ru' == p.lang && $('.comment_arrow').attr('style', 'display:block;'), | |
'ru' != p.lang && | |
$('.comment_arrow').attr( | |
'style', | |
'background: rgba(0, 0, 0, 0) url("//facecast.net/images/comments_en.png") repeat scroll 0% 0% / contain padding-box border-box; display:block;' | |
); | |
} | |
function load_chat() { | |
dmesg('Loading chat'), | |
(_hcwp = window._hcwp || []), | |
_hcwp.push({ | |
widget: 'Stream', | |
widget_id: 27474, | |
css: '//facecast.net/css/hc_lite.css?', | |
href: p.chat_id ? p.chat_id : code, | |
auth: p.hc, | |
}), | |
(function () { | |
if (!('HC_LOAD_INIT' in window)) { | |
HC_LOAD_INIT = !0; | |
var e = ( | |
p.lang || | |
navigator.language || | |
navigator.systemLanguage || | |
navigator.userLanguage || | |
'en' | |
) | |
.substr(0, 2) | |
.toLowerCase(), | |
t = document.createElement('script'); | |
(t.type = 'text/javascript'), | |
(t.async = !0), | |
(t.src = | |
('https:' == document.location.protocol ? 'https' : 'http') + | |
'://w.hypercomments.com/widget/hc/27474/' + | |
e + | |
'/widget.js'); | |
var r = document.getElementsByTagName('script')[0]; | |
r.parentNode.insertBefore(t, r.nextSibling); | |
} | |
})(), | |
check_chat(); | |
} | |
function check_chat() { | |
if (null == $('.hc__root').width()) return setTimeout(check_chat, 200), !1; | |
$('#chat_wait').hide(), dmesg('Loading chat done.'); | |
} | |
function check_reload() { | |
var e = player.getCurrentTime(); | |
setTimeout(function () { | |
p.src | |
? (dmesg('Set new SRC = ' + p.src + ', load to player', 2), | |
player.configure({ source: p.src }), | |
player.listenToOnce(player, Clappr.Events.PLAYER_PLAY, function () { | |
thumbnailPlayer && | |
($('#thumbnail-player-track') | |
.detach() | |
.appendTo($('#player div[data-player]')), | |
thumbnailPlayer.configure({ source: p.src }), | |
bindThumbnailPlayer && bindThumbnailPlayer(player), | |
(speedSelectOpen = settingsOpen = !1)); | |
((p.event.has_multicam && | |
(void 0 === p.multicam || !1 !== JSON.parse(p.multicam))) || | |
(void 0 !== p.multicam && JSON.parse(p.multicam))) && | |
!p.isMobile && | |
(window.setupPiPControls(), | |
(e = window.getSecondaryPlayer().getCurrentTime()), | |
$('#player2').detach().appendTo($('#player div[data-player]')), | |
window.updatePrimaryVideo(), | |
window.changeSecondaryPlayerSource(window.getCurrentViewNum())); | |
player.seek(e); | |
}), | |
$('.description').hide(), | |
(p.run1 = void 0)) | |
: (check_reload(), $('.auth_window').hide()); | |
}, 200), | |
$spinner.hide(); | |
} | |
function reload_player() { | |
$spinner.show(), | |
dmesg('Servers re-check started', 2), | |
(p.old_src = p.src), | |
(p.old_srv = url.media), | |
(p.isReload = !0), | |
(url = { | |
server: {}, | |
media: '', | |
event: '', | |
hb: '', | |
req_cnt: 0, | |
answ_cnt: 0, | |
group: 0, | |
bandwidth: 0, | |
a: [], | |
remote_addr: [], | |
done: void 0, | |
edgetest: void 0, | |
}); | |
for (var e = 0; e < speedtest.length; e++) speedtest[e].timeline = 0; | |
(speedtest = void 0), | |
(speedtest = []), | |
(p.src = void 0), | |
(p.server = void 0), | |
(servers.have_response = void 0), | |
(p.run1 = void 0), | |
(p.player_frag_listener = void 0), | |
p.srv_query || (p.srv = void 0), | |
get_urls(), | |
check_reload(); | |
} | |
var Base64 = { | |
_keyStr: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=', | |
encode: function (e) { | |
var t, | |
r, | |
n, | |
s, | |
i, | |
a, | |
o, | |
l = '', | |
p = 0; | |
for (e = Base64._utf8_encode(e); p < e.length; ) | |
(s = (t = e.charCodeAt(p++)) >> 2), | |
(i = ((3 & t) << 4) | ((r = e.charCodeAt(p++)) >> 4)), | |
(a = ((15 & r) << 2) | ((n = e.charCodeAt(p++)) >> 6)), | |
(o = 63 & n), | |
isNaN(r) ? (a = o = 64) : isNaN(n) && (o = 64), | |
(l = | |
l + | |
this._keyStr.charAt(s) + | |
this._keyStr.charAt(i) + | |
this._keyStr.charAt(a) + | |
this._keyStr.charAt(o)); | |
return l; | |
}, | |
decode: function (e) { | |
var t, | |
r, | |
n, | |
s, | |
i, | |
a, | |
o = '', | |
l = 0; | |
for (e = e.replace(/[^A-Za-z0-9\+\/\=]/g, ''); l < e.length; ) | |
(t = | |
(this._keyStr.indexOf(e.charAt(l++)) << 2) | | |
((s = this._keyStr.indexOf(e.charAt(l++))) >> 4)), | |
(r = | |
((15 & s) << 4) | ((i = this._keyStr.indexOf(e.charAt(l++))) >> 2)), | |
(n = ((3 & i) << 6) | (a = this._keyStr.indexOf(e.charAt(l++)))), | |
(o += String.fromCharCode(t)), | |
64 != i && (o += String.fromCharCode(r)), | |
64 != a && (o += String.fromCharCode(n)); | |
return (o = Base64._utf8_decode(o)); | |
}, | |
_utf8_encode: function (e) { | |
e = e.replace(/\r\n/g, '\n'); | |
for (var t = '', r = 0; r < e.length; r++) { | |
var n = e.charCodeAt(r); | |
n < 128 | |
? (t += String.fromCharCode(n)) | |
: (127 < n && n < 2048 | |
? (t += String.fromCharCode((n >> 6) | 192)) | |
: ((t += String.fromCharCode((n >> 12) | 224)), | |
(t += String.fromCharCode(((n >> 6) & 63) | 128))), | |
(t += String.fromCharCode((63 & n) | 128))); | |
} | |
return t; | |
}, | |
_utf8_decode: function (e) { | |
for (var t = '', r = 0, n = (c1 = c2 = 0); r < e.length; ) | |
(n = e.charCodeAt(r)) < 128 | |
? ((t += String.fromCharCode(n)), r++) | |
: 191 < n && n < 224 | |
? ((c2 = e.charCodeAt(r + 1)), | |
(t += String.fromCharCode(((31 & n) << 6) | (63 & c2))), | |
(r += 2)) | |
: ((c2 = e.charCodeAt(r + 1)), | |
(c3 = e.charCodeAt(r + 2)), | |
(t += String.fromCharCode( | |
((15 & n) << 12) | ((63 & c2) << 6) | (63 & c3) | |
)), | |
(r += 3)); | |
return t; | |
}, | |
}; | |
function addGTM() { | |
$('.LNIframe').append( | |
"\x3c!-- Google Tag Manager --\x3e <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-KLP89LK');</script>\x3c!-- End Google Tag Manager --\x3e\x3c!-- Google Tag Manager (noscript) --\x3e" + | |
'<iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KLP89LK" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>\x3c!-- End Google Tag Manager (noscript) --\x3e' | |
); | |
} | |
function multitrack_master_playlist(e) { | |
var t = ( | |
navigator.language || | |
navigator.systemLanguage || | |
navigator.userLanguage || | |
'en' | |
) | |
.substr(0, 2) | |
.toLowerCase(), | |
r = '?', | |
n = ''; | |
if ( | |
((p.multitrack = [ | |
{ lang: 'RU', title: 'Р СѓСЃСЃРєРёР№' }, | |
{ lang: 'EN', title: 'English' }, | |
]), | |
p.event.multitrack && | |
4 < p.event.multitrack.length && | |
(p.multitrack = JSON.parse(p.event.multitrack)), | |
p.lang) | |
) | |
for (var s in p.multitrack) | |
p.multitrack[s].lang && | |
p.multitrack[s].lang.toLowerCase() == p.lang && | |
(t = p.lang); | |
null != e && (p.current_lang = e); | |
for (var i = 0; i < p.multitrack.length; i++) | |
t == p.multitrack[i].lang.toLowerCase() && | |
null == p.current_lang && | |
(p.current_lang = i), | |
(null != e && e != i) || | |
(r += | |
'&aid=' + | |
i + | |
'&aname_' + | |
i + | |
'=' + | |
p.multitrack[i].title + | |
'&acode_' + | |
i + | |
'=' + | |
p.multitrack[i].lang.toUpperCase()); | |
(r += '&adefault=' + p.current_lang), | |
1 != p.event.use_dvr && (n = '&live=' + p.live_duration); | |
var a; | |
function o(e, t, r, n, s, i) { | |
return v(((a = v(v(t, e), v(n, i))) << (o = s)) | (a >>> (32 - o)), r); | |
var a, o; | |
} | |
function c(e, t, r, n, s, i, a) { | |
return o((t & r) | (~t & n), e, t, s, i, a); | |
} | |
function u(e, t, r, n, s, i, a) { | |
return o((t & n) | (r & ~n), e, t, s, i, a); | |
} | |
function _(e, t, r, n, s, i, a) { | |
return o(t ^ r ^ n, e, t, s, i, a); | |
} | |
function g(e, t, r, n, s, i, a) { | |
return o(r ^ (t | ~n), e, t, s, i, a); | |
} | |
function v(e, t) { | |
var r = (65535 & e) + (65535 & t); | |
return (((e >> 16) + (t >> 16) + (r >> 16)) << 16) | (65535 & r); | |
} | |
return ( | |
(p.src.split('?')[0] || p.src) + | |
r + | |
n + | |
'&confid=' + | |
((a = r + n), | |
(a = unescape(encodeURIComponent(a))), | |
(result = (function (e) { | |
for (var t, r = '0123456789ABCDEF', n = '', s = 0; s < e.length; s++) | |
(t = e.charCodeAt(s)), | |
(n += r.charAt((t >>> 4) & 15) + r.charAt(15 & t)); | |
return n; | |
})( | |
(function (e) { | |
for (var t = '', r = 0; r < 32 * e.length; r += 8) | |
t += String.fromCharCode((e[r >> 5] >>> r % 32) & 255); | |
return t; | |
})( | |
(function (e, t) { | |
(e[t >> 5] |= 128 << t % 32), (e[14 + (((t + 64) >>> 9) << 4)] = t); | |
for ( | |
var r = 1732584193, | |
n = -271733879, | |
s = -1732584194, | |
i = 271733878, | |
a = 0; | |
a < e.length; | |
a += 16 | |
) { | |
var o = r, | |
l = n, | |
p = s, | |
d = i; | |
(n = g( | |
(n = g( | |
(n = g( | |
(n = g( | |
(n = _( | |
(n = _( | |
(n = _( | |
(n = _( | |
(n = u( | |
(n = u( | |
(n = u( | |
(n = u( | |
(n = c( | |
(n = c( | |
(n = c( | |
(n = c( | |
n, | |
(s = c( | |
s, | |
(i = c( | |
i, | |
(r = c( | |
r, | |
n, | |
s, | |
i, | |
e[a + 0], | |
7, | |
-680876936 | |
)), | |
n, | |
s, | |
e[a + 1], | |
12, | |
-389564586 | |
)), | |
r, | |
n, | |
e[a + 2], | |
17, | |
606105819 | |
)), | |
i, | |
r, | |
e[a + 3], | |
22, | |
-1044525330 | |
)), | |
(s = c( | |
s, | |
(i = c( | |
i, | |
(r = c( | |
r, | |
n, | |
s, | |
i, | |
e[a + 4], | |
7, | |
-176418897 | |
)), | |
n, | |
s, | |
e[a + 5], | |
12, | |
1200080426 | |
)), | |
r, | |
n, | |
e[a + 6], | |
17, | |
-1473231341 | |
)), | |
i, | |
r, | |
e[a + 7], | |
22, | |
-45705983 | |
)), | |
(s = c( | |
s, | |
(i = c( | |
i, | |
(r = c( | |
r, | |
n, | |
s, | |
i, | |
e[a + 8], | |
7, | |
1770035416 | |
)), | |
n, | |
s, | |
e[a + 9], | |
12, | |
-1958414417 | |
)), | |
r, | |
n, | |
e[a + 10], | |
17, | |
-42063 | |
)), | |
i, | |
r, | |
e[a + 11], | |
22, | |
-1990404162 | |
)), | |
(s = c( | |
s, | |
(i = c( | |
i, | |
(r = c( | |
r, | |
n, | |
s, | |
i, | |
e[a + 12], | |
7, | |
1804603682 | |
)), | |
n, | |
s, | |
e[a + 13], | |
12, | |
-40341101 | |
)), | |
r, | |
n, | |
e[a + 14], | |
17, | |
-1502002290 | |
)), | |
i, | |
r, | |
e[a + 15], | |
22, | |
1236535329 | |
)), | |
(s = u( | |
s, | |
(i = u( | |
i, | |
(r = u( | |
r, | |
n, | |
s, | |
i, | |
e[a + 1], | |
5, | |
-165796510 | |
)), | |
n, | |
s, | |
e[a + 6], | |
9, | |
-1069501632 | |
)), | |
r, | |
n, | |
e[a + 11], | |
14, | |
643717713 | |
)), | |
i, | |
r, | |
e[a + 0], | |
20, | |
-373897302 | |
)), | |
(s = u( | |
s, | |
(i = u( | |
i, | |
(r = u( | |
r, | |
n, | |
s, | |
i, | |
e[a + 5], | |
5, | |
-701558691 | |
)), | |
n, | |
s, | |
e[a + 10], | |
9, | |
38016083 | |
)), | |
r, | |
n, | |
e[a + 15], | |
14, | |
-660478335 | |
)), | |
i, | |
r, | |
e[a + 4], | |
20, | |
-405537848 | |
)), | |
(s = u( | |
s, | |
(i = u( | |
i, | |
(r = u(r, n, s, i, e[a + 9], 5, 568446438)), | |
n, | |
s, | |
e[a + 14], | |
9, | |
-1019803690 | |
)), | |
r, | |
n, | |
e[a + 3], | |
14, | |
-187363961 | |
)), | |
i, | |
r, | |
e[a + 8], | |
20, | |
1163531501 | |
)), | |
(s = u( | |
s, | |
(i = u( | |
i, | |
(r = u( | |
r, | |
n, | |
s, | |
i, | |
e[a + 13], | |
5, | |
-1444681467 | |
)), | |
n, | |
s, | |
e[a + 2], | |
9, | |
-51403784 | |
)), | |
r, | |
n, | |
e[a + 7], | |
14, | |
1735328473 | |
)), | |
i, | |
r, | |
e[a + 12], | |
20, | |
-1926607734 | |
)), | |
(s = _( | |
s, | |
(i = _( | |
i, | |
(r = _(r, n, s, i, e[a + 5], 4, -378558)), | |
n, | |
s, | |
e[a + 8], | |
11, | |
-2022574463 | |
)), | |
r, | |
n, | |
e[a + 11], | |
16, | |
1839030562 | |
)), | |
i, | |
r, | |
e[a + 14], | |
23, | |
-35309556 | |
)), | |
(s = _( | |
s, | |
(i = _( | |
i, | |
(r = _(r, n, s, i, e[a + 1], 4, -1530992060)), | |
n, | |
s, | |
e[a + 4], | |
11, | |
1272893353 | |
)), | |
r, | |
n, | |
e[a + 7], | |
16, | |
-155497632 | |
)), | |
i, | |
r, | |
e[a + 10], | |
23, | |
-1094730640 | |
)), | |
(s = _( | |
s, | |
(i = _( | |
i, | |
(r = _(r, n, s, i, e[a + 13], 4, 681279174)), | |
n, | |
s, | |
e[a + 0], | |
11, | |
-358537222 | |
)), | |
r, | |
n, | |
e[a + 3], | |
16, | |
-722521979 | |
)), | |
i, | |
r, | |
e[a + 6], | |
23, | |
76029189 | |
)), | |
(s = _( | |
s, | |
(i = _( | |
i, | |
(r = _(r, n, s, i, e[a + 9], 4, -640364487)), | |
n, | |
s, | |
e[a + 12], | |
11, | |
-421815835 | |
)), | |
r, | |
n, | |
e[a + 15], | |
16, | |
530742520 | |
)), | |
i, | |
r, | |
e[a + 2], | |
23, | |
-995338651 | |
)), | |
(s = g( | |
s, | |
(i = g( | |
i, | |
(r = g(r, n, s, i, e[a + 0], 6, -198630844)), | |
n, | |
s, | |
e[a + 7], | |
10, | |
1126891415 | |
)), | |
r, | |
n, | |
e[a + 14], | |
15, | |
-1416354905 | |
)), | |
i, | |
r, | |
e[a + 5], | |
21, | |
-57434055 | |
)), | |
(s = g( | |
s, | |
(i = g( | |
i, | |
(r = g(r, n, s, i, e[a + 12], 6, 1700485571)), | |
n, | |
s, | |
e[a + 3], | |
10, | |
-1894986606 | |
)), | |
r, | |
n, | |
e[a + 10], | |
15, | |
-1051523 | |
)), | |
i, | |
r, | |
e[a + 1], | |
21, | |
-2054922799 | |
)), | |
(s = g( | |
s, | |
(i = g( | |
i, | |
(r = g(r, n, s, i, e[a + 8], 6, 1873313359)), | |
n, | |
s, | |
e[a + 15], | |
10, | |
-30611744 | |
)), | |
r, | |
n, | |
e[a + 6], | |
15, | |
-1560198380 | |
)), | |
i, | |
r, | |
e[a + 13], | |
21, | |
1309151649 | |
)), | |
(s = g( | |
s, | |
(i = g( | |
i, | |
(r = g(r, n, s, i, e[a + 4], 6, -145523070)), | |
n, | |
s, | |
e[a + 11], | |
10, | |
-1120210379 | |
)), | |
r, | |
n, | |
e[a + 2], | |
15, | |
718787259 | |
)), | |
i, | |
r, | |
e[a + 9], | |
21, | |
-343485551 | |
)), | |
(r = v(r, o)), | |
(n = v(n, l)), | |
(s = v(s, p)), | |
(i = v(i, d)); | |
} | |
return Array(r, n, s, i); | |
})( | |
(function (e) { | |
for (var t = Array(e.length >> 2), r = 0; r < t.length; r++) | |
t[r] = 0; | |
for (r = 0; r < 8 * e.length; r += 8) | |
t[r >> 5] |= (255 & e.charCodeAt(r / 8)) << r % 32; | |
return t; | |
})(a), | |
8 * a.length | |
) | |
) | |
)), | |
result.toLowerCase()) | |
); | |
} | |
function render_track_button() { | |
var e; | |
(p.multitrack = []), | |
p.event.multitrack && | |
4 < p.event.multitrack.length && | |
(p.multitrack = JSON.parse(p.event.multitrack)), | |
player && | |
player.core.getCurrentPlayback()._hls && | |
0 < player.core.getCurrentPlayback()._hls.audioTracks.length && | |
(e = player.core.getCurrentPlayback()._hls.audioTracks[ | |
player.core.getCurrentPlayback()._hls.audioTrack | |
].lang), | |
$('.lang_arrow').css({ display: 'flex' }), | |
$('.lang_holder').html(''); | |
for (var t = 0; t < p.multitrack.length; t++) | |
$('.lang_holder').append( | |
'<div data-id="' + | |
t + | |
'" onclick="switch_track(' + | |
t + | |
')">' + | |
p.multitrack[t].lang + | |
'</div>' | |
), | |
e || | |
p.lang != p.multitrack[t].lang.toLowerCase() || | |
(e = p.multitrack[t].lang); | |
(e = e || 'en'), | |
$('.lang_holder [data-id=' + p.current_lang + ']').addClass('active'), | |
$('.lang_text_holder').html(e.toUpperCase()); | |
} | |
function switch_track(e) { | |
if ( | |
player && | |
player.core.getCurrentPlayback()._hls && | |
player.core.getCurrentPlayback()._hls.audioTracks.length > e | |
) { | |
var t = player.core.getCurrentPlayback()._hls.audioTracks; | |
if (t[0] && t[0].lang) | |
for (var r = 0; r < t.length; r++) | |
t[r].lang && | |
t[r].lang.toLowerCase() == p.multitrack[e].lang.toLowerCase() && | |
(player.core.getCurrentPlayback()._hls.audioTrack = r); | |
else player.core.getCurrentPlayback()._hls.audioTrack = e; | |
p.current_lang = e; | |
} else { | |
p.current_lang = e; | |
var n = parseInt(player.getCurrentTime()); | |
player.load(multitrack_master_playlist(e)), | |
p.event.use_dvr && player.seek(n), | |
player.play(), | |
player.unmute(); | |
} | |
$('.lang_holder.active > div.active').removeClass('active'), | |
$('.lang_holder [data-id="' + p.current_lang + '"]').addClass('active'), | |
$('.lang_holder').removeClass('active'), | |
$('.lang_text_holder').html(p.multitrack[p.current_lang].lang), | |
$('.lang_arrow').removeClass('relax'), | |
setTimeout(function () { | |
$('.lang_arrow').addClass('relax'); | |
}, 500); | |
} | |
function auth_hb_init() { | |
p.auth_hb_server || | |
((p.auth_hb_server = | |
auth_hb_servers[Math.floor(Math.random() * auth_hb_servers.length)].src), | |
dmesg('Start auth hb init, server: ' + p.auth_hb_server), | |
$.ajax({ | |
url: prefix + p.auth_hb_server + '/auth/issue', | |
method: 'POST', | |
data: JSON.stringify({ | |
Subject: p.auth.key_id.toString() || p.key, | |
Id: p.guid, | |
}), | |
dataType: 'json', | |
cache: !0, | |
error: function (e, t, r) { | |
dmesg('Start auth hb init serror, server: ' + p.auth_hb_server, 3), | |
(p.auth_hb_server = | |
auth_hb_servers[ | |
Math.floor(Math.random() * auth_hb_servers.length) | |
].src), | |
p.auth_hb_error_cnt++, | |
setTimeout(function () { | |
(p.auth_hb_server = void 0), auth_hb_init(); | |
}, 5e3); | |
}, | |
success: function (e) { | |
e.Token && | |
((p.auth_hb_token = e.Token), | |
p.auth_hb_started || auth_hb2(), | |
(p.auth_hb_started = 1)); | |
}, | |
})); | |
} | |
function auth_hb2() { | |
if (((p.auth_hb_started = 1), !p.auth_hb_token)) | |
return ( | |
p.auth_hb_error_cnt++, | |
void setTimeout(function () { | |
auth_hb_init(); | |
}, 5e3) | |
); | |
$.ajax({ | |
url: prefix + p.auth_hb_server + '/auth/verify', | |
method: 'POST', | |
data: JSON.stringify({ Token: p.auth_hb_token, Id: p.guid }), | |
dataType: 'json', | |
cache: !0, | |
error: function (e, t, r) { | |
dmesg('Auth_hb2 error, server: ' + p.auth_hb_server, 3), | |
(p.auth_hb_server = | |
auth_hb_servers[ | |
Math.floor(Math.random() * auth_hb_servers.length) | |
].src), | |
p.auth_hb_error_cnt++, | |
p.auth_hb_error_cnt, | |
p.event.auth_hb_error_limit, | |
hb_auth_lock(), | |
setTimeout( | |
function () { | |
auth_hb2(); | |
}, | |
p.event.auth_hb_delay | |
? 1e3 * p.event.auth_hb_delay + 1e3 * p.auth_hb_error_cnt | |
: 1e4 | |
); | |
}, | |
success: function (e) { | |
(p.auth_hb_error_cnt = 0) == e.Allow && hb_auth_lock(), | |
setTimeout( | |
function () { | |
auth_hb2(); | |
}, | |
p.event.auth_hb_delay | |
? 1e3 * p.event.auth_hb_delay + 1e3 * p.auth_hb_error_cnt | |
: 1e4 | |
); | |
}, | |
}); | |
} | |
function hb_auth_lock() { | |
player && player.stop(), | |
$('.disable') | |
.html( | |
'ru' == p.lang | |
? 'Ошибка сети или ваш код используется на другом устройстве.' | |
: 'Network error or your password is being used on another device.' | |
) | |
.show(), | |
setTimeout(function () { | |
var e = location.href, | |
t = getJsonFromUrl(e); | |
console.log(t), | |
t.no_auto_login || | |
(e = e + (e.indexOf('?') < 0 ? '?' : '&') + 'no_auto_login=1'), | |
t.key || (e = e + '&key=' + p.key), | |
(location.href = e); | |
}, 5e3); | |
} | |
function confirm_success_register_popup() { | |
$('.alert_window_popup').hide(), | |
writeStorage('successful_registration_popup_shown-' + p.event.id, '1'); | |
} | |
function isFramed() { | |
var t = !1; | |
try { | |
t = | |
window != window.top || | |
document != top.document || | |
self.location != top.location; | |
} catch (e) { | |
t = !0; | |
} | |
return t; | |
} | |
function copyToClipboard(e) { | |
var t = document.createElement('textarea'); | |
(t.value = e), | |
document.body.appendChild(t), | |
t.select(), | |
document.execCommand('copy'), | |
document.body.removeChild(t); | |
} | |
function click_for_id(e) { | |
copyToClipboard(p.guid), | |
$('.guid-wrapper').show(), | |
p.click_for_id || ((p.click_for_id = 1), $('.guid').html(p.guid)); | |
} | |
function _toConsumableArray(e) { | |
return _arrayWithoutHoles(e) || _iterableToArray(e) || _nonIterableSpread(); | |
} | |
function _nonIterableSpread() { | |
throw new TypeError('Invalid attempt to spread non-iterable instance'); | |
} | |
function _iterableToArray(e) { | |
if ( | |
Symbol.iterator in Object(e) || | |
'[object Arguments]' === Object.prototype.toString.call(e) | |
) | |
return Array.from(e); | |
} | |
function _arrayWithoutHoles(e) { | |
if (Array.isArray(e)) { | |
for (var t = 0, r = new Array(e.length); t < e.length; t++) r[t] = e[t]; | |
return r; | |
} | |
} | |
(window.initializeDoublePlayer = function (s, o) { | |
$('#player2').show(); | |
var l, | |
d, | |
n, | |
r, | |
c = s.options.source, | |
i = !0; | |
n = 3 != o ? 'multicam' : 'normal'; | |
var u, | |
_ = !1, | |
a = 0, | |
g = { | |
primary: { width: '200%', left: 0 }, | |
secondary: { width: '200%', left: '-100%' }, | |
}; | |
$('div[data-player]').append($('#player2')); | |
var v, | |
t, | |
h = 0.25, | |
m = !0; | |
function f() { | |
(i = !i), | |
$('.pip-btn').attr( | |
'class', | |
i ? 'pip-mode pip-btn active' : 'pip-mode pip-btn' | |
), | |
$('.pip-menu-btn').attr( | |
'class', | |
i ? 'pip-menu-btn active' : 'pip-menu-btn' | |
), | |
i ? 'multicam' === n && O(getCurrentViewNum()) : $('#player2').hide(0); | |
} | |
function w() { | |
b(), y(), x(); | |
} | |
function y() { | |
var e, t, r; | |
(e = | |
16 * | |
(r = | |
(r = m | |
? Math.round(($(window).height() * h) / 9) | |
: Math.round(($(window).width() * h) / 16)) < 10 | |
? 10 | |
: r) - | |
1), | |
(t = 9 * r), | |
$('#player2, #player2').css({ width: e, height: t }), | |
u.resize({ width: e, height: t }); | |
var n = $('#player2'), | |
s = n[0].getBoundingClientRect(); | |
if ( | |
s.left < 0 || | |
s.right > $('[data-player]').first().width() || | |
s.top < 0 || | |
s.bottom > $(window).height() | |
) { | |
var i = parseFloat(n[0].getAttribute('data-x')), | |
a = parseFloat(n[0].getAttribute('data-y')); | |
s.left < 0 | |
? ((i -= s.left), n[0].setAttribute('data-x', i)) | |
: s.right > $('[data-player]').first().width() | |
? ((i -= s.right - $('[data-player]').first().width()), | |
n[0].setAttribute('data-x', i)) | |
: s.top < 0 | |
? ((a -= s.top), n[0].setAttribute('data-y', a)) | |
: s.bottom > $(window).height() && | |
((a -= s.bottom - $(window).height()), | |
n[0].setAttribute('data-y', a)), | |
(n[0].style.webkitTransform = n[0].style.transform = | |
'translate(' + i + 'px, ' + a + 'px)'); | |
} | |
} | |
function b() { | |
var e, | |
t = $('[data-player]').first(), | |
r = $('#player .video-custom-wrap').first(); | |
(e = | |
'multicam' === n | |
? t.width() / t.height() > 16 / 9 | |
? ((m = !0), Math.round((t.height() / 9) * 16 - 2)) | |
: ((m = !1), '100%') | |
: t.width() / t.height() > 32 / 9 | |
? ((m = !0), Math.round((t.height() / 9) * 32 - 2)) | |
: ((m = !1), '95%')), | |
r.css('width', e); | |
r.width(); | |
} | |
function k() { | |
var n = $( | |
'<div class="pip-controls"><div class="pip-menu-btn">PiP</div><div class="pip-container hidden"><svg viewbox="0 0 56 40" class="pip-mode pip-btn"><rect stroke-width="4" rx="4" ry="4" x="2" y="2" width="52" height="36" /><rect stroke-width="4" rx="2" ry="2" x="26" y="14" width="20" height="16" /></svg><hr><svg viewbox="0 0 56 40" class="pip-mode pip-first"><rect stroke-width="4" rx="4" ry="4" x="2" y="2" width="52" height="36" /><text x="29" y="25">1</text></svg><svg viewbox="0 0 56 40" class="pip-mode pip-second"><rect stroke-width="4" rx="4" ry="4" x="2" y="2" width="52" height="36" /><text x="29" y="25">2</text></svg><svg viewbox="0 0 56 40" class="pip-mode pip-both"><rect stroke-width="4" rx="4" ry="4" x="2" y="2" width="52" height="36" /><text x="16" y="25">1</text><text x="40" y="25">2</text><line x1="28" x2="28" y1="4" y2="36" /></svg></div></div>' | |
); | |
s.once(Clappr.Events.PLAYER_PLAY, function () { | |
$( | |
'#player .media-control-layer .media-control-right-panel[data-media-control]' | |
) | |
.last() | |
.append(n), | |
(p.no_multicam_sidebyside || p.event.no_multicam_sidebyside) && | |
($('.pip-both').hide(0), $('.pip-container').css('top', '-137px')); | |
var e = 0 == getCurrentViewNum() ? 'first' : 'second', | |
t = $('.pip-btn').attr( | |
'class', | |
i ? 'pip-mode pip-btn active' : 'pip-mode pip-btn' | |
), | |
r = $('.pip-menu-btn').attr( | |
'class', | |
i ? 'pip-menu-btn active' : 'pip-menu-btn' | |
); | |
$('.pip-' + e).attr('class', 'pip-mode pip-' + e + ' active'), | |
r.on('click', function () { | |
$('.pip-container').toggleClass('hidden'); | |
}), | |
t.on('click', function () { | |
f(); | |
}), | |
$('.pip-both').on('click', function () { | |
p.block_switch || p.event.block_switch || (E(), w()); | |
}), | |
$('.pip-first').on('click', function () { | |
p.block_switch || | |
p.event.block_switch || | |
(0 !== getCurrentViewNum() && (O(0), w())); | |
}), | |
$('.pip-second').on('click', function () { | |
p.block_switch || | |
p.event.block_switch || | |
(1 != getCurrentViewNum() && (O(1), w())); | |
}), | |
s.listenTo( | |
player.core.mediaControl, | |
Clappr.Events.MEDIACONTROL_HIDE, | |
function () { | |
$('.pip-container').addClass('hidden'); | |
} | |
); | |
}); | |
} | |
function S() { | |
'multicam' === n && 0 === r | |
? ($('.pip-first').attr('class', 'pip-mode pip-first active'), | |
$('.pip-second').attr('class', 'pip-mode pip-second'), | |
$('.pip-both').attr('class', 'pip-mode pip-both')) | |
: 'multicam' === n && 1 === r | |
? ($('.pip-first').attr('class', 'pip-mode pip-first'), | |
$('.pip-second').attr('class', 'pip-mode pip-second active'), | |
$('.pip-both').attr('class', 'pip-mode pip-both')) | |
: ($('.pip-first').attr('class', 'pip-mode pip-first'), | |
$('.pip-second').attr('class', 'pip-mode pip-second'), | |
$('.pip-both').attr('class', 'pip-mode pip-both active')); | |
} | |
function C() { | |
if (!p.block_switch && !p.event.block_switch) { | |
var e = l[0].style.left, | |
t = d[0].style.left; | |
l.css('left', t), | |
d.css('left', e), | |
(a = (a + 1) % 2), | |
(r = (r + 1) % 2), | |
p.no_multicam_sidebyside || | |
p.event.no_multicam_sidebyside || | |
1 !== a || | |
$player2.show(0, function () { | |
$('#player2').off('click'), $('#player2').on('click', T); | |
}), | |
S(); | |
} | |
} | |
function T() { | |
'normal' === n ? O() : E(), w(); | |
} | |
function x() { | |
var e = $('[data-player]').first(); | |
$('#left-overlay, #right-overlay').css({ | |
width: e.width() / 2 + 'px', | |
height: e.height() + 'px', | |
top: 0, | |
}), | |
$('#left-overlay').css({ left: 0 }), | |
$('#right-overlay').css({ left: e.width() / 2 + 'px' }); | |
} | |
function P() { | |
$('#left-overlay, #right-overlay').css('display', 'none'); | |
} | |
function E() { | |
A(); | |
var e = l.css('left'), | |
t = d.css('left'); | |
(g.primary.left = '0px' === e || 0 == e ? 0 : '-100%'), | |
(g.secondary.left = '0px' === t || 0 == t ? 0 : '-100%'), | |
(n = 'normal'), | |
$('#player2').hide(), | |
l.css({ left: 0, width: '100%' }), | |
$('#left-overlay, #right-overlay').css('display', 'block'), | |
x(), | |
$('#player-divider').css('display', 'block'), | |
s.isPlaying() || s.play(), | |
u.pause(), | |
(r = 2), | |
S(); | |
} | |
function O(e) { | |
(n = 'multicam'), | |
(a = 0), | |
s.isPlaying() && i && ((_ = !1), u.play()), | |
0 === e | |
? (l.css({ width: '200%', left: 0 }), | |
d.css({ width: '200%', left: '-100%' })) | |
: (l.css({ width: '200%', left: '-100%' }), | |
d.css({ width: '200%', left: 0 })), | |
$('#player-divider').css({ display: 'none' }); | |
var t = $('#player2'); | |
p.block_switch || | |
p.event.block_switch || | |
(t.off('click'), t.on('click', C)), | |
i && t.show(), | |
w(), | |
P(), | |
(r = e), | |
i && (clearInterval(v), (v = setInterval(L, 500))), | |
S(); | |
} | |
function N() { | |
$('.resize-side-handle').show(), | |
$('.resize-handle').show(), | |
$('.close-secondary-player-btn').show(); | |
} | |
function I() { | |
$('.resize-side-handle').hide(), | |
$('.resize-handle').hide(), | |
$('.close-secondary-player-btn').hide(); | |
} | |
function e() { | |
s.play(), 'multicam' === n && i && ((_ = !1), u.play()); | |
} | |
function A() { | |
clearInterval(v); | |
} | |
function L() { | |
1 < s.getCurrentTime() - u.getCurrentTime() && R(); | |
} | |
function R(e) { | |
clearTimeout(t), | |
_ | |
? ((e = e || s.getCurrentTime()), u.seek(e)) | |
: (t = setTimeout(function () { | |
R(e); | |
}, 50)); | |
} | |
function F() { | |
w(); | |
var e = setInterval(w, 10); | |
setTimeout(function () { | |
clearInterval(e); | |
}, 400); | |
} | |
function M() { | |
s.listenTo(s, Clappr.Events.PLAYER_PAUSE, function () { | |
u.pause(); | |
}), | |
s.listenTo(s.core.getCurrentPlayback(), Clappr.Events.PLAYBACK_PLAY, e), | |
s.listenTo(s, Clappr.Events.PLAYER_FULLSCREEN, function (e) { | |
setTimeout(w, 100); | |
}), | |
s.listenTo(s, Clappr.Events.PLAYER_SEEK, function (e) { | |
R(e); | |
}); | |
} | |
interact('#player2') | |
.draggable({ | |
inertia: !0, | |
restrict: { | |
restriction: 'parent', | |
endOnly: !0, | |
elementRect: { top: 0, left: 0, bottom: 1, right: 1 }, | |
}, | |
autoScroll: !1, | |
}) | |
.on('dragmove', function (e) { | |
var t = e.target, | |
r = (parseFloat(t.getAttribute('data-x')) || 0) + e.dx, | |
n = (parseFloat(t.getAttribute('data-y')) || 0) + e.dy; | |
(r = Math.round(r)), | |
(n = Math.round(n)), | |
(t.style.webkitTransform = t.style.transform = | |
'translate(' + r + 'px, ' + n + 'px)'), | |
t.setAttribute('data-x', r), | |
t.setAttribute('data-y', n); | |
}) | |
.resizable({ | |
preserveAspectRatio: !0, | |
edges: { left: !0, right: !0, bottom: !0, top: !0 }, | |
margin: 15, | |
}) | |
.on('resizemove', function (e) { | |
var t = e.target, | |
r = $(t).find('.video-custom-wrap')[0], | |
n = parseFloat(t.getAttribute('data-x')) || 0, | |
s = parseFloat(t.getAttribute('data-y')) || 0, | |
i = parseInt(t.style.height.replace('px', '')) / 9, | |
a = Math.round(e.rect.height / 9), | |
o = 9 * a, | |
l = 16 * a - 1, | |
p = a / (i / h); | |
if (!(o < 90 || 0.5 < p) && ((h = p), i !== a)) { | |
var d = i - a; | |
e.edges.top && e.edges.left | |
? ((n += 16 * d), (s += 9 * d)) | |
: e.edges.top && e.edges.right | |
? (s += 9 * d) | |
: e.edges.bottom && e.edges.left | |
? (n += 16 * d) | |
: !e.edges.top || e.edges.left || e.edges.right | |
? !e.edges.right || e.edges.top || e.edges.bottom | |
? !e.edges.bottom || e.edges.left || e.edges.right | |
? !e.edges.left || | |
e.edges.top || | |
e.edges.bottom || | |
((n += 16 * d), (s += (9 * d) / 2)) | |
: (n += (16 * d) / 2) | |
: (s += (9 * d) / 2) | |
: ((n += (16 * d) / 2), (s += 9 * d)), | |
(n = Math.round(n)), | |
(s = Math.round(s)), | |
(t.style.width = l + 'px'), | |
(t.style.height = o + 'px'), | |
(r.style.width = l + 'px'), | |
(r.style.height = o + 'px'), | |
(t.style.webkitTransform = t.style.transform = | |
'translate(' + n + 'px,' + s + 'px)'), | |
t.setAttribute('data-x', n), | |
t.setAttribute('data-y', s), | |
y(); | |
} | |
}) | |
.on('dragstart resizestart', function (e) { | |
$(e.target).css('pointer-events', 'none'), | |
$('#player').css('pointer-events', 'none'); | |
}) | |
.on('dragend resizeend', function (e) { | |
$(e.target).css('pointer-events', 'all'), | |
$('#player').css('pointer-events', 'all'); | |
}), | |
$(document).ready(function () { | |
var e, t, r, n, s; | |
($player2 = $('#player2')), | |
(l = $('#player').find('video')).css({ width: '200%', left: 0 }), | |
(e = { | |
source: c, | |
parentId: '#player2', | |
autoPlay: !1, | |
width: 512, | |
height: 288, | |
mute: !0, | |
persistConfig: !1, | |
disableVideoTagContextMenu: !0, | |
allowUserInteraction: !1, | |
chromeless: !0, | |
hlsjsConfig: {}, | |
}), | |
(t = new Clappr.Player(e)), | |
(d = $('#player2').find('video')).css({ width: '200%', left: '-100%' }), | |
(u = t).on(Clappr.Events.PLAYER_PLAY, function () { | |
_ = !0; | |
}), | |
u.on(Clappr.Events.PLAYER_STOP, function () { | |
_ = !0; | |
}), | |
$('#player') | |
.find('video') | |
.wrap('<div class="video-custom-wrap"></div>'), | |
(r = $('div[data-player]').first()), | |
$('.video-custom-wrap') | |
.first() | |
.append('<div id="player-divider"></div>'), | |
p.block_switch || | |
p.event.block_switch || | |
(r.append('<div id="left-overlay"></div>'), | |
r.append('<div id="right-overlay"></div>'), | |
$('#left-overlay').on('click', function (e) { | |
e.stopPropagation(), O(0); | |
}), | |
$('#right-overlay').on('click', function (e) { | |
e.stopPropagation(), O(1); | |
})), | |
(n = $('#player2')).append( | |
'<span class="resize-side-handle handle-top"></span>' | |
), | |
n.append('<span class="resize-side-handle handle-right"></span>'), | |
n.append('<span class="resize-side-handle handle-bottom"></span>'), | |
n.append('<span class="resize-side-handle handle-left"></span>'), | |
n.append('<span class="resize-handle handle-bottom-right"></span>'), | |
n.append('<span class="resize-handle handle-bottom-left"></span>'), | |
n.append('<span class="resize-handle handle-top-right"></span>'), | |
n.append('<span class="resize-handle handle-top-left"></span>'), | |
$('.handle-left, .handle-right').on('mouseenter', function () { | |
this.style.cursor = 'ew-resize'; | |
}), | |
$('.handle-top, .handle-bottom').on('mouseenter', function () { | |
this.style.cursor = 'ns-resize'; | |
}), | |
$('.handle-top-left, .handle-bottom-right').on( | |
'mouseenter', | |
function () { | |
this.style.cursor = 'nwse-resize'; | |
} | |
), | |
$('.handle-top-right, .handle-bottom-left').on( | |
'mouseenter', | |
function () { | |
this.style.cursor = 'nesw-resize'; | |
} | |
), | |
(s = $( | |
'<div class="close-secondary-player-btn"><svg x="0" y="0" width="16" height="16" viewBox="0 0 41.756 41.756"><g><path d="M27.948,20.878L40.291,8.536c1.953-1.953,1.953-5.119,0-7.071c-1.951-1.952-5.119-1.952-7.07,0L20.878,13.809L8.535,1.465 c-1.951-1.952-5.119-1.952-7.07,0c-1.953,1.953-1.953,5.119,0,7.071l12.342,12.342L1.465,33.22c-1.953,1.953-1.953,5.119,0,7.071 C2.44,41.268,3.721,41.755,5,41.755c1.278,0,2.56-0.487,3.535-1.464l12.343-12.342l12.343,12.343 c0.976,0.977,2.256,1.464,3.535,1.464s2.56-0.487,3.535-1.464c1.953-1.953,1.953-5.119,0-7.071L27.948,20.878z" fill="#FFFFFF"/></g></svg></div>' | |
)).on('click', function (e) { | |
e.stopPropagation(), f(); | |
}), | |
$('#player2').append(s), | |
w(); | |
var i = $('[data-player]').first().width() - $player2.width(), | |
a = $('[data-player]').first().height() - $player2.height() - 75; | |
$player2[0].setAttribute('data-x', i), | |
$player2[0].setAttribute('data-y', a), | |
$player2.css({ transform: 'translate(' + i + 'px, ' + a + 'px)' }), | |
$player2.on('mouseenter', N), | |
$player2.on('mouseleave', I), | |
M(), | |
1 == o | |
? O(0) | |
: 2 == o | |
? O(1) | |
: (p.event.autorun && !1 !== p.autorun) || p.autorun | |
? E() | |
: $('.player-poster[data-poster]').on('click', E), | |
(sh_chat || p.event.chat_open || p.chat_open) && F(), | |
k(); | |
}), | |
$(window).on('resize', w), | |
$('#cnt').on('click', F), | |
(window.changeSecondaryPlayerSource = function (e) { | |
u.configure({ source: p.src }), | |
(_ = !1), | |
u.play(), | |
u.listenToOnce(u, Clappr.Events.PLAYER_PLAY, function () { | |
M(), | |
$('#player') | |
.find('video') | |
.wrap('<div class="video-custom-wrap"></div>'), | |
(d = $('#player2').find('video').first()), | |
$('.video-custom-wrap') | |
.first() | |
.append('<div id="player-divider"></div>'), | |
0 === (e = e || 0) || 1 === e | |
? ($('#player2').off('click', C), | |
O(e), | |
(a = 0), | |
s.play(), | |
R(), | |
i && $('#player2').show()) | |
: (E(), b()), | |
$('#left-overlay').detach().appendTo($('div[data-player]').first()), | |
$('#right-overlay') | |
.detach() | |
.appendTo($('div[data-player]').first()), | |
$('.resize-handle, .resize-side-handle') | |
.detach() | |
.appendTo($('#player2')); | |
}); | |
}), | |
(window.setupPiPControls = k), | |
(window.hideSecondViewPlayer = function () { | |
A(), (_ = !1), u.stop(), E(), $('#player2').hide(), P(); | |
}), | |
(window.getCurrentViewNum = function () { | |
return r; | |
}), | |
(window.getSecondaryPlayer = function () { | |
return u; | |
}), | |
(window.updatePrimaryVideo = function () { | |
l = $('#player').find('video').first(); | |
}); | |
}), | |
Object.assign || | |
Object.defineProperty(Object, 'assign', { | |
enumerable: !1, | |
configurable: !0, | |
writable: !0, | |
value: function (e, t) { | |
'use strict'; | |
if (null == e) | |
throw new TypeError('Cannot convert first argument to object'); | |
for (var r = Object(e), n = 1; n < arguments.length; n++) { | |
var s = arguments[n]; | |
if (null != s) | |
for ( | |
var i = Object.keys(Object(s)), a = 0, o = i.length; | |
a < o; | |
a++ | |
) { | |
var l = i[a], | |
p = Object.getOwnPropertyDescriptor(s, l); | |
void 0 !== p && p.enumerable && (r[l] = s[l]); | |
} | |
} | |
return r; | |
}, | |
}), | |
Array.prototype.includes || | |
Object.defineProperty(Array.prototype, 'includes', { | |
value: function (e, t) { | |
if (null == this) throw new TypeError('"this" is null or not defined'); | |
var r = Object(this), | |
n = r.length >>> 0; | |
if (0 == n) return !1; | |
var s, | |
i, | |
a = 0 | t, | |
o = Math.max(0 <= a ? a : n - Math.abs(a), 0); | |
for (; o < n; ) { | |
if ( | |
(s = r[o]) === (i = e) || | |
('number' == typeof s && | |
'number' == typeof i && | |
isNaN(s) && | |
isNaN(i)) | |
) | |
return !0; | |
o++; | |
} | |
return !1; | |
}, | |
}); | |
var WIDTH_BREAKPOINT_ON_SHOW_NAVIGATION_EPISODES = 720; | |
function createFacebookPixelScript(e) { | |
var t = document.createDocumentFragment(), | |
r = document.createElement('script'); | |
r.innerHTML = | |
"!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js');fbq('init', '" + | |
e + | |
"');fbq('track', 'PageView');"; | |
var n = document.createElement('noscript'), | |
s = document.createElement('img'); | |
return ( | |
(s.width = 1), | |
(s.height = 1), | |
(s.style.display = 'none'), | |
(s.src = 'https://www.facebook.com/tr?id=' + e + '&ev=PageView&noscript=1'), | |
n.appendChild(s), | |
t.appendChild(r), | |
t.appendChild(n), | |
t | |
); | |
} | |
function createYandexMetrikaScript(e) { | |
var t = document.createDocumentFragment(), | |
r = document.createElement('script'); | |
r.innerHTML = | |
'(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");ym(' + | |
e + | |
', "init", {clickmap:true,trackLinks:true,accurateTrackBounce:true});'; | |
var n = document.createElement('noscript'); | |
return ( | |
n.appendChild(document.createElement('div')), | |
(n.firstElementChild.innerHTML = | |
'<img src="https://mc.yandex.ru/watch/' + | |
e + | |
'" style="position:absolute; left:-9999px;" alt="" />'), | |
t.appendChild(r), | |
t.appendChild(n), | |
t | |
); | |
} | |
function createGoogleAnalyticsScript(e) { | |
var t = document.createDocumentFragment(), | |
r = document.createElement('script'); | |
(r.src = 'https://www.googletagmanager.com/gtag/js?id=' + e), (r.async = !0); | |
var n = document.createElement('script'); | |
return ( | |
(n.innerHTML = | |
"window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', '" + | |
e + | |
"');"), | |
t.appendChild(r), | |
t.appendChild(n), | |
t | |
); | |
} | |
function send_stat() { | |
$.ajax({ | |
url: prefix + 'dev.facecast.io/player_stat_collector.php', | |
method: 'POST', | |
data: { | |
dmesg: dmsg, | |
guid: p.guid, | |
key: p.key, | |
code: code, | |
event_id: p.event.id, | |
servers: servers, | |
url: url, | |
}, | |
error: function () {}, | |
success: function (e) {}, | |
}); | |
} | |
function redraw_labels() { | |
!no_label && | |
p.event && | |
(1 == p.event.is_live | |
? ($('.awa, .rec').hide(), $('.live-text').show()) | |
: ($('.live-text, .awa, .rec, .vcnt').hide(), | |
p.event.duration < 15 && $('.awa').show())); | |
} | |
function hb_schedule() { | |
p.hb_s || | |
((p.hb_s = 1), | |
p.event.stat_hb_delay || (p.event.stat_hb_delay = 30), | |
setInterval(function () { | |
hb(); | |
}, 1e3 * p.event.stat_hb_delay)); | |
} | |
function check_live(e) { | |
var t = Date.now(); | |
p.event && | |
p.duration_check && | |
p.event.duration && | |
p.event.duration != e && | |
(0 == p.event.is_live && | |
p.player_loaded && | |
(player.play(), dmesg('Stream go live, run player')), | |
(p.event.is_live = 1)), | |
t > p.duration_check + 1e4 && | |
!p.isMobile && | |
(p.duration_livecheck == e && | |
(1 == p.event.is_live && dmesg('Event become offline'), | |
(p.event.is_live = 0)), | |
(p.duration_livecheck = e), | |
(p.duration_check = t)), | |
p.duration_check || ((p.duration_check = t), (p.duration_livecheck = e)), | |
redraw_labels(); | |
} | |
no_animation && $spinner.hide(), | |
no_label && $('.name, .description, .description-date').hide(), | |
no_date && $('.description-date-wrap .description-date').hide(), | |
(p.ref = document.referrer), | |
(p.locale = navigator.language || navigator.languages[0]), | |
(p.sid = getCookie('sid')), | |
determineUserLang(), | |
parseQueryString(), | |
'jzv4nr' == code && | |
(window.location.href = | |
'https://videoforevent.com/reso' + (p.key ? '?fc_key=' + p.key : '')), | |
p.css && document.write('<link rel="stylesheet" href="' + p.css + '">'), | |
p.isMobile && document.write('<link rel="stylesheet" href="mobile.css">'), | |
$(document).ready(function () { | |
dmesg( | |
'Start <a target="_blank" href="' + | |
document.location + | |
'">' + | |
document.location + | |
'</a>' | |
), | |
dmesg(window.navigator.platform + ' / ' + window.navigator.userAgent), | |
dmesg('GUID = ' + p.guid), | |
p.ref && | |
dmesg( | |
'ref = <a target="_blank" href="' + p.ref + '">' + p.ref + '</a>' | |
), | |
-1 < (window.location.href + p.ref).indexOf('fcdebug') && | |
$('#fcdebug').show(), | |
!p.key && | |
p.ref && | |
-1 < p.ref.indexOf('fc_key') && | |
(p.key = getJsonFromUrl(p.ref).fc_key), | |
get_urls(), | |
'ru' !== p.lang | |
? ch_lang() | |
: $('#LNIframe .names .name-wrap .name').text('Загрузка...'), | |
window.addEventListener | |
? window.addEventListener('message', msg_receive) | |
: window.attachEvent('onmessage', msg_receive), | |
setTimeout(function () { | |
send_stat(); | |
}, 15e3), | |
p.isMobile; | |
}); | |
var onHlsFragCh = function (e, t) { | |
p.player_frag_url && | |
p.player_frag_url != t.frag.url && | |
(0 == p.event.is_live && dmesg('Stream become live'), | |
(p.event.is_live = 1), | |
(p.event.duration = 16), | |
dmesg( | |
'Playing chunk ' + | |
t.frag.url.substring(t.frag.url.lastIndexOf('/') + 1, 990) | |
), | |
redraw_labels()), | |
(p.player_frag_url = t.frag.url); | |
}; | |
function duration(e) { | |
var i = 0; | |
if ( | |
((e = e && e.replace('live=' + p.live_duration, '')), | |
p.player_loaded || | |
p.duration_src || | |
!e || | |
(dmesg('Getting master playlist'), | |
$('.awa, .rec').hide(), | |
$.ajax({ | |
type: 'GET', | |
url: e, | |
crossDomain: !0, | |
cache: !0, | |
dataType: 'text', | |
error: function () { | |
hb_schedule(); | |
}, | |
success: function (e) { | |
e && 0 < e.length | |
? (e.split('\n').forEach(function (e) { | |
-1 == e.indexOf('#') && 2 < e.length && (p.duration_src = e); | |
}), | |
(p.duration_src = p.duration_src | |
? p.src.substring(0, p.src.lastIndexOf('/') + 1) + | |
p.duration_src.replace('?live=' + p.live_duration, '') | |
: void 0), | |
dmesg('Getting Q Playlist = ' + p.duration_src), | |
p.duration_src ? duration() : hb_schedule()) | |
: hb_schedule(); | |
}, | |
})), | |
!p.player_loaded && | |
p.duration_src && | |
p.event && | |
$.ajax({ | |
type: 'GET', | |
url: p.duration_src, | |
crossDomain: !0, | |
cache: !0, | |
dataType: 'text', | |
error: function () { | |
hb_schedule(); | |
}, | |
success: function (e) { | |
hb_schedule(); | |
var t, | |
r = e.split('\n'), | |
n = 0, | |
s = 0; | |
r.forEach(function (e) { | |
0 == e.indexOf('#EXTINF:') && | |
0 < (t = e.substr(8, e.lenght).replace(',', '')).length && | |
((i += parseFloat(t)), n++), | |
0 == e.indexOf('#EXT-X-ENDLIST') && (s = 1); | |
}), | |
dmesg( | |
'Playlist parsed (' + | |
n + | |
' chunks), duration: ' + | |
Math.floor(i) + | |
' sec' | |
), | |
s && | |
p.event && | |
!p.isMobile && | |
((p.ended = 1), (p.event.is_live = 0)), | |
check_live(i), | |
(p.event.duration = i), | |
p.player_loaded || try_load(); | |
}, | |
}), | |
p.player_loaded && | |
1 == p.event.use_dvr && | |
!p.ended && | |
player.isPlaying && | |
player.isPlaying() && | |
((i = player.getDuration()), | |
dmesg('Get duration from player, ' + p.event.duration + ' sec'), | |
check_live(i), | |
(p.event.duration = i), | |
hb_schedule()), | |
p.player_loaded && 0 == p.event.use_dvr) | |
) { | |
var t = Date.now(); | |
player.isPlaying() || | |
((p.player_frag_listener = void 0), (p.duration_check = t)), | |
!p.player_frag_listener && | |
player.isPlaying() && | |
'object' == typeof player.core.getCurrentPlayback()._hls && | |
'function' == typeof player.core.getCurrentPlayback()._hls.on && | |
(player.core | |
.getCurrentPlayback() | |
._hls.on('hlsFragChanged', onHlsFragCh), | |
(p.player_frag_listener = 1), | |
(p.duration_check = t)), | |
t > p.duration_check + 15e3 && | |
!p.isMobile && | |
(p.frag_livecheck == p.player_frag_url && | |
(1 == p.event.is_live && dmesg('Stream become offline'), | |
(p.event.is_live = 0)), | |
(p.frag_livecheck = p.player_frag_url), | |
(p.duration_check = t)), | |
redraw_labels(), | |
hb_schedule(); | |
} | |
hb_schedule(); | |
} | |
function msg_receive(e) { | |
if (e && e.data && e.data.indexOf && 0 < e.data.indexOf(code)) { | |
var t = JSON.parse(e.data); | |
t && | |
t.frame == code && | |
(dmesg('Message: ' + e.data), | |
t.src && 0 == t.src.indexOf('http') && player && player.load(t.src), | |
'play' == t.exec && player && player.play(), | |
'pause' == t.exec && player && player.pause(), | |
'stop' == t.exec && player && player.stop(), | |
'mute' == t.exec && player && player.mute(), | |
'setVolume' != t.exec || | |
!player || | |
('number' != typeof t.volume && 'string' != typeof t.volume) || | |
player.setVolume(parseInt(t.volume)), | |
'unmute' == t.exec && player && player.unmute(), | |
'seek' != t.exec || | |
('number' != typeof t.seektime && 'string' != typeof t.seektime) || | |
!player || | |
player.seek(parseFloat(t.seektime)), | |
'switch_lang' == t.exec && | |
'number' == typeof t.lang_id && | |
player && | |
1 == p.event.mlang && | |
switch_track(t.lang_id), | |
'get' == t.exec && p.src && send_player_stat_message('get'), | |
'update_storage' == t.exec && updateStorage(t.data)); | |
} | |
} | |
function send_player_stat_message(e) { | |
if (window.parent) { | |
var t = { | |
origin: 'Facecast_player', | |
source_frame: code, | |
src: p.src, | |
event_id: p.event.id, | |
server: url.media, | |
multitrack: p.event.multitrack, | |
current_lang: p.current_lang, | |
use_dvr: p.event.use_dvr, | |
isPlaying: !1, | |
event: e, | |
}; | |
p.run1 && | |
((t.currentTime = player.getCurrentTime()), | |
(t.duration = player.getDuration()), | |
(t.isPlaying = player.isPlaying())), | |
p.seek_to && ((t.seek_to = p.seek_to), (p.seek_to = void 0)), | |
window.parent.postMessage(JSON.stringify(t), '*'); | |
} | |
} | |
function updateStorage(t) { | |
Object.keys(t).forEach(function (e) { | |
storageData[e] = t[e]; | |
}); | |
} | |
function determineUserLang() { | |
var e = ['ru']; | |
-1 == $.inArray(p.locale.substring(0, 2).toLowerCase(), e) && | |
-1 == $.inArray(p.locale.substring(3, 5).toLowerCase(), e) && | |
(p.lang = 'en'); | |
} | |
function parseQueryString() { | |
for ( | |
var e = new ParsedQueryString(), t = e.params(!1), r = 0; | |
r < t.length; | |
r++ | |
) { | |
var n = t[r], | |
s = e.param(n); | |
('true' !== s && 'false' !== s) || (s = 'true' === s), | |
'src' !== n.toLowerCase() && ((n = escapeHtml(n)), (s = escapeHtml(s))), | |
'srv' === n.toLowerCase() && s && (p.srv_query = 1), | |
(p[n] = s), | |
dmesg('URL: ' + n + ' = ' + e.param(n)); | |
} | |
} | |
function escapeHtml(e) { | |
var t = { | |
'&': '&', | |
'<': '<', | |
'>': '>', | |
'"': '"', | |
"'": ''', | |
'/': '/', | |
'`': '`', | |
'=': '=', | |
}; | |
return String(e).replace(/[&<>"'`=\/]/g, function (e) { | |
return t[e]; | |
}); | |
} | |
function getCookie(e) { | |
for ( | |
var t = e + '=', r = document.cookie.split(';'), n = 0; | |
n < r.length; | |
n++ | |
) { | |
for (var s = r[n]; ' ' == s.charAt(0); ) s = s.substring(1); | |
if (0 == s.indexOf(t)) return s.substring(t.length, s.length); | |
} | |
return ''; | |
} | |
function ch_lang() { | |
$('#LNIframe .names .name-wrap .name').text('Loading...'), | |
$('.title').html('Authentication'), | |
$('.validation_title').html('phone verification'), | |
$('.validation_code').html('Enter the code received via SMS'), | |
$('.alert_window_popup_title').html('Successful registration'), | |
$('.viewer_presence_window_popup_title').html('Presence confirmation'), | |
$( | |
'.viewer_presence_window_popup .alert_window_body .alert_window_msg' | |
).html('Confirm your presence'), | |
$('.alert_window_popup .alert_window_body .alert_window_msg').html( | |
'You are registered for the event.' | |
), | |
$('.sbtn-alert-confirm').val('Watch'), | |
$('.event_code').html('Enter password'), | |
$('.name').html('Loading...'), | |
$('.sbtn4, .sbtn').val('Log in'), | |
$('.sbtn-validation').val('submit'), | |
$('.sbtn-validation-change-phone').html('change phone'), | |
$('.sbtn-validation-repeat').html('send the code again'), | |
$('.sbtn42').val('Buy ticket'), | |
$('#live-text').html('Live'), | |
$('.rec').html('Record'), | |
$('.awa').html('Awaiting for start...'), | |
$('.disable').html('Event is locked'), | |
$('.broadcast_end').html('Stream is offline'), | |
$('.userreg__body__accept label').html( | |
"I accept the personal data processing <a href='//facecast.net/legal/' target='_blank'>agreement</a>" | |
), | |
$('.userreg__window > .userreg__header > .userreg__header__title').html( | |
'Registration at the event' | |
), | |
$('.userreg__body__name > h3').html('Name'), | |
$('.userreg__body__phone > h3').html('Phone'), | |
$('#userreg-btn').val('Register'), | |
$('.userreg__warning').html( | |
'* Enter your existing email address. You will use this to get your code for watching.' | |
), | |
$('.userreg_phone_warning').html( | |
'** Enter your existing phone number, a confirmation code will be sent to it.' | |
), | |
$('.userreg__code__title').html('Have the code?'), | |
$('.userreg__window #userreg-auth-btn').val('Watch'), | |
$('.userreg-goback').html('Have a code?'), | |
$( | |
'.userreg__window-short > .userreg__header > .userreg__header__title' | |
).html('Watch'), | |
$('.userreg__window-short #userreg-auth-btn').val('Watch'), | |
$('#userreg-reg-btn-short').val('Register'), | |
$( | |
'.userreg__window-short > .userreg > div > .userreg__form > .userreg__code' | |
).html('Enter code'), | |
$('.us-body > h3').html('Enter the code received by email'); | |
} | |
function ch_player_lang() { | |
$('#level-selector-id > div.label').html('Quality'), | |
$( | |
'#player > div:nth-child(3) > div.media-control.live.media-control > div.media-control-layer > div.media-control-right-panel > div.settings_menu > div > div:nth-child(1) > div.label' | |
).html('Video quality'), | |
$('#player-reload').html('Reload'), | |
$('#audio-tracks-id .label').text('Audio track'); | |
} | |
function try_load() { | |
if (!p.player.loaded) { | |
if ( | |
(dmesg('Try load. ' + p.autorun + ' ' + p.event.is_live), | |
setTimeout(try_load, 5e3), | |
!p.src) | |
) | |
return; | |
!p.auth_hb_token && | |
p.key && | |
2 != p.event.view_mode_id && | |
7 != p.event.view_mode_id && | |
p.auth_hb_req && | |
auth_hb_init(), | |
!p.chat && | |
p.event.chat && | |
(show_chat_button(), | |
(!sh_chat && '1' != p.event.chat_open) || show_chat()), | |
(p.event.date_plan_start_ts - new Date().getTime() / 1e3 < 1 || | |
p.event.is_live) && | |
($spinner.show(), countdown_stop()), | |
0 < p.event.duration && | |
p.event.duration < 15 && | |
(countdown_stop(), $spinner.show()), | |
15 < p.event.duration && countdown_stop(), | |
0 == p.event.is_live && | |
0 == p.event.use_dvr && | |
15 <= p.event.duration && | |
$spinner.hide(), | |
1 == p.event.is_live && | |
0 == p.event.use_dvr && | |
15 <= p.event.duration && | |
($spinner.hide(), $('.broadcast_end').hide()), | |
5 <= p.event.duration && 1 != p.event.has_disabled && Player('load'), | |
redraw_labels(); | |
} | |
} | |
function init_src() { | |
if (!p.event.id) | |
return ( | |
dmesg( | |
'Eventdata return event error: ' + p.event.error + '. Stop executing', | |
3 | |
), | |
((e = new Image()).src = 'https://www.cdn.facecast.net/' + p.def_poster), | |
(e.onload = function () { | |
$('#player').css('background-image', 'url(' + e.src + ')'); | |
}), | |
$spinner.hide(), | |
void $('.name').html('Ошибка: ' + p.event.error) | |
); | |
var e, | |
t = new Image(); | |
((e = new Image()).src = | |
'https://www.cdn.facecast.net/f/7/' + | |
p.event.image_id + | |
'-preview22.' + | |
p.event.poster_extension), | |
(e.onload = function () { | |
$('#player').css('background-image', 'url(' + e.src + ')'), | |
(t.src = | |
'https://www.cdn.facecast.net/f/7/' + | |
p.event.image_id + | |
'-preview19.' + | |
p.event.poster_extension), | |
(t.onload = function () { | |
$('#player').css('background-image', 'url(' + t.src + ')'); | |
}); | |
}), | |
(e.onerror = function () { | |
(t.src = | |
'https://www.cdn.facecast.net/f/7/' + | |
p.event.image_id + | |
'-preview19.' + | |
p.event.poster_extension), | |
(t.onload = function () { | |
$('#player').css('background-image', 'url(' + t.src + ')'); | |
}); | |
}), | |
(p.poster = | |
'https://www.cdn.facecast.net/f/7/' + | |
p.event.image_id + | |
'-preview19.' + | |
p.event.poster_extension), | |
(document.title = p.event.has_whitelabel | |
? p.event.name | |
: p.event.name + ' - Facecast'), | |
$('.name').html(p.event.name), | |
'-' == p.event.name && $('.name').hide(), | |
$('.description').html(p.event.description.trim()), | |
p.event.description.trim() | |
? no_label || $('.description').show().css('display', 'block') | |
: $('.description-wrap').hide(0), | |
$('.description-date').html(p.event.date_plan_start), | |
date_format(), | |
$(window).on('resize', reload_background), | |
$('.player_wrap').on('resize', reload_background), | |
reload_background(); | |
} | |
function run_player() { | |
dmesg('Start loading player', 1), | |
1 != p.autorun && (p.autorun = !1), | |
p.event && | |
(1 === p.event.has_polls | |
? (window.eDataUpdateInterval = setInterval( | |
get_event, | |
1e3 * p.poll_hb_delay | |
)) | |
: (window.eDataUpdateInterval = setInterval( | |
get_event, | |
1e3 * p.event.hb_delay | |
))); | |
var t, | |
e = | |
'https://facecast.net?utm_source=facecast&utm_medium=player&utm_campaign=logo&utm_content=' + | |
((window.location != window.parent.location | |
? document.referrer | |
: document.location.href) || '') + | |
'&utm_term=' + | |
(p.utm_term || ''), | |
r = !(p.event && p.event.has_whitelabel), | |
n = { | |
controls: Clappr.Browser.isMobile || Clappr.Browser.isiOS, | |
playInline: !0, | |
recycleVideo: Clappr.Browser.isiOS, | |
hlsjsConfig: { | |
abrMaxWithRealBitrate: !0, | |
startLevel: parseInt(p.startLevel, 10), | |
capLevelToPlayerSize: !0, | |
initialLiveManifestSize: 3, | |
liveSyncDurationCount: 4, | |
xhrSetup: function (e, t) { | |
if (p.srv) { | |
var r = new URL(t), | |
n = r.pathname; | |
if ( | |
p && | |
p.event && | |
(2 == +p.event.view_mode_id || | |
4 == +p.event.view_mode_id || | |
5 == +p.event.view_mode_id || | |
6 == +p.event.view_mode_id || | |
7 == +p.event.view_mode_id) && | |
p.auth | |
) { | |
var s = n.split(p.auth.cdn_src); | |
(n = 1 < s.length ? s[1] : n.split(p.auth.edge_src)[1]), | |
(n = servers.filter(function (e) { | |
return -1 !== e.src.indexOf(p.srv); | |
})[0].cdn | |
? '/' + p.auth.cdn_src + n | |
: '/' + p.auth.edge_src + n); | |
} | |
(t = r.protocol + '//' + p.srv.split('.')[0] + '.facecast.net' + n), | |
(t += ['?live=' + p.live_duration, ''][p.event.use_dvr]); | |
} | |
e.open('GET', t, !0), | |
(e.onerror = function () { | |
p.edgetest_in_progress || | |
p.speedtest_in_progress || | |
(dmesg('XHR error. Starting speedtest...'), | |
(p.edgetest_trigger = 'xhr'), | |
edgetest()); | |
}); | |
}, | |
}, | |
}; | |
try { | |
t = JSON.parse(p.event.episodes); | |
} catch (e) { | |
t = []; | |
} | |
var s = (t = t.map(function (e) { | |
return { | |
name: 'ru' === p.lang ? e.ru : e.en ? e.en : e.ru, | |
fragments: (e.fragments || []).map(function (e) { | |
return { | |
name: 'ru' === p.lang ? e.ru : e.en ? e.en : e.ru, | |
time: e.time, | |
}; | |
}), | |
time: e.time, | |
}; | |
})).reduce(function (e, t) { | |
return e.concat( | |
[{ name: t.name, time: t.time }].concat(_toConsumableArray(t.fragments)) | |
); | |
}, []), | |
i = []; | |
try { | |
i = JSON.parse(p.event.banner_urls); | |
} catch (e) {} | |
var a = { | |
source: | |
p.event && 1 == p.event.mlang ? multitrack_master_playlist() : p.src, | |
parentId: '#player', | |
autoPlay: p.autorun, | |
exitFullscreenOnEnd: !!Clappr.Browser.isiOS, | |
plugins: { | |
core: [ | |
SettingsMenu, | |
LevelSelector, | |
NavigationEpisodes, | |
MediaControlEpisodes, | |
EventsTracker, | |
AdvBanners, | |
], | |
}, | |
eventsTracker: { | |
labelName: 'event_id', | |
label: p.event && p.event.id, | |
allowed: ['seek'], | |
}, | |
advertisingBanners: { | |
bannerUrls: i, | |
loop: | |
!p.event || | |
'number' != typeof p.event.banner_loop || | |
Boolean(p.event.banner_loop), | |
bannerShowTime: | |
p.event && 'number' == typeof p.event.banner_show_time | |
? p.event.banner_show_time | |
: 10, | |
bannerShowDelay: | |
p.event && 'number' == typeof p.event.banner_show_delay | |
? p.event.banner_show_delay | |
: 60, | |
closable: | |
!p.event || | |
'number' != typeof p.event.banner_closable || | |
Boolean(p.event.banner_closable), | |
alignX: (p.event && p.event.banner_align) || 'center', | |
alignY: (p.event && p.event.banner_valign) || 'bottom', | |
}, | |
playback: n, | |
VastAdsConfig: { AdXMLUrl: p.event && p.event.vast_url }, | |
mediaControlEpisodes: { episodes: p && p.event ? s : [] }, | |
navigationEpisodes: { | |
episodes: t, | |
width: 320, | |
breakpoint: 800, | |
immediatelyOpen: p && p.event && p.event.episodes_open, | |
}, | |
width: '100%', | |
height: '100%', | |
poster: p.poster || p.def_poster, | |
disableVideoTagContextMenu: !0, | |
mute: !0, | |
persistConfig: !1, | |
language: p.lang, | |
logo: { | |
href: p.event && p.event.logo_path ? p.event.logo_click_url || '' : e, | |
src: | |
p.event && p.event.logo_path ? '//' + p.event.logo_path : '/v/logo.svg', | |
enabled: r, | |
}, | |
hideMediaControl: | |
p.hideMediaControl || Clappr.Browser.isMobile || Clappr.Browser.isiOS, | |
gaAccount: p.ga || 'UA-53479775-3', | |
hlsjsConfig: {}, | |
disableErrorScreen: !0, | |
events: { | |
onPlay: function () { | |
if (!p.run1) { | |
clappr_debug && Clappr.Log.setLevel(0), | |
dmesg('Player start playing video', 1), | |
$('.media-control[data-media-control]').css({ 'z-index': 0 }), | |
(p.run1 = 1); | |
try { | |
p.volume = readStorage('@facecast.net/player/volume'); | |
} catch (e) {} | |
1 == p.event.mlang && render_track_button(), | |
hb(), | |
p.volume || (p.volume = 90), | |
p.muted && (p.volume = 0), | |
(function e() { | |
var t = player.getVolume(); | |
t < p.volume | |
? (player.setVolume(t + 1), | |
(p.wait_for_volume = !0), | |
setTimeout(function () { | |
e(); | |
}, 3)) | |
: (p.wait_for_volume = !1); | |
})(), | |
'ru' != p.lang && | |
setTimeout(function () { | |
ch_player_lang(); | |
}, 1e3), | |
$('#player-reload').click(function () { | |
(p.autorun = !0), | |
player.configure({ autoPlay: !0 }), | |
reload_player(); | |
}), | |
p.event.use_dvr || $('.media-control-center-panel').hide(), | |
js_after_playerload(), | |
p.event && | |
p.event.mlang && | |
p.event.is_live && | |
0 == p.isMobile && | |
player.seek(player.getDuration()); | |
} | |
send_player_stat_message('play'); | |
}, | |
onPause: function () { | |
send_player_stat_message('pause'); | |
}, | |
onSeek: function (e) { | |
(p.seek_to = e), send_player_stat_message('seek'); | |
}, | |
onReady: function () { | |
dmesg('Player ready', 1); | |
try { | |
1 !== p.event.is_live && | |
readStorage('@facecast.net/player/' + code + '/time') && | |
(dmesg('Found time to seek in LocalStore, processing playlists'), | |
$.ajax({ | |
type: 'GET', | |
url: p.src, | |
crossDomain: !0, | |
cache: !1, | |
dataType: 'text', | |
success: function (e) { | |
var t; | |
e && | |
0 < e.length && | |
(e.split('\n').forEach(function (e) { | |
-1 == e.indexOf('#') && 2 < e.length && (t = e); | |
}), | |
(p.duration_src = | |
p.src.substring(0, p.src.lastIndexOf('/') + 1) + | |
t.replace('?live=' + p.live_duration, '')), | |
dmesg('seekTo: p.duration.src = ' + p.duration_src), | |
$.ajax({ | |
type: 'GET', | |
url: p.duration_src, | |
crossDomain: !0, | |
dataType: 'text', | |
success: function (e) { | |
var t, | |
r = e.split('\n'), | |
n = 0, | |
s = Number( | |
readStorage('@facecast.net/player/' + code + '/time') | |
); | |
r.forEach(function (e) { | |
0 == e.indexOf('#EXTINF:') && | |
0 < | |
(t = e.substr(8, e.lenght).replace(',', '')) | |
.length && | |
(n += parseFloat(t)), | |
0 == e.indexOf('#EXT-X-ENDLIST') && | |
s && | |
s < n - 60 && | |
(dmesg('seekTo: X-ENDLIST found, seek'), | |
player.seek(s)); | |
}); | |
}, | |
})); | |
}, | |
})); | |
} catch (e) {} | |
if ( | |
($spinner.hide(), | |
(p.player.loaded = !0), | |
(function () { | |
if (p.logo_src) { | |
((logo_image = new Image()).onload = function () { | |
parseFloat(p.logo_width) && parseFloat(p.logo_height) | |
? ((p.logo_width = parseFloat(p.logo_width)), | |
(p.logo_height = parseFloat(p.logo_height))) | |
: ((p.logo_width = logo_image.naturalWidth), | |
(p.logo_height = logo_image.naturalHeight)), | |
(p.logo_aspect_ratio = p.logo_width / p.logo_height), | |
resize_logo(); | |
}), | |
$('#player [data-player]') | |
.first() | |
.prepend( | |
'<a class="logo" href="' + | |
p.logo_url + | |
'" target="_blank"></a>' | |
); | |
var e = $('[data-player] > .logo'); | |
'top-right' === p.logo_position | |
? e.css({ | |
top: '50px', | |
right: '30px', | |
'justify-content': 'flex-start', | |
}) | |
: 'top-left' === p.logo_position | |
? e.css({ | |
top: '50px', | |
left: '30px', | |
'justify-content': 'flex-start', | |
}) | |
: 'bottom-left' === p.logo_position | |
? e.css({ | |
bottom: '50px', | |
left: '30px', | |
'justify-content': 'flex-end', | |
}) | |
: e.css({ | |
bottom: '50px', | |
right: '30px', | |
'justify-content': 'flex-end', | |
}), | |
e.prepend( | |
'<img class="logo-image" src="' + p.logo_src + '" />' | |
); | |
var t = debounce(resize_logo, 25); | |
$(window).on('resize', t), | |
$('#player [data-player]').first().on('resize', t), | |
(logo_image.src = p.logo_src), | |
(p.logo_max_height = parseInt(p.logo_max_height) || 15), | |
e.css({ | |
height: p.logo_max_height + '%', | |
opacity: p.logo_opacity || 1, | |
}); | |
} | |
})(), | |
$('.description').on('click', function () { | |
$('.description').hide(), player.play(); | |
}), | |
$('#player').first().append($('.comment_arrow')), | |
$('#player').first().append($('.lang_arrow')), | |
$('#player').first().append($('.lang_holder')), | |
p && p.event && p.event.has_episodes) | |
) { | |
var e = document.createElement('div'); | |
(e.className = 'trigger-episode-button'), | |
e.addEventListener( | |
'click', | |
function (e) { | |
chatOpen && show_chat(), | |
this.getPlugin('episodes-navigation-container').slide(), | |
reload_background(), | |
setTimeout( | |
player.getPlugin('episodes-media-control').rerender, | |
1e3 | |
); | |
}.bind(this) | |
), | |
e.appendChild( | |
document.createTextNode( | |
'en' === p.lang ? 'Episodes' : 'РРїРёР·РѕРґС‹' | |
) | |
), | |
$('#player').append(e); | |
var t = document.querySelector('.comment_arrow'); | |
t && 'block' === t.style.display | |
? (e.style.marginTop = '-129px') | |
: (e.style.marginTop = 0); | |
} | |
$('#player').first().append($('#hypercomments_widget')), | |
$('#player').css({ | |
'background-image': 'none', | |
'background-color': 'white', | |
}), | |
reload_background(), | |
setInterval(function () { | |
try { | |
p.run1 && | |
!p.wait_for_volume && | |
readStorage('@facecast.net/player/volume') != | |
player.getVolume() && | |
writeStorage('@facecast.net/player/volume', player.getVolume()); | |
} catch (e) {} | |
}, 500), | |
setTimeout(function () { | |
fullscreenEnabled() && | |
($('[data-fullscreen]').on('click', function (e) { | |
e.stopPropagation(), | |
isFullscreen() | |
? (cancelFullscreen(), | |
p.fullscreenalert && console.log('LeaveFullscreen')) | |
: (p.fullscreenalert && console.log('EnterFullscreen'), | |
requestFullscreen($('#player')[0]), | |
reload_background()); | |
}), | |
$('.container[data-container]') | |
.first() | |
.on('dblclick doubleTap', function (e) { | |
e.stopPropagation(); | |
}), | |
$('#player video') | |
.first() | |
.on('dblclick doubleTap', function (e) { | |
e.stopPropagation(), | |
isFullscreen() | |
? cancelFullscreen() | |
: (requestFullscreen($('#player')[0]), | |
reload_background()); | |
})); | |
}, 1e3); | |
}, | |
onTimeUpdate: function (e) { | |
try { | |
'flashls' !== player.core.getCurrentPlayback().name && | |
writeStorage( | |
'@facecast.net/player/' + code + '/time', | |
Math.max(0, Math.round(e.current) - 2) | |
); | |
} catch (e) {} | |
}, | |
}, | |
}; | |
p.event && | |
0 != +p.event.use_dvr && | |
(a.plugins.core.push(PlaybackRatePlugin), | |
(a.playbackRateConfig = { | |
defaultValue: '1.0', | |
options: [ | |
{ value: '0.5', label: '0.5x' }, | |
{ value: '0.75', label: '0.75x' }, | |
{ value: '1.0', label: '1x' }, | |
{ value: '1.1', label: '1.1x' }, | |
{ value: '1.25', label: '1.25x' }, | |
{ value: '1.5', label: '1.5x' }, | |
{ value: '2.0', label: '2x' }, | |
], | |
})), | |
p.event && p.event.vast_url && VastAds && a.plugins.core.unshift(VastAds), | |
(p.chromeless || Clappr.Browser.isMobile || Clappr.Browser.isiOS) && | |
((a.chromeless = !0), (a.allowUserInteraction = !0)), | |
p && | |
p.event && | |
p.event.has_custom_counters && | |
(p.event.yandex_metrika_id && | |
!p.no_yandex_metrica && | |
document.head.appendChild( | |
createYandexMetrikaScript(p.event.yandex_metrika_id) | |
), | |
p.event.google_analytics_id && | |
document.head.appendChild( | |
createGoogleAnalyticsScript(p.event.google_analytics_id) | |
), | |
p.event.facebook_pixel_id && | |
document.head.appendChild( | |
createFacebookPixelScript(p.event.facebook_pixel_id) | |
)), | |
(player = new Clappr.Player(a)); | |
var o = null, | |
l = player.core.plugins.find(function (e) { | |
return 'playback_rate' == e.name; | |
}); | |
player.listenTo(player, Clappr.Events.PLAYER_PLAY, function (e) { | |
o && clearInterval(o), | |
(o = setInterval(function () { | |
l && | |
1 < +l.selectedRate && | |
+(player.getDuration() - player.getCurrentTime()) < 10 && | |
l.setSelectedRate('1.0'); | |
}, 1e3)); | |
}), | |
player.on(Clappr.Events.PLAYER_PAUSE, function (e) { | |
clearInterval(o), (o = null); | |
}), | |
player.on(Clappr.Events.PLAYER_STOP, function (e) { | |
clearInterval(o), (o = null); | |
}), | |
p && p.event && p.event.has_banners | |
? 'number' != typeof p.event.has_banners | |
? window.player.getPlugin('adv-banners').disable() | |
: Boolean(p.event.has_banners) | |
? window.player.getPlugin('adv-banners').enable() | |
: window.player.getPlugin('adv-banners').disable() | |
: window.player.getPlugin('adv-banners').disable(), | |
((p.event && | |
p.event.has_multicam && | |
(void 0 === p.multicam || !1 !== p.multicamJSON.parse(p.multicam))) || | |
(void 0 !== p.multicam && JSON.parse(p.multicam))) && | |
!p.isMobile && | |
(window.initializeDoublePlayer( | |
player, | |
(p.event && !!p.event.has_multicam) || !!JSON.parse(p.multicam) | |
), | |
(multicamOn = !1)), | |
document.addEventListener('keydown', function (e) { | |
e.shiftKey && | |
(39 === e.which && player.seek(player.getCurrentTime() + 5), | |
37 === e.which && player.seek(player.getCurrentTime() - 5)); | |
}), | |
$('div[data-player]') | |
.first() | |
.append( | |
'<div id="thumbnail-player-track"><div id="thumbnail-player"><div class="thumbnail-times"><span class="thumbnail-seek-time"></span><span class="thumbnail-duration"></span></div></div></div>' | |
), | |
clappr_debug && | |
player.once(Clappr.Events.PLAYER_PLAY, function () { | |
$('body').append( | |
'<div id="chunkContainer"><span>Current chunk: </span><span id="chunkNum">N\\A</span></div>' | |
); | |
var n = /\/(\d+.ts)/; | |
'object' == typeof player.core.getCurrentPlayback()._hls && | |
'function' == typeof player.core.getCurrentPlayback()._hls.on && | |
player.core | |
.getCurrentPlayback() | |
._hls.on('hlsFragChanged', function (e, t) { | |
var r = t.frag.url.match(n); | |
$('#chunkNum').text(r[r.length - 1]), console.log(t.frag.url); | |
}); | |
}); | |
var d = $('[data-controls]'), | |
c = ($('.bar-container[data-seekbar]'), $('.bar-hover')), | |
u = $('#thumbnail-player-track'); | |
u.css('bottom', d.height() + c.height() + 'px'); | |
var _ = $('.thumbnail-seek-time'), | |
g = $('.thumbnail-duration'), | |
v = $('#thumbnail-player'), | |
h = $('.thumbnail-times'), | |
m = v.height() + 10, | |
f = $('#hypercomments_widget'); | |
f.on('mousemove', function () { | |
player.core.mediaControl.show(); | |
}); | |
var w = !1; | |
function y() { | |
var e = $('div[data-player]').height(), | |
r = { | |
playerWidth: 300 <= $('div[data-player]').width(), | |
playerHeight: 240 <= e, | |
internetSpeed: 1 < url.server.speed, | |
supportedBrowser: !mobileBrowserRegex.test(navigator.userAgent), | |
noFlash: 'flashls' !== player.core.getCurrentPlayback().name, | |
dvrEnabled: p.event && 0 !== p.event.use_dvr, | |
inSingleView: !( | |
(p.event && | |
p.event.has_multicam && | |
(void 0 === p.multicam || | |
!1 !== p.multicamJSON.parse(p.multicam))) || | |
(void 0 !== p.multicam && JSON.parse(p.multicam)) | |
), | |
}, | |
t = !!p.preview || (p.event && !!p.event.preview && !(!1 === p.preview)), | |
n = (p.event && !1 === p.event.preview && !p.preview) || !1 === p.preview; | |
return ( | |
(Object.keys(r).reduce(function (e, t) { | |
return e && r[t]; | |
}, !0) || | |
t) && | |
!n | |
); | |
} | |
function b() { | |
var s, i; | |
$('#thumbnail-zone').css('height', d.height() + c.height() + m), | |
$('[data-settings-menu]').on('click', function (e) { | |
(settingsOpen = | |
'none' !== $('[data-settings-menu] .container').css('display')), | |
l(); | |
}), | |
$('[data-playback-rate-select]').on('click', function (e) { | |
(speedSelectOpen = | |
'none' !== $('[data-playback-rate-select] ul').css('display')), | |
l(); | |
}), | |
$('#player > [data-player] > .media-control > .seek-time').addClass( | |
'hidden' | |
), | |
u.css('bottom', d.height() + c.height() + 'px'); | |
var a = !1, | |
o = !0; | |
(thumbnailPlayer = createThumbnailPlayer()), | |
v.on('click', function () { | |
var e = thumbnailPlayer.getCurrentTime(); | |
player.seek(e); | |
}), | |
thumbnailPlayer.on(Clappr.Events.PLAYER_ENDED, function () { | |
(o = !0), l(); | |
}); | |
var r = !1; | |
function n(e) { | |
!e.pageX && window.event && (e.pageX = window.event.pageX), | |
!e.pageY && window.event && (e.pageY = window.event.pageY), | |
e.pageY < u[0].offsetTop && | |
(l(), (speedSelectOpen = settingsOpen = !1)); | |
} | |
function l() { | |
clearInterval(i), | |
a && | |
((a = !1), | |
$('#thumbnail-player-track').css({ | |
'pointer-events': 'none', | |
opacity: 0, | |
}), | |
thumbnailPlayer && | |
(s = setTimeout(function () { | |
thumbnailPlayer && | |
thumbnailPlayer.isPlaying() && | |
thumbnailPlayer.stop(), | |
(o = !0); | |
}, 3e3)), | |
v.fadeOut(350), | |
h.fadeOut(350)); | |
} | |
function p() { | |
_.html( | |
$( | |
'#player > [data-player] > .media-control > .seek-time span:first' | |
).html() | |
); | |
var e = $('.seek-time span:nth-child(2)'); | |
g.html(e.html()), g.css('display', e.css('display')); | |
} | |
(bindThumbnailPlayer = function (e) { | |
var t; | |
e.listenTo(e, Clappr.Events.PLAYER_PLAY, function (e) { | |
$('[data-fragment-dot="true"]').on('mouseenter', l); | |
}), | |
e.listenTo( | |
e.core.mediaControl, | |
Clappr.Events.MEDIACONTROL_MOUSEMOVE_SEEKBAR, | |
function (e) { | |
!settingsOpen && | |
!speedSelectOpen && | |
w && | |
r && | |
(function (e) { | |
clearTimeout(s), | |
(d = $('[data-controls]')), | |
$('.bar-container[data-seekbar]'), | |
$('#thumbnail-player-track').css({ | |
height: m + 'px', | |
'pointer-events': 'all', | |
opacity: 1, | |
}), | |
(a = a || !0); | |
var t = $('div[data-player] .container').width() - v.width(), | |
r = Math.max(0, e.clientX - v.width() / 2); | |
(r = Math.min(r, t)), v.css({ left: r, top: '5px' }); | |
var n = toSeconds($('.seek-time:last span:first').html()); | |
o | |
? (thumbnailPlayer.play(), | |
thumbnailPlayer.once( | |
Clappr.Events.PLAYER_PLAY, | |
function () { | |
(o = !1), thumbnailPlayer.seek(n); | |
} | |
)) | |
: thumbnailPlayer.seek(n); | |
clearInterval(i), | |
(i = setInterval(p, 500)), | |
v.fadeIn(250), | |
h.fadeIn(250); | |
})(e); | |
} | |
), | |
e.listenTo( | |
e.core.mediaControl, | |
Clappr.Events.MEDIACONTROL_SHOW, | |
function () { | |
r || | |
(clearTimeout(t), | |
(t = setTimeout(function () { | |
r = !0; | |
}, 100)), | |
u.css({ | |
bottom: | |
$('[data-controls]').height() + | |
$('.bar-hover').height() + | |
'px', | |
transition: 'opacity 250ms, bottom 400ms ease-in-out', | |
})); | |
} | |
), | |
e.listenTo( | |
e.core.mediaControl, | |
Clappr.Events.MEDIACONTROL_HIDE, | |
function (e) { | |
clearTimeout(t), | |
(r = !1), | |
u.css({ | |
bottom: 0, | |
transition: 'opacity 250ms, bottom 300ms ease-out', | |
}), | |
(speedSelectOpen = settingsOpen = !1); | |
} | |
), | |
e.on(Clappr.Events.PLAYER_FULLSCREEN, l), | |
e.on(Clappr.Events.PLAYER_ENDED, l), | |
$(window).on('resize', debounce(l, 50)), | |
$('[data-player]').first().on('mouseleave', l), | |
u.on('mouseleave', n); | |
})(player); | |
} | |
!(function e() { | |
if (!url.server || !url.server.speed) return void setTimeout(e, 500); | |
w = y(); | |
w && b(); | |
})(), | |
$(window).on( | |
'resize', | |
debounce(function () { | |
(w = y()), | |
!thumbnailPlayer && w && b(), | |
$(window).width() < 800 && | |
(player.core.mediaControl.isVisible() && | |
f.css('height', 'calc(100% - 50px)'), | |
f.css( | |
'transition', | |
'right 400ms, opacity 400ms, height 380ms ease-in-out, width 400ms, background-color 400ms' | |
)); | |
}, 50) | |
), | |
$('[data-settings-menu]').on('click', function (e) { | |
$(window).width() < 800 && | |
((chatOpen = !1), $(window).trigger('chat_close'), reload_background()); | |
}), | |
$('[data-playback-rate-select]').on('click', function () { | |
player.play(), | |
$(window).width() < 800 && | |
((chatOpen = !1), | |
$(window).trigger('chat_close'), | |
reload_background()); | |
}), | |
player.listenTo( | |
player.core.mediaControl, | |
Clappr.Events.MEDIACONTROL_SHOW, | |
function () { | |
$(window).width() < 800 && | |
f.css({ | |
height: 'calc(100% - 40px)', | |
transition: | |
'right 400ms, opacity 400ms, height 380ms ease-in-out, width 400ms, background-color 400ms', | |
}); | |
} | |
), | |
player.listenTo( | |
player.core.mediaControl, | |
Clappr.Events.MEDIACONTROL_HIDE, | |
function () { | |
f.css('height', '100%'), | |
$(window).width() < 800 && | |
f.css( | |
'transition', | |
'right 400ms, opacity 400ms, height 300ms ease-out, width 400ms, background-color 400ms' | |
); | |
} | |
); | |
} | |
function isFullscreen() { | |
return !!( | |
document.webkitFullscreenElement || | |
document.webkitIsFullScreen || | |
document.mozFullScreen || | |
document.msFullscreenElement | |
); | |
} | |
function requestFullscreen(e) { | |
e.requestFullscreen | |
? e.requestFullscreen() | |
: e.webkitRequestFullscreen | |
? e.webkitRequestFullscreen() | |
: e.mozRequestFullScreen | |
? e.mozRequestFullScreen() | |
: e.msRequestFullscreen | |
? e.msRequestFullscreen() | |
: e.querySelector && | |
e.querySelector('video') && | |
e.querySelector('video').webkitEnterFullScreen && | |
e.querySelector('video').webkitEnterFullScreen(); | |
} | |
function cancelFullscreen() { | |
document.exitFullscreen | |
? document.exitFullscreen() | |
: document.webkitCancelFullScreen | |
? document.webkitCancelFullScreen() | |
: document.webkitExitFullscreen | |
? document.webkitExitFullscreen() | |
: document.mozCancelFullScreen | |
? document.mozCancelFullScreen() | |
: document.msExitFullscreen && document.msExitFullscreen(); | |
} | |
function fullscreenEnabled() { | |
return !!( | |
document.fullscreenEnabled || | |
document.webkitFullscreenEnabled || | |
document.mozFullScreenEnabled || | |
document.msFullscreenEnabled | |
); | |
} | |
function toSeconds(e) { | |
var t = e.split(':'); | |
return 0 === t.length | |
? 0 | |
: 1 === t.length | |
? +t[0] | |
: 2 === t.length | |
? 60 * t[0] + +t[1] | |
: 60 * t[0] * 60 + 60 * t[1] + +t[2]; | |
} | |
function createThumbnailPlayer() { | |
var e = { | |
source: p.src, | |
parentId: '#thumbnail-player', | |
autoPlay: !1, | |
loop: !1, | |
width: '100%', | |
height: '100%', | |
disableVideoTagContextMenu: !0, | |
exitFullscreenOnEnd: !1, | |
mute: !0, | |
persistConfig: !1, | |
language: p.lang, | |
allowUserInteraction: !1, | |
hlsjsConfig: { capLevelToPlayerSize: !0, maxMaxBufferLength: 5 }, | |
disableErrorScreen: !0, | |
}, | |
t = new Clappr.Player(e); | |
return (t.options.chromeless = !0), t; | |
} | |
function createButtonComment(e) { | |
var t = document.createElement('div'); | |
t.className = 'hc__custom-button-container'; | |
var r = document.createElement('button'); | |
return ( | |
(r.className = 'hc__custom-button hc__custom-button--fullscreen-enable'), | |
(e = | |
e || | |
function (e) { | |
e.preventDefault(), e.stopPropagation(); | |
}), | |
r.addEventListener('click', e), | |
r.appendChild( | |
(function () { | |
var e = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); | |
e.setAttributeNS(null, 'viewBox', '0 0 24 24'), | |
e.setAttributeNS(null, 'width', 24), | |
e.setAttributeNS(null, 'height', 24); | |
var t = document.createElementNS('http://www.w3.org/2000/svg', 'path'); | |
return ( | |
t.setAttributeNS( | |
null, | |
'd', | |
'M18,16V13H15V22H13V2H15V11H18V8L22,12L18,16M2,12L6,16V13H9V22H11V2H9V11H6V8L2,12Z' | |
), | |
e.appendChild(t), | |
e | |
); | |
})() | |
), | |
t.appendChild(r), | |
t | |
); | |
} | |
var commentsIsFullWidth = !1; | |
function show_chat() { | |
var n = !1; | |
if (!p.chat) { | |
load_chat(), (p.chat = 1); | |
var r = setInterval(function () { | |
var e = document.querySelector('#hypercomments_widget .hc__root'); | |
if (e) { | |
var t = e.querySelector('.hcc.hc__menu__right'); | |
t.parentNode.insertBefore( | |
createButtonComment(function (e) { | |
e.preventDefault(), e.stopPropagation(), (n = !n); | |
var t = document.querySelector('div[data-player]'); | |
if (!(t = t || document.querySelector('#player'))) return !1; | |
n | |
? t.classList.remove('comments') | |
: 800 <= $(window).width() && t.classList.add('comments'); | |
var r = document.querySelector('#hypercomments_widget'); | |
n | |
? (r.style.setProperty('width', '100%'), | |
r.style.setProperty( | |
'background-color', | |
'rgba(250, 250, 255, 1)' | |
)) | |
: (setTimeout(function () { | |
r.style.removeProperty('background-color'); | |
}, 400), | |
r.style.removeProperty('width')); | |
}), | |
t | |
), | |
e.addEventListener('keydown', function (e) { | |
e.stopPropagation(); | |
}), | |
e.addEventListener('keypress', function (e) { | |
e.stopPropagation(); | |
}), | |
e.addEventListener('keyup', function (e) { | |
e.stopPropagation(); | |
}), | |
clearInterval(r); | |
} | |
}, 500); | |
} | |
if (chatOpen) { | |
(chatOpen = !1), $(window).trigger('chat_close'); | |
var e = document.querySelector('#hypercomments_widget'); | |
e && | |
(setTimeout(function () { | |
e.style.removeProperty('background-color'); | |
}, 400), | |
e.style.removeProperty('width')); | |
} else (chatOpen = !0), $(window).trigger('chat_open'); | |
player && | |
player.getPlugin && | |
player.getPlugin('episodes-navigation-container') && | |
player.getPlugin('episodes-navigation-container').isOpened && | |
player.getPlugin('episodes-navigation-container').slide(), | |
reload_background(), | |
player && | |
player.getPlugin && | |
player.getPlugin('episodes-media-control') && | |
!isFullscreen() && | |
setTimeout(player.getPlugin('episodes-media-control').rerender, 500), | |
player && | |
'function' == typeof player.getPlugin && | |
player.getPlugin('adv-banners') && | |
setTimeout(player.getPlugin('adv-banners').recalculate, 500); | |
} | |
!(function () { | |
if (!window.p.legacy) { | |
var e = { | |
Amaya: 0, | |
'Android Browser': 4, | |
Arora: 0, | |
Avant: 0, | |
Baidu: 0, | |
Blazer: 0, | |
Bolt: 0, | |
Camino: 0, | |
Chimera: 0, | |
Chrome: 47, | |
Chromium: 49, | |
'Comodo Dragon': 0, | |
Conkeror: 0, | |
Dillo: 0, | |
Dolphin: 0, | |
Doris: 0, | |
Edge: 14, | |
Epiphany: 0, | |
Fennec: 0, | |
Firebird: 0, | |
Firefox: 52, | |
Flock: 0, | |
GoBrowser: 0, | |
iCab: 0, | |
'ICE Browser': 0, | |
IceApe: 0, | |
IceCat: 0, | |
IceDragon: 0, | |
Iceweasel: 0, | |
IE: 11, | |
'IE Mobile': 11, | |
Iron: 0, | |
Jasmine: 0, | |
'K-Meleon': 0, | |
Konqueror: 0, | |
Kindle: 0, | |
Links: 0, | |
Lunascape: 0, | |
Lynx: 0, | |
Maemo: 0, | |
Maxthon: 0, | |
Midori: 0, | |
Minimo: 0, | |
'MIUI Browser': 0, | |
Safari: 9, | |
'Mobile Safari': 9, | |
Mosaic: 0, | |
Mozilla: 52, | |
Netfront: 0, | |
Netscape: 0, | |
NetSurf: 0, | |
Nokia: 0, | |
OmniWeb: 0, | |
Opera: 36, | |
'Opera Mini': 43, | |
'Opera Mobi': 43, | |
'Opera Tablet': 43, | |
PhantomJS: 0, | |
Phoenix: 0, | |
Polaris: 0, | |
QQBrowser: 0, | |
RockMelt: 0, | |
'Samsung Browser': 0, | |
Silk: 0, | |
Skyfire: 0, | |
SeaMonkey: 0, | |
SlimBrowser: 0, | |
Swiftfox: 0, | |
Tizen: 0, | |
UCBrowser: 0, | |
Vivaldi: 0, | |
w3m: 0, | |
WeChat: 0, | |
Yandex: 17, | |
}, | |
t = new UAParser().getBrowser(); | |
try { | |
$.ajax({ | |
url: | |
'https://logs-01.loggly.com/inputs/9decf10b-c070-4076-9e36-5f5543929a61/tag/http/', | |
data: JSON.stringify({ | |
date: new Date(), | |
type: 'PLAYER:Browser', | |
browser: t, | |
location: window.location, | |
userAgent: navigator.userAgent, | |
}), | |
method: 'POST', | |
dataType: 'json', | |
success: function (e) { | |
return !0; | |
}, | |
error: function (e) { | |
console.log('Network Error', e); | |
}, | |
}); | |
} catch (e) {} | |
if ( | |
t.name && | |
t.version && | |
e[t.name] && | |
t.version.split('.')[0] < e[t.name] | |
) { | |
var r = '#f25648', | |
n = '#ffffff', | |
s = '/outdatedbrowser/lang/' + p.lang + '.html', | |
i = document.getElementById('outdated'); | |
(o = s), | |
!void ( | |
(l = (function () { | |
var t = !1; | |
if (window.XMLHttpRequest) t = new XMLHttpRequest(); | |
else if (window.ActiveXObject) | |
try { | |
t = new ActiveXObject('Msxml2.XMLHTTP'); | |
} catch (e) { | |
try { | |
t = new ActiveXObject('Microsoft.XMLHTTP'); | |
} catch (e) { | |
t = !1; | |
} | |
} | |
return t; | |
})()) && | |
((l.onreadystatechange = function () { | |
var e, t; | |
(e = l), | |
(t = document.getElementById('outdated')), | |
4 == e.readyState && | |
(200 == e.status || 304 == e.status | |
? (t.innerHTML = e.responseText) | |
: (t.innerHTML = a), | |
(function () { | |
var e = document.getElementById('btnCloseUpdateBrowser'), | |
t = document.getElementById('btnUpdateBrowser'); | |
(i.style.backgroundColor = r), | |
(i.style.color = n), | |
(i.children[0].style.color = n), | |
(i.children[1].style.color = n), | |
(t.style.color = n), | |
t.style.borderColor && (t.style.borderColor = n); | |
(e.style.color = n), | |
(e.onmousedown = function () { | |
return !(i.style.display = 'none'); | |
}), | |
(t.onmouseover = function () { | |
(this.style.color = r), (this.style.backgroundColor = n); | |
}), | |
(t.onmouseout = function () { | |
(this.style.color = n), (this.style.backgroundColor = r); | |
}); | |
})()); | |
}), | |
l.open('GET', o, !0), | |
l.send(null)) | |
), | |
$('#outdated').css('display', 'block'); | |
} | |
var a = | |
'<h6>Your browser is out-of-date!</h6><p>Update your browser to view this website correctly. <a id="btnUpdateBrowser" href="http://outdatedbrowser.com/">Update my browser now </a></p><p class="last"><a href="#" id="btnCloseUpdateBrowser" title="Close">×</a></p>'; | |
} | |
var o, l; | |
})(); | |
var voted = !1, | |
currentPoll = null, | |
isShowResultActive = !1, | |
choiceChars = ['A', 'B', 'C', 'D', 'E', 'F', 'G']; | |
function createPollThanks() { | |
return ( | |
'<div class="polls-overlay_voted"><div class="polls-overlay__title_voted"><h2>' + | |
('en' === p.lang ? 'Thank you!' : 'Спасибо!') + | |
'</h2></div><div class="polls-overlay__voted-message">' + | |
('en' === p.lang | |
? 'Your vote has been counted' | |
: 'Ваш голос засчитан') + | |
'</div><div class="polls-overlay__close-btn"><div class="voted-btn" onclick="checkShowResultsState(); event.stopPropagation()">' + | |
('en' === p.lang ? 'Close' : 'Закрыть') + | |
'</div></div></div>' | |
); | |
} | |
function createPollForm(e, t) { | |
p.lang; | |
return ( | |
'<div class="polls-overlay row"><div class="polls-overlay__title col-md-12"><h2>' + | |
e.text + | |
'</h2></div><div class="polls-overlay__choices col-xs-12 row">' + | |
t + | |
'</div></div>' | |
); | |
} | |
function createPollChoice(e, t) { | |
return ( | |
'<div class="choice col-md-12 row d-flex" onclick="votePoll(' + | |
e.poll_id + | |
', ' + | |
e.id + | |
', ' + | |
t + | |
'); event.stopPropagation()"><div class="choice__text col-lg-12 text-center" title="' + | |
e.text + | |
'">' + | |
e.text + | |
'</div></div>' | |
); | |
} | |
function createPollResult(e, t, r) { | |
return ( | |
'<div class="polls-overlay polls-overlay_results"><div class="polls-overlay__title"><h2>' + | |
('en' == p.lang | |
? 'Voting results' | |
: 'Результаты голосования') + | |
'</h2></div><div class="polls-overlay__question"><h3>' + | |
e + | |
'</h3></div><div class="polls-overlay__choices col-xs-12">' + | |
t + | |
'</div><div class="polls-overlay__close-btn col-xs-12 d-flex justify-content-center align-items-center"><div class="voted-btn" onclick="closePollResultsForm(' + | |
r + | |
'); event.stopPropagation()">' + | |
('en' == p.lang ? 'Close' : 'Закрыть') + | |
'</div></div></div>' | |
); | |
} | |
function createPollResultChoice(e) { | |
return ( | |
'<div class="choice col-xs-12"><div class="choice__label"><h1>' + | |
e.char + | |
'</h1></div><div class="choice__text" title="' + | |
e.text + | |
'">' + | |
e.text + | |
'</div><div class="choice__votes"><div class="percent">' + | |
e.percent + | |
'%</div><div class="bar" style="width: ' + | |
e.percent + | |
'%"></div></div></div>' | |
); | |
} | |
function createPollWidget(e, t) { | |
return ( | |
'<div class="polls-overlay-widget"><div class="widget-close-btn" onclick="closePollWidget(' + | |
e + | |
'); event.stopPropagation()">вњ–</div><div class="widget-choices">' + | |
t + | |
'</div></div>' | |
); | |
} | |
function createPollWidgetChoices(e) { | |
var t = e.char, | |
r = e.percent / 2; | |
return ( | |
'<div class="widget-choice" title="' + | |
e.text + | |
'"><div class="choice-bar" style="height: ' + | |
r + | |
'px"></div><div class="choice-char">' + | |
t + | |
'</div></div>' | |
); | |
} | |
function addPercentToChoices(e) { | |
var n = e.reduce(function (e, t) { | |
return e + Number(t.votes); | |
}, 0); | |
return (e = e.map(function (e, t) { | |
var r = parseInt((e.votes / (n / 100)).toFixed(2)); | |
return ( | |
isNaN(r) ? (e.percent = 0) : (e.percent = r), (e.char = choiceChars[t]), e | |
); | |
})); | |
} | |
function addCharToChoices(e) { | |
return (e = (e = e.sort(function (e, t) { | |
return e.id - t.id; | |
})).map(function (e, t) { | |
return (e.char = choiceChars[t]), e; | |
})); | |
} | |
function votePoll(e, t, r) { | |
pollVoteId.push(e), | |
writeStorage('pollVoteId' + p.event.code, JSON.stringify(pollVoteId)), | |
$('.polls-overlay__choices .choice').prop('disabled', !0), | |
$('.polls-overlay').remove(), | |
$.ajax({ | |
url: '/poll/vote', | |
method: 'POST', | |
data: { pollId: e, choiceId: t }, | |
success: function (e) { | |
$('#player .container').first().append(createPollThanks()); | |
}, | |
}); | |
} | |
function checkShowResultsState() { | |
if (($('.polls-overlay_voted').remove(), currentPoll.poll_show_results)) { | |
voted = !0; | |
for ( | |
var e = '', | |
t = addPercentToChoices(currentPoll.choices), | |
r = 0, | |
n = t.length; | |
r < n; | |
r++ | |
) { | |
e += createPollWidgetChoices(t[r]); | |
} | |
var s = createPollWidget(currentPoll.id, e); | |
$('#player .container').first().append(s), | |
(isPollOverlayEnabled = !0), | |
checkCurrentPollState(currentPoll); | |
} else isPollOverlayEnabled = !1; | |
} | |
function closePollResultsForm(e) { | |
$('.polls-overlay').remove(); | |
var t = []; | |
try { | |
t = JSON.parse(readStorage('pollResultId' + p.event.code)) || []; | |
} catch (e) { | |
t = []; | |
} | |
t.push(e), | |
writeStorage('pollResultId' + p.event.code, JSON.stringify(t)), | |
-1 === pollRecordResultId.indexOf(e) && pollRecordResultId.push(e), | |
(isShowResultActive = isPollOverlayEnabled = !1), | |
(currentPoll = null); | |
} | |
function closePollWidget(e) { | |
$('.polls-overlay-widget').remove(); | |
var t = []; | |
try { | |
t = JSON.parse(readStorage('pollWidgetId' + p.event.code)) || []; | |
} catch (e) { | |
t = []; | |
} | |
t.push(e), writeStorage('pollWidgetId' + p.event.code, JSON.stringify(t)); | |
} | |
function pollFormInit(e) { | |
for ( | |
var t = (currentPoll = e).poll_show_results, | |
r = addCharToChoices(e.choices), | |
n = [], | |
s = 0, | |
i = r.length; | |
s < i; | |
s++ | |
) { | |
var a = r[s]; | |
n.push(createPollChoice(a, t)); | |
} | |
var o = n.join(''); | |
1 === p.event.is_live && | |
($('.polls-overlay').remove(), | |
$('#player').prepend(createPollForm(e, o)), | |
$('.polls-overlay').flowtype({ minFont: 10, maxFont: 40, fontRatio: 50 })); | |
} | |
function showResultsForm(e, t, r) { | |
$('.polls-overlay-widget').remove(), | |
currentPoll && $('.polls-overlay').remove(), | |
isShowResultActive && $('.polls-overlay_results').remove(); | |
for (var n = '', s = 0, i = t.length; s < i; s++) { | |
n += createPollResultChoice(t[s]); | |
} | |
$('#player .container').first().append(createPollResult(e, n, r)), | |
(isShowResultActive = !0); | |
} | |
function getCurrentTime(e, t) { | |
var r; | |
return ( | |
(1 != | |
+(r = | |
1 == +e.event.use_dvr | |
? parseInt(t.getCurrentTime()) | |
: parseInt(e.event.duration)) && | |
isFinite(r)) || | |
(r = parseInt(e.event.edatadur)), | |
r | |
); | |
} | |
function checkCurrentPollState(t) { | |
var e = p.event.polls; | |
((t = e.filter(function (e) { | |
return e.id === t.id; | |
})[0]).choices = t.choices.sort(function (e, t) { | |
return e.id - t.id; | |
})), | |
(t.choices = addPercentToChoices(t.choices)); | |
var r = parseInt(t.poll_show_stop); | |
if (isNaN(r)) { | |
for (var n = '', s = t.choices, i = 0, a = s.length; i < a; i++) { | |
n += createPollWidgetChoices(s[i]); | |
} | |
$('.widget-choices').empty(), | |
$('#player').find('.widget-choices').append(n); | |
} | |
isNaN(r) || | |
isShowResultActive || | |
(showResultsForm(t.text, t.choices, t.id), (isPollOverlayEnabled = !1)), | |
$('.polls-overlay').flowtype({ minFont: 10, maxFont: 40, fontRatio: 50 }); | |
} | |
function checkPollsState(e) { | |
1 === p.event.is_live | |
? (function (e) { | |
if ( | |
e.every(function (e) { | |
var t = parseInt(e.id), | |
r = parseInt(e.poll_show_start), | |
n = parseInt(e.poll_show_stop), | |
s = parseInt(e.poll_show_results), | |
i = getCurrentTime(p, player), | |
a = [], | |
o = [], | |
l = []; | |
try { | |
a = JSON.parse(readStorage('pollResultId' + p.event.code)) || []; | |
} catch (e) { | |
a = []; | |
} | |
try { | |
o = JSON.parse(readStorage('pollVoteId' + p.event.code)) || []; | |
} catch (e) { | |
o = []; | |
} | |
try { | |
l = JSON.parse(readStorage('pollWidgetId' + p.event.code)) || []; | |
} catch (e) { | |
l = []; | |
} | |
return p.isMobile && 1 == +p.event.is_live && 1 == +p.event.use_dvr | |
? !!( | |
(isNaN(r) && isNaN(n)) || | |
(!isNaN(n) && 0 === s) || | |
i < r || | |
(!isNaN(n) && 1 === s && -1 !== a.indexOf(t)) || | |
(!isNaN(n) && 1 === s && -1 === a.indexOf(t)) | |
) || | |
(!( | |
!isNaN(n) && | |
1 === s && | |
-1 === a.indexOf(t) && | |
n <= i && | |
i <= n + 60 | |
) && | |
(!!( | |
(isNaN(n) && 1 === s && -1 === o.indexOf(t) && i < r) || | |
(isNaN(n) && | |
1 === s && | |
-1 !== o.indexOf(t) && | |
-1 !== l.indexOf(t)) | |
) || | |
(!( | |
isNaN(n) && | |
1 === s && | |
-1 !== o.indexOf(t) && | |
-1 === l.indexOf(t) && | |
r <= i | |
) && | |
((!isNaN(n) && i < r) || | |
!isNaN(n) || | |
-1 !== o.indexOf(e.id) || | |
-1 !== a.indexOf(e.id) || | |
(!isNaN(n) && i < n))))) | |
: !!( | |
(isNaN(r) && isNaN(n)) || | |
(!isNaN(n) && 0 === s) || | |
i < r || | |
(!isNaN(n) && 1 === s && -1 !== a.indexOf(t)) || | |
(!isNaN(n) && 1 === s && -1 === a.indexOf(t) && n + 60 < i) | |
) || | |
(!( | |
!isNaN(n) && | |
1 === s && | |
-1 === a.indexOf(t) && | |
n <= i && | |
i <= n + 60 | |
) && | |
(!!( | |
(isNaN(n) && 1 === s && -1 === o.indexOf(t) && i < r) || | |
(isNaN(n) && | |
1 === s && | |
-1 !== o.indexOf(t) && | |
-1 !== l.indexOf(t)) | |
) || | |
(!( | |
isNaN(n) && | |
1 === s && | |
-1 !== o.indexOf(t) && | |
-1 === l.indexOf(t) && | |
r <= i | |
) && | |
((!isNaN(n) && i < r) || | |
(!isNaN(n) && n + 60 < i) || | |
-1 !== o.indexOf(e.id) || | |
-1 !== a.indexOf(e.id) || | |
(!isNaN(n) && i < n))))); | |
}) | |
) | |
return ( | |
$('.polls-overlay').remove(), | |
$('.polls-overlay-widget').remove(), | |
(isPollOverlayEnabled = !1) | |
); | |
isPollOverlayEnabled && checkCurrentPollState(currentPoll); | |
for (var t = 0, r = e.length; t < r; t++) { | |
var n = e[t], | |
s = parseInt(n.id), | |
i = parseInt(n.poll_show_start), | |
a = parseInt(n.poll_show_stop), | |
o = parseInt(n.poll_show_results), | |
l = n.text, | |
d = n.choices, | |
c = getCurrentTime(p, player), | |
u = [], | |
_ = [], | |
g = []; | |
try { | |
u = JSON.parse(readStorage('pollResultId' + p.event.code)) || []; | |
} catch (e) { | |
u = []; | |
} | |
try { | |
_ = JSON.parse(readStorage('pollVoteId' + p.event.code)) || []; | |
} catch (e) { | |
_ = []; | |
} | |
try { | |
g = JSON.parse(readStorage('pollWidgetId' + p.event.code)) || []; | |
} catch (e) { | |
g = []; | |
} | |
if ( | |
((I = s), | |
(A = c), | |
(L = i), | |
(R = a), | |
-1 === _.indexOf(I) && isNaN(R) && L <= A) | |
) { | |
if (p.isMobile) { | |
var v = | |
'en' == p.lang | |
? 'Take the survey.' | |
: 'Пройдите опрос.'; | |
alert(v); | |
} | |
pollFormInit(n); | |
} | |
if ( | |
((T = s), | |
(P = a), | |
(E = o), | |
(O = _), | |
(N = g), | |
i <= (x = c) && | |
(isNaN(P) || x < P) && | |
-1 !== O.indexOf(T) && | |
1 === E && | |
-1 === N.indexOf(T)) | |
) { | |
0 !== $('.polls-overlay-widget').length && | |
$('.polls-overlay-widget').remove(); | |
for ( | |
var h = '', | |
m = 0, | |
f = (d = addPercentToChoices(addCharToChoices(d))).length; | |
m < f; | |
m++ | |
) { | |
h += createPollWidgetChoices(d[m]); | |
} | |
var w = createPollWidget(s, h); | |
$('#player .container').first().append(w); | |
} | |
(y = s), | |
(b = c), | |
(k = a), | |
(S = o), | |
(C = u), | |
!isNaN(k) && | |
k <= b && | |
b <= k + 60 && | |
1 === S && | |
-1 === C.indexOf(y) && | |
showResultsForm( | |
l, | |
(d = addPercentToChoices(addCharToChoices(d))), | |
s | |
); | |
} | |
var y, b, k, S, C, T, x, P, E, O, N, I, A, L, R; | |
$('.polls-overlay').flowtype({ | |
minFont: 10, | |
maxFont: 40, | |
fontRatio: 50, | |
}); | |
})(e) | |
: (function (e) { | |
if ( | |
e.every(function (e) { | |
var t = parseInt(e.id), | |
r = parseInt(e.poll_show_stop), | |
n = getCurrentTime(p, player); | |
return ( | |
!( | |
-1 !== pollRecordResultId.indexOf(t) && | |
!isNaN(r) && | |
r <= n && | |
n <= r + 60 | |
) && | |
(!(-1 === pollRecordResultId.indexOf(t) && !isNaN(r)) || | |
!(!isNaN(r) && r <= n && n <= r + 60)) | |
); | |
}) | |
) | |
return ( | |
$('.polls-overlay_results').remove(), (pollRecordResultId = []) | |
); | |
for (var t = 0, r = e.length; t < r; t++) { | |
var n = e[t], | |
s = parseInt(n.id), | |
i = parseInt(n.poll_show_start), | |
a = parseInt(n.poll_show_stop), | |
o = parseInt(n.poll_show_results), | |
l = getCurrentTime(p, player); | |
if (-1 === pollRecordResultId.indexOf(s) && 0 !== o && !isNaN(a)) { | |
var d = n.text, | |
c = addPercentToChoices(addCharToChoices(n.choices)); | |
!isNaN(a) && a <= l && l <= a + 60 | |
? showResultsForm(d, c, s) | |
: isNaN(a) && i <= l && showResultsForm(d, c, s); | |
} | |
} | |
})(e); | |
} | |
function pollOverlayInit() { | |
var e = p.event.polls; | |
!e || | |
(0 === p.event.is_live && 0 === p.event.use_dvr) || | |
(0 !== e.length && checkPollsState(e)); | |
} | |
var s = { | |
balancerPlaylist: | |
'https://cdn.facecast.io/facecastnet/e5cbe7c1d0e1ebf3033ce63d06bb5d35000003b3da3908007b22554944223a2230222c22556e69717565223a66616c73652c2245787069726573223a343037303939353230307d/bciel4kx32klnmklnozalwxym6oevtbn.m3u8', | |
init: !1, | |
isInternetAccess: !1, | |
errCount: 0, | |
scsCount: 0, | |
reqestCount: 0, | |
}; | |
(s.tmp = s.balancerPlaylist.split('/')), | |
(s.eventId = s.tmp[s.tmp.length - 1]), | |
(s.eventId = s.eventId.substr(0, s.eventId.lastIndexOf('.'))), | |
(s.tmp = void 0); | |
var e = [], | |
scs = []; | |
function init_stat() {} | |
function step() { | |
s.edgePlaylist | |
? s.masterPlaylist | |
? s.chunksPlaylistData | |
? s.chunkList && getChunk() | |
: getChunksPlaylist() | |
: getMasterPlaylist() | |
: getEdgeUrl(); | |
} | |
function renew() { | |
(s.edgePlaylist = void 0), | |
(s.masterPlaylist = void 0), | |
(s.chunksPlaylistData = void 0), | |
(s.chunkList = void 0), | |
step(); | |
} | |
function getServerName(e) { | |
if (e) return e.split('/')[2]; | |
} | |
function getEdgeUrl() { | |
(s.edgeUrlRequestTime = new Date().getTime()), | |
s.reqestCount++, | |
$.ajax({ | |
url: s.balancerPlaylist + '?redirect=false', | |
method: 'GET', | |
dataType: 'text', | |
error: function (t, r) { | |
(e[s.errCount] = { | |
functionName: 'getEdgeUrl', | |
statusCode: t.status, | |
requestTime: s.edgeUrlRequestTime, | |
requestDuration: new Date().getTime() - s.edgeUrlRequestTime, | |
requestId: s.requestId, | |
requestUrl: s.masterPlaylist, | |
server: getServerName(s.balancerPlaylist), | |
eventId: s.eventId, | |
requestCount: s.reqestCount, | |
}), | |
console.log(e[s.errCount]), | |
s.errCount++, | |
setTimeout(function () { | |
s.errDelay++, step(); | |
}, 1e3 * s.errCount); | |
}, | |
success: function (e, t, r) { | |
(s.edgePlaylist = e), | |
(s.requestId = r.getResponseHeader('x-requestid')), | |
(scs[s.scsCount] = { | |
functionName: 'getEdgeUrl', | |
statusCode: r.status, | |
requestTime: s.edgeUrlRequestTime, | |
requestDuration: new Date().getTime() - s.edgeUrlRequestTime, | |
requestId: s.requestId, | |
requestUrl: s.balancerPlaylist, | |
server: getServerName(s.balancerPlaylist), | |
eventId: s.eventId, | |
requestCount: s.reqestCount, | |
requestResult: e, | |
}), | |
console.log(scs[s.scsCount]), | |
s.scsCount++, | |
step(); | |
}, | |
}); | |
} | |
function getMasterPlaylist() { | |
(s.masterPlaylistRequestTime = new Date().getTime()), | |
s.reqestCount++, | |
$.ajax({ | |
url: s.edgePlaylist, | |
method: 'GET', | |
dataType: 'text', | |
error: function (t, r) { | |
(e[s.errCount] = { | |
functionName: 'getMasterPlaylist', | |
statusCode: t.status, | |
requestTime: s.masterPlaylistRequestTime, | |
requestDuration: new Date().getTime() - s.masterPlaylistRequestTime, | |
requestId: s.requestId, | |
requestUrl: s.edgePlaylist, | |
server: getServerName(s.edgePlaylist), | |
eventId: s.eventId, | |
requestCount: s.reqestCount, | |
}), | |
console.log(e[s.errCount]), | |
s.errCount++, | |
setTimeout(function () { | |
s.errDelay++, step(); | |
}, 1e3 * s.errCount); | |
}, | |
success: function (e, t, r) { | |
(s.masterPlaylist = e).split('\n').forEach(function (e) { | |
-1 == e.indexOf('#') && 2 < e.length && (s.chunksPlaylist = e); | |
}), | |
(s.chunksPlaylist = | |
s.edgePlaylist.substr(0, s.edgePlaylist.lastIndexOf('/') + 1) + | |
s.chunksPlaylist), | |
(scs[s.scsCount] = { | |
functionName: 'getMasterPlaylist', | |
statusCode: r.status, | |
requestTime: s.masterPlaylistRequestTime, | |
requestDuration: new Date().getTime() - s.masterPlaylistRequestTime, | |
requestId: s.requestId, | |
requestUrl: s.edgePlaylist, | |
server: getServerName(s.edgePlaylist), | |
eventId: s.eventId, | |
requestCount: s.reqestCount, | |
requestResult: s.chunksPlaylist, | |
}), | |
console.log(scs[s.scsCount]), | |
s.scsCount++, | |
step(); | |
}, | |
}); | |
} | |
function getChunksPlaylist() { | |
(s.chunksPlaylistRequestTime = new Date().getTime()), | |
s.reqestCount++, | |
(s.chunk_path = s.chunksPlaylist.substr( | |
0, | |
s.chunksPlaylist.lastIndexOf('/') + 1 | |
)), | |
$.ajax({ | |
url: s.chunksPlaylist, | |
method: 'GET', | |
dataType: 'text', | |
error: function (t, r) { | |
(e[s.errCount] = { | |
functionName: 'getChunksPlaylist', | |
statusCode: t.status, | |
requestTime: s.chunksPlaylistRequestTime, | |
requestDuration: new Date().getTime() - s.chunksPlaylistRequestTime, | |
requestId: s.requestId, | |
requestUrl: s.chunksPlaylist, | |
server: getServerName(s.chunksPlaylist), | |
eventId: s.eventId, | |
requestCount: s.reqestCount, | |
}), | |
console.log(e[s.errCount]), | |
s.errCount++, | |
setTimeout(function () { | |
s.errDelay++, step(); | |
}, 1e3 * s.errCount); | |
}, | |
success: function (e, t, r) { | |
var n = (s.chunksPlaylistData = e).split('\n'), | |
i = []; | |
n.forEach(function (e) { | |
-1 == e.indexOf('#') && 2 < e.length && i.push(e); | |
}), | |
(s.chunkList = i), | |
(scs[s.scsCount] = { | |
functionName: 'getChunksPlaylist', | |
statusCode: r.status, | |
requestTime: s.chunksPlaylistRequestTime, | |
requestDuration: new Date().getTime() - s.chunksPlaylistRequestTime, | |
requestId: s.requestId, | |
requestUrl: s.chunksPlaylist, | |
server: getServerName(s.chunksPlaylist), | |
eventId: s.eventId, | |
requestCount: s.reqestCount, | |
requestResult: i.length + ' lines', | |
}), | |
console.log(scs[s.scsCount]), | |
s.scsCount++, | |
step(); | |
}, | |
}); | |
} | |
function getChunk() { | |
(s.chunkRequestTime = new Date().getTime()), s.reqestCount++; | |
var t = Math.round(Math.random(1) * s.chunkList.length), | |
n = s.chunk_path + s.chunkList[t]; | |
$.ajax({ | |
url: n, | |
method: 'GET', | |
dataType: 'text', | |
error: function (t, r) { | |
(e[s.errCount] = { | |
functionName: 'getChunk', | |
statusCode: t.status, | |
requestTime: s.chunkRequestTime, | |
requestDuration: new Date().getTime() - s.chunkRequestTime, | |
requestId: s.requestId, | |
requestUrl: n, | |
server: getServerName(n), | |
eventId: s.eventId, | |
requestCount: s.reqestCount, | |
}), | |
console.log(e[s.errCount]), | |
s.errCount++, | |
setTimeout(function () { | |
s.errDelay++, step(); | |
}, 1e3 * s.errCount); | |
}, | |
success: function (e, t, r) { | |
(s.chunksDataSize = e.length), | |
(scs[s.scsCount] = { | |
functionName: 'getChunk', | |
statusCode: r.status, | |
requestTime: s.chunkRequestTime, | |
requestDuration: new Date().getTime() - s.chunkRequestTime, | |
requestId: s.requestId, | |
requestUrl: n, | |
server: getServerName(n), | |
eventId: s.eventId, | |
requestCount: s.reqestCount, | |
requestResult: e.length + ' bytes', | |
}), | |
console.log(scs[s.scsCount]), | |
s.scsCount++; | |
}, | |
}); | |
} | |
!(function () { | |
'use strict'; | |
var e = prefix + 'collector.facecast.net/v1/register_visit', | |
t = prefix + 'collector.facecast.net/v1/register_visit_events', | |
r = 1e4, | |
n = 50, | |
s = 2e3, | |
i = !0, | |
a = !0, | |
o = !0, | |
l = !0, | |
d = null, | |
c = 10, | |
u = [], | |
_ = [], | |
g = [], | |
v = []; | |
function h() { | |
return ((65536 * (1 + Math.random())) | 0).toString(16).substring(1); | |
} | |
(window.visit_id = | |
h() + h() + '-' + h() + '-' + h() + '-' + h() + '-' + h() + h() + h()), | |
-1 == document.location.href.indexOf('no_analytics') && | |
(clearTimeout(window.RVST), | |
(window.RVST = setTimeout(function t() { | |
p && | |
p.event && | |
(c = +p.event.analytics_push_interval | |
? +p.event.analytics_push_interval | |
: 10); | |
if (readStorage('reg_visits')) | |
try { | |
u = JSON.parse(readStorage('reg_visits')); | |
} catch (e) { | |
u = []; | |
} | |
else u = []; | |
u = u.filter(function (e) { | |
var t = g.map(function (e) { | |
return e.visit_id; | |
}), | |
r = g.map(function (e) { | |
return e.event_code; | |
}), | |
n = g.map(function (e) { | |
return e.viewer_id; | |
}); | |
return ( | |
-1 === t.indexOf(e.visit_id) || | |
-1 === r.indexOf(e.event_code) || | |
-1 === n.indexOf(e.viewer_id) | |
); | |
}); | |
writeStorage('reg_visits', JSON.stringify(u)); | |
g = []; | |
u.length && | |
$.ajax({ | |
url: e, | |
data: JSON.stringify(u), | |
method: 'POST', | |
success: function (e) { | |
u.forEach(function (e) { | |
g.push({ | |
visit_id: e.visit_id, | |
event_code: e.event_code, | |
viewer_id: e.viewer_id, | |
}); | |
}), | |
clearTimeout(window.RVST), | |
(window.RVST = setTimeout(t, 1e3 * c)); | |
}, | |
error: function (e) { | |
clearTimeout(window.RVST), | |
(window.RVST = setTimeout(t, 1e3 * c)), | |
console.log('Network Error', e); | |
}, | |
}); | |
u.length || | |
(clearTimeout(window.RVEST), (window.RVEST = setTimeout(x, 1e3 * c))); | |
}, 1e3 * c)), | |
clearTimeout(window.RVEST), | |
(window.RVEST = setTimeout(x, 1e3 * c)), | |
clearTimeout(window.SVET), | |
(window.SVET = setTimeout(T, r))); | |
var m = { | |
time: String(null), | |
user_agent: navigator.userAgent, | |
platform: navigator.platform, | |
viewer_id: String(null), | |
visit_id: window.visit_id, | |
event_id: String(null), | |
event_code: String(null), | |
password: String(null), | |
url: String(null), | |
servers: null, | |
}, | |
f = { | |
type: 'analytics', | |
trigger: String(null), | |
visit_id: window.visit_id, | |
viewer_id: String(null), | |
event_id: String(null), | |
event_code: String(null), | |
password: String(null), | |
resolution: null, | |
start: null, | |
end: null, | |
}, | |
w = { | |
type: 'analytics', | |
trigger: 'WINDOW_CLOSED', | |
visit_id: window.visit_id, | |
viewer_id: String(null), | |
event_id: String(null), | |
event_code: String(null), | |
password: String(null), | |
resolution: null, | |
start: null, | |
end: null, | |
}; | |
function y() { | |
if (void 0 !== player && void 0 !== p && void 0 !== p.event) { | |
if ( | |
(7 == +p.event.view_mode_id || | |
4 == +p.event.view_mode_id || | |
5 == +p.event.view_mode_id || | |
6 == +p.event.view_mode_id) && | |
!p.key | |
) | |
return void setTimeout(y, 1e3); | |
if ( | |
((7 != +p.event.view_mode_id && | |
4 != +p.event.view_mode_id && | |
5 != +p.event.view_mode_id && | |
6 != +p.event.view_mode_id) || | |
!p.key || | |
((m.password = p.key), (f.password = p.key), (w.password = p.key)), | |
get_event(), | |
(!( | |
-1 !== | |
[ | |
'iPad Simulator', | |
'iPhone Simulator', | |
'iPod Simulator', | |
'iPad', | |
'iPhone', | |
'iPod', | |
].indexOf(navigator.platform) || | |
(-1 !== navigator.userAgent.indexOf('Mac') && | |
'ontouchend' in document) | |
) && | |
+p.event.use_dvr) || | |
p.event.has_polls || | |
(clearInterval(window.eDataUpdateInterval), | |
(window.eDataUpdateInterval = setInterval(get_event, 3e4))), | |
(m.time = new Date().toISOString()), | |
(m.viewer_id = p.guid), | |
(m.event_id = p.event.id ? String(p.event.id) : String(null)), | |
(m.event_code = p.event.code ? String(p.event.code) : String(null)), | |
(m.url = url), | |
(m.servers = servers), | |
readStorage('reg_visits')) | |
) | |
try { | |
(u = JSON.parse(readStorage('reg_visits'))).push(m); | |
} catch (e) { | |
(u = []).push(m); | |
} | |
else (u = []).push(m); | |
writeStorage('reg_visits', JSON.stringify(u)), | |
(f.viewer_id = p.guid), | |
(w.viewer_id = p.guid), | |
(f.event_id = p.event.id ? String(p.event.id) : String(null)), | |
(w.event_id = p.event.id ? String(p.event.id) : String(null)), | |
(f.event_code = p.event.code ? String(p.event.code) : String(null)), | |
(w.event_code = p.event.code ? String(p.event.code) : String(null)), | |
player.core | |
.getCurrentPlayback() | |
.on(Clappr.Events.PLAYBACK_PLAY_INTENT, function (e) { | |
(f.trigger = 'PLAYER_PLAY'), | |
(i = !1), | |
setTimeout(function () { | |
i = !0; | |
}, 1e3); | |
}), | |
player.on(Clappr.Events.PLAYER_PAUSE, function (e) { | |
o && | |
setTimeout(function () { | |
(d = 'PLAYER_PAUSE'), T(); | |
}, 1e3); | |
}), | |
player.on(Clappr.Events.PLAYER_SEEK, function (e) { | |
l && | |
((l = o = i = a = !1), | |
setTimeout(function () { | |
(d = 'PLAYER_SEEK'), (f.start = C()), (w.start = C()), k(), T(); | |
}, 1e3), | |
setTimeout(function () { | |
l = o = i = a = !0; | |
}, s)); | |
}), | |
player.core | |
.getCurrentPlayback() | |
.on(Clappr.Events.PLAYBACK_LEVEL_SWITCH_END, function (e) { | |
i && | |
((o = a = !1), | |
setTimeout(function () { | |
(d = 'LEVEL_SWITCH'), k(), T(); | |
}, 1e3), | |
setTimeout(function () { | |
o = a = !0; | |
}, s)); | |
}), | |
player.core | |
.getCurrentPlayback() | |
.on(Clappr.Events.PLAYBACK_BUFFERING, function (e) { | |
a && | |
((a = o = !1), | |
setTimeout(function () { | |
(d = 'BUFFERING'), T(); | |
}, 1e3), | |
setTimeout(function () { | |
a = o = !0; | |
}, s)); | |
}), | |
player.core | |
.getCurrentPlayback() | |
.on(Clappr.Events.PLAYBACK_STOP, function (e) { | |
setTimeout(function () { | |
(d = 'STOP'), T(); | |
}, 1e3); | |
}), | |
player.core | |
.getCurrentPlayback() | |
.on(Clappr.Events.PLAYBACK_ERROR, function (e) { | |
setTimeout(function () { | |
(d = 'PLAYBACK_ERROR'), T(); | |
}, 1e3); | |
}), | |
setTimeout(b, 1e3), | |
setTimeout(S, 1e3); | |
} else setTimeout(y, 1e3); | |
} | |
function b() { | |
if (player.core.mediaControl.container.isPlaying()) { | |
var e = C(), | |
t = player.getPlugin('level_selector'); | |
t.currentLevel | |
? (f.resolution = t.currentLevel.level.height) | |
: (f.resolution = null), | |
null === f.start | |
? 0 != +e && ((f.start = +e), (f.end = +e + 1)) | |
: 0 != +e && | |
(+f.start >= +e | |
? ((f.start = +e), (f.end = +e + 1)) | |
: (f.end = +e)), | |
setTimeout(b, n); | |
} else setTimeout(b, n); | |
} | |
function k() { | |
var e = C(), | |
t = player.getPlugin('level_selector'); | |
t.currentLevel | |
? (f.resolution = t.currentLevel.level.height) | |
: (f.resolution = null), | |
null === f.start | |
? 0 != +e && ((f.start = +e), (f.end = +e + 1)) | |
: 0 != +e && | |
(+f.start >= +e ? ((f.start = +e), (f.end = +e + 1)) : (f.end = +e)); | |
} | |
function S() { | |
var e = C(), | |
t = player.getPlugin('level_selector'); | |
t.currentLevel | |
? (w.resolution = t.currentLevel.level.height) | |
: (w.resolution = null), | |
null === w.start | |
? 0 != +e && ((w.start = +e), (w.end = +e + 1)) | |
: 0 != +e && | |
(+w.start >= +e ? ((w.start = +e), (w.end = +e + 1)) : (w.end = +e)), | |
setTimeout(S, n); | |
} | |
function C() { | |
var e; | |
return ( | |
isFinite(readStorage('duration')) && readStorage('duration'), | |
(1 != | |
+(e = | |
1 == +p.event.use_dvr | |
? parseInt(player.getCurrentTime()) | |
: parseInt(p.event.duration)) && | |
isFinite(e) && | |
+p.event.use_dvr) || | |
(e = parseInt(readStorage('duration'))), | |
+e && | |
p && | |
p.event && | |
+p.event.start_dvr_time && | |
(e += +p.event.start_dvr_time), | |
e | |
); | |
} | |
function T() { | |
if ( | |
!(function () { | |
+f.start && +f.end && f.start === +f.end && f.end++; | |
if (null === f.start || null === f.end) return (f.end = null), !1; | |
if (isNaN(f.start) || isNaN(f.end)) | |
return ( | |
isNaN(f.start) && ((f.start = null), (f.end = null)), | |
isNaN(f.end) && (f.end = null), | |
!1 | |
); | |
return !0; | |
})() | |
) | |
return clearTimeout(window.SVET), void (window.SVET = setTimeout(T, r)); | |
if ( | |
(d && (f.trigger = d), | |
(null !== f.trigger && 'null' !== f.trigger) || | |
(f.trigger = 'PLAYER_PLAY'), | |
readStorage('reg_visit_events')) | |
) | |
try { | |
(_ = JSON.parse(readStorage('reg_visit_events'))).push(f); | |
} catch (e) { | |
(_ = []).push(f); | |
} | |
else (_ = []).push(f); | |
writeStorage('reg_visit_events', JSON.stringify(_)), | |
(f.end = null), | |
(f.start = C()), | |
(w.start = C()), | |
(f.trigger = 'PLAYER_PLAY'), | |
(d = null), | |
clearTimeout(window.SVET), | |
(window.SVET = setTimeout(T, r)); | |
} | |
function x() { | |
if ( | |
(p && | |
p.event && | |
(c = +p.event.analytics_push_interval | |
? +p.event.analytics_push_interval | |
: 10), | |
readStorage('reg_visit_events')) | |
) | |
try { | |
_ = JSON.parse(readStorage('reg_visit_events')); | |
} catch (e) { | |
_ = []; | |
} | |
else _ = []; | |
(_ = _.filter(function (e) { | |
if (!e.trigger || 'null' === e.trigger) return !1; | |
var t = v.map(function (e) { | |
return e.visit_id; | |
}), | |
r = v.map(function (e) { | |
return e.event_code; | |
}), | |
n = v.map(function (e) { | |
return e.viewer_id; | |
}), | |
s = v.map(function (e) { | |
return e.start; | |
}), | |
i = v.map(function (e) { | |
return e.end; | |
}); | |
return ( | |
(-1 === t.indexOf(e.visit_id) || | |
-1 === r.indexOf(e.event_code) || | |
-1 === n.indexOf(e.viewer_id) || | |
-1 === s.indexOf(e.start) || | |
-1 === i.indexOf(e.end)) && | |
!(172800 <= +e.start || 172800 <= +e.end) | |
); | |
})), | |
writeStorage('reg_visit_events', JSON.stringify(_)), | |
(v = []), | |
_.length && | |
$.ajax({ | |
url: t, | |
data: JSON.stringify(_), | |
method: 'POST', | |
success: function (e) { | |
_.forEach(function (e) { | |
v.push({ | |
visit_id: e.visit_id, | |
event_code: e.event_code, | |
viewer_id: e.viewer_id, | |
start: e.start, | |
end: e.end, | |
}); | |
}), | |
clearTimeout(window.RVEST), | |
(window.RVEST = setTimeout(x, 1e3 * c)); | |
}, | |
error: function (e) { | |
clearTimeout(window.RVEST), | |
(window.RVEST = setTimeout(x, 1e3 * c)), | |
console.log('Network Error', e); | |
}, | |
}), | |
_.length || | |
(clearTimeout(window.RVEST), (window.RVEST = setTimeout(x, 1e3 * c))); | |
} | |
$(document).ready(function () { | |
-1 == document.location.href.indexOf('no_analytics') && | |
(y(), | |
(window.onbeforeunload = function () { | |
return ( | |
(function () { | |
var e = [w]; | |
{ | |
if (navigator && 'function' == typeof navigator.sendBeacon) | |
return navigator.sendBeacon(t, JSON.stringify(e)); | |
$.ajax({ | |
url: t, | |
data: JSON.stringify(e), | |
method: 'POST', | |
dataType: 'json', | |
success: function (e) { | |
return !0; | |
}, | |
error: function (e) {}, | |
}); | |
} | |
})(), | |
null | |
); | |
})); | |
}); | |
})(), | |
(function () { | |
var e = prefix + 'collector.facecast.net/v1/register_user_activity', | |
r = prefix + 'collector.facecast.net/v1/register_user_activity', | |
a = null, | |
o = null, | |
l = null, | |
t = !1, | |
n = (window.SHOW_CLEARED = !1), | |
d = 10, | |
s = [], | |
i = [], | |
c = [], | |
u = [], | |
_ = !1, | |
g = null, | |
v = null, | |
h = null, | |
m = 0; | |
-1 == document.location.href.indexOf('no_presence_confirm') && | |
(clearTimeout(window.SCPPT), | |
(window.SCPPT = setTimeout(S, 1e3 * d)), | |
clearTimeout(window.SCT), | |
(window.SCT = setTimeout(function t() { | |
P(); | |
if (readStorage('pr_confirmed')) | |
try { | |
c = JSON.parse(readStorage('pr_confirmed')); | |
} catch (e) { | |
(c = []), writeStorage('pr_confirmed', JSON.stringify(c)); | |
} | |
else (c = []), writeStorage('pr_confirmed', JSON.stringify(c)); | |
c = c.filter(function (e) { | |
var t = u.map(function (e) { | |
return e.visit_id; | |
}), | |
r = u.map(function (e) { | |
return e.popup_id; | |
}), | |
n = u.map(function (e) { | |
return e.viewer_id; | |
}); | |
return ( | |
-1 === t.indexOf(e.visit_id) || | |
-1 === r.indexOf(e.popup_id) || | |
-1 === n.indexOf(e.viewer_id) | |
); | |
}); | |
writeStorage('pr_confirmed', JSON.stringify(c)); | |
u = []; | |
c.length && | |
$.ajax({ | |
url: r, | |
data: JSON.stringify(c), | |
method: 'POST', | |
success: function (e) { | |
c.forEach(function (e) { | |
u.push({ | |
visit_id: e.visit_id, | |
popup_id: e.popup_id, | |
viewer_id: e.viewer_id, | |
}); | |
}), | |
clearTimeout(window.SCT), | |
(window.SCT = setTimeout(t, 1e3 * d)); | |
}, | |
error: function (e) { | |
clearTimeout(window.SCT), | |
(window.SCT = setTimeout(t, 1e3 * d)), | |
console.log('Network Error', e); | |
}, | |
}); | |
c.length || | |
(clearTimeout(window.SCT), (window.SCT = setTimeout(t, 1e3 * d))); | |
}, 1e3 * d))); | |
var f = { | |
time: String(null), | |
type: 'PRESENCE_CONFIRMATION', | |
user_agent: navigator.userAgent, | |
trigger: String(null), | |
viewer_id: String(null), | |
visit_id: String(null), | |
event_id: String(null), | |
event_code: String(null), | |
password: String(null), | |
popup_id: String(0), | |
interval: null, | |
position: null, | |
confirmed: Number(0), | |
}; | |
function w() { | |
if (void 0 !== player && void 0 !== p && void 0 !== p.event) { | |
if ( | |
7 != +p.event.view_mode_id && | |
4 != +p.event.view_mode_id && | |
5 != +p.event.view_mode_id && | |
6 != +p.event.view_mode_id | |
) | |
return; | |
if ( | |
(7 == +p.event.view_mode_id || | |
4 == +p.event.view_mode_id || | |
5 == +p.event.view_mode_id || | |
6 == +p.event.view_mode_id) && | |
!p.event.has_viewer_presence_confirmation | |
) | |
return; | |
if ( | |
(7 == +p.event.view_mode_id || | |
4 == +p.event.view_mode_id || | |
5 == +p.event.view_mode_id || | |
6 == +p.event.view_mode_id) && | |
!p.key && | |
p.event.has_viewer_presence_confirmation | |
) | |
return void setTimeout(w, 1e3); | |
(7 == +p.event.view_mode_id || | |
4 == +p.event.view_mode_id || | |
5 == +p.event.view_mode_id || | |
6 == +p.event.view_mode_id) && | |
p.key && | |
p.event.has_viewer_presence_confirmation && | |
(f.password = p.key), | |
(f.time = new Date().toISOString()), | |
(f.viewer_id = p.guid), | |
(f.event_id = p.event.id ? String(p.event.id) : String(null)), | |
(f.event_code = p.event.code ? String(p.event.code) : String(null)), | |
(f.visit_id = String(window.visit_id)), | |
(a = | |
+p.event.viewer_presence_confirmation_interval || | |
+p.event.viewer_presence_confirmation_display_default_interval), | |
(o = +p.event.viewer_presence_confirmation_randomization_percentage | |
? (a * | |
p.event.viewer_presence_confirmation_randomization_percentage) / | |
100 | |
: +p.event | |
.viewer_presence_confirmation_display_randomization_interval), | |
(l = +p.event.viewer_presence_confirmation_display_time), | |
(a = +a || 60), | |
(l = +l || 60), | |
(!+o || +a <= +o) && (o = a - 60), | |
clearTimeout(window.SPCPT), | |
(n = window.SHOW_CLEARED = !0), | |
player.on(Clappr.Events.PLAYER_PAUSE, function (e) { | |
_ || | |
(clearTimeout(window.SPCPT), | |
(n = window.SHOW_CLEARED = !0), | |
x('PAUSE'), | |
v && (h = v - Date.now())); | |
}), | |
player.on(Clappr.Events.PLAYER_PLAY, function (e) { | |
+p.event.viewer_presence_confirmation_interval && | |
((f.interval = +p.event.viewer_presence_confirmation_interval), | |
setTimeout(function () { | |
n && ((n = window.SHOW_CLEARED = !1), T('PLAY')); | |
}, 0)); | |
}), | |
player.core | |
.getCurrentPlayback() | |
.on(Clappr.Events.PLAYBACK_PLAY_INTENT, function (e) { | |
+p.event.viewer_presence_confirmation_interval && | |
((f.interval = +p.event.viewer_presence_confirmation_interval), | |
setTimeout(function () { | |
n && | |
((n = window.SHOW_CLEARED = !1), T('PLAYBACK_PLAY_INTENT')); | |
}, 100)); | |
}), | |
player.core | |
.getCurrentPlayback() | |
.on(Clappr.Events.PLAYBACK_PLAY, function (e) { | |
+p.event.viewer_presence_confirmation_interval && | |
((f.interval = +p.event.viewer_presence_confirmation_interval), | |
setTimeout(function () { | |
n && ((n = window.SHOW_CLEARED = !1), T('PLAYBACK_PLAY')); | |
}, 100)); | |
}), | |
player.core | |
.getCurrentPlayback() | |
.on(Clappr.Events.PLAYBACK_LEVEL_SWITCH_END, function (e) { | |
+p.event.viewer_presence_confirmation_interval && | |
((f.interval = +p.event.viewer_presence_confirmation_interval), | |
setTimeout(function () { | |
n && | |
player.isPlaying() && | |
((n = window.SHOW_CLEARED = !1), | |
T('PLAYBACK_LEVEL_SWITCH_END')); | |
}, 100)), | |
(_ = !0), | |
setTimeout(function () { | |
_ = !1; | |
}, 2e3); | |
}); | |
} else setTimeout(w, 1e3); | |
} | |
function y() { | |
if (player.isPlaying()) | |
if (!p || !p.event || +p.event.use_dvr || +p.event.is_live) | |
if ( | |
((f.trigger = 'SHOW'), | |
(f.confirmed = 0), | |
(f.time = new Date().toISOString()), | |
$('.viewer_presence_window_popup').css('display', 'flex').show(), | |
(f.popup_id = String(+f.popup_id + 1)), | |
(f.position = (function () { | |
isFinite(readStorage('duration')) && | |
(LAST_DURATION = readStorage('duration')); | |
var e; | |
e = | |
1 == +p.event.use_dvr | |
? parseInt(player.getCurrentTime()) | |
: parseInt(p.event.duration); | |
(1 != +e && isFinite(e) && +p.event.use_dvr) || | |
(e = parseInt(readStorage('duration'))); | |
+e && | |
p && | |
p.event && | |
+p.event.start_dvr_time && | |
(e += +p.event.start_dvr_time); | |
return e; | |
})()), | |
s.push(JSON.parse(JSON.stringify(f))), | |
writeStorage('pr_confirms', JSON.stringify(s)), | |
-1 !== | |
[ | |
'iPad Simulator', | |
'iPhone Simulator', | |
'iPod Simulator', | |
'iPad', | |
'iPhone', | |
'iPod', | |
].indexOf(navigator.platform) || | |
(-1 !== navigator.userAgent.indexOf('Mac') && | |
'ontouchend' in document) || | |
[ | |
/Android/i, | |
/webOS/i, | |
/iPhone/i, | |
/iPad/i, | |
/iPod/i, | |
/BlackBerry/i, | |
/Windows Phone/i, | |
].some(function (e) { | |
return navigator.userAgent.match(e); | |
}) || | |
C() || | |
void 0 !== window.orientation) | |
) { | |
S(); | |
var e = 'Confirm your presence'; | |
p && | |
'ru' === p.lang && | |
(e = | |
'Подтвердите свое присутствие на мероприятии'); | |
confirm(e); | |
k(), player.play(); | |
} else { | |
$('.viewer_presence_window_popup').css('display', 'flex').show(), | |
clearTimeout(window.HPCPT), | |
C() || | |
(window.HPCPT = setTimeout(function () { | |
(t = !0), b(); | |
}, 1e3 * l)); | |
try { | |
document.mozCancelFullScreen | |
? document.mozFullScreen && document.mozCancelFullScreen() | |
: document.webkitExitFullscreen | |
? document.webkitIsFullScreen && document.webkitExitFullscreen() | |
: document.msExitFullscreen | |
? document.msExitFullscreen() | |
: document.exitFullscreen | |
? document.fullScreen && document.exitFullscreen() | |
: alert('Контроль присутствия'); | |
} catch (e) { | |
console.log(e); | |
} | |
} | |
else T('_showPresenceConfirmationPopup'); | |
else T('_showPresenceConfirmationPopup'); | |
} | |
function b() { | |
$('.viewer_presence_window_popup').hide(), | |
T('_hidePresenceConfirmationPopup'), | |
t || player.play(); | |
} | |
function k() { | |
(f.trigger = 'CONFIRM'), | |
(f.confirmed = 1), | |
c.push(JSON.parse(JSON.stringify(f))), | |
writeStorage('pr_confirmed', JSON.stringify(c)), | |
(t = !1), | |
(f.position = null), | |
b(); | |
} | |
function S() { | |
if ((P(), readStorage('pr_confirms'))) | |
try { | |
s = JSON.parse(readStorage('pr_confirms')); | |
} catch (e) { | |
(s = []), writeStorage('pr_confirms', JSON.stringify(s)); | |
} | |
else (s = []), writeStorage('pr_confirms', JSON.stringify(s)); | |
(s = s.filter(function (e) { | |
var t = i.map(function (e) { | |
return e.visit_id; | |
}), | |
r = i.map(function (e) { | |
return e.popup_id; | |
}), | |
n = i.map(function (e) { | |
return e.viewer_id; | |
}); | |
return ( | |
-1 === t.indexOf(e.visit_id) || | |
-1 === r.indexOf(e.popup_id) || | |
-1 === n.indexOf(e.viewer_id) | |
); | |
})), | |
(i = []), | |
writeStorage('pr_confirms', JSON.stringify(s)), | |
s.length && | |
$.ajax({ | |
url: e, | |
data: JSON.stringify(s), | |
method: 'POST', | |
success: function (e) { | |
return ( | |
s.forEach(function (e) { | |
i.push({ | |
visit_id: e.visit_id, | |
popup_id: e.popup_id, | |
viewer_id: e.viewer_id, | |
}); | |
}), | |
clearTimeout(window.SCPPT), | |
(window.SCPPT = setTimeout(S, 1e3 * d)), | |
!0 | |
); | |
}, | |
error: function (e) { | |
clearTimeout(window.SCPPT), | |
(window.SCPPT = setTimeout(S, 1e3 * d)), | |
console.log('Network Error', e); | |
}, | |
}), | |
s.length || | |
(clearTimeout(window.SCPPT), (window.SCPPT = setTimeout(S, 1e3 * d))); | |
} | |
function C() { | |
var e, | |
t = !1; | |
return ( | |
(e = navigator.userAgent || navigator.vendor || window.opera), | |
(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test( | |
e | |
) || | |
/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test( | |
e.substr(0, 4) | |
)) && | |
(t = !0), | |
t | |
); | |
} | |
function T(e) { | |
clearTimeout(window.SPCPT), x(e); | |
var t = 0; | |
m || | |
((t = readStorage('pr_confirmation_st_' + p.event.code + p.key)), m++); | |
var r, | |
n, | |
s, | |
i = 0; | |
(i = +t | |
? t - Date.now() | |
: 1e3 * | |
(a + | |
((r = +o), | |
(n = -o), | |
(n = Math.ceil(n)), | |
(r = Math.floor(r)), | |
Math.random() * (r - n) + n))), | |
!+t && h && (i = h), | |
(g = Date.now()), | |
(window.SPCPT = setTimeout(y, i)), | |
writeStorage( | |
'pr_confirmation_st_' + p.event.code + p.key, | |
+Date.now() + i | |
), | |
(v = +g + i), | |
(h = null), | |
(s = i), | |
(window._setVPCI = { | |
start_time: new Date(g), | |
timeout: s + ' ms', | |
trigger_time: new Date(v), | |
randomization: o, | |
interval: a, | |
display_time: l, | |
sending_interval: d, | |
}); | |
} | |
function x(e) { | |
window._setVPCI = { time: new Date(), timeout: 'CLEARED BY ' + e }; | |
} | |
function P() { | |
p && | |
p.event && | |
((a = | |
+p.event.viewer_presence_confirmation_interval || | |
+p.event.viewer_presence_confirmation_display_default_interval), | |
(o = +p.event.viewer_presence_confirmation_randomization_percentage | |
? (a * | |
p.event.viewer_presence_confirmation_randomization_percentage) / | |
100 | |
: +p.event | |
.viewer_presence_confirmation_display_randomization_interval), | |
(l = +p.event.viewer_presence_confirmation_display_time), | |
(a = +a || 60), | |
(l = +l || 60), | |
(!+o || +a <= +o) && (o = a - 60), | |
(d = +p.event.analytics_push_interval || 10)); | |
} | |
$(document).ready(function () { | |
-1 == document.location.href.indexOf('no_presence_confirm') && w(); | |
}), | |
(window.confirmViewerPresencePopup = k); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment