/home/ivoiecob/email.hirewise-va.com/static/js/MailWebclient.app.144cd25e875fef5ef01e.js
(self["webpackChunkafterlogic_aurora_platform"] = self["webpackChunkafterlogic_aurora_platform"] || []).push([[29],{

/***/ "2wN8":
/*!***************************************************************************!*\
  !*** ./modules/MailWebclient/js/views/DefaultAccountHostsSettingsView.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var ko = __webpack_require__(/*! knockout */ "p09A"),
  App = __webpack_require__(/*! modules/CoreWebclient/js/App.js */ "yU9o"),
  UserSettings = __webpack_require__(/*! modules/CoreWebclient/js/Settings.js */ "KIwC"),
  AccountList = __webpack_require__(/*! modules/MailWebclient/js/AccountList.js */ "Fj7m");
;

/**
 * @constructor
 */
function CDefaultAccountHostsSettingsView() {
  this.defaultAccount = AccountList.getDefault();
  this.visible = ko.observable(!!this.defaultAccount && this.defaultAccount.oServer.bSetExternalAccessServers);
  this.externalAccessImapServer = ko.observable(this.visible() ? this.defaultAccount.oServer.sExternalAccessImapServer : '');
  this.externalAccessImapPort = ko.observable(this.visible() ? this.defaultAccount.oServer.iExternalAccessImapPort : 143);
  this.externalAccessImapAlterPort = ko.observable(this.visible() && this.defaultAccount.oServer.iExternalAccessImapAlterPort > 0 ? this.defaultAccount.oServer.iExternalAccessImapAlterPort : '');
  this.externalAccessImapUseSsl = ko.observable(this.visible() ? this.defaultAccount.oServer.bExternalAccessImapUseSsl : false);
  this.externalAccessPop3Server = ko.observable(this.visible() ? this.defaultAccount.oServer.sExternalAccessPop3Server : '');
  this.externalAccessPop3Port = ko.observable(this.visible() ? this.defaultAccount.oServer.iExternalAccessPop3Port : 110);
  this.externalAccessPop3AlterPort = ko.observable(this.visible() && this.defaultAccount.oServer.iExternalAccessPop3AlterPort > 0 ? this.defaultAccount.oServer.iExternalAccessPop3AlterPort : '');
  this.externalAccessPop3UseSsl = ko.observable(this.visible() ? this.defaultAccount.oServer.bExternalAccessImapUseSsl : false);
  this.externalAccessSmtpServer = ko.observable(this.visible() ? this.defaultAccount.oServer.sExternalAccessSmtpServer : '');
  this.externalAccessSmtpPort = ko.observable(this.visible() ? this.defaultAccount.oServer.iExternalAccessSmtpPort : 25);
  this.externalAccessSmtpAlterPort = ko.observable(this.visible() && this.defaultAccount.oServer.iExternalAccessSmtpAlterPort > 0 ? this.defaultAccount.oServer.iExternalAccessSmtpAlterPort : '');
  this.externalAccessSmtpUseSsl = ko.observable(this.visible() ? this.defaultAccount.oServer.bExternalAccessSmtpUseSsl : false);
  this.credentialsHintText = App.mobileCredentialsHintText;
  this.bDemo = UserSettings.IsDemo;
}
CDefaultAccountHostsSettingsView.prototype.ViewTemplate = 'MailWebclient_DefaultAccountHostsSettingsView';
module.exports = new CDefaultAccountHostsSettingsView();

/***/ }),

/***/ "5RIG":
/*!******************************************************!*\
  !*** ./modules/CoreWebclient/js/utils/Validation.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  Screens = __webpack_require__(/*! modules/CoreWebclient/js/Screens.js */ "D2Gh"),
  ValidationUtils = {};
ValidationUtils.checkIfFieldsEmpty = function (aRequiredFields, sErrorText) {
  var koFirstEmptyField = _.find(aRequiredFields, function (koField) {
    return koField() === '';
  });
  if (koFirstEmptyField) {
    if (sErrorText) {
      Screens.showError(sErrorText);
    }
    koFirstEmptyField.focused(true);
    return false;
  }
  return true;
};
ValidationUtils.checkPassword = function (sNewPass, sConfirmPassword) {
  var TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
    Settings = __webpack_require__(/*! modules/CoreWebclient/js/Settings.js */ "KIwC"),
    bPasswordValid = false;
  if (sConfirmPassword !== sNewPass) {
    Screens.showError(TextUtils.i18n('COREWEBCLIENT/ERROR_PASSWORDS_DO_NOT_MATCH'));
  } else if (Settings.PasswordMinLength > 0 && sNewPass.length < Settings.PasswordMinLength) {
    Screens.showError(TextUtils.i18n('COREWEBCLIENT/ERROR_PASSWORD_TOO_SHORT').replace('%N%', Settings.PasswordMinLength));
  } else if (Settings.PasswordMustBeComplex && (!sNewPass.match(/([0-9])/) || !sNewPass.match(/([!,%,&,@,#,$,^,*,?,_,~])/))) {
    Screens.showError(TextUtils.i18n('COREWEBCLIENT/ERROR_PASSWORD_TOO_SIMPLE'));
  } else {
    bPasswordValid = true;
  }
  return bPasswordValid;
};
module.exports = ValidationUtils;

/***/ }),

/***/ "5qUT":
/*!*******************************************************************************************!*\
  !*** ./modules/MailWebclient/js/views/settings/AccountAllowBlockListsSettingsFormView.js ***!
  \*******************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  Types = __webpack_require__(/*! modules/CoreWebclient/js/utils/Types.js */ "ERH9"),
  Api = __webpack_require__(/*! modules/CoreWebclient/js/Api.js */ "Z9uT"),
  ModulesManager = __webpack_require__(/*! modules/CoreWebclient/js/ModulesManager.js */ "5D2l"),
  Screens = __webpack_require__(/*! modules/CoreWebclient/js/Screens.js */ "D2Gh"),
  CAbstractSettingsFormView = ModulesManager.run('SettingsWebclient', 'getAbstractSettingsFormViewClass'),
  AccountList = __webpack_require__(/*! modules/MailWebclient/js/AccountList.js */ "Fj7m"),
  Ajax = __webpack_require__(/*! modules/MailWebclient/js/Ajax.js */ "P7bQ");

/**
 * @constructor
 */
function CAccountAllowBlockListsSettingsFormView() {
  CAbstractSettingsFormView.call(this, 'MailWebclient');
  this.spamScore = ko.observable('');
  this.allowList = ko.observable('');
  this.blockList = ko.observable('');
}
_.extendOwn(CAccountAllowBlockListsSettingsFormView.prototype, CAbstractSettingsFormView.prototype);
CAccountAllowBlockListsSettingsFormView.prototype.ViewTemplate = 'MailWebclient_Settings_AccountAllowBlockListsSettingsFormView';
CAccountAllowBlockListsSettingsFormView.prototype.getCurrentValues = function () {
  return [this.spamScore(), this.allowList(), this.blockList()];
};
CAccountAllowBlockListsSettingsFormView.prototype.onShow = function () {
  this.populate();
};
CAccountAllowBlockListsSettingsFormView.prototype.getParametersForSave = function () {
  return {
    'AccountID': AccountList.editedId(),
    'SpamScore': Types.pInt(this.spamScore()),
    'AllowList': this.allowList() !== '' ? this.allowList().split('\n') : [],
    'BlockList': this.blockList() !== '' ? this.blockList().split('\n') : []
  };
};
CAccountAllowBlockListsSettingsFormView.prototype.save = function () {
  this.isSaving(true);
  this.updateSavedState();
  Ajax.send('SetAccountSpamSettings', this.getParametersForSave(), this.onResponse, this);
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CAccountAllowBlockListsSettingsFormView.prototype.onResponse = function (oResponse, oRequest) {
  this.isSaving(false);
  if (oResponse.Result === false) {
    Api.showErrorByCode(oResponse, TextUtils.i18n('COREWEBCLIENT/ERROR_SAVING_SETTINGS_FAILED'));
  } else {
    Screens.showReport(TextUtils.i18n('COREWEBCLIENT/REPORT_SETTINGS_UPDATE_SUCCESS'));
  }
};
CAccountAllowBlockListsSettingsFormView.prototype.populate = function () {
  var oAccount = AccountList.getEdited();
  if (oAccount) {
    Ajax.send('GetAccountSpamSettings', {
      'AccountID': oAccount.id()
    }, this.onGetAllowBlockListsResponse, this);
  }
  this.updateSavedState();
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CAccountAllowBlockListsSettingsFormView.prototype.onGetAllowBlockListsResponse = function (oResponse, oRequest) {
  var oResult = oResponse && oResponse.Result;
  if (oResult) {
    var iSpamScore = Types.pInt(oResult.SpamScore),
      aAllowList = Types.pArray(oResult.AllowList),
      aBlockList = Types.pArray(oResult.BlockList);
    this.spamScore(iSpamScore);
    this.allowList(aAllowList.join('\n'));
    this.blockList(aBlockList.join('\n'));
    this.updateSavedState();
  }
};
module.exports = new CAccountAllowBlockListsSettingsFormView();

/***/ }),

/***/ "6jKE":
/*!*****************************************************************************************!*\
  !*** ./modules/MailWebclient/js/views/settings/AccountAutoresponderSettingsFormView.js ***!
  \*****************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var $ = __webpack_require__(/*! jquery */ "M4cL");


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  moment = __webpack_require__(/*! moment */ "sdEb"),
  DateUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Date.js */ "jFqX"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  Types = __webpack_require__(/*! modules/CoreWebclient/js/utils/Types.js */ "ERH9"),
  CalendarUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Calendar.js */ "1+/O"),
  CommonUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Common.js */ "uQaC"),
  Api = __webpack_require__(/*! modules/CoreWebclient/js/Api.js */ "Z9uT"),
  ModulesManager = __webpack_require__(/*! modules/CoreWebclient/js/ModulesManager.js */ "5D2l"),
  Screens = __webpack_require__(/*! modules/CoreWebclient/js/Screens.js */ "D2Gh"),
  CAbstractSettingsFormView = ModulesManager.run('SettingsWebclient', 'getAbstractSettingsFormViewClass'),
  AccountList = __webpack_require__(/*! modules/MailWebclient/js/AccountList.js */ "Fj7m"),
  Ajax = __webpack_require__(/*! modules/MailWebclient/js/Ajax.js */ "P7bQ"),
  Settings = __webpack_require__(/*! modules/MailWebclient/js/Settings.js */ "Ua3z"),
  UserSettings = __webpack_require__(/*! modules/CoreWebclient/js/Settings.js */ "KIwC"),
  CAutoresponderModel = __webpack_require__(/*! modules/MailWebclient/js/models/CAutoresponderModel.js */ "MIfO");
__webpack_require__(/*! jquery-ui/ui/widgets/datepicker */ "okSt");

/**
 * @constructor
 */
function CAccountAutoresponderSettingsFormView() {
  CAbstractSettingsFormView.call(this, Settings.ServerModuleName);
  this.enable = ko.observable(false);
  this.subject = ko.observable('');
  this.message = ko.observable('');
  this.scheduled = ko.observable(false);
  this.dateFormatMoment = ko.computed(function () {
    return CommonUtils.getDateFormatForMoment(UserSettings.dateFormat());
  }, this);
  this.startDateDom = ko.observable(null);
  this.startTimestamp = ko.observable(null);
  this.endDateDom = ko.observable(null);
  this.endTimestamp = ko.observable(null);
  this.startTimestamp.subscribe(function (v) {
    var momentStart = moment.unix(v);
    this.startDateDom().datepicker('setDate', momentStart.format(this.dateFormatMoment()));
    var momentEnd = this.endTimestamp() ? moment.unix(this.endTimestamp()) : moment();
    if (momentStart.diff(momentEnd, 'days') >= 0 && this.endDateDom()) {
      var newMomentEnd = momentStart.add(6, 'days');
      this.endTimestamp(newMomentEnd.unix());
    }
  }, this);
  this.endTimestamp.subscribe(function (v) {
    var momentEnd = moment.unix(v);
    this.endDateDom().datepicker('setDate', momentEnd.format(this.dateFormatMoment()));
    var momentStart = this.startTimestamp() ? moment.unix(this.startTimestamp()) : moment();
    if (momentStart.diff(momentEnd, 'days') >= 0 && this.startDateDom()) {
      var newMomentStart = momentEnd.subtract(6, 'days');
      this.startTimestamp(newMomentStart.unix());
    }
  }, this);
  AccountList.editedId.subscribe(function () {
    if (this.bShown) {
      this.populate();
    }
  }, this);
  this.startDateDom.subscribe(function (v) {
    if (!this.startTimestamp()) {
      this.startTimestamp(moment().unix());
    }
    this.createDatePickerObject(v, this.startTimestamp);
  }, this);
  this.endDateDom.subscribe(function (v) {
    if (!this.endTimestamp()) {
      this.endTimestamp(moment().add(6, 'days').unix());
    }
    this.createDatePickerObject(v, this.endTimestamp);
  }, this);
  this.allowScheduledAutoresponder = Settings.AllowScheduledAutoresponder;
}
_.extendOwn(CAccountAutoresponderSettingsFormView.prototype, CAbstractSettingsFormView.prototype);
CAccountAutoresponderSettingsFormView.prototype.ViewTemplate = 'MailWebclient_Settings_AccountAutoresponderSettingsFormView';
CAccountAutoresponderSettingsFormView.prototype.getCurrentValues = function () {
  return [this.enable(), this.subject(), this.message(), this.scheduled(), this.startTimestamp(), this.endTimestamp()];
};
CAccountAutoresponderSettingsFormView.prototype.onShow = function () {
  this.populate();
};
CAccountAutoresponderSettingsFormView.prototype.revert = function () {
  this.populate();
};
CAccountAutoresponderSettingsFormView.prototype.getParametersForSave = function () {
  var oParams = {
    'AccountID': AccountList.editedId(),
    'Enable': this.enable(),
    'Subject': this.subject(),
    'Message': this.message(),
    'Scheduled': this.scheduled()
  };
  if (this.scheduled()) {
    oParams['Start'] = this.startTimestamp();
    oParams['End'] = this.endTimestamp();
  }
  return oParams;
};
CAccountAutoresponderSettingsFormView.prototype.applySavedValues = function (oParameters) {
  var oAccount = AccountList.getEdited(),
    oAutoresponder = oAccount.autoresponder();
  if (oAutoresponder) {
    oAutoresponder.enable = oParameters.Enable;
    oAutoresponder.subject = oParameters.Subject;
    oAutoresponder.message = oParameters.Message;
    oAutoresponder.scheduled = oParameters.Scheduled;
    oAutoresponder.start = oParameters.Start;
    oAutoresponder.end = oParameters.End;
  }
};
CAccountAutoresponderSettingsFormView.prototype.save = function () {
  this.isSaving(true);
  this.updateSavedState();
  Ajax.send('UpdateAutoresponder', this.getParametersForSave(), this.onResponse, this);
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CAccountAutoresponderSettingsFormView.prototype.onResponse = function (oResponse, oRequest) {
  this.isSaving(false);
  if (oResponse.Result === false) {
    Api.showErrorByCode(oResponse, TextUtils.i18n('COREWEBCLIENT/ERROR_SAVING_SETTINGS_FAILED'));
  } else {
    var oParameters = oRequest.Parameters;
    this.applySavedValues(oParameters);
    Screens.showReport(TextUtils.i18n('MAILWEBCLIENT/REPORT_AUTORESPONDER_UPDATE_SUCCESS'));
  }
};
CAccountAutoresponderSettingsFormView.prototype.populate = function () {
  var oAccount = AccountList.getEdited();
  if (oAccount) {
    var oAutoresponder = oAccount.autoresponder();
    if (oAutoresponder !== null) {
      this.enable(oAutoresponder.enable);
      this.subject(oAutoresponder.subject);
      this.message(oAutoresponder.message);
      this.scheduled(oAutoresponder.scheduled);
      if (oAutoresponder.start !== null) {
        this.startTimestamp(oAutoresponder.start);
      }
      if (oAutoresponder.end !== null) {
        this.endTimestamp(oAutoresponder.end);
      }
    } else {
      Ajax.send('GetAutoresponder', {
        'AccountID': oAccount.id()
      }, this.onGetAutoresponderResponse, this);
    }
  }
  this.updateSavedState();
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CAccountAutoresponderSettingsFormView.prototype.onGetAutoresponderResponse = function (oResponse, oRequest) {
  if (oResponse && oResponse.Result) {
    var oParameters = oRequest.Parameters,
      iAccountId = Types.pInt(oParameters.AccountID),
      oAccount = AccountList.getAccount(iAccountId),
      oAutoresponder = new CAutoresponderModel();
    if (oAccount) {
      oAutoresponder.parse(iAccountId, oResponse.Result);
      oAccount.autoresponder(oAutoresponder);
      if (iAccountId === AccountList.editedId()) {
        this.populate();
      }
    }
  }
};
CAccountAutoresponderSettingsFormView.prototype.createDatePickerObject = function (oElement, value) {
  var _this = this;
  $(oElement).datepicker({
    showOtherMonths: true,
    selectOtherMonths: true,
    monthNames: DateUtils.getMonthNamesArray(),
    dayNamesMin: TextUtils.i18n('COREWEBCLIENT/LIST_DAY_NAMES_MIN').split(' '),
    nextText: '',
    prevText: '',
    firstDay: Types.pInt(ModulesManager.run('CalendarWebclient', 'getWeekStartsOn')),
    showOn: 'focus',
    dateFormat: CalendarUtils.getDateFormatForDatePicker(UserSettings.dateFormat()),
    onClose: function onClose(sValue) {
      if (ko.isObservable(value)) {
        value(moment(sValue, _this.dateFormatMoment()).unix());
      }
    }
  });
  $(oElement).datepicker('setDate', moment.unix(value()).format(this.dateFormatMoment()));
  $(oElement).on('mousedown', function () {
    $('#ui-datepicker-div').toggle();
  });
};
module.exports = new CAccountAutoresponderSettingsFormView();

/***/ }),

/***/ "8xco":
/*!*************************************************************!*\
  !*** ./modules/MailWebclient/js/popups/CreateAliasPopup.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  App = __webpack_require__(/*! modules/CoreWebclient/js/App.js */ "yU9o"),
  Api = __webpack_require__(/*! modules/CoreWebclient/js/Api.js */ "Z9uT"),
  ModulesManager = __webpack_require__(/*! modules/CoreWebclient/js/ModulesManager.js */ "5D2l"),
  CAbstractPopup = __webpack_require__(/*! modules/CoreWebclient/js/popups/CAbstractPopup.js */ "69av"),
  Screens = __webpack_require__(/*! modules/CoreWebclient/js/Screens.js */ "D2Gh"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  AccountList = __webpack_require__(/*! modules/MailWebclient/js/AccountList.js */ "Fj7m"),
  Settings = __webpack_require__(/*! modules/MailWebclient/js/Settings.js */ "Ua3z"),
  Ajax = __webpack_require__(/*! modules/MailWebclient/js/Ajax.js */ "P7bQ"),
  CoreAjax = __webpack_require__(/*! modules/CoreWebclient/js/Ajax.js */ "8QQh");

/**
 * @constructor
 */
function CreateAliasPopup() {
  CAbstractPopup.call(this);
  this.iAccountId = 0;
  this.aliasName = ko.observable('');
  this.loading = ko.observable(false);
  this.selectedDomain = ko.observable(null);
  this.domainList = ko.observableArray([]);
}
_.extendOwn(CreateAliasPopup.prototype, CAbstractPopup.prototype);
CreateAliasPopup.prototype.PopupTemplate = 'MailWebclient_Settings_CreateAliasPopup';

/**
 * @param {number} iAccountId
 */
CreateAliasPopup.prototype.onOpen = function (iAccountId) {
  this.iAccountId = iAccountId;
  this.getDomainList();
};
CreateAliasPopup.prototype.onClose = function () {
  this.aliasName('');
};
CreateAliasPopup.prototype.save = function () {
  if (this.aliasName() === '') {
    Screens.showError(TextUtils.i18n('COREWEBCLIENT/ERROR_REQUIRED_FIELDS_EMPTY'));
  } else {
    var oParameters = {
      'AliasName': this.aliasName(),
      'AliasDomain': this.selectedDomain()
    };
    this.loading(true);
    CoreAjax.send(Settings.AliasesServerModuleName, 'AddNewAlias', oParameters, this.onCreateAliasResponse, this);
  }
};
CreateAliasPopup.prototype.getDomainList = function () {
  var iServerId = AccountList.getCurrent().serverId(),
    iTenantId = _.isFunction(App.getTenantId) ? App.getTenantId() : 0;
  Ajax.send('GetServerDomains', {
    ServerId: iServerId,
    TenantId: iTenantId
  }, this.onGetDomainListResponse, this);
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CreateAliasPopup.prototype.onGetDomainListResponse = function (oResponse, oRequest) {
  if (oResponse.Result) {
    this.domainList(oResponse.Result);
  }
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CreateAliasPopup.prototype.onCreateAliasResponse = function (oResponse, oRequest) {
  this.loading(false);
  if (oResponse.Result) {
    AccountList.populateAliases(function () {
      var oCurrAccount = AccountList.getCurrent(),
        aCurrAliases = oCurrAccount.aliases(),
        oCreatedAlias = _.find(aCurrAliases, function (oAlias) {
          return oAlias.id() === oResponse.Result;
        });
      if (oCreatedAlias) {
        ModulesManager.run('SettingsWebclient', 'setAddHash', [['alias', oCreatedAlias.hash()]]);
      }
    });
    this.closePopup();
  } else {
    Api.showErrorByCode(oResponse, TextUtils.i18n('COREWEBCLIENT/ERROR_UNKNOWN'));
  }
};
module.exports = new CreateAliasPopup();

/***/ }),

/***/ "9lZ8":
/*!*****************************************************************************!*\
  !*** ./modules/MailWebclient/js/views/settings/AccountsSettingsPaneView.js ***!
  \*****************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  App = __webpack_require__(/*! modules/CoreWebclient/js/App.js */ "yU9o"),
  ModulesManager = __webpack_require__(/*! modules/CoreWebclient/js/ModulesManager.js */ "5D2l"),
  Routing = __webpack_require__(/*! modules/CoreWebclient/js/Routing.js */ "ioSH"),
  Screens = __webpack_require__(/*! modules/CoreWebclient/js/Screens.js */ "D2Gh"),
  Popups = __webpack_require__(/*! modules/CoreWebclient/js/Popups.js */ "PMEU"),
  CreateAccountShortFormPopup = __webpack_require__(/*! modules/MailWebclient/js/popups/CreateAccountShortFormPopup.js */ "qpcR"),
  CreateIdentityPopup = __webpack_require__(/*! modules/MailWebclient/js/popups/CreateIdentityPopup.js */ "ZYTm"),
  CreateFetcherPopup = __webpack_require__(/*! modules/MailWebclient/js/popups/CreateFetcherPopup.js */ "AY4M"),
  CreateAliasPopup = __webpack_require__(/*! modules/MailWebclient/js/popups/CreateAliasPopup.js */ "8xco"),
  Ajax = __webpack_require__(/*! modules/MailWebclient/js/Ajax.js */ "P7bQ"),
  AccountList = __webpack_require__(/*! modules/MailWebclient/js/AccountList.js */ "Fj7m"),
  CServerModel = __webpack_require__(/*! modules/MailWebclient/js/models/CServerModel.js */ "UVn1"),
  Settings = __webpack_require__(/*! modules/MailWebclient/js/Settings.js */ "Ua3z"),
  AccountAutoresponderSettingsFormView = __webpack_require__(/*! modules/MailWebclient/js/views/settings/AccountAutoresponderSettingsFormView.js */ "6jKE"),
  AccountAllowBlockListsSettingsFormView = __webpack_require__(/*! modules/MailWebclient/js/views/settings/AccountAllowBlockListsSettingsFormView.js */ "5qUT"),
  AccountFiltersSettingsFormView = __webpack_require__(/*! modules/MailWebclient/js/views/settings/AccountFiltersSettingsFormView.js */ "r79L"),
  AccountFoldersPaneView = __webpack_require__(/*! modules/MailWebclient/js/views/settings/AccountFoldersPaneView.js */ "ELk6"),
  AccountForwardSettingsFormView = __webpack_require__(/*! modules/MailWebclient/js/views/settings/AccountForwardSettingsFormView.js */ "Dq0Z"),
  AccountSettingsFormView = __webpack_require__(/*! modules/MailWebclient/js/views/settings/AccountSettingsFormView.js */ "NMTm"),
  AccountUnifiedMailboxFormView = __webpack_require__(/*! modules/MailWebclient/js/views/settings/AccountUnifiedMailboxFormView.js */ "F9TS"),
  CIdentitySettingsFormView = __webpack_require__(/*! modules/MailWebclient/js/views/settings/CIdentitySettingsFormView.js */ "l21M"),
  CFetcherIncomingSettingsFormView = __webpack_require__(/*! modules/MailWebclient/js/views/settings/CFetcherIncomingSettingsFormView.js */ "jSiL"),
  CAliasSettingsFormView = __webpack_require__(/*! modules/MailWebclient/js/views/settings/CAliasSettingsFormView.js */ "SRQT"),
  FetcherOutgoingSettingsFormView = __webpack_require__(/*! modules/MailWebclient/js/views/settings/FetcherOutgoingSettingsFormView.js */ "wvqg"),
  SignatureSettingsFormView = __webpack_require__(/*! modules/MailWebclient/js/views/settings/SignatureSettingsFormView.js */ "bOgC");

/**
 * @constructor
 */
