(function() {
    return;
    'use strict';
    window.EImzoSign = EImzoSign();

    function EImzoSign () {
        function EImzoSign (params) {
            this.EIMZO_MAJOR = 3;
            this.EIMZO_MINOR = 37;

            this.errorCAPIWS = 'Ошибка соединения с E-IMZO. Возможно у вас не установлен модуль E-IMZO или Браузер E-IMZO.';
            this.errorBrowserWS = 'Браузер не поддерживает технологию WebSocket. Установите последнюю версию браузера.';
            this.errorUpdateApp = 'ВНИМАНИЕ !!! Установите новую версию приложения E-IMZO или Браузера E-IMZO.<br /><a href="https://e-imzo.uz/main/downloads/" role="button">Скачать ПО E-IMZO</a>';
            this.errorWrongPassword = 'Пароль неверный.';

            this.eImzoApiKeys = [
                'localhost', '96D0C1491615C82B9A54D9989779DF825B690748224C2B04F500F370D51827CE2644D8D4A82C18184D73AB8530BB8ED537269603F61DB0D03D2104ABF789970B',
                '127.0.0.1', 'A7BCFA5D490B351BE0754130DF03A068F855DB4333D43921125B9CF2670EF6A40370C646B90401955E1F7BC9CDBF59CE0B2C5467D820BE189C845D0B79CFC96F',
                'null', 'E0A205EC4E7B78BBB56AFF83A733A1BB9FD39D562E67978CC5E7D73B0951DB1954595A20672A63332535E13CC6EC1E1FC8857BB09E0855D7E76E411B6FA16E9D',
                'dls.yt.uz', 'EDC1D4AB5B02066FB3FEB9382DE6A7F8CBD095E46474B07568BC44C8DAE27B3893E75B79280EA82A38AD42D10EA0D600E6CE7E89D1629221E4363E2D78650516'
            ];

            this.events = {
                onLoading: params.onLoading,
                onUpdateApp: params.onUpdateApp,
                onLoadKeys: params.onLoadKeys,
                onShowMessage: params.onShowMessage,
                onWsError: params.onWsError,
                onNotLoaded: params.onNotLoaded,
            }
        }

        EImzoSign.prototype = {
            init: function () {
                var self = this;
                EIMZOClient.API_KEYS = this.eImzoApiKeys;

                self.__callFunc(self.events.onLoading);

                EIMZOClient.checkVersion(func1, func2);

                function func1 (major, minor) {
                    var newVersion = self.EIMZO_MAJOR * 100 + self.EIMZO_MINOR;
                    var installedVersion = parseInt(major) * 100 + parseInt(minor);
                    if (installedVersion < newVersion) {
                        self.__callFunc(self.events.onUpdateApp);
                    } else {
                        EIMZOClient.installApiKeys(function () {
                            // success
                            self.__callFunc(self.events.onLoadKeys, EIMZOClient.listAllUserKeys);
                        }, function (e, r) {
                            if (r) {
                                self.__callFunc(self.events.onShowMessage, r);
                            } else {
                                self.__callFunc(self.events.onWsError, e);
                            }
                        });
                    }
                }

                function func2 (e, r) {
                    if (r) {
                        self.__callFunc(self.events.onShowMessage, r);
                    } else {
                        self.__callFunc(self.events.onNotLoaded, e);
                    }
                }
            },

            loadKey: function (vo, success, error, verifyPassword) {
                EIMZOClient.loadKey(vo, success, error, verifyPassword);
            },

            /**
             * @private __callFunc
             * @param {Function} func 
             * @param  {...any} args 
             * @returns {*}
             */
            __callFunc: function (func, ...args) {
                if (typeof func === 'function') {
                    if (!args) {
                        return func();
                    }
                    return func(...args);
                }
                return false;
            }
        }

        return EImzoSign;
    }
})();