var MD5 = function(d){result = M(V(yForMD5(xForMD5(d),8*d.length)));return result.toLowerCase()};function M(d){for(var _,m="0123456789ABCDEF",f="",r=0;r<d.length;r++)_=d.charCodeAt(r),f+=m.charAt(_>>>4&15)+m.charAt(15&_);return f}function xForMD5(d){for(var _=Array(d.length>>2),m=0;m<_.length;m++)_[m]=0;for(m=0;m<8*d.length;m+=8)_[m>>5]|=(255&d.charCodeAt(m/8))<<m%32;return _}function V(d){for(var _="",m=0;m<32*d.length;m+=8)_+=String.fromCharCode(d[m>>5]>>>m%32&255);return _}function yForMD5(d,_){d[_>>5]|=128<<_%32,d[14+(_+64>>>9<<4)]=_;for(var m=1732584193,f=-271733879,r=-1732584194,i=271733878,n=0;n<d.length;n+=16){var h=m,t=f,g=r,e=i;f=md5_ii(f=md5_ii(f=md5_ii(f=md5_ii(f=md5_hh(f=md5_hh(f=md5_hh(f=md5_hh(f=md5_gg(f=md5_gg(f=md5_gg(f=md5_gg(f=md5_ff(f=md5_ff(f=md5_ff(f=md5_ff(f,r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+0],7,-680876936),f,r,d[n+1],12,-389564586),m,f,d[n+2],17,606105819),i,m,d[n+3],22,-1044525330),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+4],7,-176418897),f,r,d[n+5],12,1200080426),m,f,d[n+6],17,-1473231341),i,m,d[n+7],22,-45705983),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+8],7,1770035416),f,r,d[n+9],12,-1958414417),m,f,d[n+10],17,-42063),i,m,d[n+11],22,-1990404162),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+12],7,1804603682),f,r,d[n+13],12,-40341101),m,f,d[n+14],17,-1502002290),i,m,d[n+15],22,1236535329),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+1],5,-165796510),f,r,d[n+6],9,-1069501632),m,f,d[n+11],14,643717713),i,m,d[n+0],20,-373897302),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+5],5,-701558691),f,r,d[n+10],9,38016083),m,f,d[n+15],14,-660478335),i,m,d[n+4],20,-405537848),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+9],5,568446438),f,r,d[n+14],9,-1019803690),m,f,d[n+3],14,-187363961),i,m,d[n+8],20,1163531501),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+13],5,-1444681467),f,r,d[n+2],9,-51403784),m,f,d[n+7],14,1735328473),i,m,d[n+12],20,-1926607734),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+5],4,-378558),f,r,d[n+8],11,-2022574463),m,f,d[n+11],16,1839030562),i,m,d[n+14],23,-35309556),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+1],4,-1530992060),f,r,d[n+4],11,1272893353),m,f,d[n+7],16,-155497632),i,m,d[n+10],23,-1094730640),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+13],4,681279174),f,r,d[n+0],11,-358537222),m,f,d[n+3],16,-722521979),i,m,d[n+6],23,76029189),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+9],4,-640364487),f,r,d[n+12],11,-421815835),m,f,d[n+15],16,530742520),i,m,d[n+2],23,-995338651),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+0],6,-198630844),f,r,d[n+7],10,1126891415),m,f,d[n+14],15,-1416354905),i,m,d[n+5],21,-57434055),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+12],6,1700485571),f,r,d[n+3],10,-1894986606),m,f,d[n+10],15,-1051523),i,m,d[n+1],21,-2054922799),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+8],6,1873313359),f,r,d[n+15],10,-30611744),m,f,d[n+6],15,-1560198380),i,m,d[n+13],21,1309151649),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+4],6,-145523070),f,r,d[n+11],10,-1120210379),m,f,d[n+2],15,718787259),i,m,d[n+9],21,-343485551),m=safe_add(m,h),f=safe_add(f,t),r=safe_add(r,g),i=safe_add(i,e)}return Array(m,f,r,i)}function md5_cmn(d,_,m,f,r,i){return safe_add(bit_rol(safe_add(safe_add(_,d),safe_add(f,i)),r),m)}function md5_ff(d,_,m,f,r,i,n){return md5_cmn(_&m|~_&f,d,_,r,i,n)}function md5_gg(d,_,m,f,r,i,n){return md5_cmn(_&f|m&~f,d,_,r,i,n)}function md5_hh(d,_,m,f,r,i,n){return md5_cmn(_^m^f,d,_,r,i,n)}function md5_ii(d,_,m,f,r,i,n){return md5_cmn(m^(_|~f),d,_,r,i,n)}function safe_add(d,_){var m=(65535&d)+(65535&_);return(d>>16)+(_>>16)+(m>>16)<<16|65535&m}function bit_rol(d,_){return d<<_|d>>>32-_}
var __assign = (this && this.__assign) || function () {
    __assign = Object.assign || function(t) {
        for (var s, i = 1, n = arguments.length; i < n; i++) {
            s = arguments[i];
            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
                t[p] = s[p];
        }
        return t;
    };
    return __assign.apply(this, arguments);
};
var hexRegexp = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;
var CID = 'W-498747A2AC7D490FAE6BD66C5C256535';
var SNAME = window.location.hostname;
var widgetUrl = 'https://w.tb.ru';
var MESSENGER_WIDGET_DEFERRED_LOAD_ENABLED = typeof MESSENGER_WIDGET_DEFERRED_LOAD_ENABLED === 'undefined'
    ? false
    : Boolean(MESSENGER_WIDGET_DEFERRED_LOAD_ENABLED)