function CAccountsSettingsPaneView() {
  this.bAllowAddAccounts = Settings.AllowAddAccounts;
  this.bAllowMultiAccounts = Settings.AllowMultiAccounts;
  this.bAllowIdentities = !!Settings.AllowIdentities;
  this.bAllowFetchers = !!Settings.AllowFetchers;
  this.bAllowAliases = !!Settings.AllowAliases;
  this.accounts = AccountList.collection;
  this.editedAccountId = AccountList.editedId;
  this.editedFetcher = ko.observable(null);
  this.editedFetcherId = ko.computed(function () {
    return this.editedFetcher() ? this.editedFetcher().id() : null;
  }, this);
  this.editedIdentity = ko.observable(null);
  this.editedIdentityHash = ko.computed(function () {
    return this.editedIdentity() ? this.editedIdentity().hash() : null;
  }, this);
  this.editedAlias = ko.observable(null);
  this.editedAliasId = ko.computed(function () {
    return this.editedAlias() ? this.editedAlias().id() : null;
  }, this);
  this.allowFolders = ko.observable(false);
  this.allowForward = ko.observable(false);
  this.allowAutoresponder = ko.observable(false);
  this.allowFilters = ko.observable(false);
  this.allowSignature = ko.observable(false);
  this.visibleAllowBlockLists = ko.observable(false);
  this.aAccountTabs = [{
    name: 'properties',
    title: TextUtils.i18n('MAILWEBCLIENT/LABEL_PROPERTIES_TAB'),
    view: AccountSettingsFormView,
    visible: AccountSettingsFormView.visibleTab
  }, {
    name: 'unified',
    title: TextUtils.i18n('MAILWEBCLIENT/LABEL_UNIFIED_MAILBOX_TAB'),
    view: AccountUnifiedMailboxFormView,
    visible: AccountUnifiedMailboxFormView.visibleTab
  }, {
    name: 'folders',
    title: TextUtils.i18n('MAILWEBCLIENT/LABEL_MANAGE_FOLDERS_TAB'),
    view: AccountFoldersPaneView,
    visible: this.allowFolders
  }, {
    name: 'forward',
    title: TextUtils.i18n('MAILWEBCLIENT/LABEL_FORWARD_TAB'),
    view: AccountForwardSettingsFormView,
    visible: this.allowForward
  }, {
    name: 'autoresponder',
    title: TextUtils.i18n('MAILWEBCLIENT/LABEL_AUTORESPONDER_TAB'),
    view: AccountAutoresponderSettingsFormView,
    visible: this.allowAutoresponder
  }, {
    name: 'filters',
    title: TextUtils.i18n('MAILWEBCLIENT/LABEL_FILTERS_TAB'),
    view: AccountFiltersSettingsFormView,
    visible: this.allowFilters
  }, {
    name: 'signature',
    title: TextUtils.i18n('MAILWEBCLIENT/LABEL_SIGNATURE_TAB'),
    view: SignatureSettingsFormView,
    visible: this.allowSignature
  }, {
    name: 'allow-block-lists',
    title: TextUtils.i18n('MAILWEBCLIENT/LABEL_ACCOUNT_SPAM_TAB'),
    view: AccountAllowBlockListsSettingsFormView,
    visible: this.visibleAllowBlockLists
  }];
  this.aIdentityTabs = [{
    name: 'properties',
    title: TextUtils.i18n('MAILWEBCLIENT/LABEL_PROPERTIES_TAB'),
    view: new CIdentitySettingsFormView(this),
    visible: ko.observable(true)
  }, {
    name: 'signature',
    title: TextUtils.i18n('MAILWEBCLIENT/LABEL_SIGNATURE_TAB'),
    view: SignatureSettingsFormView,
    visible: ko.observable(true)
  }];
  this.aFetcherTabs = [{
    name: 'incoming',
    title: TextUtils.i18n('MAILWEBCLIENT/LABEL_POP3_SETTINGS_TAB'),
    view: new CFetcherIncomingSettingsFormView(this),
    visible: ko.observable(true)
  }, {
    name: 'outgoing',
    title: TextUtils.i18n('MAILWEBCLIENT/LABEL_SMTP_SETTINGS_TAB'),
    view: FetcherOutgoingSettingsFormView,
    visible: ko.observable(true)
  }, {
    name: 'signature',
    title: TextUtils.i18n('MAILWEBCLIENT/LABEL_SIGNATURE_TAB'),
    view: SignatureSettingsFormView,
    visible: ko.observable(true)
  }];
  this.aAliasTabs = [{
    name: 'properties',
    title: TextUtils.i18n('MAILWEBCLIENT/LABEL_PROPERTIES_TAB'),
    view: new CAliasSettingsFormView(this, this.bAllowAliases),
    visible: ko.observable(true)
  }, {
    name: 'signature',
    title: TextUtils.i18n('MAILWEBCLIENT/LABEL_SIGNATURE_TAB'),
    view: SignatureSettingsFormView,
    visible: ko.observable(true)
  }];
  this.currentTab = ko.observable(null);
  this.tabs = ko.computed(function () {
    if (this.editedIdentity()) {
      return this.aIdentityTabs;
    }
    if (this.editedFetcher()) {
      return this.aFetcherTabs;
    }
    if (this.editedAlias()) {
      return this.aAliasTabs;
    }
    return this.aAccountTabs;
  }, this);
  AccountList.editedId.subscribe(function () {
    this.populate();
  }, this);
  App.broadcastEvent('MailWebclient::ConstructView::after', {
    Name: this.ViewConstructorName,
    View: this
  });
}
CAccountsSettingsPaneView.prototype.ViewTemplate = 'MailWebclient_Settings_AccountsSettingsPaneView';
CAccountsSettingsPaneView.prototype.ViewConstructorName = 'CAccountsSettingsPaneView';

/**
 * Checks if there are changes in accounts settings pane.
 * @returns {Boolean}
 */
CAccountsSettingsPaneView.prototype.hasUnsavedChanges = function () {
  var oCurrentTab = this.currentTab();
  return oCurrentTab && oCurrentTab.view && _.isFunction(oCurrentTab.view.hasUnsavedChanges) && oCurrentTab.view.hasUnsavedChanges();
};

/**
 * Reverts all changes in accounts settings pane.
 */
CAccountsSettingsPaneView.prototype.revert = function () {
  var oCurrentTab = this.currentTab();
  if (oCurrentTab && oCurrentTab.view && _.isFunction(oCurrentTab.view.revert)) {
    oCurrentTab.view.revert();
  }
};

/**
 * @param {Function} fAfterHideHandler
 * @param {Function} fRevertRouting
 */
CAccountsSettingsPaneView.prototype.hide = function (fAfterHideHandler, fRevertRouting) {
  if (this.currentTab() && _.isFunction(this.currentTab().view.hide)) {
    this.currentTab().view.hide(fAfterHideHandler, fRevertRouting);
  } else {
    fAfterHideHandler();
  }
};

/**
 * @param {Array} aParams
 */
CAccountsSettingsPaneView.prototype.showTab = function (aParams) {
  var sType = aParams.length > 0 ? aParams[0] : 'account',
    oEditedAccount = AccountList.getEdited(),
    sHash = aParams.length > 1 ? aParams[1] : oEditedAccount ? oEditedAccount.hash() : '',
    sTab = aParams.length > 2 ? aParams[2] : '';
  this.editedIdentity(sType === 'identity' ? AccountList.getIdentityByHash(sHash) || null : null);
  this.editedFetcher(sType === 'fetcher' ? AccountList.getFetcherByHash(sHash) || null : null);
  this.editedAlias(sType === 'alias' ? AccountList.getAliasByHash(sHash) || null : null);
  if (sType === 'account') {
    if (aParams[1] === 'create' && !AccountList.hasAccount()) {
      this.addAccount();
      Screens.showError(TextUtils.i18n('MAILWEBCLIENT/INFO_SPECIFY_CREDENTIALS'));
      Routing.replaceHashDirectly(['settings', 'mail-accounts']);
    } else if (sHash !== '') {
      if (oEditedAccount && oEditedAccount.hash() === sHash) {
        this.populate();
      } else {
        if (_.find(AccountList.collection(), function (oAccount) {
          return oAccount.hash() === sHash;
        })) {
          AccountList.changeEditedAccountByHash(sHash);
        } else {
          Routing.replaceHash(['settings', 'mail-accounts']);
        }
      }
    }
  }
  this.changeTab(sTab || this.getAutoselectedTab().name);
};
CAccountsSettingsPaneView.prototype.getAutoselectedTab = function () {
  var oCurrentTab = _.find(this.tabs(), function (oTab) {
    return oTab.visible();
  });
  if (!oCurrentTab) {
    oCurrentTab = this.tabs()[0];
  }
  return oCurrentTab;
};
CAccountsSettingsPaneView.prototype.addAccount = function () {
  var iTenantId = _.isFunction(App.getTenantId) ? App.getTenantId() : null;
  if (iTenantId !== null) {
    Ajax.send('GetServers', {
      'TenantId': iTenantId
    }, function (oResponse) {
      var aOAuthOptions = [];
      if (_.isArray(oResponse && oResponse.Result && oResponse.Result.Items)) {
        _.each(oResponse.Result.Items, function (oServerData) {
          var oServer = new CServerModel(oServerData);
          if (oServer.bOauthEnable) {
            aOAuthOptions.push({
              'Name': oServer.sOauthName,
              'Type': oServer.sOauthType,
              'IconUrl': oServer.sOauthIconUrl
            });
          }
        });
        if (aOAuthOptions.length > 0) {
          aOAuthOptions.push({
            'Name': 'Other',
            'Type': '',
            'IconUrl': 'static/styles/images/modules/MailWebclient/logo_other.png'
          });
        }
      }
      this.openCreateAccountShortFormPopup(aOAuthOptions);
    }, this);
  } else {
    this.openCreateAccountShortFormPopup([]);
  }
};
CAccountsSettingsPaneView.prototype.openCreateAccountShortFormPopup = function (aOAuthOptions) {
  Popups.showPopup(CreateAccountShortFormPopup, [aOAuthOptions, _.bind(function (iAccountId) {
    var oAccount = AccountList.getAccount(iAccountId);
    if (oAccount) {
      this.editAccount(oAccount.hash());
    }
  }, this)]);
};

/**
 * @param {string} sHash
 */
CAccountsSettingsPaneView.prototype.editAccount = function (sHash) {
  ModulesManager.run('SettingsWebclient', 'setAddHash', [['account', sHash]]);
};

/**
 * @param {number} iAccountId
 * @param {Object} oEv
 */
CAccountsSettingsPaneView.prototype.addIdentity = function (iAccountId, oEv) {
  oEv.stopPropagation();
  Popups.showPopup(CreateIdentityPopup, [iAccountId]);
};

/**
 * @param {string} sHash
 */
CAccountsSettingsPaneView.prototype.editIdentity = function (sHash) {
  ModulesManager.run('SettingsWebclient', 'setAddHash', [['identity', sHash]]);
};

/**
 * @param {number} iAccountId
 * @param {Object} oEv
 */
CAccountsSettingsPaneView.prototype.addFetcher = function (iAccountId, oEv) {
  oEv.stopPropagation();
  Popups.showPopup(CreateFetcherPopup, [iAccountId]);
};

/**
 * @param {string} sHash
 */
CAccountsSettingsPaneView.prototype.editFetcher = function (sHash) {
  ModulesManager.run('SettingsWebclient', 'setAddHash', [['fetcher', sHash]]);
};

/**
 * @param {number} iAccountId
 * @param {Object} oEv
 */
CAccountsSettingsPaneView.prototype.addAlias = function (iAccountId, oEv) {
  oEv.stopPropagation();
  Popups.showPopup(CreateAliasPopup, [iAccountId]);
};

/**
 * @param {string} sHash
 */
CAccountsSettingsPaneView.prototype.editAlias = function (sHash) {
  ModulesManager.run('SettingsWebclient', 'setAddHash', [['alias', sHash]]);
};

/**
 * @param {string} sTabName
 */
CAccountsSettingsPaneView.prototype.changeRoute = function (sTabName) {
  var oEditedAccount = AccountList.getEdited(),
    aAddHash = ['account', oEditedAccount ? oEditedAccount.hash() : '', sTabName];
  if (this.editedIdentity()) {
    aAddHash = ['identity', this.editedIdentity().hash(), sTabName];
  } else if (this.editedFetcher()) {
    aAddHash = ['fetcher', this.editedFetcher().hash(), sTabName];
  } else if (this.editedAlias()) {
    aAddHash = ['alias', this.editedAlias().hash(), sTabName];
  }
  ModulesManager.run('SettingsWebclient', 'setAddHash', [aAddHash]);
};

/**
 * @param {string} sName
 */
CAccountsSettingsPaneView.prototype.changeTab = function (sName) {
  var oCurrentTab = this.currentTab(),
    oNewTab = _.find(this.tabs(), function (oTab) {
      return oTab.visible() && oTab.name === sName;
    }),
    fShowNewTab = function () {
      if (oNewTab) {
        if (_.isFunction(oNewTab.view.showTab)) {
          oNewTab.view.showTab(this.editedIdentity() || this.editedFetcher() || this.editedAlias());
        }
        this.currentTab(oNewTab);
      }
    }.bind(this),
    bShow = true;
  if (oNewTab) {
    if (oCurrentTab && _.isFunction(oCurrentTab.view.hide)) {
      oCurrentTab.view.hide(fShowNewTab, _.bind(function () {
        if (_.isFunction(Routing.stopListening) && _.isFunction(Routing.startListening)) {
          Routing.stopListening();
        }
        this.changeRoute(oCurrentTab.name);
        if (_.isFunction(Routing.startListening)) {
          Routing.startListening();
        }
      }, this));
      bShow = false;
    }
  } else if (!oCurrentTab) {
    oNewTab = this.getAutoselectedTab();
  }
  if (!oCurrentTab) {
    _.delay(_.bind(function () {
      this.changeRoute(oNewTab.name);
    }, this));
  }
  if (bShow) {
    fShowNewTab();
  }
};
CAccountsSettingsPaneView.prototype.populate = function () {
  var oAccount = AccountList.getEdited();
  if (oAccount) {
    this.allowFolders(oAccount.allowManageFolders());
    this.allowForward(oAccount.allowForward());
    this.allowAutoresponder(oAccount.allowAutoresponder());
    this.allowFilters(oAccount.allowFilters());
    this.allowSignature(!Settings.AllowIdentities);
    this.visibleAllowBlockLists(oAccount.enableAllowBlockLists());
    if (!this.currentTab() || !this.currentTab().visible()) {
      this.currentTab(this.getAutoselectedTab());
    }
  }
};
CAccountsSettingsPaneView.prototype.onRemoveIdentity = function () {
  this.editedIdentity(null);
  this.changeTab(this.currentTab() ? this.currentTab().name : '');
};
CAccountsSettingsPaneView.prototype.onRemoveFetcher = function () {
  this.editedFetcher(null);
  this.changeRoute('');
};
CAccountsSettingsPaneView.prototype.onRemoveAlias = function () {
  this.editedAlias(null);
  this.changeRoute('');
};
module.exports = new CAccountsSettingsPaneView();

/***/ }),

/***/ "AY4M":
/*!***************************************************************!*\
  !*** ./modules/MailWebclient/js/popups/CreateFetcherPopup.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  $ = __webpack_require__(/*! jquery */ "M4cL"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  Utils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Common.js */ "uQaC"),
  Api = __webpack_require__(/*! modules/CoreWebclient/js/Api.js */ "Z9uT"),
  Screens = __webpack_require__(/*! modules/CoreWebclient/js/Screens.js */ "D2Gh"),
  CoreAjax = __webpack_require__(/*! modules/CoreWebclient/js/Ajax.js */ "8QQh"),
  Popups = __webpack_require__(/*! modules/CoreWebclient/js/Popups.js */ "PMEU"),
  CAbstractPopup = __webpack_require__(/*! modules/CoreWebclient/js/popups/CAbstractPopup.js */ "69av"),
  CreateFolderPopup = __webpack_require__(/*! modules/MailWebclient/js/popups/CreateFolderPopup.js */ "k0bD"),
  AccountList = __webpack_require__(/*! modules/MailWebclient/js/AccountList.js */ "Fj7m"),
  MailCache = __webpack_require__(/*! modules/MailWebclient/js/Cache.js */ "eGl8"),
  Settings = __webpack_require__(/*! modules/MailWebclient/js/Settings.js */ "Ua3z"),
  CServerPropertiesView = __webpack_require__(/*! modules/MailWebclient/js/views/CServerPropertiesView.js */ "cVoG");

/**
 * @constructor
 */
function CCreateFetcherPopup() {
  CAbstractPopup.call(this);
  this.iAccountId = 0;
  this.loading = ko.observable(false);
  this.newFolderCreating = ko.observable(false);
  this.incomingLogin = ko.observable('');
  this.incomingPassword = ko.observable('');
  this.oIncoming = new CServerPropertiesView(110, 995, 'fectcher_add_incoming', TextUtils.i18n('MAILWEBCLIENT/LABEL_POP3_SERVER'));
  this.folder = ko.observable('');
  this.options = ko.observableArray([]);
  MailCache.folderList.subscribe(function () {
    this.populateOptions();
  }, this);
  this.addNewFolderCommand = Utils.createCommand(this, this.onAddNewFolderClick);
  this.leaveMessagesOnServer = ko.observable(false);
  this.loginIsSelected = ko.observable(false);
  this.passwordIsSelected = ko.observable(false);
  this.defaultOptionsAfterRender = Utils.defaultOptionsAfterRender;
}
_.extendOwn(CCreateFetcherPopup.prototype, CAbstractPopup.prototype);
CCreateFetcherPopup.prototype.PopupTemplate = 'MailWebclient_Settings_CreateFetcherPopup';
CCreateFetcherPopup.prototype.onOpen = function (iAccountId) {
  this.iAccountId = iAccountId;
  this.bShown = true;
  this.populateOptions();
  this.incomingLogin('');
  this.incomingPassword('');
  this.oIncoming.clear();
  this.folder('');
  this.leaveMessagesOnServer(true);
};
CCreateFetcherPopup.prototype.populateOptions = function () {
  if (this.bShown) {
    this.options(MailCache.folderList().getOptions('', true, false, false));
  }
};
CCreateFetcherPopup.prototype.onClose = function () {
  this.bShown = false;
};
CCreateFetcherPopup.prototype.save = function () {
  if (this.isEmptyRequiredFields()) {
    Screens.showError(TextUtils.i18n('COREWEBCLIENT/ERROR_REQUIRED_FIELDS_EMPTY'));
  } else {
    var oParameters = {
      'AccountId': this.iAccountId,
      'Folder': this.folder(),
      'IncomingServer': this.oIncoming.server(),
      'IncomingPort': this.oIncoming.getIntPort(),
      'IncomingUseSsl': this.oIncoming.ssl(),
      'IncomingLogin': $.trim(this.incomingLogin()),
      'IncomingPassword': $.trim(this.incomingPassword()),
      'LeaveMessagesOnServer': this.leaveMessagesOnServer()
    };
    this.loading(true);
    CoreAjax.send(Settings.FetchersServerModuleName, 'CreateFetcher', oParameters, this.onCreateFetcherResponse, this);
  }
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CCreateFetcherPopup.prototype.onCreateFetcherResponse = function (oResponse, oRequest) {
  this.loading(false);
  if (!oResponse.Result) {
    Api.showErrorByCode(oResponse, TextUtils.i18n('COREWEBCLIENT/ERROR_UNKNOWN'));
  } else {
    AccountList.populateFetchers();
    this.closePopup();
  }
};
CCreateFetcherPopup.prototype.cancelPopup = function () {
  if (!this.newFolderCreating()) {
    this.closePopup();
  }
};
CCreateFetcherPopup.prototype.isEmptyRequiredFields = function () {
  switch ('') {
    case this.oIncoming.server():
      this.oIncoming.server.focused(true);
      return true;
    case $.trim(this.incomingLogin()):
      this.loginIsSelected(true);
      return true;
    case $.trim(this.incomingPassword()):
      this.passwordIsSelected(true);
      return true;
    default:
      return false;
  }
};
CCreateFetcherPopup.prototype.onAddNewFolderClick = function () {
  this.newFolderCreating(true);
  Popups.showPopup(CreateFolderPopup, [_.bind(this.chooseFolderInList, this)]);
};

/**
 * @param {string} sFolderName
 * @param {string} sParentFullName
 */
CCreateFetcherPopup.prototype.chooseFolderInList = function (sFolderName, sParentFullName) {
  var sDelimiter = MailCache.folderList().sDelimiter,
    aFolder = [];
  if (sFolderName !== '' && sParentFullName !== '') {
    this.options(MailCache.folderList().getOptions('', true, false, false));
    _.each(this.options(), _.bind(function (oOption) {
      if (sFolderName === oOption.name) {
        aFolder = oOption.fullName.split(sDelimiter);
        aFolder.pop();
        if (sParentFullName === aFolder.join(sDelimiter)) {
          this.folder(oOption.fullName);
        }
      }
    }, this));
  }
  this.newFolderCreating(false);
};
module.exports = new CCreateFetcherPopup();

/***/ }),

/***/ "Dq0Z":
/*!***********************************************************************************!*\
  !*** ./modules/MailWebclient/js/views/settings/AccountForwardSettingsFormView.js ***!
  \***********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  AddressUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Address.js */ "rBrp"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  Types = __webpack_require__(/*! modules/CoreWebclient/js/utils/Types.js */ "ERH9"),
  Api = __webpack_require__(/*! modules/CoreWebclient/js/Api.js */ "Z9uT"),
  ModulesManager = __webpack_require__(/*! modules/CoreWebclient/js/ModulesManager.js */ "5D2l"),
  Screens = __webpack_require__(/*! modules/CoreWebclient/js/Screens.js */ "D2Gh"),
  CAbstractSettingsFormView = ModulesManager.run('SettingsWebclient', 'getAbstractSettingsFormViewClass'),
  Popups = __webpack_require__(/*! modules/CoreWebclient/js/Popups.js */ "PMEU"),
  AlertPopup = __webpack_require__(/*! modules/CoreWebclient/js/popups/AlertPopup.js */ "Rjyw"),
  AccountList = __webpack_require__(/*! modules/MailWebclient/js/AccountList.js */ "Fj7m"),
  Ajax = __webpack_require__(/*! modules/MailWebclient/js/Ajax.js */ "P7bQ"),
  Settings = __webpack_require__(/*! modules/MailWebclient/js/Settings.js */ "Ua3z"),
  CForwardModel = __webpack_require__(/*! modules/MailWebclient/js/models/CForwardModel.js */ "p6Kc");

/**
 * @constructor
 */
function CAccountForwardSettingsFormView() {
  CAbstractSettingsFormView.call(this, Settings.ServerModuleName);
  this.enable = ko.observable(false);
  this.keepcopy = ko.observable(true);
  this.email = ko.observable('');
  this.email.focused = ko.observable(false);
  AccountList.editedId.subscribe(function () {
    if (this.bShown) {
      this.populate();
    }
  }, this);
}
_.extendOwn(CAccountForwardSettingsFormView.prototype, CAbstractSettingsFormView.prototype);
CAccountForwardSettingsFormView.prototype.ViewTemplate = 'MailWebclient_Settings_AccountForwardSettingsFormView';
CAccountForwardSettingsFormView.prototype.getCurrentValues = function () {
  return [this.enable(), this.keepcopy(), this.email()];
};
CAccountForwardSettingsFormView.prototype.revert = function () {
  this.populate();
};
CAccountForwardSettingsFormView.prototype.getParametersForSave = function () {
  var oAccount = AccountList.getEdited();
  return {
    'AccountID': oAccount.id(),
    'Enable': this.enable(),
    'Email': TextUtils.trim(this.email()),
    'KeepMessageCopy': this.keepcopy()
  };
};
CAccountForwardSettingsFormView.prototype.applySavedValues = function (oParameters) {
  var oAccount = AccountList.getEdited(),
    oForward = oAccount.forward();
  if (oForward) {
    oForward.enable = oParameters.Enable;
    oForward.email = oParameters.Email;
    oForward.keepcopy = oParameters.KeepMessageCopy;
  }
};
CAccountForwardSettingsFormView.prototype.save = function () {
  var fSaveData = function () {
      this.isSaving(true);
      this.updateSavedState();
      Ajax.send('UpdateForward', this.getParametersForSave(), this.onResponse, this);
    }.bind(this),
    sEmail = TextUtils.trim(this.email());
  if (this.enable() && sEmail === '') {
    this.email.focused(true);
  } else if (this.enable() && sEmail !== '') {
    if (!AddressUtils.isCorrectEmail(sEmail)) {
      Popups.showPopup(AlertPopup, [TextUtils.i18n('MAILWEBCLIENT/ERROR_INPUT_CORRECT_EMAILS') + ' ' + sEmail]);
    } else {
      fSaveData();
    }
  } else {
    fSaveData();
  }
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CAccountForwardSettingsFormView.prototype.onResponse = function (oResponse, oRequest) {
  this.isSaving(false);
  if (oResponse.Result === false) {
    Api.showErrorByCode(oResponse, TextUtils.i18n('COREWEBCLIENT/ERROR_SAVING_SETTINGS_FAILED'));
  } else {
    var oParameters = oRequest.Parameters;
    this.applySavedValues(oParameters);
    Screens.showReport(TextUtils.i18n('MAILWEBCLIENT/REPORT_FORWARD_UPDATE_SUCCESS'));
  }
};
CAccountForwardSettingsFormView.prototype.populate = function () {
  var oAccount = AccountList.getEdited(),
    oForward = oAccount.forward() ? oAccount.forward() : null;
  if (oForward !== null) {
    this.enable(oForward.enable);
    this.keepcopy(oForward.keepcopy);
    this.email(oForward.email);
  } else {
    Ajax.send('GetForward', {
      'AccountID': oAccount.id()
    }, this.onGetForwardResponse, this);
  }
  this.updateSavedState();
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CAccountForwardSettingsFormView.prototype.onGetForwardResponse = function (oResponse, oRequest) {
  if (oResponse && oResponse.Result) {
    var oParameters = oRequest.Parameters,
      iAccountId = Types.pInt(oParameters.AccountID),
      oAccount = AccountList.getAccount(iAccountId),
      oForward = new CForwardModel();
    if (oAccount) {
      oForward.parse(iAccountId, oResponse.Result);
      oAccount.forward(oForward);
      if (iAccountId === AccountList.editedId()) {
        this.populate();
      }
    }
  }
};
module.exports = new CAccountForwardSettingsFormView();

/***/ }),

