﻿var DMirInformer = function(informerId)
{
    this.id = informerId;
    this.host = 'http://partner.dmir.ru/';

    this.show = function(s, f)
    {
        var informer = this;

        var div = document.getElementById("DMirInformer_" + this.id.replace(/-/ig, "_"));
        if (div)
        {
            var name = 'DMirInformer_Frame_' + this.id;

            if (!window.DMirInformerFrames)
                window.DMirInformerFrames = {};


            var frame;
            var ie;

            if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
            {
                frame = document.createElement("<IFRAME name='logFrame' onload='window.DMirInformerFrames[\"" + name + "\"]();' frameborder='0'></IFRAME>");
                ie = true;
            }
            else
            {
                frame = document.createElement("IFRAME");
                frame.name = "logFrame";
                //frame.id = name;
            }

            frame.style.width = "100%";
            frame.style.height = "1px";
            frame.style.border = "0px none";

            div.appendChild(frame);

            frame.contentWindow.location = "about:blank";
            window.DMirInformerFrames[name] = frame.onload = function()
            {
                var c = false;
                try
                {
                    c = !!frame.contentWindow.location.href;

                } catch (er)
                {

                }


                if (!c)
                {
                    frame.contentWindow.location = "about:blank";
                }
                else
                {
                    var s = frame.contentWindow.name;
                    if (s.indexOf("informer") == 0)
                        return;

                    var i = s.indexOf("px");
                    if (i < 0)
                        return;

                    frame.contentWindow.document.body.style.margin = "0px";
                    frame.style.height = s.substr(0, i + 2);

                    s = s.substr(i + 2);
                    var headEl = null;
                    var styleFragRegex = new RegExp('<style[^>]*>([\u0001-\uFFFF]*?)</style>', 'i');
                    var styles = s.match(styleFragRegex);
                    if (styles.length)
                    {
                        for (i = 0; i < styles.length; i++)
                        {
                            if (!headEl)
                            {
                                headEl = frame.contentWindow.document.getElementsByTagName('head')[0];

                                if (!headEl)
                                {
                                    break;
                                }
                            }

                            var newStyleEl = frame.contentWindow.document.createElement('style');
                            newStyleEl.type = 'text/css';

                            if (ie)
                            {
                                newStyleEl.styleSheet.cssText = styles[i];
                            }
                            else
                            {
                                var cssDefinitionsEl = frame.contentWindow.document.createTextNode(styles[i]);
                                newStyleEl.appendChild(cssDefinitionsEl);
                            }

                            headEl.appendChild(newStyleEl);
                        }

                        frame.contentWindow.name = "informer" + informer.id;
                        frame.contentWindow.document.body.innerHTML = s.substr(styles.lastIndex);
                        if (ie)
                        {
                            frame.style.height = frame.contentWindow.document.getElementById("divInformer").offsetHeight;
                        }
                    }

                    if (f)
                        f();
                }
            }

            frame.contentWindow.location = informer.host + "informer/showinformer/" + informer.id + "?st=" + (s ? "true" : "false");
        }
    }
}