var MOBILE_WIDTH_BEGIN = 768;
var TWO_WEEKS_TIME = 14 * 24 * 60 * 60 * 1000;
var AUTH_DATA_KEY = 'msg_wdg_info';
var _noop = function () { };
var messengerEvents = {
    UPDATE_UNREAD_COUNTER: 'updateUnreadCounter',
    NEW_MESSAGE: 'tmsg-newMessage',
    WIDGET_INIT: 'widget-init',
    WIDGET_CLOSE: 'chat-widget-close',
    OPEN_CHAT: 'OPEN_CHAT',
    CONVERSATION_CREATION: 'conversationCreation',
    TOGGLE_MOBILE_MODE: 'toggle-widget-mobile-mode'
};
var widgetAuthEvents = {
    UPDATE: 'Update widget auth data',
    GET_REQUEST: 'Request for widget auth data',
    GET_RESPONSE: 'Response for widget auth data'
};
var chatOpenSvg = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="56" height="56" viewBox="-4 -4 56 56"><defs><path id="b" d="M16 39.38V20a4 4 0 0 1 4-4h16a4 4 0 0 1 4 4v14a4 4 0 0 1-4 4H25.428a4 4 0 0 0-2.533.905L20 41.275a2.449 2.449 0 0 1-4-1.895z"/><filter id="a" width="316.7%" height="301.3%" x="-91.7%" y="-85.2%" filterUnits="objectBoundingBox"><feOffset dx="4" dy="4" in="SourceAlpha" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="8"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08 0"/></filter></defs><g fill="none" fill-rule="evenodd" transform="translate(-4 -4)"><use fill="#000" filter="url(#a)" xlink:href="#b"/><use fill="%%OPEN_ICON_COLOR%%" xlink:href="#b"/></g></svg>';
var chatCloseSvg = '<svg xmlns="http://www.w3.org/2000/svg" width="19" height="19" viewBox="0 0 19 19"><g fill="none" fill-rule="evenodd"><path d="M-3-3h24v24H-3z"/><path stroke="%%CLOSE_ICON_COLOR%%" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M9.429 9.429L2 16.857 9.429 9.43 2 2l7.429 7.429zm0 0l7.43 7.43-7.43-7.43L16.857 2 9.43 9.429z"/></g></svg>';
var widgetButtonStyles = '.messenger-button {position: fixed; right: 0; bottom: 0; z-index:9999; width: 56px; height: 56px;' +
    'border-radius: 16px 16px 2px 16px; box-shadow: 0 10px 25px 0 rgba(0,0,0,.1); cursor: pointer; ' +
    'transition: all 300ms 700ms; transform: scale(0.1); transform-origin: 100% 100%; opacity: 0;}' +
    '.messenger-button:before { content:""; position: absolute; top: 0; left: 0; z-index: 101; width: 100%; height: 100%;' +
    'opacity: 0; border-radius: 16px 16px 2px 16px; background-color: rgba(0,0,0,.05); transition: opacity 200ms;}' +
    '.messenger-button:hover:before {opacity: 1;}' +
    ('.messenger-opened {z-index:9998;}') +
    '.messenger-button_show {transform: scale(1); right: 18px; bottom: 18px; opacity: 1;}' +
    '.messenger-button_hidden {display: none}' +
    '.messenger-icon {position: absolute; top: 0; left: 0; right: 0; bottom: 0; z-index: 102;' +
    'cursor: pointer;  transition: all 200ms; background-repeat: no-repeat; background-position: 50% 50%;' +
    'pointer-events: visible; z-index: 0; opacity: 0; will-change: transform;}' +
    '.messenger-closed .messenger-icon_closed {z-index: 101;opacity: 1;}' +
    '.messenger-opened .messenger-icon_opened {z-index: 101;opacity: 1; transform: rotate(-90deg)}' +
    '.unread-indicator {position: absolute; top: -6px; right: 0px; z-index: 101; width: 20px; height: 20px; border-radius: 50%; background-color: #dd5656;}' +
    '.unread-indicator_hidden {display: none}' +
    '.messenger-frame {position: fixed; right: 18px; bottom: 92px; z-index: 999999; width: 350px; border-radius: 12px; ' +
    'overflow: hidden; box-shadow: 0 7px 32px 0 rgba(0,0,0,.1); transition: all 200ms ease; transition-property: opacity,background-color;}' +
    '.messenger-frame_closed {visibility: hidden; z-index:-1; opacity: 0;}' +
    '.messenger-frame_opened {height: 600px; max-height: calc(100vh - 100px); opacity: 1;}' +
    'div.messenger-frame_fullscreen {top: 0; left: 0; right:auto; bottom:auto; width: 100%; height: 100vh; max-height:100%; border-radius: 0}' +
    '.body-mobile {height: 100vh; overflow: hidden; position: fixed;}' +
    'iframe.messenger-content_fullscreen {border-radius: 0px !important}';