/***/ "ELk6":
/*!***************************************************************************!*\
  !*** ./modules/MailWebclient/js/views/settings/AccountFoldersPaneView.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  Utils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Common.js */ "uQaC"),
  Api = __webpack_require__(/*! modules/CoreWebclient/js/Api.js */ "Z9uT"),
  App = __webpack_require__(/*! modules/CoreWebclient/js/App.js */ "yU9o"),
  ModulesManager = __webpack_require__(/*! modules/CoreWebclient/js/ModulesManager.js */ "5D2l"),
  Popups = __webpack_require__(/*! modules/CoreWebclient/js/Popups.js */ "PMEU"),
  CreateFolderPopup = __webpack_require__(/*! modules/MailWebclient/js/popups/CreateFolderPopup.js */ "k0bD"),
  SetSystemFoldersPopup = __webpack_require__(/*! modules/MailWebclient/js/popups/SetSystemFoldersPopup.js */ "guPB"),
  ImportExportPopup = ModulesManager.run('ImportExportMailPlugin', 'getImportExportPopup'),
  AccountList = __webpack_require__(/*! modules/MailWebclient/js/AccountList.js */ "Fj7m"),
  Ajax = __webpack_require__(/*! modules/MailWebclient/js/Ajax.js */ "P7bQ"),
  MailCache = __webpack_require__(/*! modules/MailWebclient/js/Cache.js */ "eGl8"),
  Settings = __webpack_require__(/*! modules/MailWebclient/js/Settings.js */ "Ua3z");
__webpack_require__(/*! modules/MailWebclient/js/vendors/knockout-sortable.js */ "YOkC");

/**
 * @constructor
 */
function CAccountFoldersPaneView() {
  this.bAllowTemplateFolders = Settings.AllowTemplateFolders;
  this.highlighted = ko.observable(false).extend({
    'autoResetToFalse': 500
  });
  this.collection = ko.observableArray(MailCache.editedFolderList().collection());
  this.oCollSubscription = MailCache.editedFolderList().collection.subscribe(function (koCollection) {
    this.collection(koCollection);
  }, this);
  this.totalMessageCount = ko.observable(0);
  this.enableButtons = ko.computed(function () {
    return MailCache.editedFolderList().initialized();
  }, this);
  MailCache.editedFolderList.subscribe(function (oFolderList) {
    this.collection(oFolderList.collection());
    this.setTotalMessageCount();
    this.oCollSubscription.dispose();
    this.oCollSubscription = oFolderList.collection.subscribe(function (koCollection) {
      this.collection(koCollection);
    }, this);
  }, this);
  this.addNewFolderCommand = Utils.createCommand(this, this.addNewFolder, this.enableButtons);
  this.setSystemFoldersCommand = Utils.createCommand(this, this.setSystemFolders, this.enableButtons);
  this.showMovedWithMouseItem = ko.computed(function () {
    return !App.isMobile();
  }, this);
  this.allowImportExport = ko.observable(ModulesManager.isModuleEnabled('ImportExportMailPlugin'));
  App.subscribeEvent('MailWebclient::AttemptDeleteNonemptyFolder', _.bind(function () {
    this.highlighted(true);
  }, this));
  this.manageFolderButtons = ko.observableArray([]);
  App.broadcastEvent('MailWebclient::RegisterManageFolderButton', function (buttonData) {
    this.manageFolderButtons.push(_.extend({
      tooltip: function tooltip(folder) {
        return '';
      },
      cssClasses: function cssClasses(folder) {
        return '';
      },
      handler: function handler(folder) {}
    }, buttonData));
  }.bind(this));
  App.broadcastEvent('MailWebclient::ConstructView::after', {
    'Name': this.ViewConstructorName,
    'View': this
  });
  this.afterMove = _.debounce(_.bind(this.folderListOrderUpdate, this), 3000);
}
CAccountFoldersPaneView.prototype.ViewTemplate = 'MailWebclient_Settings_AccountFoldersPaneView';
CAccountFoldersPaneView.prototype.ViewConstructorName = 'CAccountFoldersPaneView';
CAccountFoldersPaneView.prototype.folderListOrderUpdate = function () {
  var aLinedCollection = MailCache.editedFolderList().repopulateLinedCollection(),
    oParameters = {
      'AccountID': AccountList.editedId(),
      'FolderList': _.compact(_.map(aLinedCollection, function (oFolder) {
        if (!oFolder.bVirtual) {
          return oFolder.fullName();
        }
      }))
    };
  Ajax.send('UpdateFoldersOrder', oParameters, function (oResponse) {
    if (!oResponse.Result) {
      Api.showErrorByCode(oResponse, TextUtils.i18n('MAILWEBCLIENT/ERROR_CHANGE_FOLDERS_ORDER'));
      MailCache.getFolderList(AccountList.editedId());
    }
  }, this);
};
CAccountFoldersPaneView.prototype.hide = function (fAfterHideHandler) {
  var iAccountId = AccountList.editedId();
  _.delay(function () {
    MailCache.getFolderList(iAccountId);
  }, 3000);
  if (_.isFunction(fAfterHideHandler)) {
    fAfterHideHandler();
  }
};
CAccountFoldersPaneView.prototype.show = function () {
  this.setTotalMessageCount();
};
CAccountFoldersPaneView.prototype.setTotalMessageCount = function () {
  var oFolderList = MailCache.editedFolderList();
  if (oFolderList.iAccountId === 0) {
    this.totalMessageCount(0);
  } else {
    this.totalMessageCount(oFolderList.getTotalMessageCount());
    if (!oFolderList.countsCompletelyFilled()) {
      if (oFolderList.countsCompletelyFilledSubscribtion) {
        oFolderList.countsCompletelyFilledSubscribtion.dispose();
        oFolderList.countsCompletelyFilledSubscribtion = null;
      }
      oFolderList.countsCompletelyFilledSubscribtion = oFolderList.countsCompletelyFilled.subscribe(function () {
        if (oFolderList.countsCompletelyFilled()) {
          this.totalMessageCount(oFolderList.getTotalMessageCount());
          oFolderList.countsCompletelyFilledSubscribtion.dispose();
          oFolderList.countsCompletelyFilledSubscribtion = null;
        }
      }, this);
    }
  }
};
CAccountFoldersPaneView.prototype.addNewFolder = function () {
  Popups.showPopup(CreateFolderPopup);
};
CAccountFoldersPaneView.prototype.setSystemFolders = function () {
  Popups.showPopup(SetSystemFoldersPopup);
};
CAccountFoldersPaneView.prototype.importExport = function () {
  if (this.allowImportExport()) {
    Popups.showPopup(ImportExportPopup, [{}]);
  }
};
module.exports = new CAccountFoldersPaneView();

/***/ }),

/***/ "EhEn":
/*!****************************************************************!*\
  !*** ./modules/MailWebclient/js/koBindingSearchHighlighter.js ***!
  \****************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  $ = __webpack_require__(/*! jquery */ "M4cL"),
  ko = __webpack_require__(/*! knockout */ "p09A");
function getCaretOffset(oElement) {
  var oSel = null,
    oRange = {},
    oPreSelectionRange = {},
    iStart = 0;
  if (window.getSelection && document.createRange) {
    oSel = window.getSelection();
    if (oSel.rangeCount > 0) {
      oRange = oSel.getRangeAt(0);
      oPreSelectionRange = oRange.cloneRange();
      oPreSelectionRange.selectNodeContents(oElement);
      oPreSelectionRange.setEnd(oRange.startContainer, oRange.startOffset);
      iStart = oPreSelectionRange.toString().length;
      if ($(oElement).html().length < iStart) {
        iStart = 0;
      }
    }
  } else if (document.selection && document.body.createTextRange) {
    oRange = document.selection.createRange();
    oPreSelectionRange = document.body.createTextRange();
    oPreSelectionRange.moveToElementText(oElement);
    if (typeof oPreSelectionRange.setEndPoint === 'function') {
      oPreSelectionRange.setEndPoint('EndToStart', oRange);
    }
    iStart = oPreSelectionRange.text.length;
  }
  return iStart;
}
function setCursor(oElement, iCaretPos) {
  var range, selection, textRange;
  if (!oElement) {
    return false;
  } else if (document.createRange) {
    range = document.createRange();
    range.selectNodeContents(oElement);
    range.setStart(oElement, iCaretPos);
    range.setEnd(oElement, iCaretPos);
    selection = window.getSelection();
    selection.removeAllRanges();
    selection.addRange(range);
  } else if (oElement.createTextRange) {
    textRange = oElement.createTextRange();
    textRange.collapse(true);
    textRange.moveEnd(iCaretPos);
    textRange.moveStart(iCaretPos);
    textRange.select();
    return true;
  } else if (oElement.setSelectionRange) {
    oElement.setSelectionRange(iCaretPos, iCaretPos);
    return true;
  }
  return false;
}
ko.bindingHandlers.highlighter = {
  'init': function init(oElement, fValueAccessor, fAllBindingsAccessor, oViewModel, bindingContext) {
    var jqEl = $(oElement),
      oOptions = fValueAccessor(),
      oValueObserver = oOptions.valueObserver ? oOptions.valueObserver : null,
      oHighlighterValueObserver = oOptions.highlighterValueObserver ? oOptions.highlighterValueObserver : null,
      oHighlightTrigger = oOptions.highlightTrigger ? oOptions.highlightTrigger : null,
      aHighlightWords = ['from:', 'to:', 'subject:', 'text:', 'email:', 'has:', 'date:', 'text:', 'body:', 'folders:'],
      rPattern = function () {
        var sPatt = '';
        $.each(aHighlightWords, function (i, oEl) {
          sPatt = !i ? sPatt + '\\b' + oEl : sPatt + '|\\b' + oEl;
        });
        return new RegExp('(' + sPatt + ')', 'g');
      }(),
      fClear = function fClear(sStr) {
        return sStr.replace(/\xC2\xA0/g, ' ').replace(/\xA0/g, ' ').replace(/[\s]+/g, ' ');
      },
      iPrevKeyCode = -1,
      sUserLanguage = window.navigator.language || window.navigator.userLanguage,
      aTabooLang = ['zh', 'zh-TW', 'zh-CN', 'zh-HK', 'zh-SG', 'zh-MO', 'ja', 'ja-JP', 'ko', 'ko-KR', 'vi', 'vi-VN', 'th', 'th-TH'],
      // , 'ru', 'ru-RU'
      bHighlight = !_.include(aTabooLang, sUserLanguage);
    $(oElement).on('keydown', function (oEvent) {
      return oEvent.keyCode !== Enums.Key.Enter;
    }).on('keyup', function (oEvent) {
      var aMoveKeys = [Enums.Key.Left, Enums.Key.Right, Enums.Key.Home, Enums.Key.End],
        bMoveKeys = -1 !== $.inArray(oEvent.keyCode, aMoveKeys);
      if (!(oEvent.keyCode === Enums.Key.Shift || oEvent.keyCode === Enums.Key.Alt || oEvent.keyCode === Enums.Key.Ctrl ||
      // for international english -------------------------
      oEvent.keyCode === Enums.Key.Dash || oEvent.keyCode === Enums.Key.Apostrophe || oEvent.keyCode === Enums.Key.Six && oEvent.shiftKey ||
      // ---------------------------------------------------
      bMoveKeys || (oEvent.ctrlKey || iPrevKeyCode === Enums.Key.Ctrl) && oEvent.keyCode === Enums.Key.a)) {
        oValueObserver(fClear(jqEl.text()));
        highlight(false);
      }
      iPrevKeyCode = oEvent.keyCode;
      return true;
    }).on('paste', function (oEvent) {
      if (document.queryCommandSupported('insertText')) {
        // cancel paste
        oEvent.preventDefault();

        // get text representation of clipboard
        var sText = '';
        if (oEvent.clipboardData || oEvent.originalEvent.clipboardData) {
          sText = (oEvent.originalEvent || oEvent).clipboardData.getData('text/plain');
        } else if (window.clipboardData) {
          sText = window.clipboardData.getData('Text');
        }

        // insert text manually
        document.execCommand('insertText', false, sText);

        // insertText command doesn't work in IE
        // paste command causes looping in IE
        // so there is no clearing text in IE for now
      }
      setTimeout(function () {
        oValueObserver(fClear(jqEl.text()));
        highlight(false);
      }, 0);
    });

    // highlight on init
    setTimeout(function () {
      highlight(true);
    }, 0);
    function highlight(bNotRestoreSel) {
      if (bHighlight) {
        var iCaretPos = 0,
          sContent = jqEl.text(),
          aContent = sContent.split(rPattern),
          aDividedContent = [],
          sReplaceWith = '<span class="search_highlight"' + '>$&</span>';
        _.each(aContent, function (sEl) {
          var aEl = sEl.split('');
          if (_.any(aHighlightWords, function (oAnyEl) {
            return oAnyEl === sEl;
          })) {
            _.each(aEl, function (sElem) {
              aDividedContent.push($(sElem.replace(/(.)/, sReplaceWith)));
            });
          } else {
            _.each(aEl, function (sElem) {
              if (sElem === ' ') {
                // space fix for firefox
                aDividedContent.push(document.createTextNode("\xA0"));
              } else {
                aDividedContent.push(document.createTextNode(sElem));
              }
            });
          }
        });
        if (!jqEl.is(':focus')) {
          // Don't set focus if the field wasn't focused before.
          // It may affect on viewing messages in the list using the up and down buttons.
          jqEl.empty().append(aDividedContent);
        } else {
          iCaretPos = getCaretOffset(oElement);
          jqEl.empty().append(aDividedContent);
          setCursor(oElement, iCaretPos);
        }
      }
    }
    oHighlightTrigger.notifySubscribers();
    oHighlightTrigger.subscribe(function (bNotRestoreSel) {
      setTimeout(function () {
        highlight(!!bNotRestoreSel);
      }, 0);
    }, this);
    oHighlighterValueObserver.subscribe(function () {
      var sElemText = jqEl.text(),
        sValue = oValueObserver();
      if (sElemText.replace("\xA0", ' ') !== sValue.replace("\xA0", ' ')) {
        jqEl.text(sValue);
      }
    }, this);
  }
};

/***/ }),

/***/ "F9TS":
/*!**********************************************************************************!*\
  !*** ./modules/MailWebclient/js/views/settings/AccountUnifiedMailboxFormView.js ***!
  \**********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  $ = __webpack_require__(/*! jquery */ "M4cL"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  Types = __webpack_require__(/*! modules/CoreWebclient/js/utils/Types.js */ "ERH9"),
  Api = __webpack_require__(/*! modules/CoreWebclient/js/Api.js */ "Z9uT"),
  ModulesManager = __webpack_require__(/*! modules/CoreWebclient/js/ModulesManager.js */ "5D2l"),
  Screens = __webpack_require__(/*! modules/CoreWebclient/js/Screens.js */ "D2Gh"),
  CAbstractSettingsFormView = ModulesManager.run('SettingsWebclient', 'getAbstractSettingsFormViewClass'),
  AccountList = __webpack_require__(/*! modules/MailWebclient/js/AccountList.js */ "Fj7m"),
  Ajax = __webpack_require__(/*! modules/MailWebclient/js/Ajax.js */ "P7bQ"),
  Settings = __webpack_require__(/*! modules/MailWebclient/js/Settings.js */ "Ua3z");

/**
 * @constructor
 */
function CAccountUnifiedMailboxFormView() {
  CAbstractSettingsFormView.call(this, Settings.ServerModuleName);
  this.visibleTab = ko.computed(function () {
    return Settings.AllowUnifiedInbox && (Settings.AllowMultiAccounts && Settings.AllowAddAccounts || AccountList.collection().length > 1);
  }, this);
  this.includeInUnifiedMailbox = ko.observable(false);
  this.showUnifiedMailboxLabel = ko.observable(false);
  this.showUnifiedMailboxLabel.subscribe(function () {
    if (this.showUnifiedMailboxLabel()) {
      if (this.unifiedMailboxLabelText() === '') {
        var oEditedAccount = AccountList.getEdited();
        this.unifiedMailboxLabelText(oEditedAccount.email());
      }
      if (this.unifiedMailboxLabelColor() === '') {
        this.unifiedMailboxLabelColor('#f09650');
      }
    }
  }, this);
  this.unifiedMailboxLabelText = ko.observable('');
  this.unifiedMailboxLabelColor = ko.observable('');
  AccountList.unifiedMailboxAccounts.subscribe(function () {
    var MailCache = __webpack_require__(/*! modules/MailWebclient/js/Cache.js */ "eGl8"),
      HeaderItemView = __webpack_require__(/*! modules/MailWebclient/js/views/HeaderItemView.js */ "oq0M");
    MailCache.oUnifiedInbox.hasChanges(true);
    MailCache.oUnifiedInbox.removeAllMessageListsFromCacheIfHasChanges();
    if (AccountList.unifiedMailboxAccounts().length > 1) {
      MailCache.executeCheckMail();
    } else {
      HeaderItemView.hash(HeaderItemView.baseHash());
    }
  });
  this.aColors = ['#f09650', '#f68987', '#6fd0ce', '#8fbce2', '#b9a4f5', '#f68dcf', '#d88adc', '#4afdb4', '#9da1ff', '#5cc9c9', '#77ca71', '#aec9c9'];
}
_.extendOwn(CAccountUnifiedMailboxFormView.prototype, CAbstractSettingsFormView.prototype);
CAccountUnifiedMailboxFormView.prototype.ViewTemplate = 'MailWebclient_Settings_AccountUnifiedMailboxFormView';
CAccountUnifiedMailboxFormView.prototype.getCurrentValues = function () {
  return [this.includeInUnifiedMailbox(), this.showUnifiedMailboxLabel(), this.unifiedMailboxLabelText(), this.unifiedMailboxLabelColor()];
};
CAccountUnifiedMailboxFormView.prototype.getParametersForSave = function () {
  return {
    'AccountID': AccountList.editedId(),
    'IncludeInUnifiedMailbox': this.includeInUnifiedMailbox(),
    'ShowUnifiedMailboxLabel': this.showUnifiedMailboxLabel(),
    'UnifiedMailboxLabelText': $.trim(this.unifiedMailboxLabelText()),
    'UnifiedMailboxLabelColor': $.trim(this.unifiedMailboxLabelColor())
  };
};
CAccountUnifiedMailboxFormView.prototype.revert = function () {
  this.populate();
};
CAccountUnifiedMailboxFormView.prototype.populate = function () {
  var oAccount = AccountList.getEdited();
  if (oAccount) {
    this.includeInUnifiedMailbox(oAccount.includeInUnifiedMailbox());
    this.showUnifiedMailboxLabel(oAccount.showUnifiedMailboxLabel());
    this.unifiedMailboxLabelText(oAccount.unifiedMailboxLabelText());
    this.unifiedMailboxLabelColor(oAccount.unifiedMailboxLabelColor());
  } else {
    this.includeInUnifiedMailbox(false);
    this.showUnifiedMailboxLabel(false);
    this.unifiedMailboxLabelText('');
    this.unifiedMailboxLabelColor('');
  }
  this.updateSavedState();
};
CAccountUnifiedMailboxFormView.prototype.save = function () {
  this.isSaving(true);
  this.updateSavedState();
  Ajax.send('UpdateAccountUnifiedMailbox', this.getParametersForSave(), this.onResponse, this);
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CAccountUnifiedMailboxFormView.prototype.onResponse = function (oResponse, oRequest) {
  this.isSaving(false);
  if (!oResponse.Result) {
    Api.showErrorByCode(oResponse, TextUtils.i18n('COREWEBCLIENT/ERROR_SAVING_SETTINGS_FAILED'));
  } else {
    var oParameters = oRequest.Parameters,
      iAccountId = Types.pInt(oParameters.AccountID),
      oAccount = AccountList.getAccount(iAccountId);
    if (oAccount) {
      oAccount.updateFromServer(oResponse.Result);
      this.populate();
      Screens.showReport(TextUtils.i18n('COREWEBCLIENT/REPORT_SETTINGS_UPDATE_SUCCESS'));
    }
  }
};
CAccountUnifiedMailboxFormView.prototype.setColor = function (sColor) {
  this.unifiedMailboxLabelColor(sColor);
};
module.exports = new CAccountUnifiedMailboxFormView();

/***/ }),

/***/ "MIfO":
/*!****************************************************************!*\
  !*** ./modules/MailWebclient/js/models/CAutoresponderModel.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var Types = __webpack_require__(/*! modules/CoreWebclient/js/utils/Types.js */ "ERH9"),
  moment = __webpack_require__(/*! moment */ "sdEb");
;

/**
 * @constructor
 */
function CAutoresponderModel() {
  this.iAccountId = 0;
  this.enable = false;
  this.subject = '';
  this.message = '';
  this.scheduled = false;
  this.start = null;
  this.end = null;
}

/**
 * @param {number} iAccountId
 * @param {Object} oData
 */
CAutoresponderModel.prototype.parse = function (iAccountId, oData) {
  this.iAccountId = iAccountId;
  this.enable = !!oData.Enable;
  this.subject = Types.pString(oData.Subject);
  this.message = Types.pString(oData.Message);
  this.scheduled = !!oData.Scheduled;
  // this.start = moment.unix(oData.Start);
  // if (oData.End != null) {
  // 	this.end = moment.unix(oData.End);
  // }
  if (oData.Start) {
    this.start = Types.pInt(oData.Start);
  }
  if (oData.End) {
    this.end = Types.pInt(oData.End);
  }
};
module.exports = CAutoresponderModel;

/***/ }),

/***/ "NH30":
/*!*************************************************************************!*\
  !*** ./modules/MailWebclient/js/views/settings/MailSettingsFormView.js ***!
  \*************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  Types = __webpack_require__(/*! modules/CoreWebclient/js/utils/Types.js */ "ERH9"),
  Browser = __webpack_require__(/*! modules/CoreWebclient/js/Browser.js */ "/Odb"),
  ModulesManager = __webpack_require__(/*! modules/CoreWebclient/js/ModulesManager.js */ "5D2l"),
  UserSettings = __webpack_require__(/*! modules/CoreWebclient/js/Settings.js */ "KIwC"),
  CAbstractSettingsFormView = ModulesManager.run('SettingsWebclient', 'getAbstractSettingsFormViewClass'),
  MailUtils = __webpack_require__(/*! modules/MailWebclient/js/utils/Mail.js */ "Panx"),
  Settings = __webpack_require__(/*! modules/MailWebclient/js/Settings.js */ "Ua3z");

/**
 * @constructor
 */
function CMailSettingsFormView() {
  CAbstractSettingsFormView.call(this, Settings.ServerModuleName);
  this.bRtl = UserSettings.IsRTL;
  this.bAllowChangeStarredMessagesSource = Settings.AllowChangeStarredMessagesSource;
  this.bAllowMailto = Settings.AllowAppRegisterMailto && MailUtils.isAvailableRegisterMailto();
  this.bAllowShowMessagesCountInFolderList = Settings.AllowShowMessagesCountInFolderList;
  this.bAllowHorizontalLayout = Settings.AllowHorizontalLayout;
  this.mailsPerPageValues = ko.observableArray(Types.getAdaptedPerPageList(Settings.MailsPerPage));
  this.starredMessagesSourceValues = [{
    text: TextUtils.i18n('MAILWEBCLIENT/LABEL_STARRED_MESSAGES_SOURCE_INBOX'),
    value: Enums.StarredMessagesSource.InboxOnly
  }, {
    text: TextUtils.i18n('MAILWEBCLIENT/LABEL_STARRED_MESSAGES_SOURCE_ALL_FOLDERS'),
    value: Enums.StarredMessagesSource.AllFolders
  }];
  this.aLayoutValues = [{
    text: TextUtils.i18n('MAILWEBCLIENT/LABEL_VERT_SPLIT_LAYOUT'),
    value: false
  }, {
    text: TextUtils.i18n('MAILWEBCLIENT/LABEL_HORIZ_SPLIT_LAYOUT'),
    value: true
  }];
  this.mailsPerPage = ko.observable(Settings.MailsPerPage);
  this.starredMessagesSource = ko.observable(Settings.StarredMessagesSource);
  this.allowAutosaveInDrafts = ko.observable(Settings.AllowAutosaveInDrafts);
  this.allowChangeInputDirection = ko.observable(Settings.AllowChangeInputDirection);
  this.showMessagesCountInFolderList = ko.observable(Settings.showMessagesCountInFolderList());
  this.horizontalLayout = ko.observable(Settings.HorizontalLayout);
}
_.extendOwn(CMailSettingsFormView.prototype, CAbstractSettingsFormView.prototype);
CMailSettingsFormView.prototype.ViewTemplate = 'MailWebclient_Settings_MailSettingsFormView';
CMailSettingsFormView.prototype.registerMailto = function () {
  MailUtils.registerMailto();
};
CMailSettingsFormView.prototype.getCurrentValues = function () {
  return [this.mailsPerPage(), this.allowAutosaveInDrafts(), this.allowChangeInputDirection(), this.showMessagesCountInFolderList(), this.horizontalLayout()];
};
CMailSettingsFormView.prototype.revertGlobalValues = function () {
  this.mailsPerPage(Settings.MailsPerPage);
  this.starredMessagesSource(Settings.StarredMessagesSource);
  this.allowAutosaveInDrafts(Settings.AllowAutosaveInDrafts);
  this.allowChangeInputDirection(Settings.AllowChangeInputDirection);
  this.showMessagesCountInFolderList(Settings.showMessagesCountInFolderList());
  this.horizontalLayout(Settings.HorizontalLayout);
};
CMailSettingsFormView.prototype.getParametersForSave = function () {
  return {
    'MailsPerPage': this.mailsPerPage(),
    'StarredMessagesSource': this.starredMessagesSource(),
    'AllowAutosaveInDrafts': this.allowAutosaveInDrafts(),
    'AllowChangeInputDirection': this.allowChangeInputDirection(),
    'ShowMessagesCountInFolderList': this.showMessagesCountInFolderList(),
    'HorizontalLayout': this.horizontalLayout()
  };
};
CMailSettingsFormView.prototype.applySavedValues = function (parameters) {
  if (parameters.HorizontalLayout !== Settings.HorizontalLayout) {
    window.location.reload();
  }
  Settings.update(parameters);
};
CMailSettingsFormView.prototype.setAccessLevel = function (sEntityType, iEntityId) {
  this.visible(sEntityType === '');
};
module.exports = new CMailSettingsFormView();

