/* Minification failed. Returning unminified contents.
(20,1): run-time error CSS1019: Unexpected token, found '!'
(20,11): run-time error CSS1031: Expected selector, found '('
(20,11): run-time error CSS1025: Expected comma or open brace, found '('
(132,2): run-time error CSS1019: Unexpected token, found '('
(132,19): run-time error CSS1031: Expected selector, found ')'
(132,19): run-time error CSS1025: Expected comma or open brace, found ')'
 */
/*
 *  Knihovna, ktera umozni vkladat widgety jako html znacky.
 *  Pouziti
 *  <div class="mediatel-widget" id="widget1" data-widget-src="http://localhost:64448/Widget/Widget.aspx" data-widget-callback="MyCallback"></div>
 *  class: musi byt "mediatel-widget"
 *  id: widgetu je povinne a musi byt unikatni, abychom vedeli, ktery widget nam posila zpatky message
 *  widget-src: odkud se ma widget nacist
 *  widget-callback: jakou funkci ma widget volat, kdyz bude chtit
 * 
 *  Knihovna ocekava objekt (msg), ktery bude widget vyrenderovany v iframe posilat zpatky pomoci window.parent.postMessage(JSON.stringify(msg), '*')
 *  msg.widgetId // id widgetu, musi se shodovat s id v div class="mediatel-widget"
 *  msg.widgetType = 'mediatelWidget' // konstanta, musi obsahovat mediatelWidget. Podle tohoto kontroluje message receiver, ze se jedna o message z naseho widgetu
 *  msg.widgetCallback = 'myCallback' // hodnota, ktera je nazvem funkce, kterou ma message receiver zavolat
 *  msg.widgetData = {} // data, ktera se predavaji funkci widgetCallback
 *  msg.widgetWidth = int // cislo, jaka je aktualni sirka widgetu, podle tohoto cisla se nastavuje velikost iframe
 *  msg.widgetHeight = int // cislo, jaka je aktualni vyska widgetu, podle tohoto cisla se nastavuje velikost iframe
 * 
 */

!function (window, document) {
    "use strict";

    var widgetsClassName = "mediatel-widget";

    function getParentUrl() {
        var isInIframe = parent !== window,
            parentUrl = null;
        return isInIframe && (parentUrl = document.referrer), parentUrl
    }

    function loadAllWidgets() {
        var i,
            elem,
            elems = document.getElementsByClassName(widgetsClassName);
        for (i = 0; i < elems.length; i += 1) {
            elem = elems[i];
            destroyWidget(elem, renderWidget);
        }
    }

    function loadWidgetById(id) {
        var elem = document.getElementById(id);
        if (elem) {
            destroyWidget(elem, renderWidget);
        }
    }

    function destroyWidget(elem, callback) {
        elem.innerHTML = "",
        elem.className = widgetsClassName,
        callback && callback(elem)
    }

    function renderWidget(elem, callback) {
        var ifrm = null,
            widgetId = elem.getAttribute("id"),
            // url widgetu
            widgetUrl = elem.getAttribute("data-widget-src"),
            // jakou funkci má widget volat
            widgetCallback = elem.getAttribute("data-widget-callback"),
            parentUrl = getParentUrl(),
            // pokud bude nastaveny atribut data-widget-height, pak bude výška widgetu fixní
            fixedHeight = elem.getAttribute("data-widget-height");

        if (widgetUrl == null) {
            throw 'Widget source url not specified.';
            return;
        }
        else {
            (widgetUrl.indexOf("?") > -1) ? widgetUrl += "&" : widgetUrl += "?";
            widgetUrl += "widgetId=" + encodeURIComponent(widgetId);
        }

        if (widgetCallback != null)
            widgetUrl += "&widgetCallback=" + encodeURIComponent(widgetCallback);

        elem.innerHTML = '<div class="loader-box"><div class="loader-inbox"><div class="loader-container"><div class="loader"><div class="circle"></div><div class="circle"></div><div class="circle"></div><div class="circle"></div><div class="circle"></div></div><span class="loading-info">Nahrávam</span></div></div></div>';

        elem.style.display = "block",
        elem.style.position = "relative",
        ifrm = document.createElement("iframe"),
        ifrm.frameborder = 0,
        ifrm.scrolling = "no";
        ifrm.setAttribute("src", widgetUrl),
        ifrm.style.width = "100%",
        ifrm.style.height = fixedHeight ? fixedHeight + "px" : "100%",
        ifrm.width = "100%",
        ifrm.style.border = "0px",
        elem.appendChild(ifrm), callback && callback(elem)
    }

    function mediatelWidgetMsgReceiver(ev) {
        var i, msg = null;
        try {
            msg = JSON.parse(ev.data)
        } catch (e) {
            return
        }

        if (msg.widgetType && "mediatelWidget" === msg.widgetType) {
            var elems = document.getElementsByClassName(widgetsClassName);
            for (i = 0; i < elems.length; i += 1) {
                if (msg.widgetId == elems[i].id) {
                    elems[i].style.height = parseInt(msg.widgetHeight) + 2 + "px";
                    elems[i].className = widgetsClassName + " " + widgetsClassName + "-loaded";
                    elems[i].getElementsByClassName("loader-box")[0].style.display = "none";
                }
            }
        }
        if (msg.widgetType && "mediatelCallback" === msg.widgetType && msg.widgetCallback !== '') {
            window[msg.widgetCallback](msg.widgetData);
        }
    }

    var MediatelWidgets = {};
    MediatelWidgets.render = loadAllWidgets,
    MediatelWidgets.renderWidget = function (id) {
        loadWidgetById(id);
    },
    window.addEventListener ? window.addEventListener("message", mediatelWidgetMsgReceiver, !1) : window.attachEvent("onmessage", mediatelWidgetMsgReceiver);
    var DOMContentLoaded = null;
    document.addEventListener ? DOMContentLoaded = function () {
        document.removeEventListener("DOMContentLoaded", DOMContentLoaded, !1),
        loadAllWidgets()
    } : document.attachEvent && (DOMContentLoaded = function () {
        "complete" === document.readyState && (document.detachEvent("onreadystatechange", DOMContentLoaded), loadAllWidgets())
    }),
    "complete" === document.readyState && setTimeout(loadAllWidgets, 1),
    document.addEventListener ? document.addEventListener("DOMContentLoaded", DOMContentLoaded, !1) : document.attachEvent && (document.attachEvent("onreadystatechange", DOMContentLoaded),
    window.attachEvent("onload", loadAllWidgets)),
    window.MediatelWidgets = MediatelWidgets;
}(window, document);