var elements = {
    messengerContent: {
        element: document.createElement('iframe'),
        styles: {
            height: '100%',
            width: '0',
            minWidth: '100%',
            maxWidth: '100%',
            boxShadow: '0px 0px 30px 0px rgba(0,0,0,0.1)',
            borderRadius: '18px'
        }
    }
};
function generateOpenIconBackground(color) {
    return ".messenger-icon_closed {background-image: url(data:image/svg+xml;base64," + btoa(chatOpenSvg.replace('%%OPEN_ICON_COLOR%%', color)) + ")}";
}
function generateCloseIconBackground(color) {
    return ".messenger-icon_opened {background-image: url(data:image/svg+xml;base64," + btoa(chatCloseSvg.replace('%%CLOSE_ICON_COLOR%%', color)) + ")}";
}
function generateButtonBackground(color) {
    return ".messenger-button {background-color: " + color + "};";
}
function areColorsHex(colors) {
    return Object.keys(colors).every(function(key) {
        return typeof colors[key] === 'string' && !!colors[key].match(hexRegexp);
    });
}
function preparePreferences(preferenceSettings) {
    var preferences = preferenceSettings || {};
    var defaultColorConfig = {primary: '#428bf9', primaryAux: '#ffffff', buttonBackground: '#ffdd2d', buttonIcon: '#000000'};
    var isColorsPropValid = preferences && preferences.colors && typeof preferences.colors == 'object' && Object.keys(preferences.colors).length > 0;
    var colors = isColorsPropValid && areColorsHex(preferences.colors)
        ? preferences.colors
        : defaultColorConfig;

    return __assign(preferences, {colors: colors});
}
function initializeWidget() {
    var widgetSettingsRequest = new XMLHttpRequest();

    widgetSettingsRequest.onreadystatechange = function () {
        if (widgetSettingsRequest.readyState === 4) {
            var widgetSettings;
            try {
                var response = JSON.parse(widgetSettingsRequest.responseText);
                widgetSettings = response.success ? response.result : {};
            } catch (e) {
                widgetSettings = {};
            }

            var api = new MessengerWidget();
            api.initSmeWithButton(document.body, widgetUrl + '/' + MD5(SNAME) + '/widget',
                {
                    siteName: SNAME,
                    companyId: CID,
                    widgetHeader: widgetSettings.title,
                    widgetPreferences: preparePreferences(widgetSettings.preferences)
                });

        }
    };
    widgetSettingsRequest.open('GET', widgetUrl + '/open-messenger/widget/model?cId=' + CID, true);
    widgetSettingsRequest.send();
}
function setToLocalStorage(key, value) {
    if (window.localStorage) {
        window.localStorage.setItem(key, JSON.stringify(value));
    }
}
function getFromLocalStorage(key, parse) {
    try {
        if (!window.localStorage) {
            return null;
        }
        var value = window.localStorage.getItem(key);

        return parse ? JSON.parse(value) : value;
    } catch (e) {
        return null;
    }
}
function removeFromLocalStorage(key) {
    if (window.localStorage) {
        window.localStorage.removeItem(key);
    }
}
var MessengerWidget = /** @class */ (function () {
    function MessengerWidget() {
        this.isUnreadMessages = false;
        this.isMobileMode = false;
        this.isMessengerLoaded = false;
        this.isOpenedMessenger = false;
        this.onNewMessageCallback = _noop;
        this.onUnreadIndicatorChangedCallback = _noop;
        this.listenMessages();
    }
    Object.defineProperty(MessengerWidget.prototype, "messengerContent", {
        get: function () {
            return elements.messengerContent.element;
        },
        enumerable: true,
        configurable: true
    });
    MessengerWidget.prototype.initSmeWithButton = function (container, messengerUrl, userInfo) {
        var _this = this;
        this.addWidgetButtonStyles(userInfo.widgetPreferences);
        this.addMessengerButton(container);
        this.messengerContainer.className = "messenger-frame messenger-frame_closed" /* CLOSED */;
        this.messengerContent.setAttribute('scrolling', 'no');
        this.listenMessengerEvents();
        this.listenAuthEvents();
        this.listenPageResize();
        this.messengerUrl = messengerUrl
        this.userInfo = userInfo
        if (!MESSENGER_WIDGET_DEFERRED_LOAD_ENABLED) {
            this.initSme(this.messengerContainer, messengerUrl, userInfo);
        }
        this.onUnreadIndicatorChangedCallback = function (unreadIndicator) {
            _this.unreadIndicator.className =
                unreadIndicator && !_this.isOpenedMessenger
                    ? "unread-indicator" /* VISIBLE */
                    : "unread-indicator unread-indicator_hidden" /* HIDDEN */;
        };
        window.addEventListener('resize', function () {
            _this.sendPostMessage('widgetResize', window.innerWidth < MOBILE_WIDTH_BEGIN);
        });
    };
    MessengerWidget.prototype.initSme = function (container, messengerUrl, userInfo) {
        var _this = this;
        this.init(container, messengerUrl);
        this.onMessengerInit = function () {
            _this.sendPostMessage('userInfo', userInfo);
        };
    };
    MessengerWidget.prototype.init = function (container, messengerUrl) {
        var _this = this;
        this.messengerFrameUrl = messengerUrl;
        this.messengerFrameOrigin = this.getOriginFromUrl(messengerUrl);
        this.setElementsStyle();
        _this.checkIfMobileMode();
        this.messengerContent.frameBorder = '0';
        this.messengerContent.src = this.messengerFrameUrl;
        this.messengerContent.onload = function () {
            _this.isMessengerLoaded = true;
            if (_this.isMobileMode) {
                _this.sendPostMessage(messengerEvents.TOGGLE_MOBILE_MODE, _this.isMobileMode);
            }
        };
        this.appendElements(container);
    };
    MessengerWidget.prototype.onNewMessage = function (callback) {
        this.onNewMessageCallback = callback;
    };
    MessengerWidget.prototype.onUnreadIndicatorChanged = function (callback) {
        this.onUnreadIndicatorChangedCallback = callback;
    };
    MessengerWidget.prototype.listenMessages = function () {
        var _this = this;
        window.addEventListener('message', function (event) {
            var origin = event.origin.indexOf('localhost') !== -1 ? true : event.origin === _this.messengerFrameOrigin;
            if (!event.data || !origin) {
                return;
            }
            var _a = event.data, messageCode = _a.messageCode, data = _a.data;
            switch (messageCode) {
                case messengerEvents.UPDATE_UNREAD_COUNTER:
                    _this.isUnreadMessages = data;
                    _this.onUnreadIndicatorChangedCallback(_this.isUnreadMessages);
                    break;
                case messengerEvents.NEW_MESSAGE:
                    _this.onNewMessageCallback(data);
                    break;
                case messengerEvents.WIDGET_INIT:
                    if (_this.onMessengerInit) {
                        _this.onMessengerInit();
                    }
                    break;
                case messengerEvents.OPEN_CHAT:
                case messengerEvents.CONVERSATION_CREATION:
                    _this.openMessenger();
                    _this.toggleMessenger();
                    _this.sendPostMessage('tmsg-openDraft', data);
                    break;
                case messengerEvents.WIDGET_CLOSE:
                    if (_this.isOpenedMessenger) {
                        _this.closeMessenger();
                        _this.toggleMessenger();
                        _this.checkIfMobileMode();
                    }
                default:
                    return;
            }
        });
    };
    MessengerWidget.prototype.setElementsStyle = function () {
        Object.keys(elements).forEach(function (key) {
            Object.keys(elements[key].styles).forEach(function (property) {
                elements[key].element.style[property] = elements[key].styles[property];
            });
        });
    };
    MessengerWidget.prototype.appendElements = function (container) {
        container.appendChild(this.messengerContent);
    };
    MessengerWidget.prototype.sendPostMessage = function (messageCode, data) {
        if (!!this.messengerContent.contentWindow) {
            this.messengerContent.contentWindow.postMessage({ messageCode: messageCode, data: data }, '*');
        }
    };
    MessengerWidget.prototype.getOriginFromUrl = function (url) {
        var _a = url.split('/'), protocol = _a[0], host = _a[2];
        return protocol + "//" + host;
    };
    MessengerWidget.prototype.addWidgetButtonStyles = function (preferences) {
        var colors = preferences.colors;
        var stylesCode = widgetButtonStyles + generateCloseIconBackground(colors.buttonIcon) + generateOpenIconBackground(colors.buttonIcon) + generateButtonBackground(colors.buttonBackground);
        var styles = document.createElement('style');
        styles.appendChild(document.createTextNode(stylesCode));
        document.head.appendChild(styles);
    };
    MessengerWidget.prototype.addMessengerButton = function (container) {
        this.messengerButton = document.createElement('div');
        this.messengerClosedIcon = document.createElement('div');
        this.messengerClosedIcon.className = "messenger-icon messenger-icon_closed";
        this.messengerOpendedIcon = document.createElement('div');
        this.messengerOpendedIcon.className = "messenger-icon messenger-icon_opened";
        this.unreadIndicator = document.createElement('div');
        this.messengerContainer = document.createElement('div');
        this.messengerButton.className = "messenger-button messenger-closed";
        this.messengerButton.appendChild(this.messengerClosedIcon);
        this.messengerButton.appendChild(this.messengerOpendedIcon);
        this.messengerButton.appendChild(this.unreadIndicator);
        container.appendChild(this.messengerButton);
        container.appendChild(this.messengerContainer);
        setTimeout(function() {
            container.querySelector(".messenger-button").classList.add("messenger-button_show");
        }, 200)
    };
    MessengerWidget.prototype.listenMessengerEvents = function () {
        var _this = this;
        this.messengerButton.addEventListener('click', function () {
            function originalOnClick() {
                if (!_this.isOpenedMessenger) {
                    _this.openMessenger();
                } else {
                    _this.closeMessenger();
                }
                _this.toggleMessenger();
                _this.toggleMobileModeStyles(_this.isMobileMode);
            }

            if (MESSENGER_WIDGET_DEFERRED_LOAD_ENABLED && !_this.isMessengerLoaded) {
                var originalOnInit = _this.onMessengerInit || _noop;
                _this.onMessengerInit = function () {
                    _this.sendPostMessage('userInfo', _this.userInfo);
                    originalOnInit();
                    originalOnClick();
                };
                _this.init(
                    _this.messengerContainer,
                    _this.messengerUrl
                );
            } else {
                originalOnClick()
            }
        });
    };
    MessengerWidget.prototype.listenPageResize = function () {
        var _this = this;
        window.addEventListener('resize', function() {
            _this.checkIfMobileMode();
        });
    };
    MessengerWidget.prototype.checkIfMobileMode = function () {
        var _this = this;
        var isMobileModeNow = window.innerWidth < MOBILE_WIDTH_BEGIN;
        if (isMobileModeNow !== _this.isMobileMode) {
            _this.isMobileMode = isMobileModeNow;
            this.toggleMobileModeStyles(_this.isMobileMode);
            if (_this.isMessengerLoaded) {
                this.sendPostMessage(messengerEvents.TOGGLE_MOBILE_MODE, _this.isMobileMode);
            }
        }
    };
    MessengerWidget.prototype.toggleMobileModeStyles = function(isMobile) {
        if (isMobile) {
            this.messengerContainer.classList.add("messenger-frame_fullscreen");
            this.messengerContent.classList.add("messenger-content_fullscreen");
        } else {
            this.messengerContainer.classList.remove("messenger-frame_fullscreen");
            this.messengerContainer.classList.remove("messenger-content_fullscreen");
            document.body.classList.remove('body-mobile');
        }
    };
    MessengerWidget.prototype.openMessenger = function () {
        this.messengerContainer.className = "messenger-frame messenger-frame_opened" /* OPENED */;
        this.messengerButton.className = "messenger-button messenger-button_show messenger-opened" /* OPENED */;
        this.unreadIndicator.className = "unread-indicator unread-indicator_hidden" /* HIDDEN */;

        if (this.isMobileMode) {
            document.body.classList.add('body-mobile');
        }
    };
    MessengerWidget.prototype.closeMessenger = function () {
        this.messengerContainer.className = "messenger-frame messenger-frame_closed" /* CLOSED */;
        this.messengerButton.className = "messenger-button messenger-button_show messenger-closed" /* CLOSED */;
        this.unreadIndicator.className = "unread-indicator unread-indicator_hidden" /* HIDDEN */;
        if (this.isUnreadMessages) {
            this.unreadIndicator.className = "unread-indicator" /* VISIBLE */;
        }

        if (this.isMobileMode) {
            document.body.classList.remove('body-mobile');
        }
    };
    MessengerWidget.prototype.toggleMessenger = function () {
        this.isOpenedMessenger = !this.isOpenedMessenger;
        this.sendPostMessage('messengerOpenedStatus', this.isOpenedMessenger);
    };
    MessengerWidget.prototype.listenAuthEvents = function() {
        var _this = this;
        window.addEventListener('message', function (event) {
            if (!event.data) {
                return;
            }
            var messageCode = event.data.messageCode, data = event.data.data;

            switch(messageCode) {
                case widgetAuthEvents.GET_REQUEST:
                    var authData = getFromLocalStorage(AUTH_DATA_KEY, true);
                    var isDataValid = authData && authData.rid && authData.uid && authData.expires && authData.expires >= Date.now();
                    var resultData = isDataValid
                        ? authData
                        : {rid: null, uid: null};
                    _this.sendPostMessage(widgetAuthEvents.GET_RESPONSE, resultData);

                    if (!isDataValid) {
                        removeFromLocalStorage(AUTH_DATA_KEY)
                    }
                    break;
                case widgetAuthEvents.UPDATE:
                    var rid = data.rid;
                    var uid = data.uid;
                    var expires = Date.now() + TWO_WEEKS_TIME;
                    setToLocalStorage(AUTH_DATA_KEY, {
                        rid: rid, uid: uid, expires: expires
                    });
                    break;
                default:
                    return;
            }

        });
    };
    return MessengerWidget;
}());

var api = new MessengerWidget();

if (document.readyState === 'interactive' || document.readyState === 'complete') {
    initializeWidget();
} else {
    document.addEventListener('DOMContentLoaded', function() {
        initializeWidget();
    });
}