/***/ }),

/***/ "NMTm":
/*!****************************************************************************!*\
  !*** ./modules/MailWebclient/js/views/settings/AccountSettingsFormView.js ***!
  \****************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  $ = __webpack_require__(/*! jquery */ "M4cL"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  Types = __webpack_require__(/*! modules/CoreWebclient/js/utils/Types.js */ "ERH9"),
  Api = __webpack_require__(/*! modules/CoreWebclient/js/Api.js */ "Z9uT"),
  ModulesManager = __webpack_require__(/*! modules/CoreWebclient/js/ModulesManager.js */ "5D2l"),
  Screens = __webpack_require__(/*! modules/CoreWebclient/js/Screens.js */ "D2Gh"),
  App = __webpack_require__(/*! modules/CoreWebclient/js/App.js */ "yU9o"),
  CAbstractSettingsFormView = ModulesManager.run('SettingsWebclient', 'getAbstractSettingsFormViewClass'),
  Popups = __webpack_require__(/*! modules/CoreWebclient/js/Popups.js */ "PMEU"),
  ChangePasswordPopup = ModulesManager.run('ChangePasswordWebclient', 'getChangePasswordPopup'),
  AccountList = __webpack_require__(/*! modules/MailWebclient/js/AccountList.js */ "Fj7m"),
  Ajax = __webpack_require__(/*! modules/MailWebclient/js/Ajax.js */ "P7bQ"),
  Settings = __webpack_require__(/*! modules/MailWebclient/js/Settings.js */ "Ua3z"),
  CServerPairPropertiesView = __webpack_require__(/*! modules/MailWebclient/js/views/settings/CServerPairPropertiesView.js */ "qN2P");

/**
 * @constructor
 */
function CAccountSettingsFormView() {
  CAbstractSettingsFormView.call(this, Settings.ServerModuleName);
  this.sFakePass = 'xxxxxxxx'; // fake password uses to display something in password input while account editing

  this.bAllowIdentities = Settings.AllowIdentities;
  this.useToAuthorize = ko.observable(false);
  this.canBeUsedToAuthorize = ko.observable(false);
  this.isDefaultAccount = ko.observable(false);
  this.isServerOwner = ko.observable(false);
  this.friendlyName = ko.observable('');
  this.email = ko.observable('');
  this.incomingLogin = ko.observable('');
  this.incomingPassword = ko.observable('');
  this.allowSpecifyPassword = ko.observable(false);
  this.useThreading = ko.observable(false);
  this.saveRepliesToCurrFolder = ko.observable(false);
  this.oServerPairPropertiesView = new CServerPairPropertiesView('acc_edit');
  this.enableThreading = this.oServerPairPropertiesView.enableThreading;
  this.enableThreading.subscribe(function () {
    if (!this.enableThreading()) {
      this.useThreading(false);
    }
  }, this);
  this.allowChangePassword = ko.observable(false);
  this.incLoginFocused = ko.observable(false);
  this.incLoginFocused.subscribe(function () {
    if (this.incLoginFocused() && this.incomingLogin() === '') {
      this.incomingLogin(this.email());
    }
  }, this);
  AccountList.editedId.subscribe(function () {
    if (this.bShown) {
      this.populate();
    }
  }, this);
  this.updateSavedState();
  this.oServerPairPropertiesView.currentValues.subscribe(function () {
    this.updateSavedState();
  }, this);
  this.visibleTab = ko.observable(true);
  ko.computed(function () {
    var oAccount = AccountList.getEdited();
    if (oAccount) {
      this.allowChangePassword(ModulesManager.run('ChangePasswordWebclient', 'isChangePasswordButtonAllowed', [AccountList.collection().length, oAccount]));
      this.isDefaultAccount(oAccount.bDefault);
      this.isServerOwner(oAccount.oServer.sOwnerType === Enums.ServerOwnerType.Account);
    } else {
      this.allowChangePassword(false);
      this.isDefaultAccount(false);
    }
  }, this);
  this.isDisableAuthorize = ko.observable(App.userAccountsCount() <= 1);
  this.oDefaultAccountHostsSettingsView = __webpack_require__(/*! modules/MailWebclient/js/views/DefaultAccountHostsSettingsView.js */ "2wN8");
}
_.extendOwn(CAccountSettingsFormView.prototype, CAbstractSettingsFormView.prototype);
CAccountSettingsFormView.prototype.ViewTemplate = 'MailWebclient_Settings_AccountSettingsFormView';
CAccountSettingsFormView.prototype.onShow = function () {
  this.oServerPairPropertiesView.fullInit();
  this.populate();
};
CAccountSettingsFormView.prototype.getCurrentValues = function () {
  var aMain = [this.useToAuthorize(), this.friendlyName(), this.email(), this.incomingLogin(), this.incomingPassword(), this.useThreading(), this.saveRepliesToCurrFolder()],
    aServers = this.oServerPairPropertiesView.currentValues();
  return aMain.concat(aServers);
};
CAccountSettingsFormView.prototype.getParametersForSave = function () {
  var oAccount = AccountList.getEdited(),
    sIncomingPassword = $.trim(this.incomingPassword());
  return {
    'AccountID': oAccount.id(),
    'UseToAuthorize': this.useToAuthorize(),
    'FriendlyName': this.friendlyName(),
    'Email': $.trim(this.email()),
    'IncomingLogin': $.trim(this.incomingLogin()),
    'IncomingPassword': sIncomingPassword === this.sFakePass ? '' : sIncomingPassword,
    'Server': this.oServerPairPropertiesView.getParametersForSave(),
    'UseThreading': this.useThreading(),
    'SaveRepliesToCurrFolder': this.saveRepliesToCurrFolder()
  };
};
CAccountSettingsFormView.prototype.revert = function () {
  this.populate();
};
CAccountSettingsFormView.prototype.populate = function () {
  var oAccount = AccountList.getEdited();
  if (this.passwordMightBeIncorrectSubscribtion) {
    this.passwordMightBeIncorrectSubscribtion.dispose();
    this.passwordMightBeIncorrectSubscribtion = null;
  }
  if (oAccount) {
    this.friendlyName(oAccount.friendlyName());
    this.email(oAccount.email());
    this.incomingLogin(oAccount.incomingLogin());
    this.incomingPassword(this.sFakePass);
    this.allowSpecifyPassword(oAccount.passwordMightBeIncorrect());
    if (!oAccount.passwordMightBeIncorrect()) {
      this.passwordMightBeIncorrectSubscribtion = oAccount.passwordMightBeIncorrect.subscribe(function () {
        this.allowSpecifyPassword(oAccount.passwordMightBeIncorrect());
        this.passwordMightBeIncorrectSubscribtion.dispose();
        this.passwordMightBeIncorrectSubscribtion = null;
      }.bind(this));
    }
    this.oServerPairPropertiesView.setServer(oAccount.oServer);
    this.useToAuthorize(oAccount.useToAuthorize());
    this.canBeUsedToAuthorize(oAccount.canBeUsedToAuthorize());
    this.useThreading(oAccount.useThreading());
    this.saveRepliesToCurrFolder(oAccount.bSaveRepliesToCurrFolder);
    this.isDisableAuthorize(this.useToAuthorize() ? App.userAccountsCount() <= 1 : false);
  } else {
    this.friendlyName('');
    this.email('');
    this.incomingLogin('');
    this.incomingPassword('');
    this.allowSpecifyPassword(false);
    this.oServerPairPropertiesView.clear();
    this.useToAuthorize(true);
    this.canBeUsedToAuthorize(false);
    this.useThreading(false);
    this.isDisableAuthorize(true);
  }
  this.updateSavedState();
};
CAccountSettingsFormView.prototype.remove = function () {
  if (this.isDisableAuthorize()) {
    Screens.showError(TextUtils.i18n('COREWEBCLIENT/ERROR_ACCOUNT_DELETING_DISABLE'), true);
  } else {
    var oAccount = AccountList.getEdited();
    if (oAccount) {
      oAccount.remove();
    }
  }
};
CAccountSettingsFormView.prototype.save = function () {
  this.isSaving(true);
  this.updateSavedState();
  Ajax.send('UpdateAccount', this.getParametersForSave(), this.onResponse, this);
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CAccountSettingsFormView.prototype.onResponse = function (oResponse, oRequest) {
  this.isSaving(false);
  if (!oResponse.Result) {
    Api.showErrorByCode(oResponse, TextUtils.i18n('COREWEBCLIENT/ERROR_SAVING_SETTINGS_FAILED'));
  } else {
    var oParameters = oRequest.Parameters,
      iAccountId = Types.pInt(oParameters.AccountID),
      oAccount = AccountList.getAccount(iAccountId);
    if (oAccount) {
      if (Types.isNonEmptyString(oParameters.IncomingPassword) && oParameters.IncomingPassword !== this.sFakePass) {
        oAccount.passwordMightBeIncorrect(false);
      }
      oAccount.updateFromServer(oResponse.Result);
      this.populate();
      Screens.showReport(TextUtils.i18n('COREWEBCLIENT/REPORT_SETTINGS_UPDATE_SUCCESS'));
    }
  }
};
CAccountSettingsFormView.prototype.changePassword = function () {
  if (this.allowChangePassword()) {
    Popups.showPopup(ChangePasswordPopup, [{
      iAccountId: AccountList.editedId(),
      sModule: Settings.ServerModuleName,
      bHasOldPassword: true
    }]);
  }
};
module.exports = new CAccountSettingsFormView();

/***/ }),

/***/ "OQrU":
/*!*********************************************!*\
  !*** ./modules/MailWebclient/js/manager.js ***!
  \*********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
module.exports = function (oAppData) {
  __webpack_require__(/*! modules/MailWebclient/js/enums.js */ "TQgg");
  var _ = __webpack_require__(/*! underscore */ "C3HO"),
    ko = __webpack_require__(/*! knockout */ "p09A"),
    App = __webpack_require__(/*! modules/CoreWebclient/js/App.js */ "yU9o"),
    ModulesManager = __webpack_require__(/*! modules/CoreWebclient/js/ModulesManager.js */ "5D2l"),
    Settings = __webpack_require__(/*! modules/MailWebclient/js/Settings.js */ "Ua3z"),
    AccountList = null,
    ComposeView = null,
    HeaderItemView = null;
  var mailViewInstance = null;
  var getMailViewInstance = function getMailViewInstance() {
    if (!mailViewInstance) {
      var CMailView = __webpack_require__(/*! modules/MailWebclient/js/views/CMailView.js */ "Qz84");
      mailViewInstance = new CMailView();
    }
    return mailViewInstance;
  };
  Settings.init(oAppData);
  if (!ModulesManager.isModuleAvailable(Settings.ServerModuleName)) {
    return null;
  }
  AccountList = __webpack_require__(/*! modules/MailWebclient/js/AccountList.js */ "Fj7m");
  if (App.isUserNormalOrTenant()) {
    var Cache = __webpack_require__(/*! modules/MailWebclient/js/Cache.js */ "eGl8");
    Cache.init();
    if (App.isNewTab()) {
      var GetComposeView = function GetComposeView() {
        if (ComposeView === null) {
          var CComposeView = __webpack_require__(/*! modules/MailWebclient/js/views/CComposeView.js */ "Ssud");
          ComposeView = new CComposeView();
        }
        return ComposeView;
      };
      return {
        start: function start() {
          __webpack_require__(/*! modules/MailWebclient/js/koBindings.js */ "dBPG");
        },
        getScreens: function getScreens() {
          var oScreens = {};
          oScreens[Settings.HashModuleName + '-view'] = function () {
            return __webpack_require__(/*! modules/MailWebclient/js/views/MessagePaneView.js */ "nM5h");
          };
          oScreens[Settings.HashModuleName + '-compose'] = function () {
            return GetComposeView();
          };
          return oScreens;
        },
        registerComposeToolbarController: function registerComposeToolbarController(oController) {
          var ComposeView = GetComposeView();
          ComposeView.registerToolbarController(oController);
        },
        registerComposeMessageRowController: function registerComposeMessageRowController(oController) {
          var ComposeView = GetComposeView();
          ComposeView.registerMessageRowController(oController);
        },
        registerComposeUploadAttachmentsController: function registerComposeUploadAttachmentsController(controller) {
          var ComposeView = GetComposeView();
          ComposeView.registerUploadAttachmentsController(controller);
        },
        getComposeMessageWithData: function getComposeMessageWithData() {
          var bAllowSendMail = true,
            ComposeUtils = __webpack_require__(/*! modules/MailWebclient/js/utils/Compose.js */ "sXLm");
          return bAllowSendMail ? ComposeUtils.composeMessageWithData : false;
        },
        getComposeMessageToAddresses: function getComposeMessageToAddresses() {
          var bAllowSendMail = true,
            ComposeUtils = __webpack_require__(/*! modules/MailWebclient/js/utils/Compose.js */ "sXLm");
          return bAllowSendMail ? ComposeUtils.composeMessageToAddresses : false;
        },
        getComposeMessageWithAttachments: function getComposeMessageWithAttachments() {
          var bAllowSendMail = true,
            ComposeUtils = __webpack_require__(/*! modules/MailWebclient/js/utils/Compose.js */ "sXLm");
          return bAllowSendMail ? ComposeUtils.composeMessageWithAttachments : false;
        },
        getSearchMessagesInCurrentFolder: function getSearchMessagesInCurrentFolder() {
          var MainTab = window.opener && window.opener.MainTabMailMethods;
          return MainTab ? _.bind(MainTab.searchMessagesInCurrentFolder, MainTab) : false;
        },
        getCurrentMessage: function getCurrentMessage() {
          return Cache.currentMessage();
        },
        getCurrentFolderList: function getCurrentFolderList() {
          return Cache.folderList();
        },
        syncFolders: function syncFolders() {
          return Cache.getFolderList(Cache.currentAccountId());
        },
        removeMessageFromCurrentList: function removeMessageFromCurrentList(iAccountId, sFolder, sUid) {
          return Cache.removeMessageFromCurrentList(iAccountId, sFolder, sUid);
        }
      };
    } else {
      var oMethods = {
        enableModule: ko.observable(Settings.AllowAddAccounts || AccountList.hasAccount()),
        getComposeMessageToAddresses: function getComposeMessageToAddresses() {
          var bAllowSendMail = true,
            ComposeUtils = __webpack_require__(/*! modules/MailWebclient/js/utils/Compose.js */ "sXLm");
          return bAllowSendMail ? ComposeUtils.composeMessageToAddresses : false;
        },
        getComposeMessageWithData: function getComposeMessageWithData() {
          var bAllowSendMail = true,
            ComposeUtils = __webpack_require__(/*! modules/MailWebclient/js/utils/Compose.js */ "sXLm");
          return bAllowSendMail ? ComposeUtils.composeMessageWithData : false;
        },
        getComposeMessageWithAttachments: function getComposeMessageWithAttachments() {
          var bAllowSendMail = true,
            ComposeUtils = __webpack_require__(/*! modules/MailWebclient/js/utils/Compose.js */ "sXLm");
          return bAllowSendMail ? ComposeUtils.composeMessageWithAttachments : false;
        },
        getPrefetcher: function getPrefetcher() {
          return __webpack_require__(/*! modules/MailWebclient/js/Prefetcher.js */ "qG1F");
        },
        registerComposeToolbarController: function registerComposeToolbarController(oController) {
          var ComposePopup = __webpack_require__(/*! modules/MailWebclient/js/popups/ComposePopup.js */ "v4rC");
          ComposePopup.registerToolbarController(oController);
        },
        registerComposeMessageRowController: function registerComposeMessageRowController(oController) {
          var ComposePopup = __webpack_require__(/*! modules/MailWebclient/js/popups/ComposePopup.js */ "v4rC");
          ComposePopup.registerMessageRowController(oController);
        },
        registerComposeUploadAttachmentsController: function registerComposeUploadAttachmentsController(controller) {
          var ComposePopup = __webpack_require__(/*! modules/MailWebclient/js/popups/ComposePopup.js */ "v4rC");
          ComposePopup.registerUploadAttachmentsController(controller);
        },
        getSearchMessagesInInbox: function getSearchMessagesInInbox() {
          return _.bind(Cache.searchMessagesInInbox, Cache);
        },
        getFolderHash: function getFolderHash(sFolder) {
          return Cache.getFolderHash(sFolder);
        },
        getSearchMessagesInCurrentFolder: function getSearchMessagesInCurrentFolder() {
          return _.bind(Cache.searchMessagesInCurrentFolder, Cache);
        },
        getMessage: function getMessage(sFullName, sUid, fResponseHandler) {
          return Cache.getMessage(Cache.currentAccountId(), sFullName, sUid, fResponseHandler, Cache);
        },
        getCurrentMessage: function getCurrentMessage() {
          return Cache.currentMessage();
        },
        getCurrentFolderList: function getCurrentFolderList() {
          return Cache.folderList();
        },
        syncFolders: function syncFolders() {
          return Cache.getFolderList(Cache.currentAccountId());
        },
        removeMessageFromCurrentList: function removeMessageFromCurrentList(iAccountId, sFolder, sUid) {
          return Cache.removeMessageFromCurrentList(iAccountId, sFolder, sUid);
        },
        deleteMessages: function deleteMessages(iAccountId, sFolderFullName, aUids) {
          var oFolder = Cache.getFolderByFullName(iAccountId, sFolderFullName);
          Cache.deleteMessagesFromFolder(oFolder, aUids);
        },
        getAllAccountsFullEmails: function getAllAccountsFullEmails() {
          return AccountList.getAllFullEmails();
        },
        getAccountList: function getAccountList() {
          return AccountList;
        },
        getMailCache: function getMailCache() {
          return Cache;
        },
        getSettings: function getSettings() {
          return Settings;
        },
        setCustomRouting: function setCustomRouting(sFolder, iPage, sUid, sSearch, sFilters, sCustom) {
          var Routing = __webpack_require__(/*! modules/CoreWebclient/js/Routing.js */ "ioSH"),
            LinksUtils = __webpack_require__(/*! modules/MailWebclient/js/utils/Links.js */ "dpSB");
          Routing.setHash(LinksUtils.getMailbox(sFolder, iPage, sUid, sSearch, sFilters, Settings.MessagesSortBy.DefaultSortBy, Settings.MessagesSortBy.DefaultSortOrder, sCustom));
        }
      };
      if (!App.isMobile()) {
        oMethods = _.extend(oMethods, {
          start: function start(ModulesManager) {
            var TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
              Browser = __webpack_require__(/*! modules/CoreWebclient/js/Browser.js */ "/Odb"),
              MailUtils = __webpack_require__(/*! modules/MailWebclient/js/utils/Mail.js */ "Panx");
            __webpack_require__(/*! modules/MailWebclient/js/koBindings.js */ "dBPG");
            __webpack_require__(/*! modules/MailWebclient/js/koBindingSearchHighlighter.js */ "EhEn");
            if (Settings.AllowAppRegisterMailto) {
              MailUtils.registerMailto(Browser.firefox);
            }
            if (Settings.AllowAddAccounts || AccountList.hasAccount()) {
              ModulesManager.run('SettingsWebclient', 'registerSettingsTab', [function () {
                return __webpack_require__(/*! modules/MailWebclient/js/views/settings/MailSettingsFormView.js */ "NH30");
              }, Settings.HashModuleName, TextUtils.i18n('MAILWEBCLIENT/LABEL_SETTINGS_TAB')]);
              var sTabName = Settings.AllowMultiAccounts ? TextUtils.i18n('MAILWEBCLIENT/LABEL_ACCOUNTS_SETTINGS_TAB') : TextUtils.i18n('MAILWEBCLIENT/LABEL_ACCOUNT_SETTINGS_TAB');
              ModulesManager.run('SettingsWebclient', 'registerSettingsTab', [function () {
                return __webpack_require__(/*! modules/MailWebclient/js/views/settings/AccountsSettingsPaneView.js */ "9lZ8");
              }, Settings.HashModuleName + '-accounts', sTabName]);
            }
            ko.computed(function () {
              var aAuthAcconts = _.filter(AccountList.collection(), function (oAccount) {
                  return oAccount.useToAuthorize();
                }),
                aAuthAccountsEmails = _.map(aAuthAcconts, function (oAccount) {
                  return oAccount.email();
                });
              Settings.userMailAccountsCount(aAuthAcconts.length);
              Settings.mailAccountsEmails(aAuthAccountsEmails);
            }, this);
            App.broadcastEvent('RegisterNewItemElement', {
              'title': TextUtils.i18n('MAILWEBCLIENT/ACTION_NEW_MESSAGE'),
              'handler': function handler() {
                window.location.hash = Settings.HashModuleName;
                var mailViewInstance = getMailViewInstance();
                mailViewInstance.executeCompose();
              },
              'className': 'item_mail',
              'order': 1,
              'column': 1
            });
          },
          getScreens: function getScreens() {
            return _defineProperty({}, Settings.HashModuleName, getMailViewInstance);
          },
          getHeaderItem: function getHeaderItem() {
            if (HeaderItemView === null && Settings.AllowOtherModulesToReplaceTabsbarHeader) {
              var params = {};
              App.broadcastEvent('MailWebclient::GetHeaderItemView', params);
              HeaderItemView = params.HeaderItemView || null;
            }
            if (HeaderItemView === null) {
              HeaderItemView = __webpack_require__(/*! modules/MailWebclient/js/views/HeaderItemView.js */ "oq0M");
            }
            return {
              item: HeaderItemView,
              name: Settings.HashModuleName
            };
          },
          getMobileSyncSettingsView: function getMobileSyncSettingsView() {
            return __webpack_require__(/*! modules/MailWebclient/js/views/DefaultAccountHostsSettingsView.js */ "2wN8");
          }
        });
      }
      return oMethods;
    }
  }
  return null;
};

/***/ }),

/***/ "SRQT":
/*!***************************************************************************!*\
  !*** ./modules/MailWebclient/js/views/settings/CAliasSettingsFormView.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  Api = __webpack_require__(/*! modules/CoreWebclient/js/Api.js */ "Z9uT"),
  ModulesManager = __webpack_require__(/*! modules/CoreWebclient/js/ModulesManager.js */ "5D2l"),
  Screens = __webpack_require__(/*! modules/CoreWebclient/js/Screens.js */ "D2Gh"),
  CAbstractSettingsFormView = ModulesManager.run('SettingsWebclient', 'getAbstractSettingsFormViewClass'),
  AccountList = __webpack_require__(/*! modules/MailWebclient/js/AccountList.js */ "Fj7m"),
  CoreAjax = __webpack_require__(/*! modules/CoreWebclient/js/Ajax.js */ "8QQh"),
  Settings = __webpack_require__(/*! modules/MailWebclient/js/Settings.js */ "Ua3z"),
  Popups = __webpack_require__(/*! modules/CoreWebclient/js/Popups.js */ "PMEU"),
  ConfirmPopup = __webpack_require__(/*! modules/CoreWebclient/js/popups/ConfirmPopup.js */ "MYiO");

/**
 * @constructor
 * 
 * @param {Object} oParent
 * @param {boolean} bAllowAliases
 */
function CAliasSettingsFormView(oParent, bAllowAliases) {
  CAbstractSettingsFormView.call(this, Settings.ServerModuleName);
  this.alias = ko.observable(null);
  this.oParent = oParent;
  this.disableRemoveAlias = ko.observable(!bAllowAliases);
  this.friendlyName = ko.observable('');
  this.friendlyNameHasFocus = ko.observable(false);
}
_.extendOwn(CAliasSettingsFormView.prototype, CAbstractSettingsFormView.prototype);
CAliasSettingsFormView.prototype.ViewTemplate = 'MailWebclient_Settings_AliasSettingsFormView';
CAliasSettingsFormView.prototype.ViewConstructorName = 'CAliasSettingsFormView';

/**
 * @param {Object} oAlias
 */
