(function(container){ window.SingleQueenQuiz = window.SingleQueenQuiz || { listeners: []}; var coreListeners = []; coreListeners.push(['height', function (payload, event, iframe) { iframe.style.minHeight = payload+'px'; }]); coreListeners.push(["quiz.select", function(payload, event, iframe) { iframe.scrollIntoView && iframe.scrollIntoView(); }]); var dispatch = function (iframe, event, payload) { console.log("Receiving event '"+event+"' from " + iframe.src); coreListeners.concat(window.SingleQueenQuiz.listeners).forEach(function (listener) { if(!Array.isArray(listener)) { return; } var le = (listener[0] || '').toLowerCase(); var lh = listener[1] || function () {}; if(event === le) { try { lh(payload, event, iframe); } catch (e) { console.error('Unable handle listener for "'+event+'"', e); } } }); }; var iframeFactory = function (src) { var iframe = document.createElement('iframe'); iframe.src = src; iframe.style.border='none'; iframe.style.width = '100%'; iframe.style.height = '0'; iframe.style.overflow = 'hidden'; return iframe; }; var install = function (qc, info) { if(qc.children.length !== 0) { return; } var infoJson = JSON.stringify(info); var id = qc.dataset.sqqId, token = qc.dataset.sqqToken, url = qc.dataset.sqqUrl, owner = qc.dataset.sqqOwner, quizUrl = 'https://kvizy.singlequeen.cz/quiz/'+id+'/'+token+'?page='+encodeURIComponent(infoJson); var iframe = iframeFactory(quizUrl); iframe.onload = function () { setTimeout(function () { if(iframe.clientHeight === 0) { alert("Chyba!\nDošlo k neočekávanému problému a kvíz se nepodařilo správně načíst nebo jeho načítání trvalo příliš dlouho.\nZkuste stránku obnovit, případně chvíli počkejte.\nNa odstranění problému usilovně pracujeme."); } }, 5000); }; iframe.onerror = function () { alert("Chyba!\nDošlo k neočekávanému problému a kvíz se nepodařilo správně načíst.\nZkuste stránku obnovit.\nNa odstranění problému usilovně pracujeme."); }; qc.replaceChildren(iframe); window.addEventListener('message', function (event) { var ev = event.data, evName = (ev.event || '').toLowerCase(), evPayload = ev.payload || null, evUrl = ev.url || ''; if(evUrl.startsWith(quizUrl)) { dispatch(iframe, evName, evPayload); } }) } var installAll = function () { var authorEl = document.querySelector('meta[name=author]'); var titleEl = document.querySelector('meta[name=title]'); var info = { link: window.location.href, title: titleEl && titleEl.attributes.content ? titleEl.attributes.content.value: null, author: authorEl && authorEl.attributes.content ? authorEl.attributes.content.value: null, referer: document.referrer || null }; container.querySelectorAll('[data-sqq-id]').forEach(function(qc) { install(qc, info); }); }; if(document.readyState === 'loading') { window.addEventListener('DOMContentLoaded', installAll); } else { installAll(); } })(document);