CAliasSettingsFormView.prototype.onShow = function (oAlias) {
  this.alias(oAlias && oAlias.ALIAS ? oAlias : null);
  this.populate();
};
CAliasSettingsFormView.prototype.getCurrentValues = function () {
  return [this.friendlyName()];
};
CAliasSettingsFormView.prototype.getParametersForSave = function () {
  if (this.alias()) {
    var oParameters = {
      'AccountID': this.alias().accountId(),
      'FriendlyName': this.friendlyName(),
      'EntityId': this.alias().id()
    };
    return oParameters;
  }
  return {};
};
CAliasSettingsFormView.prototype.save = function () {
  this.isSaving(true);
  this.updateSavedState();
  CoreAjax.send(Settings.AliasesServerModuleName, 'UpdateAlias', this.getParametersForSave(), this.onResponse, this);
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CAliasSettingsFormView.prototype.onResponse = function (oResponse, oRequest) {
  this.isSaving(false);
  if (!oResponse.Result) {
    Api.showErrorByCode(oResponse, TextUtils.i18n('MAILWEBCLIENT/ERROR_ALIAS_ADDING'));
  } else {
    AccountList.populateAliases(function () {
      var oCurrAccount = AccountList.getCurrent(),
        aCurrAliases = oCurrAccount.aliases(),
        oCreatedAlias = _.find(aCurrAliases, function (oAlias) {
          return oAlias.id() === oResponse.Result;
        });
      if (oCreatedAlias) {
        ModulesManager.run('SettingsWebclient', 'setAddHash', [['alias', oCreatedAlias.hash()]]);
      }
    });
    Screens.showReport(TextUtils.i18n('COREWEBCLIENT/REPORT_SETTINGS_UPDATE_SUCCESS'));
  }
};
CAliasSettingsFormView.prototype.populate = function () {
  var oAlias = this.alias();
  if (oAlias) {
    this.friendlyName(oAlias.friendlyName());
    setTimeout(function () {
      this.updateSavedState();
    }.bind(this), 1);
  }
};
CAliasSettingsFormView.prototype.remove = function () {
  if (this.alias()) {
    Popups.showPopup(ConfirmPopup, [TextUtils.i18n('MAILWEBCLIENT/CONFIRM_DELETE_ALIAS'), _.bind(function (bRemove) {
      if (bRemove) {
        var oParameters = {
          'AccountID': this.alias().accountId(),
          'Aliases': [this.alias().email()]
        };
        CoreAjax.send(Settings.AliasesServerModuleName, 'DeleteAliases', oParameters, this.onAccountAliasDeleteResponse, this);
        if (_.isFunction(this.oParent.onRemoveAlias)) {
          this.oParent.onRemoveAlias();
        }
      }
    }, this)]);
  }
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CAliasSettingsFormView.prototype.onAccountAliasDeleteResponse = function (oResponse, oRequest) {
  if (!oResponse.Result) {
    Api.showErrorByCode(oResponse, TextUtils.i18n('MAILWEBCLIENT/ERROR_ALIAS_DELETING'));
  }
  AccountList.populateAliases();
};
CAliasSettingsFormView.prototype.cancel = function () {
  if (_.isFunction(this.oParent.cancelPopup)) {
    this.oParent.cancelPopup();
  }
};
module.exports = CAliasSettingsFormView;

/***/ }),

/***/ "YOkC":
/*!***************************************************************!*\
  !*** ./modules/MailWebclient/js/vendors/knockout-sortable.js ***!
  \***************************************************************/
/***/ ((module, exports, __webpack_require__) => {

var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
// Attention: draggable and droppable are commented out because they conflict with our draggable and droppable
// knockout-sortable 1.2.0 | (c) 2019 Ryan Niemeyer |  http://www.opensource.org/licenses/mit-license
;
(function (factory) {
  if (true) {
    // AMD anonymous module
    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! knockout */ "p09A"), __webpack_require__(/*! jquery */ "M4cL"), __webpack_require__(/*! jquery-ui/ui/widgets/sortable */ "Hg/X"), __webpack_require__(/*! jquery-ui/ui/widgets/draggable */ "6gxe"), __webpack_require__(/*! jquery-ui/ui/widgets/droppable */ "O/kJ")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
		__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
		(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  } else // removed by dead control flow
{ var ko, jQuery; }
})(function (ko, $) {
  var ITEMKEY = "ko_sortItem",
    INDEXKEY = "ko_sourceIndex",
    LISTKEY = "ko_sortList",
    PARENTKEY = "ko_parentList",
    DRAGKEY = "ko_dragItem",
    unwrap = ko.utils.unwrapObservable,
    dataGet = ko.utils.domData.get,
    dataSet = ko.utils.domData.set,
    version = $.ui && $.ui.version,
    //1.8.24 included a fix for how events were triggered in nested sortables. indexOf checks will fail if version starts with that value (0 vs. -1)
    hasNestedSortableFix = version && version.indexOf("1.6.") && version.indexOf("1.7.") && (version.indexOf("1.8.") || version === "1.8.24");

  //internal afterRender that adds meta-data to children
  var addMetaDataAfterRender = function addMetaDataAfterRender(elements, data) {
    ko.utils.arrayForEach(elements, function (element) {
      if (element.nodeType === 1) {
        dataSet(element, ITEMKEY, data);
        dataSet(element, PARENTKEY, dataGet(element.parentNode, LISTKEY));
      }
    });
  };

  //prepare the proper options for the template binding
  var prepareTemplateOptions = function prepareTemplateOptions(valueAccessor, dataName) {
    var result = {},
      options = {},
      actualAfterRender;

    //build our options to pass to the template engine
    if (ko.utils.peekObservable(valueAccessor()).data) {
      options = unwrap(valueAccessor() || {});
      result[dataName] = options.data;
      if (options.hasOwnProperty("template")) {
        result.name = options.template;
      }
    } else {
      result[dataName] = valueAccessor();
    }
    ko.utils.arrayForEach(["afterAdd", "afterRender", "as", "beforeRemove", "includeDestroyed", "templateEngine", "templateOptions", "nodes"], function (option) {
      if (options.hasOwnProperty(option)) {
        result[option] = options[option];
      } else if (ko.bindingHandlers.sortable.hasOwnProperty(option)) {
        result[option] = ko.bindingHandlers.sortable[option];
      }
    });

    //use an afterRender function to add meta-data
    if (dataName === "foreach") {
      if (result.afterRender) {
        //wrap the existing function, if it was passed
        actualAfterRender = result.afterRender;
        result.afterRender = function (element, data) {
          addMetaDataAfterRender.call(data, element, data);
          actualAfterRender.call(data, element, data);
        };
      } else {
        result.afterRender = addMetaDataAfterRender;
      }
    }

    //return options to pass to the template binding
    return result;
  };
  var updateIndexFromDestroyedItems = function updateIndexFromDestroyedItems(index, items) {
    var unwrapped = unwrap(items);
    if (unwrapped) {
      for (var i = 0; i <= index; i++) {
        //add one for every destroyed item we find before the targetIndex in the target array
        if (unwrapped[i] && unwrap(unwrapped[i]._destroy)) {
          index++;
        }
      }
    }
    return index;
  };

  //remove problematic leading/trailing whitespace from templates
  var stripTemplateWhitespace = function stripTemplateWhitespace(element, name) {
    var templateSource, templateElement;

    //process named templates
    if (name) {
      templateElement = document.getElementById(name);
      if (templateElement) {
        templateSource = new ko.templateSources.domElement(templateElement);
        templateSource.text($.trim(templateSource.text()));
      }
    } else {
      //remove leading/trailing non-elements from anonymous templates
      $(element).contents().each(function () {
        if (this && this.nodeType !== 1) {
          element.removeChild(this);
        }
      });
    }
  };

  //connect items with observableArrays
  ko.bindingHandlers.sortable = {
    init: function init(element, valueAccessor, allBindingsAccessor, data, context) {
      var $element = $(element),
        value = unwrap(valueAccessor()) || {},
        templateOptions = prepareTemplateOptions(valueAccessor, "foreach"),
        sortable = {},
        startActual,
        updateActual;
      stripTemplateWhitespace(element, templateOptions.name);

      //build a new object that has the global options with overrides from the binding
      $.extend(true, sortable, ko.bindingHandlers.sortable);
      if (value.options && sortable.options) {
        ko.utils.extend(sortable.options, value.options);
        delete value.options;
      }
      ko.utils.extend(sortable, value);

      //if allowDrop is an observable or a function, then execute it in a computed observable
      if (sortable.connectClass && (ko.isObservable(sortable.allowDrop) || typeof sortable.allowDrop == "function")) {
        ko.computed({
          read: function read() {
            var value = unwrap(sortable.allowDrop),
              shouldAdd = typeof value == "function" ? value.call(this, templateOptions.foreach) : value;
            ko.utils.toggleDomNodeCssClass(element, sortable.connectClass, shouldAdd);
          },
          disposeWhenNodeIsRemoved: element
        }, this);
      } else {
        ko.utils.toggleDomNodeCssClass(element, sortable.connectClass, sortable.allowDrop);
      }

      //wrap the template binding
      ko.bindingHandlers.template.init(element, function () {
        return templateOptions;
      }, allBindingsAccessor, data, context);

      //keep a reference to start/update functions that might have been passed in
      startActual = sortable.options.start;
      updateActual = sortable.options.update;

      //ensure draggable table row cells maintain their width while dragging (unless a helper is provided)
      if (!sortable.options.helper) {
        sortable.options.helper = function (e, ui) {
          if (ui.is("tr")) {
            ui.children().each(function () {
              $(this).width($(this).width());
            });
          }
          return ui;
        };
      }

      //initialize sortable binding after template binding has rendered in update function
      var createTimeout = setTimeout(function () {
        var dragItem;
        var originalReceive = sortable.options.receive;
        $element.sortable(ko.utils.extend(sortable.options, {
          start: function start(event, ui) {
            //track original index
            var el = ui.item[0];
            dataSet(el, INDEXKEY, ko.utils.arrayIndexOf(ui.item.parent().children(), el));

            //make sure that fields have a chance to update model
            ui.item.find("input:focus").change();
            if (startActual) {
              startActual.apply(this, arguments);
            }
          },
          receive: function receive(event, ui) {
            //optionally apply an existing receive handler
            if (typeof originalReceive === "function") {
              originalReceive.call(this, event, ui);
            }
            dragItem = dataGet(ui.item[0], DRAGKEY);
            if (dragItem) {
              //copy the model item, if a clone option is provided
              if (dragItem.clone) {
                dragItem = dragItem.clone();
              }

              //configure a handler to potentially manipulate item before drop
              if (sortable.dragged) {
                dragItem = sortable.dragged.call(this, dragItem, event, ui) || dragItem;
              }
            }
          },
          update: function update(event, ui) {
            var sourceParent,
              targetParent,
              sourceIndex,
              targetIndex,
              arg,
              el = ui.item[0],
              parentEl = ui.item.parent()[0],
              item = dataGet(el, ITEMKEY) || dragItem;
            if (!item) {
              $(el).remove();
            }
            dragItem = null;

            //make sure that moves only run once, as update fires on multiple containers
            if (item && this === parentEl || !hasNestedSortableFix && $.contains(this, parentEl)) {
              //identify parents
              sourceParent = dataGet(el, PARENTKEY);
              sourceIndex = dataGet(el, INDEXKEY);
              targetParent = dataGet(el.parentNode, LISTKEY);
              targetIndex = ko.utils.arrayIndexOf(ui.item.parent().children(), el);

              //take destroyed items into consideration
              if (!templateOptions.includeDestroyed) {
                sourceIndex = updateIndexFromDestroyedItems(sourceIndex, sourceParent);
                targetIndex = updateIndexFromDestroyedItems(targetIndex, targetParent);
              }

              //build up args for the callbacks
              if (sortable.beforeMove || sortable.afterMove) {
                arg = {
                  item: item,
                  sourceParent: sourceParent,
                  sourceParentNode: sourceParent && ui.sender || el.parentNode,
                  sourceIndex: sourceIndex,
                  targetParent: targetParent,
                  targetIndex: targetIndex,
                  cancelDrop: false
                };

                //execute the configured callback prior to actually moving items
                if (sortable.beforeMove) {
                  sortable.beforeMove.call(this, arg, event, ui);
                }
              }

              //call cancel on the correct list, so KO can take care of DOM manipulation
              if (sourceParent) {
                $(sourceParent === targetParent ? this : ui.sender || this).sortable("cancel");
              }
              //for a draggable item just remove the element
              else {
                $(el).remove();
              }

              //if beforeMove told us to cancel, then we are done
              if (arg && arg.cancelDrop) {
                return;
              }

              //if the strategy option is unset or false, employ the order strategy involving removal and insertion of items
              if (!sortable.hasOwnProperty("strategyMove") || sortable.strategyMove === false) {
                //do the actual move
                if (targetIndex >= 0) {
                  if (sourceParent) {
                    sourceParent.splice(sourceIndex, 1);

                    //if using deferred updates plugin, force updates
                    if (ko.processAllDeferredBindingUpdates) {
                      ko.processAllDeferredBindingUpdates();
                    }

                    //if using deferred updates on knockout 3.4, force updates
                    if (ko.options && ko.options.deferUpdates) {
                      ko.tasks.runEarly();
                    }
                  }
                  targetParent.splice(targetIndex, 0, item);
                }

                //rendering is handled by manipulating the observableArray; ignore dropped element
                dataSet(el, ITEMKEY, null);
              } else {
                //employ the strategy of moving items
                if (targetIndex >= 0) {
                  if (sourceParent) {
                    if (sourceParent !== targetParent) {
                      // moving from one list to another

                      sourceParent.splice(sourceIndex, 1);
                      targetParent.splice(targetIndex, 0, item);

                      //rendering is handled by manipulating the observableArray; ignore dropped element
                      dataSet(el, ITEMKEY, null);
                      ui.item.remove();
                    } else {
                      // moving within same list
                      var underlyingList = unwrap(sourceParent);

                      // notify 'beforeChange' subscribers
                      if (sourceParent.valueWillMutate) {
                        sourceParent.valueWillMutate();
                      }

                      // move from source index ...
                      underlyingList.splice(sourceIndex, 1);
                      // ... to target index
                      underlyingList.splice(targetIndex, 0, item);

                      // notify subscribers
                      if (sourceParent.valueHasMutated) {
                        sourceParent.valueHasMutated();
                      }
                    }
                  } else {
                    // drop new element from outside
                    targetParent.splice(targetIndex, 0, item);

                    //rendering is handled by manipulating the observableArray; ignore dropped element
                    dataSet(el, ITEMKEY, null);
                    ui.item.remove();
                  }
                }
              }

              //if using deferred updates plugin, force updates
              if (ko.processAllDeferredBindingUpdates) {
                ko.processAllDeferredBindingUpdates();
              }

              //allow binding to accept a function to execute after moving the item
              if (sortable.afterMove) {
                sortable.afterMove.call(this, arg, event, ui);
              }
            }
            if (updateActual) {
              updateActual.apply(this, arguments);
            }
          },
          connectWith: sortable.connectClass ? "." + sortable.connectClass : false
        }));

        //handle enabling/disabling sorting
        if (sortable.isEnabled !== undefined) {
          ko.computed({
            read: function read() {
              $element.sortable(unwrap(sortable.isEnabled) ? "enable" : "disable");
            },
            disposeWhenNodeIsRemoved: element
          });
        }
      }, 0);

      //handle disposal
      ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
        //only call destroy if sortable has been created
        if ($element.data("ui-sortable") || $element.data("sortable")) {
          $element.sortable("destroy");
        }
        ko.utils.toggleDomNodeCssClass(element, sortable.connectClass, false);

        //do not create the sortable if the element has been removed from DOM
        clearTimeout(createTimeout);
      });
      return {
        'controlsDescendantBindings': true
      };
    },
    update: function update(element, valueAccessor, allBindingsAccessor, data, context) {
      var templateOptions = prepareTemplateOptions(valueAccessor, "foreach");

      //attach meta-data
      dataSet(element, LISTKEY, templateOptions.foreach);

      //call template binding's update with correct options
      ko.bindingHandlers.template.update(element, function () {
        return templateOptions;
      }, allBindingsAccessor, data, context);
    },
    connectClass: 'ko_container',
    allowDrop: true,
    afterMove: null,
    beforeMove: null,
    options: {}
  };

  //create a draggable that is appropriate for dropping into a sortable
  // ko.bindingHandlers.draggable = {
  //     init: function(element, valueAccessor, allBindingsAccessor, data, context) {
  //         var value = unwrap(valueAccessor()) || {},
  //             options = value.options || {},
  //             draggableOptions = ko.utils.extend({}, ko.bindingHandlers.draggable.options),
  //             templateOptions = prepareTemplateOptions(valueAccessor, "data"),
  //             connectClass = value.connectClass || ko.bindingHandlers.draggable.connectClass,
  //             isEnabled = value.isEnabled !== undefined ? value.isEnabled : ko.bindingHandlers.draggable.isEnabled;

  //         value = "data" in value ? value.data : value;

  //         //set meta-data
  //         dataSet(element, DRAGKEY, value);

  //         //override global options with override options passed in
  //         ko.utils.extend(draggableOptions, options);

  //         //setup connection to a sortable
  //         draggableOptions.connectToSortable = connectClass ? "." + connectClass : false;

  //         //initialize draggable
  //         $(element).draggable(draggableOptions);

  //         //handle enabling/disabling sorting
  //         if (isEnabled !== undefined) {
  //             ko.computed({
  //                 read: function() {
  //                     $(element).draggable(unwrap(isEnabled) ? "enable" : "disable");
  //                 },
  //                 disposeWhenNodeIsRemoved: element
  //             });
  //         }

  //         //handle disposal
  //         ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
  //             $(element).draggable("destroy");
  //         });

  //         return ko.bindingHandlers.template.init(element, function() { return templateOptions; }, allBindingsAccessor, data, context);
  //     },
  //     update: function(element, valueAccessor, allBindingsAccessor, data, context) {
  //         var templateOptions = prepareTemplateOptions(valueAccessor, "data");

  //         return ko.bindingHandlers.template.update(element, function() { return templateOptions; }, allBindingsAccessor, data, context);
  //     },
  //     connectClass: ko.bindingHandlers.sortable.connectClass,
  //     options: {
  //         helper: "clone"
  //     }
  // };

  // // Simple Droppable Implementation
  // // binding that updates (function or observable)
  // ko.bindingHandlers.droppable = {
  //     init: function(element, valueAccessor, allBindingsAccessor, data, context) {
  //         var value = unwrap(valueAccessor()) || {},
  //             options = value.options || {},
  //             droppableOptions = ko.utils.extend({}, ko.bindingHandlers.droppable.options),
  //             isEnabled = value.isEnabled !== undefined ? value.isEnabled : ko.bindingHandlers.droppable.isEnabled;

  //         //override global options with override options passed in
  //         ko.utils.extend(droppableOptions, options);

  //         //get reference to drop method
  //         value = "data" in value ? value.data : valueAccessor();

  //         //set drop method
  //         droppableOptions.drop = function(event, ui) {
  //             var droppedItem = dataGet(ui.draggable[0], DRAGKEY) || dataGet(ui.draggable[0], ITEMKEY);
  //             value(droppedItem);
  //         };

  //         //initialize droppable
  //         $(element).droppable(droppableOptions);

  //         //handle enabling/disabling droppable
  //         if (isEnabled !== undefined) {
  //             ko.computed({
  //                 read: function() {
  //                     $(element).droppable(unwrap(isEnabled) ? "enable": "disable");
  //                 },
  //                 disposeWhenNodeIsRemoved: element
  //             });
  //         }

  //         //handle disposal
  //         ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
  //             $(element).droppable("destroy");
  //         });
  //     },
  //     options: {
  //         accept: "*"
  //     }
  // };
});

/***/ }),

/***/ "ZYTm":
/*!****************************************************************!*\
  !*** ./modules/MailWebclient/js/popups/CreateIdentityPopup.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  CAbstractPopup = __webpack_require__(/*! modules/CoreWebclient/js/popups/CAbstractPopup.js */ "69av"),
  AccountList = __webpack_require__(/*! modules/MailWebclient/js/AccountList.js */ "Fj7m"),
  CIdentityModel = __webpack_require__(/*! modules/MailWebclient/js/models/CIdentityModel.js */ "JI31"),
  CIdentitySettingsFormView = __webpack_require__(/*! modules/MailWebclient/js/views/settings/CIdentitySettingsFormView.js */ "l21M");

/**
 * @constructor
 */
function CCreateIdentityPopup() {
  CAbstractPopup.call(this);
  this.oIdentitySettingsFormView = new CIdentitySettingsFormView(this, true);
}
_.extendOwn(CCreateIdentityPopup.prototype, CAbstractPopup.prototype);
CCreateIdentityPopup.prototype.PopupTemplate = 'MailWebclient_Settings_CreateIdentityPopup';

/**
 * @param {number} iAccountId
 */
CCreateIdentityPopup.prototype.onOpen = function (iAccountId) {
  var oAccount = AccountList.getAccount(iAccountId),
    oIdentity = new CIdentityModel();
  oIdentity.accountId(iAccountId);
  oIdentity.email(oAccount.email());
  this.oIdentitySettingsFormView.onShow(oIdentity);
  this.oIdentitySettingsFormView.populate();
  this.oIdentitySettingsFormView.friendlyNameHasFocus(true);
};
module.exports = new CCreateIdentityPopup();

/***/ }),

/***/ "bOgC":
/*!******************************************************************************!*\
  !*** ./modules/MailWebclient/js/views/settings/SignatureSettingsFormView.js ***!
  \******************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  Utils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Common.js */ "uQaC"),
  Api = __webpack_require__(/*! modules/CoreWebclient/js/Api.js */ "Z9uT"),
  Browser = __webpack_require__(/*! modules/CoreWebclient/js/Browser.js */ "/Odb"),
  ModulesManager = __webpack_require__(/*! modules/CoreWebclient/js/ModulesManager.js */ "5D2l"),
  Screens = __webpack_require__(/*! modules/CoreWebclient/js/Screens.js */ "D2Gh"),
  CoreAjax = __webpack_require__(/*! modules/CoreWebclient/js/Ajax.js */ "8QQh"),
  CAbstractSettingsFormView = ModulesManager.run('SettingsWebclient', 'getAbstractSettingsFormViewClass'),
  EditorUtils = __webpack_require__(/*! modules/MailWebclient/js/utils/Editor.js */ "PV2F"),
  AccountList = __webpack_require__(/*! modules/MailWebclient/js/AccountList.js */ "Fj7m"),
  Ajax = __webpack_require__(/*! modules/MailWebclient/js/Ajax.js */ "P7bQ"),
  Settings = __webpack_require__(/*! modules/MailWebclient/js/Settings.js */ "Ua3z"),
  CHtmlEditorView = EditorUtils.getCHtmlEditorView();

/**
 * @constructor
 */
function CSignatureSettingsFormView() {
  CAbstractSettingsFormView.call(this, Settings.ServerModuleName);
  this.fetcherOrIdentity = ko.observable(null);
  this.useSignatureRadio = ko.observable(Enums.UseSignature.Off);
  this.signature = ko.observable('');
  this.oHtmlEditor = new CHtmlEditorView(true, false);
  this.oHtmlEditor.textFocused.subscribe(function () {
    if (this.oHtmlEditor.textFocused()) {
      this.useSignatureRadio(Enums.UseSignature.On);
    }
  }, this);
  this.enableImageDragNDrop = ko.observable(false);
  this.allowEditSignature = ko.observable(true);
  ko.computed(function () {
    this.oHtmlEditor.setInactive(!this.allowEditSignature() || this.useSignatureRadio() === Enums.UseSignature.Off);
  }, this);
  this.saveCommand = Utils.createCommand(this, this.save, this.allowEditSignature);
}
_.extendOwn(CSignatureSettingsFormView.prototype, CAbstractSettingsFormView.prototype);
CSignatureSettingsFormView.prototype.ViewTemplate = 'MailWebclient_Settings_SignatureSettingsFormView';
CSignatureSettingsFormView.prototype.ViewConstructorName = 'CSignatureSettingsFormView';

/**
 * @param {Object} oFetcherOrIdentity
 */
CSignatureSettingsFormView.prototype.onShow = function (oFetcherOrIdentity) {
  this.fetcherOrIdentity(oFetcherOrIdentity || null);
  this.populate();
  _.defer(_.bind(this.init, this));
};
CSignatureSettingsFormView.prototype.init = function () {
  this.oHtmlEditor.setDisableEdit(false);
  this.oHtmlEditor.init(this.signature(), false, '', TextUtils.i18n('MAILWEBCLIENT/LABEL_ENTER_SIGNATURE_HERE'));
  this.enableImageDragNDrop(this.oHtmlEditor.isDragAndDropSupported() && !Browser.ie10AndAbove);
  this.oHtmlEditor.setDisableEdit(!this.allowEditSignature());
  this.updateSavedState();
};
CSignatureSettingsFormView.prototype.getCurrentValues = function () {
  if (this.oHtmlEditor.isInitialized()) {
    this.signature(this.oHtmlEditor.getText());
  }
  return [this.useSignatureRadio(), this.signature()];
};
CSignatureSettingsFormView.prototype.revert = function () {
  this.populate();
};
CSignatureSettingsFormView.prototype.getParametersForSave = function () {
  this.signature(this.oHtmlEditor.getText());
  var oEditAccount = AccountList.getEdited(),
    iAccountId = this.fetcherOrIdentity() ? this.fetcherOrIdentity().accountId() : oEditAccount ? oEditAccount.id() : 0,
    oParameters = {
      'AccountID': iAccountId,
      'UseSignature': this.useSignatureRadio() === Enums.UseSignature.On,
      'Signature': this.signature()
    };
  if (this.fetcherOrIdentity()) {
    if (this.fetcherOrIdentity().FETCHER) {
      _.extendOwn(oParameters, {
        'FetcherId': this.fetcherOrIdentity().id()
      });
    } else if (this.fetcherOrIdentity().ALIAS) {
      _.extendOwn(oParameters, {
        'AliasId': this.fetcherOrIdentity().id()
      });
    } else if (!this.fetcherOrIdentity().bAccountPart) {
      _.extendOwn(oParameters, {
        'IdentityId': this.fetcherOrIdentity().id()
      });
    }
  }
  return oParameters;
};

/**
 * @param {Object} oParameters
 */
CSignatureSettingsFormView.prototype.applySavedValues = function (oParameters) {
  if (oParameters.FetcherId) {
    AccountList.populateFetchers();
  } else if (oParameters.AliasId) {
    AccountList.populateAliases();
  } else if (oParameters.IdentityId) {
    AccountList.populateIdentities();
  } else if (oParameters.AccountID) {
    this.populateAccountSignature(oParameters.AccountID);
  }
};

/**
 * @param {int} AccountId
 */
CSignatureSettingsFormView.prototype.populateAccountSignature = function (AccountId) {
  Ajax.send('GetAccount', {
    'AccountId': AccountId
  }, function (oResponse) {
    if (oResponse.Result) {
      var oAccount = AccountList.getAccount(AccountId);
      if (oAccount) {
        oAccount.useSignature(!!oResponse.Result.UseSignature);
        oAccount.signature(oResponse.Result.Signature);
      }
    }
  });
};
CSignatureSettingsFormView.prototype.populate = function () {
  var accountId = this.fetcherOrIdentity() ? this.fetcherOrIdentity().accountId() : AccountList.editedId(),
    identityIsAccountPart = this.fetcherOrIdentity() ? this.fetcherOrIdentity().bAccountPart : false,
    account = AccountList.getAccount(accountId),
    objWithSignature = this.fetcherOrIdentity() || account;
  if (objWithSignature) {
    this.useSignatureRadio(objWithSignature.useSignature() ? Enums.UseSignature.On : Enums.UseSignature.Off);
    this.signature(objWithSignature.signature());
    this.oHtmlEditor.setDisableEdit(false);
    this.oHtmlEditor.setText(this.signature());
    this.allowEditSignature(account && account.bAllowEditSignature || !identityIsAccountPart);
    this.oHtmlEditor.setDisableEdit(!this.allowEditSignature());
  }
  this.updateSavedState();
};
CSignatureSettingsFormView.prototype.save = function () {
  this.isSaving(true);
  this.updateSavedState();
  if (this.fetcherOrIdentity() && this.fetcherOrIdentity().FETCHER) {
    CoreAjax.send(Settings.FetchersServerModuleName, 'UpdateSignature', this.getParametersForSave(), this.onResponse, this);
  } else if (this.fetcherOrIdentity() && this.fetcherOrIdentity().ALIAS) {
    CoreAjax.send(Settings.AliasesServerModuleName, 'UpdateSignature', this.getParametersForSave(), this.onResponse, this);
  } else {
    Ajax.send('UpdateSignature', this.getParametersForSave(), this.onResponse, this);
  }
};

/**
 * Parses the response from the server. If the settings are normally stored, then updates them. 
 * Otherwise an error message.
 * 
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CSignatureSettingsFormView.prototype.onResponse = function (oResponse, oRequest) {
  this.isSaving(false);
  if (oResponse.Result) {
    this.applySavedValues(oRequest.Parameters);
    Screens.showReport(TextUtils.i18n('COREWEBCLIENT/REPORT_SETTINGS_UPDATE_SUCCESS'));
  } else {
    Api.showErrorByCode(oResponse, TextUtils.i18n('COREWEBCLIENT/ERROR_SAVING_SETTINGS_FAILED'));
  }
};
module.exports = new CSignatureSettingsFormView();

/***/ }),

/***/ "cVoG":
/*!*****************************************************************!*\
  !*** ./modules/MailWebclient/js/views/CServerPropertiesView.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  Types = __webpack_require__(/*! modules/CoreWebclient/js/utils/Types.js */ "ERH9");

/**
 * @constructor
 * 
 * @param {number} iDefaultPort
 * @param {number} iDefaultSslPort
 * @param {string} sId
 * @param {string} sLabel
 * @param {function} koDefaultServerValue
 */
function CServerPropertiesView(iDefaultPort, iDefaultSslPort, sId, sLabel, koDefaultServerValue) {
  this.server = ko.observable('');
  this.server.focused = ko.observable(false);
  this.label = sLabel;
  this.defaultPort = ko.observable(iDefaultPort);
  this.defaultSslPort = ko.observable(iDefaultSslPort);
  this.port = ko.observable(iDefaultPort);
  this.port.focused = ko.observable(false);
  this.ssl = ko.observable(false);
  this.isEnabled = ko.observable(true);
  this.id = sId;
  if (_.isFunction(koDefaultServerValue)) {
    koDefaultServerValue.focused.subscribe(function () {
      if (!koDefaultServerValue.focused() && this.server() === '') {
        this.server(koDefaultServerValue());
      }
    }, this);
  }
  this.ssl.subscribe(function () {
    var iPort = Types.pInt(this.port());
    if (this.ssl()) {
      if (iPort === this.defaultPort()) {
        this.port(this.defaultSslPort());
      }
    } else {
      if (iPort === this.defaultSslPort()) {
        this.port(this.defaultPort());
      }
    }
  }, this);
}

/**
 * @param {string} sServer
 * @param {number} iPort
 * @param {boolean} bSsl
 */
CServerPropertiesView.prototype.set = function (sServer, iPort, bSsl) {
  this.server(sServer);
  this.ssl(bSsl);
  this.port(iPort);
};
CServerPropertiesView.prototype.clear = function () {
  this.server('');
  this.ssl(false);
  this.port(this.defaultPort());
};
CServerPropertiesView.prototype.getIntPort = function () {
  return Types.pInt(this.port());
};
CServerPropertiesView.prototype.parentSave = function (koCurrentField, aParents) {
  if (koCurrentField.focused) {
    koCurrentField.focused(false);
  }
  var oParent = _.find(aParents, function (oTmpParent) {
    return _.isFunction(oTmpParent.save);
  });
  if (oParent) {
    oParent.save();
  }
};
module.exports = CServerPropertiesView;

/***/ }),

/***/ "guPB":
/*!******************************************************************!*\
  !*** ./modules/MailWebclient/js/popups/SetSystemFoldersPopup.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  Utils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Common.js */ "uQaC"),
  Api = __webpack_require__(/*! modules/CoreWebclient/js/Api.js */ "Z9uT"),
  CAbstractPopup = __webpack_require__(/*! modules/CoreWebclient/js/popups/CAbstractPopup.js */ "69av"),
  AccountList = __webpack_require__(/*! modules/MailWebclient/js/AccountList.js */ "Fj7m"),
  Ajax = __webpack_require__(/*! modules/MailWebclient/js/Ajax.js */ "P7bQ"),
  MailCache = __webpack_require__(/*! modules/MailWebclient/js/Cache.js */ "eGl8"),
  Settings = __webpack_require__(/*! modules/MailWebclient/js/Settings.js */ "Ua3z");

/**
 * @constructor
 */
function CSetSystemFoldersPopup() {
  CAbstractPopup.call(this);
  this.folders = MailCache.editedFolderList;
  this.sentFolderFullName = ko.observable('');
  this.draftsFolderFullName = ko.observable('');
  this.spamFolderFullName = ko.observable('');
  this.trashFolderFullName = ko.observable('');
  this.options = ko.observableArray([]);
  this.defaultOptionsAfterRender = Utils.defaultOptionsAfterRender;
  this.bAllowSpamFolderEditing = Settings.AllowSpamFolder;
}
_.extendOwn(CSetSystemFoldersPopup.prototype, CAbstractPopup.prototype);
CSetSystemFoldersPopup.prototype.PopupTemplate = 'MailWebclient_Settings_SetSystemFoldersPopup';
CSetSystemFoldersPopup.prototype.onOpen = function () {
  var oFolderList = MailCache.editedFolderList();
  this.options(oFolderList.getOptions(TextUtils.i18n('MAILWEBCLIENT/LABEL_NO_FOLDER_USAGE_ASSIGNED'), false, false, false));
  this.sentFolderFullName(oFolderList.sentFolderFullName());
  this.draftsFolderFullName(oFolderList.draftsFolderFullName());
  if (Settings.AllowSpamFolder) {
    this.spamFolderFullName(oFolderList.spamFolderFullName());
  }
  this.trashFolderFullName(oFolderList.trashFolderFullName());
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CSetSystemFoldersPopup.prototype.onResponseFoldersSetupSystem = function (oResponse, oRequest) {
  if (oResponse.Result === false) {
    Api.showErrorByCode(oResponse, TextUtils.i18n('MAILWEBCLIENT/ERROR_SETUP_SPECIAL_FOLDERS'));
    MailCache.getFolderList(AccountList.editedId());
  }
};
CSetSystemFoldersPopup.prototype.apply = function () {
  var oFolderList = MailCache.editedFolderList(),
    bHasChanges = false,
    oParameters = null;
  if (this.sentFolderFullName() !== oFolderList.sentFolderFullName()) {
    oFolderList.sentFolderFullName(this.sentFolderFullName());
    bHasChanges = true;
  }
  if (this.draftsFolderFullName() !== oFolderList.draftsFolderFullName()) {
    oFolderList.draftsFolderFullName(this.draftsFolderFullName());
    bHasChanges = true;
  }
  if (Settings.AllowSpamFolder && this.spamFolderFullName() !== oFolderList.spamFolderFullName()) {
    oFolderList.spamFolderFullName(this.spamFolderFullName());
    bHasChanges = true;
  }
  if (this.trashFolderFullName() !== oFolderList.trashFolderFullName()) {
    oFolderList.trashFolderFullName(this.trashFolderFullName());
    bHasChanges = true;
  }
  if (bHasChanges) {
    oParameters = {
      'AccountID': AccountList.editedId(),
      'Sent': oFolderList.sentFolderFullName(),
      'Drafts': oFolderList.draftsFolderFullName(),
      'Trash': oFolderList.trashFolderFullName(),
      'Spam': oFolderList.spamFolderFullName()
    };
    Ajax.send('SetupSystemFolders', oParameters, this.onResponseFoldersSetupSystem, this);
  }
  this.closePopup();
};
module.exports = new CSetSystemFoldersPopup();

/***/ }),

/***/ "jSiL":
/*!*************************************************************************************!*\
  !*** ./modules/MailWebclient/js/views/settings/CFetcherIncomingSettingsFormView.js ***!
  \*************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  $ = __webpack_require__(/*! jquery */ "M4cL"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  Utils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Common.js */ "uQaC"),
  Api = __webpack_require__(/*! modules/CoreWebclient/js/Api.js */ "Z9uT"),
  ModulesManager = __webpack_require__(/*! modules/CoreWebclient/js/ModulesManager.js */ "5D2l"),
  Screens = __webpack_require__(/*! modules/CoreWebclient/js/Screens.js */ "D2Gh"),
  CoreAjax = __webpack_require__(/*! modules/CoreWebclient/js/Ajax.js */ "8QQh"),
  Popups = __webpack_require__(/*! modules/CoreWebclient/js/Popups.js */ "PMEU"),
  ConfirmPopup = __webpack_require__(/*! modules/CoreWebclient/js/popups/ConfirmPopup.js */ "MYiO"),
  CAbstractSettingsFormView = ModulesManager.run('SettingsWebclient', 'getAbstractSettingsFormViewClass'),
  AccountList = __webpack_require__(/*! modules/MailWebclient/js/AccountList.js */ "Fj7m"),
  MailCache = __webpack_require__(/*! modules/MailWebclient/js/Cache.js */ "eGl8"),
  Settings = __webpack_require__(/*! modules/MailWebclient/js/Settings.js */ "Ua3z"),
  CServerPropertiesView = __webpack_require__(/*! modules/MailWebclient/js/views/CServerPropertiesView.js */ "cVoG");

/**
 * @constructor
 * @param {object} oParent
 */
function CFetcherIncomingSettingsFormView(oParent) {
  CAbstractSettingsFormView.call(this, Settings.ServerModuleName);
  this.oParent = oParent;
  this.bShown = false;
  this.fetcher = ko.observable(null);
  this.idFetcher = ko.observable(null);
  this.isEnabled = ko.observable(true);
  this.incomingLogin = ko.observable('');
  this.sFakePass = '******';
  this.incomingPassword = ko.observable(this.sFakePass);
  this.oIncoming = new CServerPropertiesView(110, 995, 'fetcher_edit_incoming', TextUtils.i18n('MAILWEBCLIENT/LABEL_POP3_SERVER'));
  this.sFetcherFolder = '';
  this.folder = ko.observable('');
  this.options = ko.observableArray([]);
  MailCache.folderList.subscribe(function () {
    this.populateOptions();
  }, this);
  this.leaveMessagesOnServer = ko.observable(false);
  this.passwordIsSelected = ko.observable(false);
  this.defaultOptionsAfterRender = Utils.defaultOptionsAfterRender;
  this.fetcherIntervalHint = ko.computed(function () {
    var iCheckIntervalMinutes = this.fetcher() ? this.fetcher().iCheckIntervalMinutes : 0;
    if (iCheckIntervalMinutes !== 0) {
      return TextUtils.i18n('MAILWEBCLIENT/INFO_POP3_FETCHER_PLURAL', {
        'INTERVAL': iCheckIntervalMinutes
      }, null, iCheckIntervalMinutes);
    }
    return '';
  }, this);
}
_.extendOwn(CFetcherIncomingSettingsFormView.prototype, CAbstractSettingsFormView.prototype);
CFetcherIncomingSettingsFormView.prototype.ViewTemplate = 'MailWebclient_Settings_FetcherIncomingSettingsFormView';

/**
 * @param {Object} oFetcher
 */
CFetcherIncomingSettingsFormView.prototype.onShow = function (oFetcher) {
  this.fetcher(oFetcher && oFetcher.FETCHER ? oFetcher : null);
  this.populateOptions();
  this.populate();
};

/**
 * @param {Function} fShowNewTab
 */
CFetcherIncomingSettingsFormView.prototype.hide = function (fShowNewTab) {
  this.bShown = false;
  fShowNewTab();
};
CFetcherIncomingSettingsFormView.prototype.populateOptions = function () {
  if (this.bShown) {
    this.options(MailCache.folderList().getOptions('', true, false, false));
    if (this.sFetcherFolder !== this.folder()) {
      this.folder(this.sFetcherFolder);
      this.updateSavedState();
    }
  }
};
CFetcherIncomingSettingsFormView.prototype.getCurrentValues = function () {
  return [this.isEnabled(), this.oIncoming.server(), this.oIncoming.port(), this.oIncoming.ssl(), this.incomingPassword(), this.folder(), this.leaveMessagesOnServer()];
};
CFetcherIncomingSettingsFormView.prototype.getParametersForSave = function () {
  if (this.fetcher()) {
    var sIncomingPassword = $.trim(this.incomingPassword()),
      oParameters = {
        'FetcherId': this.idFetcher(),
        'IsEnabled': this.isEnabled(),
        'Folder': this.folder(),
        'IncomingServer': this.oIncoming.server(),
        'IncomingPort': this.oIncoming.getIntPort(),
        'IncomingUseSsl': this.oIncoming.ssl(),
        'LeaveMessagesOnServer': this.leaveMessagesOnServer()
      };
    if (sIncomingPassword !== '' && sIncomingPassword !== this.sFakePass) {
      oParameters['IncomingPassword'] = sIncomingPassword;
    }
    return oParameters;
  }
  return {};
};
CFetcherIncomingSettingsFormView.prototype.save = function () {
  if (this.isEmptyRequiredFields()) {
    Screens.showError(TextUtils.i18n('COREWEBCLIENT/ERROR_REQUIRED_FIELDS_EMPTY'));
  } else {
    this.isSaving(true);
    this.updateSavedState();
    CoreAjax.send(Settings.FetchersServerModuleName, 'UpdateFetcher', this.getParametersForSave(), this.onResponse, this);
  }
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CFetcherIncomingSettingsFormView.prototype.onResponse = function (oResponse, oRequest) {
  this.isSaving(false);
  if (!oResponse.Result) {
    Api.showErrorByCode(oResponse, TextUtils.i18n('COREWEBCLIENT/ERROR_UNKNOWN'));
  } else {
    AccountList.populateFetchers();
    Screens.showReport(TextUtils.i18n('MAILWEBCLIENT/REPORT_SUCCESSFULLY_SAVED'));
  }
};
CFetcherIncomingSettingsFormView.prototype.populate = function () {
  var oFetcher = this.fetcher();
  if (oFetcher) {
    this.sFetcherFolder = oFetcher.folder();
    this.idFetcher(oFetcher.id());
    this.isEnabled(oFetcher.isEnabled());
    this.folder(oFetcher.folder());
    this.oIncoming.set(oFetcher.incomingServer(), oFetcher.incomingPort(), oFetcher.incomingUseSsl());
    this.incomingLogin(oFetcher.incomingLogin());
    this.incomingPassword(this.sFakePass);
    this.leaveMessagesOnServer(oFetcher.leaveMessagesOnServer());
    this.updateSavedState();
  }
};
CFetcherIncomingSettingsFormView.prototype.isEmptyRequiredFields = function () {
  if (this.oIncoming.server() === '') {
    this.oIncoming.server.focused(true);
    return true;
  }
  if ($.trim(this.incomingPassword()) === '') {
    this.passwordIsSelected(true);
    return true;
  }
  return false;
};
CFetcherIncomingSettingsFormView.prototype.remove = function () {
  var oFetcher = this.fetcher(),
    fCallBack = function (bOkAnswer) {
      if (bOkAnswer) {
        var oParameters = {
          'FetcherId': oFetcher.id()
        };
        CoreAjax.send(Settings.FetchersServerModuleName, 'DeleteFetcher', oParameters, this.onAccountDeleteFetcherResponse, this);
        if (this.oParent && _.isFunction(this.oParent.onRemoveFetcher)) {
          this.oParent.onRemoveFetcher();
        }
      }
    }.bind(this);
  if (oFetcher) {
    Popups.showPopup(ConfirmPopup, [TextUtils.i18n('MAILWEBCLIENT/CONFIRM_REMOVE_FETCHER'), fCallBack, oFetcher.incomingLogin()]);
  }
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CFetcherIncomingSettingsFormView.prototype.onAccountDeleteFetcherResponse = function (oResponse, oRequest) {
  if (!oResponse.Result) {
    Api.showErrorByCode(oResponse, TextUtils.i18n('MAILWEBCLIENT/ERROR_FETCHER_DELETING'));
  }
  AccountList.populateFetchers();
};
module.exports = CFetcherIncomingSettingsFormView;

/***/ }),

/***/ "l21M":
/*!******************************************************************************!*\
  !*** ./modules/MailWebclient/js/views/settings/CIdentitySettingsFormView.js ***!
  \******************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  $ = __webpack_require__(/*! jquery */ "M4cL"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  Types = __webpack_require__(/*! modules/CoreWebclient/js/utils/Types.js */ "ERH9"),
  Utils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Common.js */ "uQaC"),
  Api = __webpack_require__(/*! modules/CoreWebclient/js/Api.js */ "Z9uT"),
  ModulesManager = __webpack_require__(/*! modules/CoreWebclient/js/ModulesManager.js */ "5D2l"),
  Screens = __webpack_require__(/*! modules/CoreWebclient/js/Screens.js */ "D2Gh"),
  CAbstractSettingsFormView = ModulesManager.run('SettingsWebclient', 'getAbstractSettingsFormViewClass'),
  AccountList = __webpack_require__(/*! modules/MailWebclient/js/AccountList.js */ "Fj7m"),
  Ajax = __webpack_require__(/*! modules/MailWebclient/js/Ajax.js */ "P7bQ"),
  Settings = __webpack_require__(/*! modules/MailWebclient/js/Settings.js */ "Ua3z");

/**
 * @constructor
 * 
 * @param {Object} oParent
 * @param {boolean} bCreate
 */
function CIdentitySettingsFormView(oParent, bCreate) {
  CAbstractSettingsFormView.call(this, Settings.ServerModuleName);
  this.identity = ko.observable(null);
  this.oParent = oParent;
  this.bCreate = bCreate;
  this.disableCheckbox = ko.observable(false);
  this.isDefault = ko.observable(false);
  this.email = ko.observable('');
  this.emailList = ko.observableArray([]);
  this.selectedEmail = ko.observable('');
  this.disableEditEmail = ko.observable(Settings.OnlyUserEmailsInIdentities);
  this.disableRemoveIdentity = ko.observable(bCreate);
  this.friendlyName = ko.observable('');
  this.friendlyNameHasFocus = ko.observable(false);
}
_.extendOwn(CIdentitySettingsFormView.prototype, CAbstractSettingsFormView.prototype);
CIdentitySettingsFormView.prototype.ViewTemplate = 'MailWebclient_Settings_IdentitySettingsFormView';
CIdentitySettingsFormView.prototype.ViewConstructorName = 'CIdentitySettingsFormView';

/**
 * @param {Object} oIdentity
 */
CIdentitySettingsFormView.prototype.onShow = function (oIdentity) {
  this.identity(oIdentity && !oIdentity.FETCHER ? oIdentity : null);
  this.populate();
};
CIdentitySettingsFormView.prototype.getCurrentValues = function () {
  return [this.friendlyName(), this.email()];
};
CIdentitySettingsFormView.prototype.getParametersForSave = function () {
  if (this.identity()) {
    var oParameters = {
      'AccountID': this.identity().accountId(),
      'Default': this.isDefault(),
      'FriendlyName': this.friendlyName(),
      'AccountPart': this.identity().bAccountPart
    };
    if (!this.identity().bAccountPart) {
      _.extendOwn(oParameters, {
        'Email': this.emailList().length > 0 ? $.trim(this.selectedEmail()) : $.trim(this.email())
      });
      if (!this.bCreate) {
        oParameters.EntityId = this.identity().id();
      }
    }
    return oParameters;
  }
  return {};
};
CIdentitySettingsFormView.prototype.save = function () {
  if ($.trim(this.email()) === '') {
    Screens.showError(Utils.i18n('MAILWEBCLIENT/ERROR_IDENTITY_FIELDS_BLANK'));
  } else {
    this.isSaving(true);
    this.updateSavedState();
    Ajax.send(this.bCreate ? 'CreateIdentity' : 'UpdateIdentity', this.getParametersForSave(), this.onResponse, this);
  }
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CIdentitySettingsFormView.prototype.onResponse = function (oResponse, oRequest) {
  this.isSaving(false);
  if (!oResponse.Result) {
    Api.showErrorByCode(oResponse, TextUtils.i18n('MAILWEBCLIENT/ERROR_IDENTITY_ADDING'));
  } else {
    var oParameters = oRequest.Parameters,
      iAccountId = Types.pInt(oParameters.AccountID),
      oAccount = 0 < iAccountId ? AccountList.getAccount(iAccountId) : null;
    AccountList.populateIdentities(function () {
      var oCurrAccount = AccountList.getCurrent(),
        aCurrIdentities = oCurrAccount.identities(),
        oCreatedIdentity = _.find(aCurrIdentities, function (oIdentity) {
          return oIdentity.id() === oResponse.Result;
        });
      if (oCreatedIdentity) {
        ModulesManager.run('SettingsWebclient', 'setAddHash', [['identity', oCreatedIdentity.hash()]]);
      }
    });
    if (this.bCreate && _.isFunction(this.oParent.closePopup)) {
      this.oParent.closePopup();
    }
    if (oParameters.AccountPart && oAccount) {
      oAccount.updateFriendlyName(oParameters.FriendlyName);
    }
    this.disableCheckbox(this.isDefault());
    Screens.showReport(TextUtils.i18n('COREWEBCLIENT/REPORT_SETTINGS_UPDATE_SUCCESS'));
  }
};
CIdentitySettingsFormView.prototype.populate = function () {
  var oIdentity = this.identity();
  if (oIdentity) {
    this.isDefault(oIdentity.isDefault());
    this.email(oIdentity.email());
    this.disableEditEmail(Settings.OnlyUserEmailsInIdentities || oIdentity.bAccountPart);
    this.disableRemoveIdentity(this.bCreate || oIdentity.bAccountPart);
    this.emailList([]);
    if (Settings.OnlyUserEmailsInIdentities && !oIdentity.bAccountPart) {
      var aAliases = [];
      var oAccount = AccountList.getAccount(oIdentity.accountId());
      if (oAccount) {
        aAliases = oAccount.aExtend.Aliases;
      }
      if (Types.isNonEmptyArray(aAliases)) {
        this.emailList(_.clone(aAliases));
        this.emailList.unshift(oIdentity.email());
        this.selectedEmail(oIdentity.email());
      }
    }
    this.friendlyName(oIdentity.friendlyName());
    this.disableCheckbox(oIdentity.isDefault());
    setTimeout(function () {
      this.updateSavedState();
    }.bind(this), 1);
  }
};
CIdentitySettingsFormView.prototype.remove = function () {
  if (this.identity() && !this.identity().bAccountPart) {
    var oParameters = {
      'AccountID': this.identity().accountId(),
      'EntityId': this.identity().id()
    };
    Ajax.send('DeleteIdentity', oParameters, this.onAccountIdentityDeleteResponse, this);
    if (!this.bCreate && _.isFunction(this.oParent.onRemoveIdentity)) {
      this.oParent.onRemoveIdentity();
    }
  }
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CIdentitySettingsFormView.prototype.onAccountIdentityDeleteResponse = function (oResponse, oRequest) {
  if (!oResponse.Result) {
    Api.showErrorByCode(oResponse, TextUtils.i18n('MAILWEBCLIENT/ERROR_IDENTITY_DELETING'));
  }
  AccountList.populateIdentities();
};
CIdentitySettingsFormView.prototype.cancel = function () {
  if (_.isFunction(this.oParent.cancelPopup)) {
    this.oParent.cancelPopup();
  }
};
module.exports = CIdentitySettingsFormView;

/***/ }),

/***/ "lsKY":
/*!***************************************************************!*\
  !*** ./modules/MailWebclient/js/popups/CreateAccountPopup.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  $ = __webpack_require__(/*! jquery */ "M4cL"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  Types = __webpack_require__(/*! modules/CoreWebclient/js/utils/Types.js */ "ERH9"),
  ValidationUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Validation.js */ "5RIG"),
  Api = __webpack_require__(/*! modules/CoreWebclient/js/Api.js */ "Z9uT"),
  CAbstractPopup = __webpack_require__(/*! modules/CoreWebclient/js/popups/CAbstractPopup.js */ "69av"),
  AccountList = __webpack_require__(/*! modules/MailWebclient/js/AccountList.js */ "Fj7m"),
  Ajax = __webpack_require__(/*! modules/MailWebclient/js/Ajax.js */ "P7bQ"),
  CAccountModel = __webpack_require__(/*! modules/MailWebclient/js/models/CAccountModel.js */ "YmTJ"),
  CServerPairPropertiesView = __webpack_require__(/*! modules/MailWebclient/js/views/settings/CServerPairPropertiesView.js */ "qN2P");

/**
 * @constructor
 */
function CCreateAccountPopup() {
  CAbstractPopup.call(this);
  this.loading = ko.observable(false);
  this.friendlyName = ko.observable('');
  this.email = ko.observable('');
  this.email.focused = ko.observable(false);
  this.incomingLogin = ko.observable('');
  this.incomingLogin.focused = ko.observable(false);
  this.incomingPassword = ko.observable('');
  this.incomingPassword.focused = ko.observable(false);
  this.oServerPairPropertiesView = new CServerPairPropertiesView('acc_create');
  this.email.focused.subscribe(function () {
    if (!this.email.focused() && $.trim(this.incomingLogin()) === '') {
      this.incomingLogin(this.email());
    }
  }, this);
  this.aRequiredFields = [this.email, this.incomingLogin, this.incomingPassword].concat(this.oServerPairPropertiesView.aRequiredFields);
}
_.extendOwn(CCreateAccountPopup.prototype, CAbstractPopup.prototype);
CCreateAccountPopup.prototype.PopupTemplate = 'MailWebclient_Settings_CreateAccountPopup';
CCreateAccountPopup.prototype.init = function () {
  this.friendlyName('');
  this.email('');
  this.incomingLogin('');
  this.incomingLogin.focused(false);
  this.incomingPassword('');
  this.oServerPairPropertiesView.fullInit();
};

/**
 * @param {Function=} fCallback
 */
CCreateAccountPopup.prototype.onOpen = function (fCallback, sFriendlyName, sEmail, sIncomingPassword) {
  this.fCallback = fCallback;
  this.init();
  this.friendlyName(sFriendlyName);
  this.email(sEmail);
  this.incomingLogin(sEmail);
  this.incomingPassword(sIncomingPassword);
  this.focusFieldToEdit();
};
CCreateAccountPopup.prototype.focusFieldToEdit = function () {
  var koFirstEmptyField = _.find(this.aRequiredFields, function (koField) {
    return koField() === '';
  });
  if (koFirstEmptyField) {
    koFirstEmptyField.focused(true);
  } else if (this.aRequiredFields.length > 0) {
    this.aRequiredFields[0].focused(true);
  }
};
CCreateAccountPopup.prototype.onClose = function () {
  this.init();
};
CCreateAccountPopup.prototype.save = function () {
  if (ValidationUtils.checkIfFieldsEmpty(this.aRequiredFields, TextUtils.i18n('COREWEBCLIENT/ERROR_REQUIRED_FIELDS_EMPTY'))) {
    var oParameters = {
      'FriendlyName': this.friendlyName(),
      'Email': $.trim(this.email()),
      'IncomingLogin': $.trim(this.incomingLogin()),
      'IncomingPassword': $.trim(this.incomingPassword()),
      'Server': this.oServerPairPropertiesView.getParametersForSave()
    };
    this.loading(true);
    Ajax.send('CreateAccount', oParameters, this.onAccountCreateResponse, this);
  } else {
    this.loading(false);
  }
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CCreateAccountPopup.prototype.onAccountCreateResponse = function (oResponse, oRequest) {
  this.loading(false);
  if (!oResponse.Result) {
    Api.showErrorByCode(oResponse, TextUtils.i18n('MAILWEBCLIENT/ERROR_CREATE_ACCOUNT'));
  } else {
    var iAccountId = Types.pInt(oResponse.Result.AccountID),
      oAccount = new CAccountModel(oResponse.Result);
    AccountList.addAccount(oAccount);
    AccountList.populateIdentities();
    AccountList.changeEditedAccount(iAccountId);
    if (AccountList.collection().length === 1) {
      AccountList.changeCurrentAccount(iAccountId);
    }
    if (this.fCallback) {
      this.fCallback(iAccountId);
    }
    this.closePopup();
  }
};
module.exports = new CCreateAccountPopup();

/***/ }),

/***/ "oq0M":
/*!**********************************************************!*\
  !*** ./modules/MailWebclient/js/views/HeaderItemView.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  Settings = __webpack_require__(/*! modules/MailWebclient/js/Settings.js */ "Ua3z"),
  CAbstractHeaderItemView = __webpack_require__(/*! modules/CoreWebclient/js/views/CHeaderItemView.js */ "cR1d"),
  AccountList = __webpack_require__(/*! modules/MailWebclient/js/AccountList.js */ "Fj7m"),
  Cache = __webpack_require__(/*! modules/MailWebclient/js/Cache.js */ "eGl8");
function CHeaderItemView() {
  CAbstractHeaderItemView.call(this, TextUtils.i18n('MAILWEBCLIENT/ACTION_SHOW_MAIL'));
  this.unseenCount = Cache.newMessagesCount;
  this.inactiveTitle = ko.computed(function () {
    return TextUtils.i18n('MAILWEBCLIENT/HEADING_UNREAD_MESSAGES_BROWSER_TAB_PLURAL', {
      'COUNT': this.unseenCount()
    }, null, this.unseenCount()) + ' - ' + AccountList.getEmail();
  }, this);
  this.accounts = ko.computed(function () {
    return _.map(AccountList.collection(), function (oAccount) {
      return {
        bCurrent: oAccount.isCurrent(),
        sText: Settings.UserLoginPartInAccountDropdown ? oAccount.email().split('@')[0] : oAccount.email(),
        changeAccount: oAccount.changeAccount.bind(oAccount)
      };
    });
  }, this);
  if (Settings.ShowEmailAsTabName) {
    this.linkText = ko.computed(function () {
      var oCurrent = _.find(this.accounts(), function (oAccountData) {
        return oAccountData.bCurrent;
      });
      return oCurrent ? oCurrent.sText : TextUtils.i18n('MAILWEBCLIENT/HEADING_BROWSER_TAB');
    }, this);
  }
  this.mainHref = ko.computed(function () {
    if (this.isCurrent()) {
      return 'javascript: void(0);';
    }
    return this.hash();
  }, this);
}
_.extendOwn(CHeaderItemView.prototype, CAbstractHeaderItemView.prototype);
CHeaderItemView.prototype.ViewTemplate = 'MailWebclient_HeaderItemView';
var HeaderItemView = new CHeaderItemView();
HeaderItemView.allowChangeTitle(true);
module.exports = HeaderItemView;

/***/ }),

/***/ "p6Kc":
/*!**********************************************************!*\
  !*** ./modules/MailWebclient/js/models/CForwardModel.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var Types = __webpack_require__(/*! modules/CoreWebclient/js/utils/Types.js */ "ERH9");

/**
 * @constructor
 */
function CForwardModel() {
  this.iAccountId = 0;
  this.enable = false;
  this.keepcopy = false;
  this.email = '';
}

/**
 * @param {number} iAccountId
 * @param {Object} oData
 */
CForwardModel.prototype.parse = function (iAccountId, oData) {
  this.iAccountId = iAccountId;
  this.enable = !!oData.Enable;
  this.keepcopy = !!oData.KeepMessageCopy;
  this.email = Types.pString(oData.Email);
};
module.exports = CForwardModel;

/***/ }),

/***/ "qN2P":
/*!******************************************************************************!*\
  !*** ./modules/MailWebclient/js/views/settings/CServerPairPropertiesView.js ***!
  \******************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  $ = __webpack_require__(/*! jquery */ "M4cL"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  Types = __webpack_require__(/*! modules/CoreWebclient/js/utils/Types.js */ "ERH9"),
  ValidationUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Validation.js */ "5RIG"),
  Api = __webpack_require__(/*! modules/CoreWebclient/js/Api.js */ "Z9uT"),
  App = __webpack_require__(/*! modules/CoreWebclient/js/App.js */ "yU9o"),
  Ajax = __webpack_require__(/*! modules/MailWebclient/js/Ajax.js */ "P7bQ"),
  Settings = __webpack_require__(/*! modules/MailWebclient/js/Settings.js */ "Ua3z"),
  CServerModel = __webpack_require__(/*! modules/MailWebclient/js/models/CServerModel.js */ "UVn1"),
  CServerPropertiesView = __webpack_require__(/*! modules/MailWebclient/js/views/CServerPropertiesView.js */ "cVoG");

/**
 * @constructor
 * @param {string} sPairId
 * @param {boolean} bAdminEdit
 * @param {int} iServersPerPage
 */
function CServerPairPropertiesView(sPairId, bAdminEdit, iServersPerPage) {
  var oParams = {
    aOauthConnectorsData: []
  };
  App.broadcastEvent('MailWebclient::GetOauthConnectorsData', oParams);
  this.bVisibleOauthSettings = bAdminEdit && Types.isNonEmptyArray(oParams.aOauthConnectorsData);
  this.aOauthConnectorsData = Types.pArray(oParams.aOauthConnectorsData);
  this.oauthSelectedConnector = ko.observable('');
  this.iServersPerPage = Types.pInt(iServersPerPage, 0);
  this.totalServersCount = ko.observable(0);
  this.servers = ko.observableArray([]);
  this.serversRetrieved = ko.observable(false);
  this.serverOptions = ko.observableArray([{
    'Name': TextUtils.i18n('MAILWEBCLIENT/LABEL_CONFIGURE_SERVER_MANUALLY'),
    'Id': 0
  }]);
  this.selectedServerId = ko.observable(0);
  this.oLastEditableServer = new CServerModel();
  this.iEditedServerId = 0;
  this.selectedServerId.subscribe(function () {
    var iSelectedServerId = this.selectedServerId(),
      oSelectedServer = _.find(this.servers(), function (oServer) {
        return oServer.iId === iSelectedServerId;
      });
    if (oSelectedServer) {
      if (this.oIncoming.isEnabled()) {
        this.oLastEditableServer = new CServerModel(this.getParametersForSave());
      }
      this.setExternalAccessServers(oSelectedServer.bSetExternalAccessServers);
      this.externalAccessImapServer(oSelectedServer.sExternalAccessImapServer);
      this.externalAccessImapPort(oSelectedServer.iExternalAccessImapPort);
      this.externalAccessImapAlterPort(oSelectedServer.iExternalAccessImapAlterPort > 0 ? oSelectedServer.iExternalAccessImapAlterPort : '');
      this.externalAccessImapUseSsl(oSelectedServer.bExternalAccessImapUseSsl);
      this.externalAccessPop3Server(oSelectedServer.sExternalAccessPop3Server);
      this.externalAccessPop3Port(oSelectedServer.iExternalAccessPop3Port);
      this.externalAccessPop3AlterPort(oSelectedServer.iExternalAccessPop3AlterPort > 0 ? oSelectedServer.iExternalAccessPop3AlterPort : '');
      this.externalAccessPop3UseSsl(oSelectedServer.bExternalAccessPop3UseSsl);
      this.externalAccessSmtpServer(oSelectedServer.sExternalAccessSmtpServer);
      this.externalAccessSmtpPort(oSelectedServer.iExternalAccessSmtpPort);
      this.externalAccessSmtpAlterPort(oSelectedServer.iExternalAccessSmtpAlterPort > 0 ? oSelectedServer.iExternalAccessSmtpAlterPort : '');
      this.externalAccessSmtpUseSsl(oSelectedServer.bExternalAccessSmtpUseSsl);
      this.oauthSelectedConnector(oSelectedServer.bOauthEnable ? oSelectedServer.sOauthType : '');
      this.tenantId(oSelectedServer.iTenantId);
      this.name(oSelectedServer.sName);
      this.oIncoming.set(oSelectedServer.sIncomingServer, oSelectedServer.iIncomingPort, oSelectedServer.bIncomingUseSsl);
      this.oIncoming.isEnabled(this.bAdminEdit);
      this.oOutgoing.set(oSelectedServer.sOutgoingServer, oSelectedServer.iOutgoingPort, oSelectedServer.bOutgoingUseSsl);
      this.oOutgoing.isEnabled(this.bAdminEdit);
      this.outgoingUseAuth(oSelectedServer.sSmtpAuthType === window.Enums.SmtpAuthType.UseUserCredentials);
      this.outgoingUseAuth.enable(this.bAdminEdit);
      this.domains(oSelectedServer.sDomains);
      this.smtpAuthType(oSelectedServer.sSmtpAuthType);
      this.smtpLogin(oSelectedServer.sSmtpLogin);
      this.smtpPassword(oSelectedServer.sSmtpPassword);
      this.enableSieve(oSelectedServer.bEnableSieve);
      this.sievePort(oSelectedServer.iSievePort);
      this.enableThreading(oSelectedServer.bEnableThreading);
      this.useFullEmailAddressAsLogin(oSelectedServer.bUseFullEmailAddressAsLogin);
    } else {
      this.setExternalAccessServers(this.oLastEditableServer.bSetExternalAccessServers);
      this.externalAccessImapServer(this.oLastEditableServer.sExternalAccessImapServer);
      this.externalAccessImapPort(this.oLastEditableServer.iExternalAccessImapPort);
      this.externalAccessImapAlterPort(this.oLastEditableServer.iExternalAccessImapAlterPort > 0 ? this.oLastEditableServer.iExternalAccessImapAlterPort : '');
      this.externalAccessImapUseSsl(this.oLastEditableServer.bExternalAccessImapUseSsl);
      this.externalAccessPop3Server(this.oLastEditableServer.sExternalAccessPop3Server);
      this.externalAccessPop3Port(this.oLastEditableServer.iExternalAccessPop3Port);
      this.externalAccessPop3AlterPort(this.oLastEditableServer.iExternalAccessPop3AlterPort > 0 ? this.oLastEditableServer.iExternalAccessPop3AlterPort : '');
      this.externalAccessPop3UseSsl(this.oLastEditableServer.bExternalAccessPop3UseSsl);
      this.externalAccessSmtpServer(this.oLastEditableServer.sExternalAccessSmtpServer);
      this.externalAccessSmtpPort(this.oLastEditableServer.iExternalAccessSmtpPort);
      this.externalAccessSmtpAlterPort(this.oLastEditableServer.iExternalAccessSmtpAlterPort > 0 ? this.oLastEditableServer.iExternalAccessSmtpAlterPort : '');
      this.externalAccessSmtpUseSsl(this.oLastEditableServer.bExternalAccessSmtpUseSsl);
      this.oauthSelectedConnector(this.oLastEditableServer.bOauthEnable ? this.oLastEditableServer.sOauthType : '');
      this.tenantId(0);
      this.name(this.oLastEditableServer.sName);
      this.oIncoming.set(this.oLastEditableServer.sIncomingServer, this.oLastEditableServer.iIncomingPort, this.oLastEditableServer.bIncomingUseSsl);
      this.oIncoming.isEnabled(true);
      this.oOutgoing.set(this.oLastEditableServer.sOutgoingServer, this.oLastEditableServer.iOutgoingPort, this.oLastEditableServer.bOutgoingUseSsl);
      this.oOutgoing.isEnabled(true);
      this.outgoingUseAuth(this.oLastEditableServer.sSmtpAuthType === window.Enums.SmtpAuthType.UseUserCredentials);
      this.outgoingUseAuth.enable(true);
      this.domains('');
      this.smtpAuthType(window.Enums.SmtpAuthType.UseUserCredentials);
      this.smtpLogin('');
      this.smtpPassword('');
      this.enableSieve(false);
      this.sievePort(4190);
      this.enableThreading(true);
      this.useFullEmailAddressAsLogin(true);
    }
    this.setCurrentValues();
  }, this);
  this.tenantId = ko.observable(0);
  this.name = ko.observable('');
  this.name.focused = ko.observable(false);
  this.bAdminEdit = bAdminEdit;
  this.oIncoming = new CServerPropertiesView(143, 993, sPairId + '_incoming', TextUtils.i18n('MAILWEBCLIENT/LABEL_IMAP_SERVER'), null);
  this.oOutgoing = new CServerPropertiesView(25, 465, sPairId + '_outgoing', TextUtils.i18n('MAILWEBCLIENT/LABEL_SMTP_SERVER'), this.oIncoming.server);
  this.outgoingUseAuth = ko.observable(true);
  this.outgoingUseAuth.enable = ko.observable(true);
  this.domains = ko.observable('');
  this.bAllowEditDomains = Settings.AllowEditDomainsInServer;
  //	this.name.focused.subscribe(function () {
  //		if (this.bAllowEditDomains && !this.name.focused() && this.domains() === '')
  //		{
  //			this.domains(this.name());
  //		}
  //	}, this);
  this.smtpAuthType = ko.observable(window.Enums.SmtpAuthType.UseUserCredentials);
  this.smtpLogin = ko.observable('');
  this.smtpPassword = ko.observable('');
  this.enableSieve = ko.observable(false);
  this.sievePort = ko.observable(4190);
  this.enableThreading = ko.observable(true);
  this.useFullEmailAddressAsLogin = ko.observable(true);
  this.currentValues = ko.observable('');
  this.aRequiredFields = [this.oIncoming.server, this.oIncoming.port, this.oOutgoing.server, this.oOutgoing.port];
  if (bAdminEdit) {
    this.aRequiredFields.unshift(this.name);
  }
  this.setExternalAccessServers = ko.observable(false);
  this.externalAccessImapServer = ko.observable(this.oIncoming.server());
  this.externalAccessImapPort = ko.observable(this.oIncoming.port());
  this.externalAccessImapAlterPort = ko.observable('');
  this.externalAccessImapUseSsl = ko.observable(false);
  this.externalAccessPop3Server = ko.observable('');
  this.externalAccessPop3Port = ko.observable(110);
  this.externalAccessPop3AlterPort = ko.observable('');
  this.externalAccessPop3UseSsl = ko.observable(false);
  this.externalAccessSmtpServer = ko.observable(this.oOutgoing.server());
  this.externalAccessSmtpPort = ko.observable(this.oOutgoing.port());
  this.externalAccessSmtpAlterPort = ko.observable('');
  this.externalAccessSmtpUseSsl = ko.observable(false);
  ko.computed(function () {
    if (!this.setExternalAccessServers()) {
      this.externalAccessImapServer(this.oIncoming.server());
      this.externalAccessImapPort(this.oIncoming.port());
      this.externalAccessImapAlterPort('');
      this.externalAccessImapUseSsl(this.oIncoming.ssl());
      this.externalAccessPop3Server('');
      this.externalAccessPop3Port(110);
      this.externalAccessPop3AlterPort('');
      this.externalAccessPop3UseSsl(false);
      this.externalAccessSmtpServer(this.oOutgoing.server());
      this.externalAccessSmtpPort(this.oOutgoing.port());
      this.externalAccessSmtpAlterPort('');
      this.externalAccessSmtpUseSsl(this.oOutgoing.ssl());
    }
  }, this);
}
CServerPairPropertiesView.prototype.ViewTemplate = 'MailWebclient_Settings_ServerPairPropertiesView';
CServerPairPropertiesView.prototype.serverInit = function (bEmptyServerToEdit) {
  this.setServer(bEmptyServerToEdit ? new CServerModel() : this.oLastEditableServer);
};
CServerPairPropertiesView.prototype.fullInit = function () {
  this.setServer(this.oLastEditableServer);
  if (!this.serversRetrieved()) {
    this.requestServers();
  }
};
CServerPairPropertiesView.prototype.setServer = function (oServer) {
  this.oLastEditableServer = oServer;
  this.setServerId(oServer.iId);
};
CServerPairPropertiesView.prototype.setServerId = function (iServerId) {
  if (this.serversRetrieved() || iServerId === 0) {
    var bEmptyServerNow = this.selectedServerId() === 0;
    this.selectedServerId(0); // If server with identifier iServerId doesn't exist in the list selectedServerId will be reset to previous value that will be 0
    this.selectedServerId(iServerId);
    if (bEmptyServerNow && iServerId === 0) {
      this.selectedServerId.valueHasMutated();
    }
  } else {
    this.iEditedServerId = iServerId;
  }
};
CServerPairPropertiesView.prototype.requestServers = function (iOffset, sSearch) {
  var iTenantId = _.isFunction(App.getTenantId) ? App.getTenantId() : 0;
  this.serversRetrieved(false);
  Ajax.send('GetServers', {
    'TenantId': iTenantId,
    'Offset': Types.pInt(iOffset, 0),
    'Limit': this.iServersPerPage,
    'Search': Types.pString(sSearch, '')
  }, function (oResponse) {
    if (_.isArray(oResponse && oResponse.Result && oResponse.Result.Items)) {
      var aServerOptions = [{
        'Name': TextUtils.i18n('MAILWEBCLIENT/LABEL_CONFIGURE_SERVER_MANUALLY'),
        'Id': 0
      }];
      _.each(oResponse.Result.Items, function (oServer) {
        aServerOptions.push({
          'Name': oServer.Name,
          'Id': Types.pInt(oServer.EntityId)
        });
      });
      this.servers(_.map(oResponse.Result.Items, function (oServerData) {
        return new CServerModel(oServerData);
      }));
      this.totalServersCount(oResponse.Result.Count);
      this.serverOptions(aServerOptions);
      this.serversRetrieved(true);
      if (this.iEditedServerId) {
        this.setServerId(this.iEditedServerId);
        this.iEditedServerId = 0;
      }
    } else {
      Api.showErrorByCode(oResponse);
    }
  }, this);
};
CServerPairPropertiesView.prototype.clear = function () {
  this.oIncoming.clear();
  this.oOutgoing.clear();
  this.outgoingUseAuth(true);
};
CServerPairPropertiesView.prototype.setCurrentValues = function () {
  var aNamePart = this.bAdminEdit ? [this.selectedServerId(), this.name()] : [],
    aServerPart = [this.oIncoming.port(), this.oIncoming.server(), this.oIncoming.ssl(), this.oOutgoing.port(), this.oOutgoing.server(), this.oOutgoing.ssl(), this.outgoingUseAuth(), this.domains(), this.smtpAuthType(), this.smtpLogin(), this.smtpPassword(), this.enableSieve(), this.sievePort(), this.enableThreading(), this.useFullEmailAddressAsLogin(), this.setExternalAccessServers(), this.externalAccessImapServer(), this.externalAccessImapPort(), this.externalAccessImapAlterPort(), this.externalAccessImapUseSsl(), this.externalAccessPop3Server(), this.externalAccessPop3Port(), this.externalAccessPop3AlterPort(), this.externalAccessPop3UseSsl(), this.externalAccessSmtpServer(), this.externalAccessSmtpPort(), this.externalAccessSmtpAlterPort(), this.externalAccessSmtpUseSsl(), this.oauthSelectedConnector()];
  this.currentValues(aNamePart.concat(aServerPart).join(':'));
};
CServerPairPropertiesView.prototype.getCurrentValues = function () {
  this.setCurrentValues();
  return [this.currentValues()];
};
CServerPairPropertiesView.prototype.getSmtpAuthType = function () {
  if (this.bAdminEdit || this.smtpAuthType() === window.Enums.SmtpAuthType.UseSpecifiedCredentials) {
    return this.smtpAuthType();
  } else {
    return this.outgoingUseAuth() ? window.Enums.SmtpAuthType.UseUserCredentials : window.Enums.SmtpAuthType.NoAuthentication;
  }
};
CServerPairPropertiesView.prototype.getParametersForSave = function () {
  var iServerId = this.selectedServerId(),
    iLastEditableServerId = this.oLastEditableServer.iId,
    sSmtpAuthType = this.getSmtpAuthType(),
    oParameters = {};
  if (iServerId === 0 && !_.find(this.servers(), function (oServer) {
    return iLastEditableServerId === oServer.iId;
  })) {
    iServerId = iLastEditableServerId;
  }
  oParameters = {
    'ServerId': iServerId,
    'Name': this.bAdminEdit ? this.name() : this.oIncoming.server(),
    'IncomingServer': this.oIncoming.server(),
    'IncomingPort': this.oIncoming.getIntPort(),
    'IncomingUseSsl': this.oIncoming.ssl(),
    'OutgoingServer': this.oOutgoing.server(),
    'OutgoingPort': this.oOutgoing.getIntPort(),
    'OutgoingUseSsl': this.oOutgoing.ssl(),
    'Domains': this.domains(),
    'SmtpAuthType': sSmtpAuthType,
    'SmtpLogin': sSmtpAuthType === window.Enums.SmtpAuthType.UseSpecifiedCredentials ? $.trim(this.smtpLogin()) : '',
    'SmtpPassword': sSmtpAuthType === window.Enums.SmtpAuthType.UseSpecifiedCredentials ? $.trim(this.smtpPassword()) : '',
    'EnableSieve': this.enableSieve(),
    'SievePort': this.sievePort(),
    'EnableThreading': this.enableThreading(),
    'UseFullEmailAddressAsLogin': this.useFullEmailAddressAsLogin(),
    'SetExternalAccessServers': this.setExternalAccessServers()
  };
  if (this.setExternalAccessServers()) {
    oParameters['ExternalAccessImapServer'] = this.externalAccessImapServer();
    oParameters['ExternalAccessImapPort'] = this.externalAccessImapPort();
    oParameters['ExternalAccessImapAlterPort'] = Types.pInt(this.externalAccessImapAlterPort(), 0);
    oParameters['ExternalAccessImapUseSsl'] = this.externalAccessImapUseSsl();
    oParameters['ExternalAccessPop3Server'] = this.externalAccessPop3Server();
    oParameters['ExternalAccessPop3Port'] = this.externalAccessPop3Port();
    oParameters['ExternalAccessPop3AlterPort'] = Types.pInt(this.externalAccessPop3AlterPort(), 0);
    oParameters['ExternalAccessPop3UseSsl'] = this.externalAccessPop3UseSsl();
    oParameters['ExternalAccessSmtpServer'] = this.externalAccessSmtpServer();
    oParameters['ExternalAccessSmtpPort'] = this.externalAccessSmtpPort();
    oParameters['ExternalAccessSmtpAlterPort'] = Types.pInt(this.externalAccessSmtpAlterPort(), 0);
    oParameters['ExternalAccessSmtpUseSsl'] = this.externalAccessSmtpUseSsl();
  }
  var oOAuthConnector = _.find(this.aOauthConnectorsData, function (oConnectorData) {
    return oConnectorData.Type === this.oauthSelectedConnector();
  }, this);
  oParameters['OAuthEnable'] = !!oOAuthConnector;
  if (oOAuthConnector) {
    oParameters['OAuthName'] = oOAuthConnector.Name;
    oParameters['OAuthType'] = oOAuthConnector.Type;
    oParameters['OAuthIconUrl'] = oOAuthConnector.IconUrl;
  }
  return oParameters;
};

/**
 * Validates if required fields are empty or not.
 * @returns {Boolean}
 */
CServerPairPropertiesView.prototype.validateBeforeSave = function () {
  return ValidationUtils.checkIfFieldsEmpty(this.aRequiredFields, TextUtils.i18n('COREWEBCLIENT/ERROR_REQUIRED_FIELDS_EMPTY'));
};
CServerPairPropertiesView.prototype.onDomainsClick = function () {
  if (!this.bAllowEditDomains) {
    $('.tabsbar .item.admin.domain').removeClass('recivedAnim');
    setTimeout(function () {
      $('.tabsbar .item.admin.domain').addClass('recivedAnim');
    });
  }
};
module.exports = CServerPairPropertiesView;

/***/ }),

/***/ "qpcR":
/*!************************************************************************!*\
  !*** ./modules/MailWebclient/js/popups/CreateAccountShortFormPopup.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  $ = __webpack_require__(/*! jquery */ "M4cL"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  Types = __webpack_require__(/*! modules/CoreWebclient/js/utils/Types.js */ "ERH9"),
  ValidationUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Validation.js */ "5RIG"),
  UrlUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Url.js */ "3cxN"),
  Api = __webpack_require__(/*! modules/CoreWebclient/js/Api.js */ "Z9uT"),
  CAbstractPopup = __webpack_require__(/*! modules/CoreWebclient/js/popups/CAbstractPopup.js */ "69av"),
  CoreAjax = __webpack_require__(/*! modules/CoreWebclient/js/Ajax.js */ "8QQh"),
  Popups = __webpack_require__(/*! modules/CoreWebclient/js/Popups.js */ "PMEU"),
  CreateAccountPopup = __webpack_require__(/*! modules/MailWebclient/js/popups/CreateAccountPopup.js */ "lsKY"),
  ModulesManager = __webpack_require__(/*! modules/CoreWebclient/js/ModulesManager.js */ "5D2l"),
  WindowOpener = __webpack_require__(/*! modules/CoreWebclient/js/WindowOpener.js */ "zVyH"),
  AccountList = __webpack_require__(/*! modules/MailWebclient/js/AccountList.js */ "Fj7m"),
  Ajax = __webpack_require__(/*! modules/MailWebclient/js/Ajax.js */ "P7bQ"),
  CAccountModel = __webpack_require__(/*! modules/MailWebclient/js/models/CAccountModel.js */ "YmTJ"),
  CServerModel = __webpack_require__(/*! modules/MailWebclient/js/models/CServerModel.js */ "UVn1");

/**
 * @constructor
 */
function CreateAccountShortFormPopup() {
  CAbstractPopup.call(this);
  this.oauthOptions = ko.observableArray([]);
  this.oauthOptionsVisible = ko.observable(false);
  this.bOAuthCallbackExecuted = false;
  this.loading = ko.observable(false);
  this.friendlyName = ko.observable('');
  this.email = ko.observable('');
  this.email.focused = ko.observable(false);
  this.password = ko.observable('');
  this.password.focused = ko.observable(false);
  this.aRequiredFields = [this.email, this.password];
}
_.extendOwn(CreateAccountShortFormPopup.prototype, CAbstractPopup.prototype);
CreateAccountShortFormPopup.prototype.PopupTemplate = 'MailWebclient_Settings_CreateAccountShortFormPopup';
CreateAccountShortFormPopup.prototype.init = function () {
  this.friendlyName('');
  this.email('');
  this.password('');
};

/**
 * @param {Function=} fCallback
 */
CreateAccountShortFormPopup.prototype.onOpen = function (aOAuthOptions, fCallback) {
  this.oauthOptions(aOAuthOptions);
  this.oauthOptionsVisible(this.oauthOptions().length > 0);
  this.fCallback = fCallback;
  this.init();
  this.focusFieldToEdit();
};
CreateAccountShortFormPopup.prototype.selectAuthOption = function (sType) {
  if (sType === '') {
    this.oauthOptionsVisible(false);
  } else {
    this.getOAuthData(sType);
  }
};
CreateAccountShortFormPopup.prototype.focusFieldToEdit = function () {
  var koFirstEmptyField = _.find(this.aRequiredFields, function (koField) {
    return koField() === '';
  });
  if (koFirstEmptyField) {
    koFirstEmptyField.focused(true);
  } else if (this.aRequiredFields.length > 0) {
    this.aRequiredFields[0].focused(true);
  }
};
CreateAccountShortFormPopup.prototype.onClose = function () {
  this.init();
};
CreateAccountShortFormPopup.prototype.getOAuthData = function (sType) {
  // var
  // 	sScopes = $.cookie('oauth-scopes'),
  // 	aScopes = !_.isUndefined(sScopes) ? sScopes.split('|') : []
  // ;
  // aScopes.push('mail');
  // aScopes = _.unique(aScopes);
  // $.removeCookie('oauth-scopes');
  $.cookie('oauth-scopes', 'mail');
  $.cookie('oauth-redirect', 'connect');
  this.bOAuthCallbackExecuted = false;
  window.gmailConnectCallback = function (oResult, sErrorCode, sModule) {
    this.bOAuthCallbackExecuted = true;
    if (!oResult) {
      Api.showErrorByCode({
        'ErrorCode': Types.pInt(sErrorCode),
        'Module': sModule
      }, '', true);
    } else {
      CoreAjax.send('OAuthIntegratorWebclient', 'CreateMailAccount', {
        'OAuthAccountData': oResult
      }, this.onAccountCreateResponse, this);
    }
  }.bind(this);
  var oWin = WindowOpener.open(UrlUtils.getAppPath() + '?oauth=' + sType + '-connect', 'OAuth'),
    iIntervalId = setInterval(function () {
      if (oWin.closed) {
        clearInterval(iIntervalId);
        if (!this.bOAuthCallbackExecuted) {
          window.location.reload();
        }
      }
    }.bind(this), 1000);
};
CreateAccountShortFormPopup.prototype.save = function () {
  if (ValidationUtils.checkIfFieldsEmpty(this.aRequiredFields, TextUtils.i18n('COREWEBCLIENT/ERROR_REQUIRED_FIELDS_EMPTY'))) {
    var oParameters = {
      'Domain': $.trim(this.email()).split('@')[1],
      'AllowWildcardDomain': true
    };
    this.loading(true);
    Ajax.send('GetMailServerByDomain', oParameters, this.onGetMailServerByDomain, this);
  } else {
    this.loading(false);
  }
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CreateAccountShortFormPopup.prototype.onGetMailServerByDomain = function (oResponse, oRequest) {
  var oServer = null;
  if (oResponse.Result && typeof oResponse.Result.Server !== 'undefined' && typeof oResponse.Result.FoundWithWildcard !== 'undefined') {
    if (oResponse.Result.FoundWithWildcard) {
      var sNewAccountDomain = $.trim(this.email()).split('@')[1],
        sMainAccountEmail = AccountList.getDefault() ? AccountList.getDefault().email() : '',
        sMainAccountDomain = $.trim(sMainAccountEmail).split('@')[1],
        bDomainsMatches = sNewAccountDomain === sMainAccountDomain;
      if (bDomainsMatches) {
        oServer = new CServerModel(oResponse.Result.Server);
      }
    } else {
      oServer = new CServerModel(oResponse.Result.Server);
    }
  }
  if (oServer) {
    var oParameters = {
      'FriendlyName': this.friendlyName(),
      'Email': $.trim(this.email()),
      'IncomingLogin': $.trim(this.email()),
      'IncomingPassword': $.trim(this.password()),
      'Server': {
        'ServerId': oServer.iId
      }
    };
    Ajax.send('CreateAccount', oParameters, this.onAccountCreateResponse, this);
  } else {
    //second stage
    this.loading(false);
    Popups.showPopup(CreateAccountPopup, [_.bind(function (iAccountId) {
      var oAccount = AccountList.getAccount(iAccountId);
      if (oAccount) {
        this.editAccount(oAccount.hash());
      }
    }, this), this.friendlyName(), $.trim(this.email()), $.trim(this.password())]);
    this.closePopup();
  }
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CreateAccountShortFormPopup.prototype.onAccountCreateResponse = function (oResponse, oRequest) {
  this.loading(false);
  if (!oResponse.Result) {
    Api.showErrorByCode(oResponse, TextUtils.i18n('MAILWEBCLIENT/ERROR_CREATE_ACCOUNT'));
  } else {
    var iAccountId = Types.pInt(oResponse.Result.AccountID),
      oAccount = new CAccountModel(oResponse.Result);
    AccountList.addAccount(oAccount);
    AccountList.populateIdentities();
    AccountList.changeEditedAccount(iAccountId);
    if (AccountList.collection().length === 1) {
      AccountList.changeCurrentAccount(iAccountId);
    }
    if (this.fCallback) {
      this.fCallback(iAccountId);
    }
    this.closePopup();
  }
};

/**
 * @param {string} sHash
 */
CreateAccountShortFormPopup.prototype.editAccount = function (sHash) {
  ModulesManager.run('SettingsWebclient', 'setAddHash', [['account', sHash]]);
};
module.exports = new CreateAccountShortFormPopup();

/***/ }),

/***/ "r79L":
/*!***********************************************************************************!*\
  !*** ./modules/MailWebclient/js/views/settings/AccountFiltersSettingsFormView.js ***!
  \***********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
var _ = __webpack_require__(/*! underscore */ "C3HO"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  Types = __webpack_require__(/*! modules/CoreWebclient/js/utils/Types.js */ "ERH9"),
  Api = __webpack_require__(/*! modules/CoreWebclient/js/Api.js */ "Z9uT"),
  Screens = __webpack_require__(/*! modules/CoreWebclient/js/Screens.js */ "D2Gh"),
  ModulesManager = __webpack_require__(/*! modules/CoreWebclient/js/ModulesManager.js */ "5D2l"),
  CAbstractSettingsFormView = ModulesManager.run('SettingsWebclient', 'getAbstractSettingsFormViewClass'),
  AccountList = __webpack_require__(/*! modules/MailWebclient/js/AccountList.js */ "Fj7m"),
  Ajax = __webpack_require__(/*! modules/MailWebclient/js/Ajax.js */ "P7bQ"),
  MailCache = __webpack_require__(/*! modules/MailWebclient/js/Cache.js */ "eGl8"),
  Settings = __webpack_require__(/*! modules/MailWebclient/js/Settings.js */ "Ua3z"),
  CFilterModel = __webpack_require__(/*! modules/MailWebclient/js/models/CFilterModel.js */ "0HIo"),
  CFiltersModel = __webpack_require__(/*! modules/MailWebclient/js/models/CFiltersModel.js */ "sHZb");

/**
 * @constructor
 */
function CAccountFiltersSettingsFormView() {
  CAbstractSettingsFormView.call(this, Settings.ServerModuleName);
  this.bShown = false;
  this.foldersOptions = ko.observableArray([]);
  MailCache.editedFolderList.subscribe(function () {
    if (this.bShown) {
      this.populate();
    }
  }, this);
  this.loading = ko.observable(true);
  this.collection = ko.observableArray([]);
  this.fieldOptions = [{
    'text': TextUtils.i18n('MAILWEBCLIENT/LABEL_FROM'),
    'value': 0
  }, {
    'text': TextUtils.i18n('MAILWEBCLIENT/LABEL_TO'),
    'value': 1
  }, {
    'text': TextUtils.i18n('MAILWEBCLIENT/LABEL_SUBJECT'),
    'value': 2
  }];
  this.conditionOptions = [{
    'text': TextUtils.i18n('MAILWEBCLIENT/LABEL_CONTAINING'),
    'value': 0
  }, {
    'text': TextUtils.i18n('MAILWEBCLIENT/LABEL_EQUAL_TO'),
    'value': 1
  }, {
    'text': TextUtils.i18n('MAILWEBCLIENT/LABEL_NOT_CONTAINING'),
    'value': 2
  }];
  this.actionOptions = [{
    'text': TextUtils.i18n('MAILWEBCLIENT/LABEL_MOVE_FILTER_ACTION'),
    'value': 3
  }, {
    'text': TextUtils.i18n('MAILWEBCLIENT/LABEL_REDIRECT_FILTER_ACTION'),
    'value': 7
  }, {
    'text': TextUtils.i18n('MAILWEBCLIENT/LABEL_DELETE_FILTER_ACTION'),
    'value': 1
  }];
  this.phaseArray = [''];
  _.each(TextUtils.i18n('MAILWEBCLIENT/INFO_FILTER').split(/,{0,1}\s/), function (sItem) {
    var iIndex = this.phaseArray.length - 1;
    if (sItem.substr(0, 1) === '%' || this.phaseArray[iIndex].substr(-1, 1) === '%') {
      this.phaseArray.push(sItem);
    } else {
      this.phaseArray[iIndex] += ' ' + sItem;
    }
  }, this);
  this.firstState = null;
}
_.extendOwn(CAccountFiltersSettingsFormView.prototype, CAbstractSettingsFormView.prototype);
CAccountFiltersSettingsFormView.prototype.ViewTemplate = 'MailWebclient_Settings_AccountFiltersSettingsFormView';
CAccountFiltersSettingsFormView.prototype.onShow = function () {
  this.populate();
};
CAccountFiltersSettingsFormView.prototype.onHide = function () {
  this.bShown = false;
};
CAccountFiltersSettingsFormView.prototype.populate = function () {
  var oFolderList = MailCache.editedFolderList(),
    aOptionList = [];
  if (oFolderList.iAccountId === AccountList.editedId()) {
    aOptionList = oFolderList.getOptions(TextUtils.i18n('MAILWEBCLIENT/LABEL_FOLDER_NOT_SELECTED'), true, true, false, true);
    this.foldersOptions(aOptionList);
    this.populateFilters();
  } else {
    this.loading(true);
    this.collection([]);
  }
};
CAccountFiltersSettingsFormView.prototype.revert = function () {
  var account = AccountList.getEdited();
  if (account && account.filters() !== null) {
    this.collection(_toConsumableArray(account.filters().collection()));
  } else {
    this.collection([]);
  }
  this.updateSavedState();
};
CAccountFiltersSettingsFormView.prototype.commit = function () {
  _.each(this.collection(), function (oFilter) {
    oFilter.commit();
  });
};
CAccountFiltersSettingsFormView.prototype.getCurrentValues = function () {
  return _.map(this.collection(), function (oFilter) {
    return oFilter.toString();
  }, this);
};
CAccountFiltersSettingsFormView.prototype.getParametersForSave = function () {
  var aFilters = _.map(this.collection(), function (oItem) {
    return {
      'Enable': oItem.enable() ? '1' : '0',
      'Field': oItem.field(),
      'Filter': oItem.filter(),
      'Condition': oItem.condition(),
      'Action': oItem.action(),
      'FolderFullName': oItem.folder(),
      'Email': oItem.email()
    };
  });
  return {
    'AccountID': AccountList.editedId(),
    'Filters': aFilters
  };
};
CAccountFiltersSettingsFormView.prototype.save = function () {
  var bCantSave = _.some(this.collection(), function (oFilter) {
    return oFilter.filter() === '' || Types.pString(oFilter.action()) === '3' /* Move */ && oFilter.folder() === '';
  });
  if (bCantSave) {
    Screens.showError(TextUtils.i18n('MAILWEBCLIENT/ERROR_FILTER_FIELDS_EMPTY'));
  } else {
    this.isSaving(true);
    this.commit();
    this.updateSavedState();
    Ajax.send('UpdateFilters', this.getParametersForSave(), this.onAccountSieveFiltersUpdateResponse, this);
  }
};
CAccountFiltersSettingsFormView.prototype.populateFilters = function () {
  var oAccount = AccountList.getEdited();
  if (oAccount) {
    if (oAccount.filters() !== null) {
      this.loading(false);
      this.collection(_toConsumableArray(oAccount.filters().collection()));
      this.updateSavedState();
    } else {
      this.loading(true);
      this.collection([]);
      Ajax.send('GetFilters', {
        'AccountID': oAccount.id()
      }, this.onGetFiltersResponse, this);
    }
  }
};

/**
 * @param {Object} oFilterToDelete
 */
CAccountFiltersSettingsFormView.prototype.deleteFilter = function (oFilterToDelete) {
  this.collection.remove(oFilterToDelete);
};
CAccountFiltersSettingsFormView.prototype.addFilter = function () {
  var oSieveFilter = new CFilterModel(AccountList.editedId());
  this.collection.push(oSieveFilter);
};

/**
 * @param {string} sPart
 * @param {string} sPrefix
 * 
 * @return {string}
 */
CAccountFiltersSettingsFormView.prototype.displayFilterPart = function (sPart, sPrefix) {
  var sTemplate = '';
  if (sPart === '%FIELD%') {
    sTemplate = 'Field';
  } else if (sPart === '%CONDITION%') {
    sTemplate = 'Condition';
  } else if (sPart === '%STRING%') {
    sTemplate = 'String';
  } else if (sPart === '%ACTION%') {
    sTemplate = 'Action';
  } else if (sPart === '%FOLDER%') {
    sTemplate = 'Folder';
  } else if (sPart === '%EMAIL%') {
    sTemplate = 'Email';
  } else if (sPart.substr(0, 9) === '%DEPENDED') {
    sTemplate = 'DependedText';
  } else {
    sTemplate = 'Text';
  }
  return sPrefix + sTemplate;
};

/**
 * @param {string} sText
 */
CAccountFiltersSettingsFormView.prototype.getDependedText = function (sText) {
  sText = Types.pString(sText);
  if (sText) {
    sText = sText.replace(/%/g, '').split('=')[1] || '';
  }
  return sText;
};

/**
 * @param {string} sText
 * @param {Object} oParent
 */
CAccountFiltersSettingsFormView.prototype.getDependedField = function (sText, oParent) {
  sText = Types.pString(sText);
  if (sText) {
    sText = sText.replace(/[=](.*)/g, '').split('-')[1] || '';
    sText = sText.toLowerCase();
  }
  return oParent[sText] ? oParent[sText]() : false;
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CAccountFiltersSettingsFormView.prototype.onGetFiltersResponse = function (oResponse, oRequest) {
  var oParameters = oRequest.Parameters,
    iAccountId = Types.pInt(oParameters.AccountID),
    oAccount = AccountList.getAccount(iAccountId),
    oSieveFilters = new CFiltersModel();
  this.loading(false);
  if (oResponse && oResponse.Result && oAccount) {
    oSieveFilters.parse(iAccountId, oResponse.Result);
    oAccount.filters(oSieveFilters);
    if (iAccountId === AccountList.editedId()) {
      this.populateFilters();
    }
  } else {
    Screens.showError(TextUtils.i18n('COREWEBCLIENT/ERROR_UNKNOWN'));
  }
};

/**
 * @param {Object} response
 * @param {Object} request
 */
CAccountFiltersSettingsFormView.prototype.onAccountSieveFiltersUpdateResponse = function (response, request) {
  this.isSaving(false);
  var account = AccountList.getEdited();
  if (response && response.Result) {
    Screens.showReport(TextUtils.i18n('MAILWEBCLIENT/REPORT_FILTERS_UPDATE_SUCCESS'));
    if (account) {
      account.filters().collection(_toConsumableArray(this.collection()));
    }
  } else {
    Api.showErrorByCode(response, TextUtils.i18n('COREWEBCLIENT/ERROR_SAVING_SETTINGS_FAILED'));
  }
};
module.exports = new CAccountFiltersSettingsFormView();

/***/ }),

/***/ "wvqg":
/*!************************************************************************************!*\
  !*** ./modules/MailWebclient/js/views/settings/FetcherOutgoingSettingsFormView.js ***!
  \************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  $ = __webpack_require__(/*! jquery */ "M4cL"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  Api = __webpack_require__(/*! modules/CoreWebclient/js/Api.js */ "Z9uT"),
  ModulesManager = __webpack_require__(/*! modules/CoreWebclient/js/ModulesManager.js */ "5D2l"),
  Screens = __webpack_require__(/*! modules/CoreWebclient/js/Screens.js */ "D2Gh"),
  CoreAjax = __webpack_require__(/*! modules/CoreWebclient/js/Ajax.js */ "8QQh"),
  CAbstractSettingsFormView = ModulesManager.run('SettingsWebclient', 'getAbstractSettingsFormViewClass'),
  AccountList = __webpack_require__(/*! modules/MailWebclient/js/AccountList.js */ "Fj7m"),
  Settings = __webpack_require__(/*! modules/MailWebclient/js/Settings.js */ "Ua3z"),
  CServerPropertiesView = __webpack_require__(/*! modules/MailWebclient/js/views/CServerPropertiesView.js */ "cVoG");

/**
 * @constructor
 */
function CFetcherOutgoingSettingsFormView() {
  CAbstractSettingsFormView.call(this, Settings.ServerModuleName);
  this.fetcher = ko.observable(null);
  this.idFetcher = ko.observable(null);
  this.isEnabled = ko.observable(true);
  this.email = ko.observable('');
  this.userName = ko.observable('');
  this.isOutgoingEnabled = ko.observable(false);
  this.focusEmail = ko.observable(false);
  this.oOutgoing = new CServerPropertiesView(25, 465, 'fetcher_edit_outgoing', TextUtils.i18n('MAILWEBCLIENT/LABEL_SMTP_SERVER'));
  this.outgoingUseAuth = ko.observable(false);
  this.isAllEnabled = ko.computed(function () {
    return this.isEnabled() && this.isOutgoingEnabled();
  }, this);
  this.isAllEnabled.subscribe(function () {
    this.oOutgoing.isEnabled(this.isAllEnabled());
  }, this);
  this.oOutgoing.isEnabled(this.isAllEnabled());
  this.firstState = null;
}
_.extendOwn(CFetcherOutgoingSettingsFormView.prototype, CAbstractSettingsFormView.prototype);
CFetcherOutgoingSettingsFormView.prototype.ViewTemplate = 'MailWebclient_Settings_FetcherOutgoingSettingsFormView';

/**
 * @param {Object} oFetcher
 */
CFetcherOutgoingSettingsFormView.prototype.onShow = function (oFetcher) {
  this.fetcher(oFetcher && oFetcher.FETCHER ? oFetcher : null);
  this.populate();
};
CFetcherOutgoingSettingsFormView.prototype.getCurrentValues = function () {
  return [this.isOutgoingEnabled(), this.oOutgoing.server(), this.oOutgoing.port(), this.oOutgoing.ssl(), this.outgoingUseAuth(), this.userName(), this.email()];
};
CFetcherOutgoingSettingsFormView.prototype.getParametersForSave = function () {
  if (this.fetcher()) {
    return {
      'FetcherId': this.idFetcher(),
      'IsOutgoingEnabled': this.isOutgoingEnabled(),
      'Email': $.trim(this.email()),
      'Name': this.userName(),
      'OutgoingServer': this.oOutgoing.server(),
      'OutgoingPort': this.oOutgoing.getIntPort(),
      'OutgoingUseSsl': this.oOutgoing.ssl(),
      'OutgoingUseAuth': this.outgoingUseAuth()
    };
  }
  return {};
};
CFetcherOutgoingSettingsFormView.prototype.save = function () {
  if (this.isEnabled()) {
    if (this.isEmptyRequiredFields()) {
      Screens.showError(TextUtils.i18n('COREWEBCLIENT/ERROR_REQUIRED_FIELDS_EMPTY'));
    } else {
      this.isSaving(true);
      this.updateSavedState();
      CoreAjax.send(Settings.FetchersServerModuleName, 'UpdateFetcherSmtpSettings', this.getParametersForSave(), this.onResponse, this);
    }
  }
};

/**
 * @param {Object} oResponse
 * @param {Object} oRequest
 */
CFetcherOutgoingSettingsFormView.prototype.onResponse = function (oResponse, oRequest) {
  this.isSaving(false);
  if (!oResponse.Result) {
    Api.showErrorByCode(oResponse, TextUtils.i18n('COREWEBCLIENT/ERROR_UNKNOWN'));
  } else {
    AccountList.populateFetchers();
    Screens.showReport(TextUtils.i18n('MAILWEBCLIENT/REPORT_SUCCESSFULLY_SAVED'));
  }
};
CFetcherOutgoingSettingsFormView.prototype.populate = function () {
  var oFetcher = this.fetcher();
  if (oFetcher) {
    this.fetcher(oFetcher);
    this.idFetcher(oFetcher.id());
    this.isEnabled(oFetcher.isEnabled());
    this.email(oFetcher.email());
    this.userName(oFetcher.userName());
    this.isOutgoingEnabled(oFetcher.isOutgoingEnabled());
    this.oOutgoing.set(oFetcher.outgoingServer(), oFetcher.outgoingPort(), oFetcher.outgoingUseSsl());
    this.outgoingUseAuth(oFetcher.outgoingUseAuth());
    this.updateSavedState();
  }
};
CFetcherOutgoingSettingsFormView.prototype.isEmptyRequiredFields = function () {
  if (this.isOutgoingEnabled()) {
    if (this.outgoingUseAuth() && this.isOutgoingEnabled() && '' === this.oOutgoing.server()) {
      this.oOutgoing.server.focused(true);
      return true;
    }
    if (this.outgoingUseAuth() && '' === $.trim(this.email())) {
      this.focusEmail(true);
      return true;
    }
  }
  return false;
};
module.exports = new CFetcherOutgoingSettingsFormView();

/***/ })

}]);