diff --git a/dev/Admin.js b/dev/Admin.js
index b377e12d3..c93c2d143 100644
--- a/dev/Admin.js
+++ b/dev/Admin.js
@@ -2,5 +2,5 @@
(function (require) {
'use strict';
- require('./Boot.js')(require('./Apps/AdminApp.js'));
+ require('App:Boot')(require('App:Admin'));
}(require));
\ No newline at end of file
diff --git a/dev/Apps/AbstractApp.js b/dev/Apps/AbstractApp.js
index a7babf9bc..37b26e91e 100644
--- a/dev/Apps/AbstractApp.js
+++ b/dev/Apps/AbstractApp.js
@@ -9,7 +9,7 @@
_ = require('_'),
window = require('window'),
$html = require('$html'),
- $window = require('$window'),
+ $win = require('$win'),
$doc = require('$doc'),
Globals = require('Globals'),
@@ -17,9 +17,9 @@
LinkBuilder = require('LinkBuilder'),
Events = require('Events'),
- AppSettings = require('../Storages/AppSettings.js'),
+ Settings = require('Storage:Settings'),
- KnoinAbstractBoot = require('KnoinAbstractBoot')
+ KnoinAbstractBoot = require('Knoin:AbstractBoot')
;
/**
@@ -35,7 +35,7 @@
this.iframe = $('').appendTo('body');
- $window.on('error', function (oEvent) {
+ $win.on('error', function (oEvent) {
if (oEvent && oEvent.originalEvent && oEvent.originalEvent.message &&
-1 === Utils.inArray(oEvent.originalEvent.message, [
'Script error.', 'Uncaught Error: Error calling method on NPObject.'
@@ -129,7 +129,7 @@
AbstractApp.prototype.setTitle = function (sTitle)
{
sTitle = ((Utils.isNormal(sTitle) && 0 < sTitle.length) ? sTitle + ' - ' : '') +
- AppSettings.settingsGet('Title') || '';
+ Settings.settingsGet('Title') || '';
window.document.title = '_';
window.document.title = sTitle;
@@ -142,9 +142,9 @@
AbstractApp.prototype.loginAndLogoutReload = function (bLogout, bClose)
{
var
- kn = require('kn'),
- sCustomLogoutLink = Utils.pString(AppSettings.settingsGet('CustomLogoutLink')),
- bInIframe = !!AppSettings.settingsGet('InIframe')
+ kn = require('App:Knoin'),
+ sCustomLogoutLink = Utils.pString(Settings.settingsGet('CustomLogoutLink')),
+ bInIframe = !!Settings.settingsGet('InIframe')
;
bLogout = Utils.isUnd(bLogout) ? false : !!bLogout;
@@ -196,7 +196,7 @@
{
Events.pub('rl.bootstart');
- var ssm = require('../External/ssm.js');
+ var ssm = require('ssm');
Utils.initOnStartOrLangChange(function () {
Utils.initNotificationLanguage();
diff --git a/dev/Apps/AdminApp.js b/dev/Apps/AdminApp.js
index ba7712006..4a06eb81d 100644
--- a/dev/Apps/AdminApp.js
+++ b/dev/Apps/AdminApp.js
@@ -13,16 +13,16 @@
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- kn = require('kn'),
+ kn = require('App:Knoin'),
- AppSettings = require('../Storages/AppSettings.js'),
- Data = require('../Storages/AdminDataStorage.js'),
- Remote = require('../Storages/AdminAjaxRemoteStorage.js'),
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:Admin:Data'),
+ Remote = require('Storage:Admin:Remote'),
- AdminSettingsScreen = require('../Screens/AdminSettingsScreen.js'),
- AdminLoginScreen = require('../Screens/AdminLoginScreen.js'),
+ AdminSettingsScreen = require('Screen:Admin:Settings'),
+ AdminLoginScreen = require('Screen:Admin:Login'),
- AbstractApp = require('./AbstractApp.js')
+ AbstractApp = require('App:Abstract')
;
/**
@@ -48,40 +48,40 @@
AdminApp.prototype.setupSettings = function ()
{
- kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsGeneral.js'),
+ kn.addSettingsViewModel(require('Settings:Admin:General'),
'AdminSettingsGeneral', 'General', 'general', true);
- kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsLogin.js'),
+ kn.addSettingsViewModel(require('Settings:Admin:Login'),
'AdminSettingsLogin', 'Login', 'login');
- if (AppSettings.capa(Enums.Capa.Prem))
+ if (Settings.capa(Enums.Capa.Prem))
{
- kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsBranding.js'),
+ kn.addSettingsViewModel(require('Settings:Admin:Branding'),
'AdminSettingsBranding', 'Branding', 'branding');
}
- kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsContacts.js'),
+ kn.addSettingsViewModel(require('Settings:Admin:Contacts'),
'AdminSettingsContacts', 'Contacts', 'contacts');
- kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsDomains.js'),
+ kn.addSettingsViewModel(require('Settings:Admin:Domains'),
'AdminSettingsDomains', 'Domains', 'domains');
- kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsSecurity.js'),
+ kn.addSettingsViewModel(require('Settings:Admin:Security'),
'AdminSettingsSecurity', 'Security', 'security');
- kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsSocial.js'),
+ kn.addSettingsViewModel(require('Settings:Admin:Social'),
'AdminSettingsSocial', 'Social', 'social');
- kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsPlugins.js'),
+ kn.addSettingsViewModel(require('Settings:Admin:Plugins'),
'AdminSettingsPlugins', 'Plugins', 'plugins');
- kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsPackages.js'),
+ kn.addSettingsViewModel(require('Settings:Admin:Packages'),
'AdminSettingsPackages', 'Packages', 'packages');
- kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsLicensing.js'),
+ kn.addSettingsViewModel(require('Settings:Admin:Licensing'),
'AdminSettingsLicensing', 'Licensing', 'licensing');
- kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsAbout.js'),
+ kn.addSettingsViewModel(require('Settings:Admin:About'),
'AdminSettingsAbout', 'About', 'about');
return true;
@@ -283,7 +283,7 @@
kn.hideLoading();
- if (!AppSettings.settingsGet('AllowAdminPanel'))
+ if (!Settings.settingsGet('AllowAdminPanel'))
{
kn.routeOff();
kn.setHash(LinkBuilder.root(), true);
@@ -295,7 +295,7 @@
}
else
{
- if (!!AppSettings.settingsGet('Auth'))
+ if (!!Settings.settingsGet('Auth'))
{
kn.startScreens([AdminSettingsScreen]);
}
diff --git a/dev/Apps/RainLoopApp.js b/dev/Apps/RainLoopApp.js
index 4dc4de086..cfc05e3c2 100644
--- a/dev/Apps/RainLoopApp.js
+++ b/dev/Apps/RainLoopApp.js
@@ -18,30 +18,22 @@
LinkBuilder = require('LinkBuilder'),
Events = require('Events'),
- kn = require('kn'),
+ kn = require('App:Knoin'),
- LocalStorage = require('../Storages/LocalStorage.js'),
- AppSettings = require('../Storages/AppSettings.js'),
- Data = require('../Storages/WebMailDataStorage.js'),
- Cache = require('../Storages/WebMailCacheStorage.js'),
- Remote = require('../Storages/WebMailAjaxRemoteStorage.js'),
+ LocalStorage = require('Storage:LocalStorage'),
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:RainLoop:Data'),
+ Cache = require('Storage:RainLoop:Cache'),
+ Remote = require('Storage:RainLoop:Remote'),
- EmailModel = require('../Models/EmailModel.js'),
- FolderModel = require('../Models/FolderModel.js'),
- MessageModel = require('../Models/MessageModel.js'),
- AccountModel = require('../Models/AccountModel.js'),
- IdentityModel = require('../Models/IdentityModel.js'),
- OpenPgpKeyModel = require('../Models/OpenPgpKeyModel.js'),
+ EmailModel = require('Model:Email'),
+ FolderModel = require('Model:Folder'),
+ MessageModel = require('Model:Message'),
+ AccountModel = require('Model:Account'),
+ IdentityModel = require('Model:Identity'),
+ OpenPgpKeyModel = require('Model:OpenPgpKey'),
- PopupsFolderSystemViewModel = require('../ViewModels/Popups/PopupsAskViewModel.js'),
- PopupsAskViewModel = require('../ViewModels/Popups/PopupsAskViewModel.js'),
- PopupsComposeViewModel = require('../ViewModels/Popups/PopupsComposeViewModel.js'),
-
- MailBoxScreen = require('../Screens/MailBoxScreen.js'),
- SettingsScreen = require('../Screens/SettingsScreen.js'),
- LoginScreen = require('../Screens/LoginScreen.js'),
-
- AbstractApp = require('./AbstractApp.js')
+ AbstractApp = require('App:Abstract')
;
/**
@@ -94,7 +86,7 @@
Remote.jsVersion(function (sResult, oData) {
if (Enums.StorageResultType.Success === sResult && oData && !oData.Result)
{
- if (window.parent && !!AppSettings.settingsGet('InIframe'))
+ if (window.parent && !!Settings.settingsGet('InIframe'))
{
window.parent.location.reload();
}
@@ -103,7 +95,7 @@
window.location.reload();
}
}
- }, AppSettings.settingsGet('Version'));
+ }, Settings.settingsGet('Version'));
}, {}, 60 * 60 * 1000);
@@ -125,70 +117,70 @@
RainLoopApp.prototype.setupSettings = function ()
{
- kn.addSettingsViewModel(require('../Settings/App/SettingsGeneral.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:General'),
'SettingsGeneral', 'SETTINGS_LABELS/LABEL_GENERAL_NAME', 'general', true);
- if (AppSettings.settingsGet('ContactsIsAllowed'))
+ if (Settings.settingsGet('ContactsIsAllowed'))
{
- kn.addSettingsViewModel(require('../Settings/App/SettingsContacts.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:Contacts'),
'SettingsContacts', 'SETTINGS_LABELS/LABEL_CONTACTS_NAME', 'contacts');
}
- if (AppSettings.capa(Enums.Capa.AdditionalAccounts))
+ if (Settings.capa(Enums.Capa.AdditionalAccounts))
{
- kn.addSettingsViewModel(require('../Settings/App/SettingsAccounts.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:Accounts'),
'SettingsAccounts', 'SETTINGS_LABELS/LABEL_ACCOUNTS_NAME', 'accounts');
}
- if (AppSettings.capa(Enums.Capa.AdditionalIdentities))
+ if (Settings.capa(Enums.Capa.AdditionalIdentities))
{
- kn.addSettingsViewModel(require('../Settings/App/SettingsIdentities.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:Identities'),
'SettingsIdentities', 'SETTINGS_LABELS/LABEL_IDENTITIES_NAME', 'identities');
}
else
{
- kn.addSettingsViewModel(require('../Settings/App/SettingsIdentity.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:Identity'),
'SettingsIdentity', 'SETTINGS_LABELS/LABEL_IDENTITY_NAME', 'identity');
}
- if (AppSettings.capa(Enums.Capa.Filters))
+ if (Settings.capa(Enums.Capa.Filters))
{
- kn.addSettingsViewModel(require('../Settings/App/SettingsFilters.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:Filters'),
'SettingsFilters', 'SETTINGS_LABELS/LABEL_FILTERS_NAME', 'filters');
}
- if (AppSettings.capa(Enums.Capa.TwoFactor))
+ if (Settings.capa(Enums.Capa.TwoFactor))
{
- kn.addSettingsViewModel(require('../Settings/App/SettingsSecurity.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:Security'),
'SettingsSecurity', 'SETTINGS_LABELS/LABEL_SECURITY_NAME', 'security');
}
- if (AppSettings.settingsGet('AllowGoogleSocial') ||
- AppSettings.settingsGet('AllowFacebookSocial') ||
- AppSettings.settingsGet('AllowTwitterSocial'))
+ if (Settings.settingsGet('AllowGoogleSocial') ||
+ Settings.settingsGet('AllowFacebookSocial') ||
+ Settings.settingsGet('AllowTwitterSocial'))
{
- kn.addSettingsViewModel(require('../Settings/App/SettingsSocial.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:Social'),
'SettingsSocial', 'SETTINGS_LABELS/LABEL_SOCIAL_NAME', 'social');
}
- if (AppSettings.settingsGet('ChangePasswordIsAllowed'))
+ if (Settings.settingsGet('ChangePasswordIsAllowed'))
{
- kn.addSettingsViewModel(require('../Settings/App/SettingsChangePassword.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:ChangePassword'),
'SettingsChangePassword', 'SETTINGS_LABELS/LABEL_CHANGE_PASSWORD_NAME', 'change-password');
}
- kn.addSettingsViewModel(require('../Settings/App/SettingsFolders.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:Folders'),
'SettingsFolders', 'SETTINGS_LABELS/LABEL_FOLDERS_NAME', 'folders');
- if (AppSettings.capa(Enums.Capa.Themes))
+ if (Settings.capa(Enums.Capa.Themes))
{
- kn.addSettingsViewModel(require('../Settings/App/SettingsThemes.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:Themes'),
'SettingsThemes', 'SETTINGS_LABELS/LABEL_THEMES_NAME', 'themes');
}
- if (AppSettings.capa(Enums.Capa.OpenPGP))
+ if (Settings.capa(Enums.Capa.OpenPGP))
{
- kn.addSettingsViewModel(require('../Settings/App/SettingsOpenPGP.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:OpenPGP'),
'SettingsOpenPGP', 'SETTINGS_LABELS/LABEL_OPEN_PGP_NAME', 'openpgp');
}
@@ -425,12 +417,12 @@
if (!oMoveFolder && bUseFolder)
{
- kn.showScreenPopup(PopupsFolderSystemViewModel, [nSetSystemFoldersNotification]);
+ kn.showScreenPopup(require('View:Popup:FolderSystem'), [nSetSystemFoldersNotification]);
}
else if (!bUseFolder || (Enums.FolderType.Trash === iDeleteType &&
(sFromFolderFullNameRaw === Data.spamFolder() || sFromFolderFullNameRaw === Data.trashFolder())))
{
- kn.showScreenPopup(PopupsAskViewModel, [Utils.i18n('POPUPS_ASK/DESC_WANT_DELETE_MESSAGES'), function () {
+ kn.showScreenPopup(require('View:Popup:Ask'), [Utils.i18n('POPUPS_ASK/DESC_WANT_DELETE_MESSAGES'), function () {
self.messagesDeleteHelper(sFromFolderFullNameRaw, aUidForRemove);
Data.removeMessagesFromList(sFromFolderFullNameRaw, aUidForRemove);
@@ -561,7 +553,7 @@
if (Enums.StorageResultType.Success === sResult && oData.Result)
{
var
- sParentEmail = AppSettings.settingsGet('ParentEmail'),
+ sParentEmail = Settings.settingsGet('ParentEmail'),
sAccountEmail = Data.accountEmail()
;
@@ -1156,31 +1148,31 @@
Data.namespace = oData.Result.Namespace;
}
- Data.threading(!!AppSettings.settingsGet('UseImapThread') && oData.Result.IsThreadsSupported && true);
+ Data.threading(!!Settings.settingsGet('UseImapThread') && oData.Result.IsThreadsSupported && true);
aList = this.folderResponseParseRec(Data.namespace, oData.Result['@Collection']);
Data.folderList(aList);
if (oData.Result['SystemFolders'] &&
- '' === '' + AppSettings.settingsGet('SentFolder') + AppSettings.settingsGet('DraftFolder') +
- AppSettings.settingsGet('SpamFolder') + AppSettings.settingsGet('TrashFolder') + AppSettings.settingsGet('ArchiveFolder') +
- AppSettings.settingsGet('NullFolder'))
+ '' === '' + Settings.settingsGet('SentFolder') + Settings.settingsGet('DraftFolder') +
+ Settings.settingsGet('SpamFolder') + Settings.settingsGet('TrashFolder') + Settings.settingsGet('ArchiveFolder') +
+ Settings.settingsGet('NullFolder'))
{
// TODO Magic Numbers
- AppSettings.settingsSet('SentFolder', oData.Result['SystemFolders'][2] || null);
- AppSettings.settingsSet('DraftFolder', oData.Result['SystemFolders'][3] || null);
- AppSettings.settingsSet('SpamFolder', oData.Result['SystemFolders'][4] || null);
- AppSettings.settingsSet('TrashFolder', oData.Result['SystemFolders'][5] || null);
- AppSettings.settingsSet('ArchiveFolder', oData.Result['SystemFolders'][12] || null);
+ Settings.settingsSet('SentFolder', oData.Result['SystemFolders'][2] || null);
+ Settings.settingsSet('DraftFolder', oData.Result['SystemFolders'][3] || null);
+ Settings.settingsSet('SpamFolder', oData.Result['SystemFolders'][4] || null);
+ Settings.settingsSet('TrashFolder', oData.Result['SystemFolders'][5] || null);
+ Settings.settingsSet('ArchiveFolder', oData.Result['SystemFolders'][12] || null);
bUpdate = true;
}
- Data.sentFolder(fNormalizeFolder(AppSettings.settingsGet('SentFolder')));
- Data.draftFolder(fNormalizeFolder(AppSettings.settingsGet('DraftFolder')));
- Data.spamFolder(fNormalizeFolder(AppSettings.settingsGet('SpamFolder')));
- Data.trashFolder(fNormalizeFolder(AppSettings.settingsGet('TrashFolder')));
- Data.archiveFolder(fNormalizeFolder(AppSettings.settingsGet('ArchiveFolder')));
+ Data.sentFolder(fNormalizeFolder(Settings.settingsGet('SentFolder')));
+ Data.draftFolder(fNormalizeFolder(Settings.settingsGet('DraftFolder')));
+ Data.spamFolder(fNormalizeFolder(Settings.settingsGet('SpamFolder')));
+ Data.trashFolder(fNormalizeFolder(Settings.settingsGet('TrashFolder')));
+ Data.archiveFolder(fNormalizeFolder(Settings.settingsGet('ArchiveFolder')));
if (bUpdate)
{
@@ -1327,7 +1319,7 @@
if (oEmailModel && oEmailModel.email)
{
oParams = Utils.simpleQueryParser(sQueryString);
- kn.showScreenPopup(PopupsComposeViewModel, [Enums.ComposeType.Empty, null, [oEmailModel],
+ kn.showScreenPopup(require('View:Popup:Compose'), [Enums.ComposeType.Empty, null, [oEmailModel],
Utils.isUnd(oParams.subject) ? null : Utils.pString(oParams.subject),
Utils.isUnd(oParams.body) ? null : Utils.plainToHtml(Utils.pString(oParams.body))
]);
@@ -1339,6 +1331,32 @@
return false;
};
+ RainLoopApp.prototype.bootstartLoginScreen = function ()
+ {
+ var sCustomLoginLink = Utils.pString(Settings.settingsGet('CustomLoginLink'));
+ if (!sCustomLoginLink)
+ {
+ kn.hideLoading();
+
+ kn.startScreens([
+ require('Screen:RainLoop:Login')
+ ]);
+
+ Plugins.runHook('rl-start-login-screens');
+ Events.pub('rl.bootstart-login-screens');
+ }
+ else
+ {
+ kn.routeOff();
+ kn.setHash(LinkBuilder.root(), true);
+ kn.routeOff();
+
+ _.defer(function () {
+ window.location.href = sCustomLoginLink;
+ });
+ }
+ };
+
RainLoopApp.prototype.bootstart = function ()
{
AbstractApp.prototype.bootstart.call(this);
@@ -1347,12 +1365,11 @@
var
self = this,
- sCustomLoginLink = '',
- sJsHash = AppSettings.settingsGet('JsHash'),
- iContactsSyncInterval = Utils.pInt(AppSettings.settingsGet('ContactsSyncInterval')),
- bGoogle = AppSettings.settingsGet('AllowGoogleSocial'),
- bFacebook = AppSettings.settingsGet('AllowFacebookSocial'),
- bTwitter = AppSettings.settingsGet('AllowTwitterSocial')
+ sJsHash = Settings.settingsGet('JsHash'),
+ iContactsSyncInterval = Utils.pInt(Settings.settingsGet('ContactsSyncInterval')),
+ bGoogle = Settings.settingsGet('AllowGoogleSocial'),
+ bFacebook = Settings.settingsGet('AllowFacebookSocial'),
+ bTwitter = Settings.settingsGet('AllowTwitterSocial')
;
Utils.initOnStartOrLangChange(function () {
@@ -1385,7 +1402,7 @@
Events.pub('left-panel.' + (bValue ? 'off' : 'on'));
});
- if (!!AppSettings.settingsGet('Auth'))
+ if (!!Settings.settingsGet('Auth'))
{
this.setTitle(Utils.i18n('TITLES/LOADING'));
@@ -1395,7 +1412,7 @@
if (bValue)
{
- if (window.$LAB && window.crypto && window.crypto.getRandomValues && AppSettings.capa(Enums.Capa.OpenPGP))
+ if (window.$LAB && window.crypto && window.crypto.getRandomValues && Settings.capa(Enums.Capa.OpenPGP))
{
window.$LAB.script(window.openpgp ? '' : LinkBuilder.openPgpJs()).wait(function () {
if (window.openpgp)
@@ -1414,7 +1431,11 @@
Data.capaOpenPGP(false);
}
- kn.startScreens([MailBoxScreen, SettingsScreen]);
+ kn.startScreens([
+ require('Screen:RainLoop:MailBox'),
+ require('Screen:RainLoop:Settings'),
+ require('Screen:RainLoop:About')
+ ]);
if (bGoogle || bFacebook || bTwitter)
{
@@ -1463,28 +1484,32 @@
Plugins.runHook('rl-start-user-screens');
Events.pub('rl.bootstart-user-screens');
- if (!!AppSettings.settingsGet('AccountSignMe') && window.navigator.registerProtocolHandler)
+ if (!!Settings.settingsGet('AccountSignMe') && window.navigator.registerProtocolHandler)
{
_.delay(function () {
try {
window.navigator.registerProtocolHandler('mailto',
window.location.protocol + '//' + window.location.host + window.location.pathname + '?mailto&to=%s',
- '' + (AppSettings.settingsGet('Title') || 'RainLoop'));
+ '' + (Settings.settingsGet('Title') || 'RainLoop'));
} catch(e) {}
- if (AppSettings.settingsGet('MailToEmail'))
+ if (Settings.settingsGet('MailToEmail'))
{
- self.mailToHelper(AppSettings.settingsGet('MailToEmail'));
+ self.mailToHelper(Settings.settingsGet('MailToEmail'));
}
}, 500);
}
+
+ if (!Globals.bMobileDevice)
+ {
+ _.defer(function () {
+ self.initLayoutResizer('#rl-left', '#rl-right', Enums.ClientSideKeyName.FolderListSize);
+ });
+ }
}
else
{
- kn.startScreens([LoginScreen]);
-
- Plugins.runHook('rl-start-login-screens');
- Events.pub('rl.bootstart-login-screens');
+ self.bootstartLoginScreen();
}
if (window.SimplePace)
@@ -1492,40 +1517,15 @@
window.SimplePace.set(100);
}
- if (!Globals.bMobileDevice)
- {
- _.defer(function () {
- self.initLayoutResizer('#rl-left', '#rl-right', Enums.ClientSideKeyName.FolderListSize);
- });
- }
-
}, this));
}
else
{
- sCustomLoginLink = Utils.pString(AppSettings.settingsGet('CustomLoginLink'));
- if (!sCustomLoginLink)
+ this.bootstartLoginScreen();
+
+ if (window.SimplePace)
{
- kn.hideLoading();
- kn.startScreens([LoginScreen]);
-
- Plugins.runHook('rl-start-login-screens');
- Events.pub('rl.bootstart-login-screens');
-
- if (window.SimplePace)
- {
- window.SimplePace.set(100);
- }
- }
- else
- {
- kn.routeOff();
- kn.setHash(LinkBuilder.root(), true);
- kn.routeOff();
-
- _.defer(function () {
- window.location.href = sCustomLoginLink;
- });
+ window.SimplePace.set(100);
}
}
diff --git a/dev/Boot.js b/dev/Boot.js
index c63318315..d203501f4 100644
--- a/dev/Boot.js
+++ b/dev/Boot.js
@@ -10,7 +10,7 @@
window = require('window'),
_ = require('_'),
$ = require('$'),
- $window = require('$window'),
+ $win = require('$win'),
$html = require('$html'),
Globals = require('Globals'),
@@ -18,7 +18,7 @@
Utils = require('Utils'),
Enums = require('Enums'),
- EmailModel = require('./Models/EmailModel.js')
+ EmailModel = require('Model:Email')
;
Globals.__APP = App;
@@ -31,8 +31,9 @@
$html.addClass(Globals.bMobileDevice ? 'mobile' : 'no-mobile');
- $window.keydown(Utils.killCtrlAandS).keyup(Utils.killCtrlAandS);
- $window.unload(function () {
+ $win.keydown(Utils.killCtrlAandS).keyup(Utils.killCtrlAandS);
+
+ $win.unload(function () {
Globals.bUnload = true;
});
@@ -65,7 +66,7 @@
App.bootstart();
$html.removeClass('no-js rl-booted-trigger').addClass('rl-booted');
- }, 50);
+ }, 10);
}
else
{
diff --git a/dev/Common/NewHtmlEditorWrapper.js b/dev/Common/HtmlEditor.js
similarity index 79%
rename from dev/Common/NewHtmlEditorWrapper.js
rename to dev/Common/HtmlEditor.js
index 1e95cbd69..c49a0e72c 100644
--- a/dev/Common/NewHtmlEditorWrapper.js
+++ b/dev/Common/HtmlEditor.js
@@ -8,7 +8,7 @@
window = require('window'),
_ = require('_'),
Globals = require('Globals'),
- AppSettings = require('../Storages/AppSettings.js')
+ Settings = require('Storage:Settings')
;
/**
@@ -18,7 +18,7 @@
* @param {Function=} fOnReady
* @param {Function=} fOnModeChange
*/
- function NewHtmlEditorWrapper(oElement, fOnBlur, fOnReady, fOnModeChange)
+ function HtmlEditor(oElement, fOnBlur, fOnReady, fOnModeChange)
{
this.editor = null;
this.iBlurTimer = 0;
@@ -33,7 +33,7 @@
this.init();
}
- NewHtmlEditorWrapper.prototype.blurTrigger = function ()
+ HtmlEditor.prototype.blurTrigger = function ()
{
if (this.fOnBlur)
{
@@ -45,7 +45,7 @@
}
};
- NewHtmlEditorWrapper.prototype.focusTrigger = function ()
+ HtmlEditor.prototype.focusTrigger = function ()
{
if (this.fOnBlur)
{
@@ -56,7 +56,7 @@
/**
* @return {boolean}
*/
- NewHtmlEditorWrapper.prototype.isHtml = function ()
+ HtmlEditor.prototype.isHtml = function ()
{
return this.editor ? 'wysiwyg' === this.editor.mode : false;
};
@@ -64,12 +64,12 @@
/**
* @return {boolean}
*/
- NewHtmlEditorWrapper.prototype.checkDirty = function ()
+ HtmlEditor.prototype.checkDirty = function ()
{
return this.editor ? this.editor.checkDirty() : false;
};
- NewHtmlEditorWrapper.prototype.resetDirty = function ()
+ HtmlEditor.prototype.resetDirty = function ()
{
if (this.editor)
{
@@ -80,7 +80,7 @@
/**
* @return {string}
*/
- NewHtmlEditorWrapper.prototype.getData = function (bWrapIsHtml)
+ HtmlEditor.prototype.getData = function (bWrapIsHtml)
{
if (this.editor)
{
@@ -97,7 +97,7 @@
return '';
};
- NewHtmlEditorWrapper.prototype.modeToggle = function (bPlain)
+ HtmlEditor.prototype.modeToggle = function (bPlain)
{
if (this.editor)
{
@@ -120,7 +120,7 @@
}
};
- NewHtmlEditorWrapper.prototype.setHtml = function (sHtml, bFocus)
+ HtmlEditor.prototype.setHtml = function (sHtml, bFocus)
{
if (this.editor)
{
@@ -134,7 +134,7 @@
}
};
- NewHtmlEditorWrapper.prototype.setPlain = function (sPlain, bFocus)
+ HtmlEditor.prototype.setPlain = function (sPlain, bFocus)
{
if (this.editor)
{
@@ -155,7 +155,7 @@
}
};
- NewHtmlEditorWrapper.prototype.init = function ()
+ HtmlEditor.prototype.init = function ()
{
if (this.$element && this.$element[0])
{
@@ -165,8 +165,8 @@
var
oConfig = Globals.oHtmlEditorDefaultConfig,
- sLanguage = AppSettings.settingsGet('Language'),
- bSource = !!AppSettings.settingsGet('AllowHtmlEditorSourceButton')
+ sLanguage = Settings.settingsGet('Language'),
+ bSource = !!Settings.settingsGet('AllowHtmlEditorSourceButton')
;
if (bSource && oConfig.toolbarGroups && !oConfig.toolbarGroups.__SourceInited)
@@ -236,7 +236,7 @@
}
};
- NewHtmlEditorWrapper.prototype.focus = function ()
+ HtmlEditor.prototype.focus = function ()
{
if (this.editor)
{
@@ -244,7 +244,7 @@
}
};
- NewHtmlEditorWrapper.prototype.blur = function ()
+ HtmlEditor.prototype.blur = function ()
{
if (this.editor)
{
@@ -252,7 +252,7 @@
}
};
- NewHtmlEditorWrapper.prototype.resize = function ()
+ HtmlEditor.prototype.resize = function ()
{
if (this.editor && this.__resizable)
{
@@ -264,12 +264,12 @@
}
};
- NewHtmlEditorWrapper.prototype.clear = function (bFocus)
+ HtmlEditor.prototype.clear = function (bFocus)
{
this.setHtml('', bFocus);
};
- module.exports = NewHtmlEditorWrapper;
+ module.exports = HtmlEditor;
}(module, require));
\ No newline at end of file
diff --git a/dev/Common/LinkBuilder.js b/dev/Common/LinkBuilder.js
index 3ad50a695..1b65def78 100644
--- a/dev/Common/LinkBuilder.js
+++ b/dev/Common/LinkBuilder.js
@@ -14,13 +14,13 @@
*/
function LinkBuilder()
{
- var AppSettings = require('../Storages/AppSettings.js');
+ var Settings = require('Storage:Settings');
this.sBase = '#/';
this.sServer = './?';
- this.sVersion = AppSettings.settingsGet('Version');
- this.sSpecSuffix = AppSettings.settingsGet('AuthAccountHash') || '0';
- this.sStaticPrefix = AppSettings.settingsGet('StaticPrefix') || 'rainloop/v/' + this.sVersion + '/static/';
+ this.sVersion = Settings.settingsGet('Version');
+ this.sSpecSuffix = Settings.settingsGet('AuthAccountHash') || '0';
+ this.sStaticPrefix = Settings.settingsGet('StaticPrefix') || 'rainloop/v/' + this.sVersion + '/static/';
}
/**
@@ -167,6 +167,14 @@
return sResult;
};
+ /**
+ * @return {string}
+ */
+ LinkBuilder.prototype.about = function ()
+ {
+ return this.sBase + 'about';
+ };
+
/**
* @param {string} sScreenName
* @return {string}
diff --git a/dev/Common/Plugins.js b/dev/Common/Plugins.js
index 85a4f651d..74aebdcf4 100644
--- a/dev/Common/Plugins.js
+++ b/dev/Common/Plugins.js
@@ -12,7 +12,7 @@
},
_ = require('_'),
Utils = require('Utils'),
- AppSettings = require('../Storages/AppSettings.js')
+ Settings = require('Storage:Settings')
;
/**
@@ -76,7 +76,7 @@
*/
Plugins.mainSettingsGet = function (sName)
{
- return AppSettings.settingsGet(sName);
+ return Settings.settingsGet(sName);
};
/**
@@ -102,7 +102,7 @@
*/
Plugins.settingsGet = function (sPluginSection, sName)
{
- var oPlugin = AppSettings.settingsGet('Plugins');
+ var oPlugin = Settings.settingsGet('Plugins');
oPlugin = oPlugin && !Utils.isUnd(oPlugin[sPluginSection]) ? oPlugin[sPluginSection] : null;
return oPlugin ? (Utils.isUnd(oPlugin[sName]) ? null : oPlugin[sName]) : null;
};
diff --git a/dev/Common/Utils.js b/dev/Common/Utils.js
index fd950667d..f6a27057c 100644
--- a/dev/Common/Utils.js
+++ b/dev/Common/Utils.js
@@ -11,7 +11,7 @@
_ = require('_'),
ko = require('ko'),
window = require('window'),
- $window = require('$window'),
+ $win = require('$win'),
$html = require('$html'),
$div = require('$div'),
$doc = require('$doc'),
@@ -42,12 +42,12 @@
Utils.windowResize = _.debounce(function (iTimeout) {
if (Utils.isUnd(iTimeout))
{
- $window.resize();
+ $win.resize();
}
else
{
window.setTimeout(function () {
- $window.resize();
+ $win.resize();
}, iTimeout);
}
}, 50);
diff --git a/dev/External/$window.js b/dev/External/$win.js
similarity index 100%
rename from dev/External/$window.js
rename to dev/External/$win.js
diff --git a/dev/External/ko.js b/dev/External/ko.js
index 3205b2e12..926a88635 100644
--- a/dev/External/ko.js
+++ b/dev/External/ko.js
@@ -8,7 +8,7 @@
window = require('window'),
_ = require('_'),
$ = require('$'),
- $window = require('$window'),
+ $win = require('$win'),
$doc = require('$doc')
;
@@ -323,7 +323,7 @@
if (0 < iOffset)
{
iOffset += Utils.pInt(aValues[2]);
- iSize = $window.height() - iOffset;
+ iSize = $win.height() - iOffset;
if (iValue < iSize)
{
@@ -570,7 +570,7 @@
var
Utils = require('Utils'),
- EmailModel = require('../Models/EmailModel.js'),
+ EmailModel = require('Model:Email'),
$oEl = $(oElement),
fValue = fValueAccessor(),
@@ -644,7 +644,7 @@
var
Utils = require('Utils'),
- ContactTagModel = require('../Models/ContactTagModel.js'),
+ ContactTagModel = require('Model:ContactTag'),
$oEl = $(oElement),
fValue = fValueAccessor(),
diff --git a/dev/Knoin/Knoin.js b/dev/Knoin/Knoin.js
index 17de22fc3..049be4c5a 100644
--- a/dev/Knoin/Knoin.js
+++ b/dev/Knoin/Knoin.js
@@ -16,7 +16,7 @@
Plugins = require('Plugins'),
Utils = require('Utils'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -24,13 +24,13 @@
*/
function Knoin()
{
- this.sDefaultScreenName = '';
this.oScreens = {};
+ this.sDefaultScreenName = '';
this.oCurrentScreen = null;
}
- Knoin.prototype.sDefaultScreenName = '';
Knoin.prototype.oScreens = {};
+ Knoin.prototype.sDefaultScreenName = '';
Knoin.prototype.oCurrentScreen = null;
Knoin.prototype.hideLoading = function ()
@@ -209,7 +209,7 @@
Utils.log('Cannot find view model position: ' + sPosition);
}
}
-
+
return ViewModelClass ? ViewModelClass.__vm : null;
};
@@ -352,7 +352,7 @@
}
// --
- oCross = oScreen.__cross();
+ oCross = oScreen.__cross ? oScreen.__cross() : null;
if (oCross)
{
oCross.parse(sSubPart);
diff --git a/dev/Knoin/KnoinAbstractViewModel.js b/dev/Knoin/KnoinAbstractViewModel.js
index bbef4b384..8391158c0 100644
--- a/dev/Knoin/KnoinAbstractViewModel.js
+++ b/dev/Knoin/KnoinAbstractViewModel.js
@@ -6,7 +6,7 @@
var
ko = require('ko'),
- $window = require('$window'),
+ $win = require('$win'),
Enums = require('Enums'),
Globals = require('Globals'),
@@ -88,7 +88,7 @@
{
var self = this;
- $window.on('keydown', function (oEvent) {
+ $win.on('keydown', function (oEvent) {
if (oEvent && self.modalVisibility && self.modalVisibility())
{
if (!this.bDisabeCloseOnEsc && Enums.EventKeyCode.Esc === oEvent.keyCode)
diff --git a/dev/Models/FilterModel.js b/dev/Models/FilterModel.js
index 5348a5806..c0b263275 100644
--- a/dev/Models/FilterModel.js
+++ b/dev/Models/FilterModel.js
@@ -8,7 +8,7 @@
ko = require('ko'),
Enums = require('Enums'),
Utils = require('Utils'),
- FilterConditionModel = require('./FilterConditionModel.js')
+ FilterConditionModel = require('Model:FilterCondition')
;
/**
diff --git a/dev/Models/FolderModel.js b/dev/Models/FolderModel.js
index 32110a6a8..43d7fc3aa 100644
--- a/dev/Models/FolderModel.js
+++ b/dev/Models/FolderModel.js
@@ -7,7 +7,6 @@
var
_ = require('_'),
ko = require('ko'),
- $window = require('$window'),
Enums = require('Enums'),
Globals = require('Globals'),
@@ -168,11 +167,11 @@
return !this.isSystemFolder() && this.selectable && 'INBOX' !== this.fullNameRaw;
}, this);
- this.visible.subscribe(function () {
- Utils.timeOutAction('folder-list-folder-visibility-change', function () {
- $window.trigger('folder-list-folder-visibility-change');
- }, 100);
- });
+// this.visible.subscribe(function () {
+// Utils.timeOutAction('folder-list-folder-visibility-change', function () {
+// require('$win').trigger('folder-list-folder-visibility-change');
+// }, 100);
+// });
this.localName = ko.computed(function () {
diff --git a/dev/Models/MessageModel.js b/dev/Models/MessageModel.js
index 2e2926bf6..2dc16fcd1 100644
--- a/dev/Models/MessageModel.js
+++ b/dev/Models/MessageModel.js
@@ -10,15 +10,15 @@
_ = require('_'),
ko = require('ko'),
moment = require('moment'),
- $window = require('$window'),
+ $win = require('$win'),
$div = require('$div'),
Enums = require('Enums'),
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- EmailModel = require('./EmailModel.js'),
- AttachmentModel = require('./AttachmentModel.js')
+ EmailModel = require('Model:Email'),
+ AttachmentModel = require('Model:Attachment')
;
/**
@@ -347,7 +347,7 @@
MessageModel.prototype.computeSenderEmail = function ()
{
var
- Data = require('../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
sSent = Data.sentFolder(),
sDraft = Data.draftFolder()
;
@@ -425,7 +425,7 @@
MessageModel.prototype.initUpdateByMessageJson = function (oJsonMessage)
{
var
- Data = require('../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
bResult = false,
iPriority = Enums.MessagePriority.Normal
;
@@ -976,7 +976,7 @@
'container': $('.RL-MailMessageView .messageView .messageItem .content')[0]
});
- $window.resize();
+ $win.resize();
}
Utils.windowResize(500);
@@ -1081,7 +1081,7 @@
this.body.data('rl-plain-raw', this.plainRaw);
- var Data = require('../Storages/WebMailDataStorage.js');
+ var Data = require('Storage:RainLoop:Data');
if (Data.capaOpenPGP())
{
this.body.data('rl-plain-pgp-signed', !!this.isPgpSigned());
@@ -1094,7 +1094,7 @@
MessageModel.prototype.storePgpVerifyDataToDom = function ()
{
- var Data = require('../Storages/WebMailDataStorage.js');
+ var Data = require('Storage:RainLoop:Data');
if (this.body && Data.capaOpenPGP())
{
this.body.data('rl-pgp-verify-status', this.pgpSignedVerifyStatus());
@@ -1111,7 +1111,7 @@
this.plainRaw = Utils.pString(this.body.data('rl-plain-raw'));
- var Data = require('../Storages/WebMailDataStorage.js');
+ var Data = require('Storage:RainLoop:Data');
if (Data.capaOpenPGP())
{
this.isPgpSigned(!!this.body.data('rl-plain-pgp-signed'));
@@ -1136,7 +1136,7 @@
var
aRes = [],
mPgpMessage = null,
- Data = require('../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
sFrom = this.from && this.from[0] && this.from[0].email ? this.from[0].email : '',
aPublicKeys = Data.findPublicKeysByEmail(sFrom),
oValidKey = null,
@@ -1200,7 +1200,7 @@
aRes = [],
mPgpMessage = null,
mPgpMessageDecrypted = null,
- Data = require('../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
sFrom = this.from && this.from[0] && this.from[0].email ? this.from[0].email : '',
aPublicKey = Data.findPublicKeysByEmail(sFrom),
oPrivateKey = Data.findSelfPrivateKey(sPassword),
diff --git a/dev/RainLoop.js b/dev/RainLoop.js
index 190c724ee..a093665ee 100644
--- a/dev/RainLoop.js
+++ b/dev/RainLoop.js
@@ -2,5 +2,5 @@
(function (require) {
'use strict';
- require('./Boot.js')(require('./Apps/RainLoopApp.js'));
+ require('App:Boot')(require('App:RainLoop'));
}(require));
\ No newline at end of file
diff --git a/dev/Screens/AboutScreen.js b/dev/Screens/AboutScreen.js
new file mode 100644
index 000000000..74708a8b3
--- /dev/null
+++ b/dev/Screens/AboutScreen.js
@@ -0,0 +1,32 @@
+/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
+
+(function (module, require) {
+
+ 'use strict';
+
+ var
+ _ = require('_'),
+ KnoinAbstractScreen = require('Knoin:AbstractScreen')
+ ;
+
+ /**
+ * @constructor
+ * @extends KnoinAbstractScreen
+ */
+ function AboutScreen()
+ {
+ KnoinAbstractScreen.call(this, 'about', [
+ require('View:RainLoop:About')
+ ]);
+ }
+
+ _.extend(AboutScreen.prototype, KnoinAbstractScreen.prototype);
+
+ AboutScreen.prototype.onShow = function ()
+ {
+ require('App:RainLoop').setTitle('RainLoop');
+ };
+
+ module.exports = AboutScreen;
+
+}(module, require));
\ No newline at end of file
diff --git a/dev/Screens/AbstractSettings.js b/dev/Screens/AbstractSettings.js
index 632b26380..358858587 100644
--- a/dev/Screens/AbstractSettings.js
+++ b/dev/Screens/AbstractSettings.js
@@ -13,8 +13,8 @@
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- kn = require('kn'),
- KnoinAbstractScreen = require('KnoinAbstractScreen')
+ kn = require('App:Knoin'),
+ KnoinAbstractScreen = require('Knoin:AbstractScreen')
;
/**
diff --git a/dev/Screens/AdminLoginScreen.js b/dev/Screens/AdminLoginScreen.js
index c2fff0517..cf4352c51 100644
--- a/dev/Screens/AdminLoginScreen.js
+++ b/dev/Screens/AdminLoginScreen.js
@@ -6,7 +6,7 @@
var
_ = require('_'),
- KnoinAbstractScreen = require('KnoinAbstractScreen')
+ KnoinAbstractScreen = require('Knoin:AbstractScreen')
;
/**
@@ -15,16 +15,16 @@
*/
function AdminLoginScreen()
{
- var AdminLoginViewModel = require('../ViewModels/AdminLoginViewModel.js');
- KnoinAbstractScreen.call(this, 'login', [AdminLoginViewModel]);
+ KnoinAbstractScreen.call(this, 'login', [
+ require('View:Admin:Login')
+ ]);
}
_.extend(AdminLoginScreen.prototype, KnoinAbstractScreen.prototype);
AdminLoginScreen.prototype.onShow = function ()
{
- var App = require('../Apps/AdminApp.js');
- App.setTitle('');
+ require('App:Admin').setTitle('');
};
module.exports = AdminLoginScreen;
diff --git a/dev/Screens/AdminSettingsScreen.js b/dev/Screens/AdminSettingsScreen.js
index 1c9ea9ad3..be39fc377 100644
--- a/dev/Screens/AdminSettingsScreen.js
+++ b/dev/Screens/AdminSettingsScreen.js
@@ -6,7 +6,7 @@
var
_ = require('_'),
- AbstractSettings = require('./AbstractSettings.js')
+ AbstractSettings = require('Screen:AbstractSettings')
;
/**
@@ -15,14 +15,9 @@
*/
function AdminSettingsScreen()
{
- var
- AdminMenuViewModel = require('../ViewModels/AdminMenuViewModel.js'),
- AdminPaneViewModel = require('../ViewModels/AdminPaneViewModel.js')
- ;
-
AbstractSettings.call(this, [
- AdminMenuViewModel,
- AdminPaneViewModel
+ require('View:Admin:SettingsMenu'),
+ require('View:Admin:SettingsPane')
]);
}
@@ -30,8 +25,7 @@
AdminSettingsScreen.prototype.onShow = function ()
{
- var App = require('../Apps/AdminApp.js');
- App.setTitle('');
+ require('App:Admin').setTitle('');
};
module.exports = AdminSettingsScreen;
diff --git a/dev/Screens/LoginScreen.js b/dev/Screens/LoginScreen.js
index 64eeec8ad..86cce3362 100644
--- a/dev/Screens/LoginScreen.js
+++ b/dev/Screens/LoginScreen.js
@@ -6,7 +6,7 @@
var
_ = require('_'),
- KnoinAbstractScreen = require('KnoinAbstractScreen')
+ KnoinAbstractScreen = require('Knoin:AbstractScreen')
;
/**
@@ -15,16 +15,16 @@
*/
function LoginScreen()
{
- var LoginViewModel = require('../ViewModels/LoginViewModel.js');
- KnoinAbstractScreen.call(this, 'login', [LoginViewModel]);
+ KnoinAbstractScreen.call(this, 'login', [
+ require('View:RainLoop:Login')
+ ]);
}
_.extend(LoginScreen.prototype, KnoinAbstractScreen.prototype);
LoginScreen.prototype.onShow = function ()
{
- var App = require('../Apps/RainLoopApp.js');
- App.setTitle('');
+ require('App:RainLoop').setTitle('');
};
module.exports = LoginScreen;
diff --git a/dev/Screens/MailBoxScreen.js b/dev/Screens/MailBoxScreen.js
index 132cb0555..32548b2cc 100644
--- a/dev/Screens/MailBoxScreen.js
+++ b/dev/Screens/MailBoxScreen.js
@@ -13,12 +13,12 @@
Utils = require('Utils'),
Events = require('Events'),
- KnoinAbstractScreen = require('KnoinAbstractScreen'),
+ KnoinAbstractScreen = require('Knoin:AbstractScreen'),
- AppSettings = require('../Storages/AppSettings.js'),
- Data = require('../Storages/WebMailDataStorage.js'),
- Cache = require('../Storages/WebMailCacheStorage.js'),
- Remote = require('../Storages/WebMailAjaxRemoteStorage.js')
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:RainLoop:Data'),
+ Cache = require('Storage:RainLoop:Cache'),
+ Remote = require('Storage:RainLoop:Remote')
;
/**
@@ -27,18 +27,11 @@
*/
function MailBoxScreen()
{
- var
- MailBoxSystemDropDownViewModel = require('../ViewModels/MailBoxSystemDropDownViewModel.js'),
- MailBoxFolderListViewModel = require('../ViewModels/MailBoxFolderListViewModel.js'),
- MailBoxMessageListViewModel = require('../ViewModels/MailBoxMessageListViewModel.js'),
- MailBoxMessageViewViewModel = require('../ViewModels/MailBoxMessageViewViewModel.js')
- ;
-
KnoinAbstractScreen.call(this, 'mailbox', [
- MailBoxSystemDropDownViewModel,
- MailBoxFolderListViewModel,
- MailBoxMessageListViewModel,
- MailBoxMessageViewViewModel
+ require('View:RainLoop:MailBoxSystemDropDown'),
+ require('View:RainLoop:MailBoxFolderList'),
+ require('View:RainLoop:MailBoxMessageList'),
+ require('View:RainLoop:MailBoxMessageView')
]);
this.oLastRoute = {};
@@ -54,12 +47,11 @@
MailBoxScreen.prototype.setNewTitle = function ()
{
var
- App = require('../Apps/RainLoopApp.js'),
sEmail = Data.accountEmail(),
nFoldersInboxUnreadCount = Data.foldersInboxUnreadCount()
;
- App.setTitle(('' === sEmail ? '' :
+ require('App:RainLoop').setTitle(('' === sEmail ? '' :
(0 < nFoldersInboxUnreadCount ? '(' + nFoldersInboxUnreadCount + ') ' : ' ') + sEmail + ' - ') + Utils.i18n('TITLES/MAILBOX'));
};
@@ -77,12 +69,11 @@
*/
MailBoxScreen.prototype.onRoute = function (sFolderHash, iPage, sSearch, bPreview)
{
- var App = require('../Apps/RainLoopApp.js');
if (Utils.isUnd(bPreview) ? false : !!bPreview)
{
if (Enums.Layout.NoPreview === Data.layout() && !Data.message())
{
- App.historyBack();
+ require('App:RainLoop').historyBack();
}
}
else
@@ -105,7 +96,7 @@
Data.message(null);
}
- App.reloadMessageList();
+ require('App:RainLoop').reloadMessageList();
}
}
};
@@ -113,26 +104,25 @@
MailBoxScreen.prototype.onStart = function ()
{
var
- App = require('../Apps/RainLoopApp.js'),
fResizeFunction = function () {
Utils.windowResize();
}
;
- if (AppSettings.capa(Enums.Capa.AdditionalAccounts) || AppSettings.capa(Enums.Capa.AdditionalIdentities))
+ if (Settings.capa(Enums.Capa.AdditionalAccounts) || Settings.capa(Enums.Capa.AdditionalIdentities))
{
- App.accountsAndIdentities();
+ require('App:RainLoop').accountsAndIdentities();
}
_.delay(function () {
if ('INBOX' !== Data.currentFolderFullNameRaw())
{
- App.folderInformation('INBOX');
+ require('App:RainLoop').folderInformation('INBOX');
}
}, 1000);
_.delay(function () {
- App.quota();
+ require('App:RainLoop').quota();
}, 5000);
_.delay(function () {
diff --git a/dev/Screens/SettingsScreen.js b/dev/Screens/SettingsScreen.js
index 11a3052c7..47d1e37d3 100644
--- a/dev/Screens/SettingsScreen.js
+++ b/dev/Screens/SettingsScreen.js
@@ -11,7 +11,7 @@
Utils = require('Utils'),
Globals = require('Globals'),
- AbstractSettings = require('./AbstractSettings.js')
+ AbstractSettings = require('Screen:AbstractSettings')
;
/**
@@ -20,24 +20,16 @@
*/
function SettingsScreen()
{
- var
- App = require('../Apps/RainLoopApp.js'),
-
- SettingsSystemDropDownViewModel = require('../ViewModels/SettingsSystemDropDownViewModel.js'),
- SettingsMenuViewModel = require('../ViewModels/SettingsMenuViewModel.js'),
- SettingsPaneViewModel = require('../ViewModels/SettingsPaneViewModel.js')
- ;
-
AbstractSettings.call(this, [
- SettingsSystemDropDownViewModel,
- SettingsMenuViewModel,
- SettingsPaneViewModel
+ require('View:RainLoop:SettingsSystemDropDown'),
+ require('View:RainLoop:SettingsMenu'),
+ require('View:RainLoop:SettingsPane')
]);
Utils.initOnStartOrLangChange(function () {
this.sSettingsTitle = Utils.i18n('TITLES/SETTINGS');
}, this, function () {
- App.setTitle(this.sSettingsTitle);
+ this.setSettingsTitle();
});
}
@@ -45,11 +37,14 @@
SettingsScreen.prototype.onShow = function ()
{
- var App = require('../Apps/RainLoopApp.js');
-
- App.setTitle(this.sSettingsTitle);
+ this.setSettingsTitle();
Globals.keyScope(Enums.KeyState.Settings);
};
+
+ SettingsScreen.prototype.setSettingsTitle = function ()
+ {
+ require('App:RainLoop').setTitle(this.sSettingsTitle);
+ };
module.exports = SettingsScreen;
diff --git a/dev/Settings/Admin/AdminSettingsAbout.js b/dev/Settings/Admin/AdminSettingsAbout.js
index 6c70ab9fd..f52161a27 100644
--- a/dev/Settings/Admin/AdminSettingsAbout.js
+++ b/dev/Settings/Admin/AdminSettingsAbout.js
@@ -14,12 +14,12 @@
function AdminSettingsAbout()
{
var
- AppSettings = require('../../Storages/AppSettings.js'),
- Data = require('../../Storages/AdminDataStorage.js')
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:Admin:Data')
;
- this.version = ko.observable(AppSettings.settingsGet('Version'));
- this.access = ko.observable(!!AppSettings.settingsGet('CoreAccess'));
+ this.version = ko.observable(Settings.settingsGet('Version'));
+ this.access = ko.observable(!!Settings.settingsGet('CoreAccess'));
this.errorDesc = ko.observable('');
this.coreReal = Data.coreReal;
@@ -72,7 +72,7 @@
{
if (this.access())
{
- require('../../Apps/AdminApp.js').reloadCoreData();
+ require('App:Admin').reloadCoreData();
}
};
@@ -80,7 +80,7 @@
{
if (!this.coreUpdating())
{
- require('../../Apps/AdminApp.js').updateCoreData();
+ require('App:Admin').updateCoreData();
}
};
diff --git a/dev/Settings/Admin/AdminSettingsBranding.js b/dev/Settings/Admin/AdminSettingsBranding.js
index 2d5c712d8..7ed73184d 100644
--- a/dev/Settings/Admin/AdminSettingsBranding.js
+++ b/dev/Settings/Admin/AdminSettingsBranding.js
@@ -18,22 +18,22 @@
{
var
Enums = require('Enums'),
- AppSettings = require('../../Storages/AppSettings.js')
+ Settings = require('Storage:Settings')
;
- this.title = ko.observable(AppSettings.settingsGet('Title'));
+ this.title = ko.observable(Settings.settingsGet('Title'));
this.title.trigger = ko.observable(Enums.SaveSettingsStep.Idle);
- this.loadingDesc = ko.observable(AppSettings.settingsGet('LoadingDescription'));
+ this.loadingDesc = ko.observable(Settings.settingsGet('LoadingDescription'));
this.loadingDesc.trigger = ko.observable(Enums.SaveSettingsStep.Idle);
- this.loginLogo = ko.observable(AppSettings.settingsGet('LoginLogo'));
+ this.loginLogo = ko.observable(Settings.settingsGet('LoginLogo'));
this.loginLogo.trigger = ko.observable(Enums.SaveSettingsStep.Idle);
- this.loginDescription = ko.observable(AppSettings.settingsGet('LoginDescription'));
+ this.loginDescription = ko.observable(Settings.settingsGet('LoginDescription'));
this.loginDescription.trigger = ko.observable(Enums.SaveSettingsStep.Idle);
- this.loginCss = ko.observable(AppSettings.settingsGet('LoginCss'));
+ this.loginCss = ko.observable(Settings.settingsGet('LoginCss'));
this.loginCss.trigger = ko.observable(Enums.SaveSettingsStep.Idle);
}
@@ -41,7 +41,7 @@
{
var
self = this,
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
+ Remote = require('Storage:Admin:Remote')
;
_.delay(function () {
diff --git a/dev/Settings/Admin/AdminSettingsContacts.js b/dev/Settings/Admin/AdminSettingsContacts.js
index d0dc7ccdd..90abdbad4 100644
--- a/dev/Settings/Admin/AdminSettingsContacts.js
+++ b/dev/Settings/Admin/AdminSettingsContacts.js
@@ -11,7 +11,7 @@
Enums = require('Enums'),
Utils = require('Utils'),
- AppSettings = require('../../Storages/AppSettings.js')
+ Settings = require('Storage:Settings')
;
/**
@@ -20,13 +20,13 @@
function AdminSettingsContacts()
{
var
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
+ Remote = require('Storage:Admin:Remote')
;
this.defautOptionsAfterRender = Utils.defautOptionsAfterRender;
- this.enableContacts = ko.observable(!!AppSettings.settingsGet('ContactsEnable'));
- this.contactsSharing = ko.observable(!!AppSettings.settingsGet('ContactsSharing'));
- this.contactsSync = ko.observable(!!AppSettings.settingsGet('ContactsSync'));
+ this.enableContacts = ko.observable(!!Settings.settingsGet('ContactsEnable'));
+ this.contactsSharing = ko.observable(!!Settings.settingsGet('ContactsSharing'));
+ this.contactsSync = ko.observable(!!Settings.settingsGet('ContactsSync'));
var
aTypes = ['sqlite', 'mysql', 'pgsql'],
@@ -49,15 +49,15 @@
}
;
- if (!!AppSettings.settingsGet('SQLiteIsSupported'))
+ if (!!Settings.settingsGet('SQLiteIsSupported'))
{
aSupportedTypes.push('sqlite');
}
- if (!!AppSettings.settingsGet('MySqlIsSupported'))
+ if (!!Settings.settingsGet('MySqlIsSupported'))
{
aSupportedTypes.push('mysql');
}
- if (!!AppSettings.settingsGet('PostgreSqlIsSupported'))
+ if (!!Settings.settingsGet('PostgreSqlIsSupported'))
{
aSupportedTypes.push('pgsql');
}
@@ -105,9 +105,9 @@
this.testContactsErrorMessage('');
}, this);
- this.pdoDsn = ko.observable(AppSettings.settingsGet('ContactsPdoDsn'));
- this.pdoUser = ko.observable(AppSettings.settingsGet('ContactsPdoUser'));
- this.pdoPassword = ko.observable(AppSettings.settingsGet('ContactsPdoPassword'));
+ this.pdoDsn = ko.observable(Settings.settingsGet('ContactsPdoDsn'));
+ this.pdoUser = ko.observable(Settings.settingsGet('ContactsPdoUser'));
+ this.pdoPassword = ko.observable(Settings.settingsGet('ContactsPdoPassword'));
this.pdoDsnTrigger = ko.observable(Enums.SaveSettingsStep.Idle);
this.pdoUserTrigger = ko.observable(Enums.SaveSettingsStep.Idle);
@@ -137,7 +137,7 @@
return '' !== this.pdoDsn() && '' !== this.pdoUser();
});
- this.contactsType(AppSettings.settingsGet('ContactsPdoType'));
+ this.contactsType(Settings.settingsGet('ContactsPdoType'));
this.onTestContactsResponse = _.bind(this.onTestContactsResponse, this);
}
@@ -179,7 +179,7 @@
{
var
self = this,
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
+ Remote = require('Storage:Admin:Remote')
;
_.delay(function () {
@@ -233,7 +233,7 @@
});
});
- self.contactsType(AppSettings.settingsGet('ContactsPdoType'));
+ self.contactsType(Settings.settingsGet('ContactsPdoType'));
}, 50);
};
diff --git a/dev/Settings/Admin/AdminSettingsDomains.js b/dev/Settings/Admin/AdminSettingsDomains.js
index b56662584..4a5857c12 100644
--- a/dev/Settings/Admin/AdminSettingsDomains.js
+++ b/dev/Settings/Admin/AdminSettingsDomains.js
@@ -11,10 +11,10 @@
Enums = require('Enums'),
- PopupsDomainViewModel = require('../../ViewModels/Popups/PopupsDomainViewModel.js'),
+ PopupsDomainViewModel = require('View:Popup:Domain'),
- Data = require('../../Storages/AdminDataStorage.js'),
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
+ Data = require('Storage:Admin:Data'),
+ Remote = require('Storage:Admin:Remote')
;
/**
@@ -58,7 +58,7 @@
AdminSettingsDomains.prototype.createDomain = function ()
{
- require('kn').showScreenPopup(PopupsDomainViewModel);
+ require('App:Knoin').showScreenPopup(PopupsDomainViewModel);
};
AdminSettingsDomains.prototype.deleteDomain = function (oDomain)
@@ -86,20 +86,20 @@
})
;
- require('../../Apps/AdminApp.js').reloadDomainList();
+ require('App:Admin').reloadDomainList();
};
AdminSettingsDomains.prototype.onDomainLoadRequest = function (sResult, oData)
{
if (Enums.StorageResultType.Success === sResult && oData && oData.Result)
{
- require('kn').showScreenPopup(PopupsDomainViewModel, [oData.Result]);
+ require('App:Knoin').showScreenPopup(PopupsDomainViewModel, [oData.Result]);
}
};
AdminSettingsDomains.prototype.onDomainListChangeRequest = function ()
{
- require('../../Apps/AdminApp.js').reloadDomainList();
+ require('App:Admin').reloadDomainList();
};
module.exports = AdminSettingsDomains;
diff --git a/dev/Settings/Admin/AdminSettingsGeneral.js b/dev/Settings/Admin/AdminSettingsGeneral.js
index 3b99a07ae..c2d60d7c4 100644
--- a/dev/Settings/Admin/AdminSettingsGeneral.js
+++ b/dev/Settings/Admin/AdminSettingsGeneral.js
@@ -12,10 +12,8 @@
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- AppSettings = require('../../Storages/AppSettings.js'),
- Data = require('../../Storages/AdminDataStorage.js'),
-
- PopupsLanguagesViewModel = require('../../ViewModels/Popups/PopupsLanguagesViewModel.js')
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:Admin:Data')
;
/**
@@ -35,8 +33,8 @@
this.capaAdditionalAccounts = Data.capaAdditionalAccounts;
this.capaAdditionalIdentities = Data.capaAdditionalIdentities;
- this.mainAttachmentLimit = ko.observable(Utils.pInt(AppSettings.settingsGet('AttachmentLimit')) / (1024 * 1024)).extend({'posInterer': 25});
- this.uploadData = AppSettings.settingsGet('PhpUploadSizes');
+ this.mainAttachmentLimit = ko.observable(Utils.pInt(Settings.settingsGet('AttachmentLimit')) / (1024 * 1024)).extend({'posInterer': 25});
+ this.uploadData = Settings.settingsGet('PhpUploadSizes');
this.uploadDataDesc = this.uploadData && (this.uploadData['upload_max_filesize'] || this.uploadData['post_max_size']) ?
[
this.uploadData['upload_max_filesize'] ? 'upload_max_filesize = ' + this.uploadData['upload_max_filesize'] + '; ' : '',
@@ -57,7 +55,7 @@
return Utils.convertLangName(this.mainLanguage());
}, this);
- this.weakPassword = !!AppSettings.settingsGet('WeakPassword');
+ this.weakPassword = !!Settings.settingsGet('WeakPassword');
this.attachmentLimitTrigger = ko.observable(Enums.SaveSettingsStep.Idle);
this.languageTrigger = ko.observable(Enums.SaveSettingsStep.Idle);
@@ -68,7 +66,7 @@
{
var
self = this,
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
+ Remote = require('Storage:Admin:Remote')
;
_.delay(function () {
@@ -132,7 +130,7 @@
AdminSettingsGeneral.prototype.selectLanguage = function ()
{
- require('kn').showScreenPopup(PopupsLanguagesViewModel);
+ require('App:Knoin').showScreenPopup(require('View:Popup:Languages'));
};
/**
diff --git a/dev/Settings/Admin/AdminSettingsLicensing.js b/dev/Settings/Admin/AdminSettingsLicensing.js
index f063d684e..376e85df5 100644
--- a/dev/Settings/Admin/AdminSettingsLicensing.js
+++ b/dev/Settings/Admin/AdminSettingsLicensing.js
@@ -8,10 +8,8 @@
ko = require('ko'),
moment = require('moment'),
- AppSettings = require('../../Storages/AppSettings.js'),
- Data = require('../../Storages/AdminDataStorage.js'),
-
- PopupsActivateViewModel = require('../../ViewModels/Popups/PopupsActivateViewModel.js')
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:Admin:Data')
;
/**
@@ -27,12 +25,12 @@
this.licenseTrigger = Data.licenseTrigger;
this.adminDomain = ko.observable('');
- this.subscriptionEnabled = ko.observable(!!AppSettings.settingsGet('SubscriptionEnabled'));
+ this.subscriptionEnabled = ko.observable(!!Settings.settingsGet('SubscriptionEnabled'));
this.licenseTrigger.subscribe(function () {
if (this.subscriptionEnabled())
{
- require('../../Apps/AdminApp.js').reloadLicensing(true);
+ require('App:Admin').reloadLicensing(true);
}
}, this);
}
@@ -41,18 +39,18 @@
{
if (this.subscriptionEnabled())
{
- require('../../Apps/AdminApp.js').reloadLicensing(false);
+ require('App:Admin').reloadLicensing(false);
}
};
AdminSettingsLicensing.prototype.onShow = function ()
{
- this.adminDomain(AppSettings.settingsGet('AdminDomain'));
+ this.adminDomain(Settings.settingsGet('AdminDomain'));
};
AdminSettingsLicensing.prototype.showActivationForm = function ()
{
- require('kn').showScreenPopup(PopupsActivateViewModel);
+ require('App:Knoin').showScreenPopup(require('View:Popup:Activate'));
};
/**
diff --git a/dev/Settings/Admin/AdminSettingsLogin.js b/dev/Settings/Admin/AdminSettingsLogin.js
index 019064bdf..63bcecd84 100644
--- a/dev/Settings/Admin/AdminSettingsLogin.js
+++ b/dev/Settings/Admin/AdminSettingsLogin.js
@@ -11,8 +11,8 @@
Enums = require('Enums'),
Utils = require('Utils'),
- AppSettings = require('../../Storages/AppSettings.js'),
- Data = require('../../Storages/AdminDataStorage.js')
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:Admin:Data')
;
/**
@@ -23,7 +23,7 @@
this.determineUserLanguage = Data.determineUserLanguage;
this.determineUserDomain = Data.determineUserDomain;
- this.defaultDomain = ko.observable(AppSettings.settingsGet('LoginDefaultDomain'));
+ this.defaultDomain = ko.observable(Settings.settingsGet('LoginDefaultDomain'));
this.allowLanguagesOnLogin = Data.allowLanguagesOnLogin;
this.defaultDomainTrigger = ko.observable(Enums.SaveSettingsStep.Idle);
@@ -33,7 +33,7 @@
{
var
self = this,
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
+ Remote = require('Storage:Admin:Remote')
;
_.delay(function () {
diff --git a/dev/Settings/Admin/AdminSettingsPackages.js b/dev/Settings/Admin/AdminSettingsPackages.js
index 48ce84935..35ccec7d6 100644
--- a/dev/Settings/Admin/AdminSettingsPackages.js
+++ b/dev/Settings/Admin/AdminSettingsPackages.js
@@ -11,8 +11,8 @@
Enums = require('Enums'),
Utils = require('Utils'),
- Data = require('../../Storages/AdminDataStorage.js'),
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
+ Data = require('Storage:Admin:Data'),
+ Remote = require('Storage:Admin:Remote')
;
/**
@@ -51,7 +51,7 @@
AdminSettingsPackages.prototype.onBuild = function ()
{
- require('../../Apps/AdminApp.js').reloadPackagesList();
+ require('App:Admin').reloadPackagesList();
};
AdminSettingsPackages.prototype.requestHelper = function (oPackage, bInstall)
@@ -86,7 +86,7 @@
}
else
{
- require('../../Apps/AdminApp.js').reloadPackagesList();
+ require('App:Admin').reloadPackagesList();
}
};
};
diff --git a/dev/Settings/Admin/AdminSettingsPlugins.js b/dev/Settings/Admin/AdminSettingsPlugins.js
index 7d41daa0e..2a369a3c8 100644
--- a/dev/Settings/Admin/AdminSettingsPlugins.js
+++ b/dev/Settings/Admin/AdminSettingsPlugins.js
@@ -11,11 +11,9 @@
Enums = require('Enums'),
Utils = require('Utils'),
- AppSettings = require('../../Storages/AppSettings.js'),
- Data = require('../../Storages/AdminDataStorage.js'),
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js'),
-
- PopupsPluginViewModel = require('../../ViewModels/Popups/PopupsPluginViewModel.js')
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:Admin:Data'),
+ Remote = require('Storage:Admin:Remote')
;
/**
@@ -23,7 +21,7 @@
*/
function AdminSettingsPlugins()
{
- this.enabledPlugins = ko.observable(!!AppSettings.settingsGet('EnabledPlugins'));
+ this.enabledPlugins = ko.observable(!!Settings.settingsGet('EnabledPlugins'));
this.pluginsError = ko.observable('');
@@ -80,14 +78,14 @@
AdminSettingsPlugins.prototype.onShow = function ()
{
this.pluginsError('');
- require('../../Apps/AdminApp.js').reloadPluginList();
+ require('App:Admin').reloadPluginList();
};
AdminSettingsPlugins.prototype.onPluginLoadRequest = function (sResult, oData)
{
if (Enums.StorageResultType.Success === sResult && oData && oData.Result)
{
- require('kn').showScreenPopup(PopupsPluginViewModel, [oData.Result]);
+ require('App:Knoin').showScreenPopup(require('View:Popup:Plugin'), [oData.Result]);
}
};
@@ -108,7 +106,7 @@
}
}
- require('../../Apps/AdminApp.js').reloadPluginList();
+ require('App:Admin').reloadPluginList();
};
module.exports = AdminSettingsPlugins;
diff --git a/dev/Settings/Admin/AdminSettingsSecurity.js b/dev/Settings/Admin/AdminSettingsSecurity.js
index afa4b9399..9890bddac 100644
--- a/dev/Settings/Admin/AdminSettingsSecurity.js
+++ b/dev/Settings/Admin/AdminSettingsSecurity.js
@@ -12,9 +12,9 @@
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- AppSettings = require('../../Storages/AppSettings.js'),
- Data = require('../../Storages/AdminDataStorage.js'),
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:Admin:Data'),
+ Remote = require('Storage:Admin:Remote')
;
/**
@@ -24,10 +24,10 @@
{
this.useLocalProxyForExternalImages = Data.useLocalProxyForExternalImages;
- this.capaOpenPGP = ko.observable(AppSettings.capa(Enums.Capa.OpenPGP));
- this.capaTwoFactorAuth = ko.observable(AppSettings.capa(Enums.Capa.TwoFactor));
+ this.capaOpenPGP = ko.observable(Settings.capa(Enums.Capa.OpenPGP));
+ this.capaTwoFactorAuth = ko.observable(Settings.capa(Enums.Capa.TwoFactor));
- this.adminLogin = ko.observable(AppSettings.settingsGet('AdminLogin'));
+ this.adminLogin = ko.observable(Settings.settingsGet('AdminLogin'));
this.adminPassword = ko.observable('');
this.adminPasswordNew = ko.observable('');
this.adminPasswordNew2 = ko.observable('');
@@ -95,7 +95,7 @@
AdminSettingsSecurity.prototype.onBuild = function ()
{
var
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
+ Remote = require('Storage:Admin:Remote')
;
this.capaOpenPGP.subscribe(function (bValue) {
diff --git a/dev/Settings/Admin/AdminSettingsSocial.js b/dev/Settings/Admin/AdminSettingsSocial.js
index 1daa62642..13a7274df 100644
--- a/dev/Settings/Admin/AdminSettingsSocial.js
+++ b/dev/Settings/Admin/AdminSettingsSocial.js
@@ -17,7 +17,7 @@
*/
function AdminSettingsSocial()
{
- var Data = require('../../Storages/AdminDataStorage.js');
+ var Data = require('Storage:Admin:Data');
this.googleEnable = Data.googleEnable;
this.googleClientID = Data.googleClientID;
@@ -49,7 +49,7 @@
{
var
self = this,
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
+ Remote = require('Storage:Admin:Remote')
;
_.delay(function () {
diff --git a/dev/Settings/App/SettingsAccounts.js b/dev/Settings/App/SettingsAccounts.js
index 85feaa6c7..8b2ef1d08 100644
--- a/dev/Settings/App/SettingsAccounts.js
+++ b/dev/Settings/App/SettingsAccounts.js
@@ -13,11 +13,8 @@
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- Data = require('../../Storages/WebMailDataStorage.js'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
-
- kn = require('kn'),
- PopupsAddAccountViewModel = require('../../ViewModels/Popups/PopupsAddAccountViewModel.js')
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote')
;
/**
@@ -52,7 +49,7 @@
SettingsAccounts.prototype.addNewAccount = function ()
{
- kn.showScreenPopup(PopupsAddAccountViewModel);
+ require('App:Knoin').showScreenPopup(require('View:Popup:AddAccount'));
};
/**
@@ -65,7 +62,7 @@
this.accountForDeletion(null);
var
- App = require('../../Apps/RainLoopApp.js'),
+ kn = require('App:Knoin'),
fRemoveAccount = function (oAccount) {
return oAccountToRemove === oAccount;
}
@@ -90,7 +87,7 @@
}
else
{
- App.accountsAndIdentities();
+ require('App:RainLoop').accountsAndIdentities();
}
}, oAccountToRemove.email);
diff --git a/dev/Settings/App/SettingsChangePassword.js b/dev/Settings/App/SettingsChangePassword.js
index 1ed0a191c..625db442f 100644
--- a/dev/Settings/App/SettingsChangePassword.js
+++ b/dev/Settings/App/SettingsChangePassword.js
@@ -11,7 +11,7 @@
Enums = require('Enums'),
Utils = require('Utils'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js')
+ Remote = require('Storage:RainLoop:Remote')
;
/**
diff --git a/dev/Settings/App/SettingsContacts.js b/dev/Settings/App/SettingsContacts.js
index 11f9c0161..aa9db0c42 100644
--- a/dev/Settings/App/SettingsContacts.js
+++ b/dev/Settings/App/SettingsContacts.js
@@ -9,8 +9,8 @@
Utils = require('Utils'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
- Data = require('../../Storages/WebMailDataStorage.js')
+ Remote = require('Storage:RainLoop:Remote'),
+ Data = require('Storage:RainLoop:Data')
;
/**
diff --git a/dev/Settings/App/SettingsFilters.js b/dev/Settings/App/SettingsFilters.js
index 1c484ae80..6c1d40d5f 100644
--- a/dev/Settings/App/SettingsFilters.js
+++ b/dev/Settings/App/SettingsFilters.js
@@ -30,12 +30,11 @@
SettingsFilters.prototype.addFilter = function ()
{
var
- kn = require('kn'),
- FilterModel = require('../../Models/FilterModel.js'),
- PopupsFilterViewModel = require('../../ViewModels/Popups/PopupsFilterViewModel.js')
+ FilterModel = require('Model:Filter')
;
- kn.showScreenPopup(PopupsFilterViewModel, [new FilterModel()]);
+ require('App:Knoin').showScreenPopup(
+ require('View:Popup:Filter'), [new FilterModel()]);
};
module.exports = SettingsFilters;
diff --git a/dev/Settings/App/SettingsFolders.js b/dev/Settings/App/SettingsFolders.js
index 928499cc2..7ca23c33d 100644
--- a/dev/Settings/App/SettingsFolders.js
+++ b/dev/Settings/App/SettingsFolders.js
@@ -10,16 +10,11 @@
Enums = require('Enums'),
Utils = require('Utils'),
- kn = require('kn'),
-
- AppSettings = require('../../Storages/AppSettings.js'),
- LocalStorage = require('../../Storages/LocalStorage.js'),
- Data = require('../../Storages/WebMailDataStorage.js'),
- Cache = require('../../Storages/WebMailCacheStorage.js'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
-
- PopupsFolderCreateViewModel = require('../../ViewModels/Popups/PopupsFolderCreateViewModel.js'),
- PopupsFolderSystemViewModel = require('../../ViewModels/Popups/PopupsFolderSystemViewModel.js')
+ Settings = require('Storage:Settings'),
+ LocalStorage = require('Storage:LocalStorage'),
+ Data = require('Storage:RainLoop:Data'),
+ Cache = require('Storage:RainLoop:Cache'),
+ Remote = require('Storage:RainLoop:Remote')
;
/**
@@ -92,13 +87,12 @@
}
]});
- this.useImapSubscribe = !!AppSettings.settingsGet('UseImapSubscribe');
+ this.useImapSubscribe = !!Settings.settingsGet('UseImapSubscribe');
}
SettingsFolders.prototype.folderEditOnEnter = function (oFolder)
{
var
- App = require('../../Apps/RainLoopApp.js'),
sEditName = oFolder ? Utils.trim(oFolder.nameForEdit()) : ''
;
@@ -116,7 +110,7 @@
oData && oData.ErrorCode ? Utils.getNotification(oData.ErrorCode) : Utils.i18n('NOTIFICATIONS/CANT_RENAME_FOLDER'));
}
- App.folders();
+ require('App:RainLoop').folders();
}, oFolder.fullNameRaw, sEditName);
@@ -143,12 +137,12 @@
SettingsFolders.prototype.createFolder = function ()
{
- kn.showScreenPopup(PopupsFolderCreateViewModel);
+ require('App:Knoin').showScreenPopup(require('View:Popup:FolderCreate'));
};
SettingsFolders.prototype.systemFolder = function ()
{
- kn.showScreenPopup(PopupsFolderSystemViewModel);
+ require('App:Knoin').showScreenPopup(require('View:Popup:FolderSystem'));
};
SettingsFolders.prototype.deleteFolder = function (oFolderToRemove)
@@ -159,7 +153,6 @@
this.folderForDeletion(null);
var
- App = require('../../Apps/RainLoopApp.js'),
fRemoveFolder = function (oFolder) {
if (oFolderToRemove === oFolder)
@@ -188,7 +181,7 @@
oData && oData.ErrorCode ? Utils.getNotification(oData.ErrorCode) : Utils.i18n('NOTIFICATIONS/CANT_DELETE_FOLDER'));
}
- App.folders();
+ require('App:RainLoop').folders();
}, oFolderToRemove.fullNameRaw);
diff --git a/dev/Settings/App/SettingsGeneral.js b/dev/Settings/App/SettingsGeneral.js
index e00c4a818..e9e0a8e5e 100644
--- a/dev/Settings/App/SettingsGeneral.js
+++ b/dev/Settings/App/SettingsGeneral.js
@@ -15,11 +15,8 @@
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- Data = require('../../Storages/WebMailDataStorage.js'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
-
- kn = require('kn'),
- PopupsLanguagesViewModel = require('../../ViewModels/Popups/PopupsLanguagesViewModel.js')
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote')
;
/**
@@ -174,7 +171,7 @@
SettingsGeneral.prototype.selectLanguage = function ()
{
- kn.showScreenPopup(PopupsLanguagesViewModel);
+ require('App:Knoin').showScreenPopup(require('View:Popup:Languages'));
};
module.exports = SettingsGeneral;
diff --git a/dev/Settings/App/SettingsIdentities.js b/dev/Settings/App/SettingsIdentities.js
index e286e0d01..fe55ea7ed 100644
--- a/dev/Settings/App/SettingsIdentities.js
+++ b/dev/Settings/App/SettingsIdentities.js
@@ -10,13 +10,10 @@
Enums = require('Enums'),
Utils = require('Utils'),
- NewHtmlEditorWrapper = require('NewHtmlEditorWrapper'),
+ HtmlEditor = require('HtmlEditor'),
- Data = require('../../Storages/WebMailDataStorage.js'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
-
- kn = require('kn'),
- PopupsIdentityViewModel = require('../../ViewModels/Popups/PopupsIdentityViewModel.js')
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote')
;
/**
@@ -116,12 +113,12 @@
SettingsIdentities.prototype.addNewIdentity = function ()
{
- kn.showScreenPopup(PopupsIdentityViewModel);
+ require('App:Knoin').showScreenPopup(require('View:Popup:Identity'));
};
SettingsIdentities.prototype.editIdentity = function (oIdentity)
{
- kn.showScreenPopup(PopupsIdentityViewModel, [oIdentity]);
+ require('App:Knoin').showScreenPopup(require('View:Popup:Identity'), [oIdentity]);
};
/**
@@ -134,7 +131,6 @@
this.identityForDeletion(null);
var
- App = require('../../Apps/RainLoopApp.js'),
fRemoveFolder = function (oIdentity) {
return oIdentityToRemove === oIdentity;
}
@@ -145,7 +141,7 @@
this.identities.remove(fRemoveFolder);
Remote.identityDelete(function () {
- App.accountsAndIdentities();
+ require('App:RainLoop').accountsAndIdentities();
}, oIdentityToRemove.id);
}
}
@@ -160,7 +156,7 @@
sSignature = Data.signature()
;
- this.editor = new NewHtmlEditorWrapper(self.signatureDom(), function () {
+ this.editor = new HtmlEditor(self.signatureDom(), function () {
Data.signature(
(self.editor.isHtml() ? ':HTML:' : '') + self.editor.getData()
);
diff --git a/dev/Settings/App/SettingsIdentity.js b/dev/Settings/App/SettingsIdentity.js
index 6dfa87c12..6cc4ea6d4 100644
--- a/dev/Settings/App/SettingsIdentity.js
+++ b/dev/Settings/App/SettingsIdentity.js
@@ -10,10 +10,10 @@
Enums = require('Enums'),
Utils = require('Utils'),
- NewHtmlEditorWrapper = require('NewHtmlEditorWrapper'),
+ HtmlEditor = require('HtmlEditor'),
- Data = require('../../Storages/WebMailDataStorage.js'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js')
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote')
;
/**
@@ -44,7 +44,7 @@
sSignature = Data.signature()
;
- this.editor = new NewHtmlEditorWrapper(self.signatureDom(), function () {
+ this.editor = new HtmlEditor(self.signatureDom(), function () {
Data.signature(
(self.editor.isHtml() ? ':HTML:' : '') + self.editor.getData()
);
diff --git a/dev/Settings/App/SettingsOpenPGP.js b/dev/Settings/App/SettingsOpenPGP.js
index e26b26ad3..6c5b6f199 100644
--- a/dev/Settings/App/SettingsOpenPGP.js
+++ b/dev/Settings/App/SettingsOpenPGP.js
@@ -6,14 +6,8 @@
var
ko = require('ko'),
-
- kn = require('kn'),
-
- Data = require('../../Storages/WebMailDataStorage.js'),
-
- PopupsAddOpenPgpKeyViewModel = require('../../ViewModels/Popups/PopupsAddOpenPgpKeyViewModel.js'),
- PopupsGenerateNewOpenPgpKeyViewModel = require('../../ViewModels/Popups/PopupsGenerateNewOpenPgpKeyViewModel.js'),
- PopupsViewOpenPgpKeyViewModel = require('../../ViewModels/Popups/PopupsViewOpenPgpKeyViewModel.js')
+ kn = require('App:Knoin'),
+ Data = require('Storage:RainLoop:Data')
;
/**
@@ -42,19 +36,19 @@
SettingsOpenPGP.prototype.addOpenPgpKey = function ()
{
- kn.showScreenPopup(PopupsAddOpenPgpKeyViewModel);
+ kn.showScreenPopup(require('View:Popup:AddOpenPgpKey'));
};
SettingsOpenPGP.prototype.generateOpenPgpKey = function ()
{
- kn.showScreenPopup(PopupsGenerateNewOpenPgpKeyViewModel);
+ kn.showScreenPopup(require('View:Popup:NewOpenPgpKey'));
};
SettingsOpenPGP.prototype.viewOpenPgpKey = function (oOpenPgpKey)
{
if (oOpenPgpKey)
{
- kn.showScreenPopup(PopupsViewOpenPgpKeyViewModel, [oOpenPgpKey]);
+ kn.showScreenPopup(require('View:Popup:ViewOpenPgpKey'), [oOpenPgpKey]);
}
};
@@ -78,8 +72,7 @@
Data.openpgpKeyring.store();
- var App = require('../../Apps/RainLoopApp.js');
- App.reloadOpenPgpKeys();
+ require('App:RainLoop').reloadOpenPgpKeys();
}
}
};
diff --git a/dev/Settings/App/SettingsSecurity.js b/dev/Settings/App/SettingsSecurity.js
index 2cfaa6440..3a1b0cf45 100644
--- a/dev/Settings/App/SettingsSecurity.js
+++ b/dev/Settings/App/SettingsSecurity.js
@@ -11,10 +11,7 @@
Globals = require('Globals'),
Utils = require('Utils'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
-
- kn = require('kn'),
- PopupsTwoFactorTestViewModel = require('../../ViewModels/Popups/PopupsTwoFactorTestViewModel.js')
+ Remote = require('Storage:RainLoop:Remote')
;
/**
@@ -77,7 +74,7 @@
SettingsSecurity.prototype.testTwoFactor = function ()
{
- kn.showScreenPopup(PopupsTwoFactorTestViewModel);
+ require('App:Knoin').showScreenPopup(require('View:Popup:TwoFactorTest'));
};
SettingsSecurity.prototype.clearTwoFactor = function ()
diff --git a/dev/Settings/App/SettingsSocial.js b/dev/Settings/App/SettingsSocial.js
index bb5d4cc3a..c4b5fd10b 100644
--- a/dev/Settings/App/SettingsSocial.js
+++ b/dev/Settings/App/SettingsSocial.js
@@ -11,8 +11,7 @@
{
var
Utils = require('Utils'),
- App = require('../../Apps/RainLoopApp.js'),
- Data = require('../../Storages/WebMailDataStorage.js')
+ Data = require('Storage:RainLoop:Data')
;
this.googleEnable = Data.googleEnable;
@@ -36,40 +35,40 @@
this.connectGoogle = Utils.createCommand(this, function () {
if (!this.googleLoggined())
{
- App.googleConnect();
+ require('App:RainLoop').googleConnect();
}
}, function () {
return !this.googleLoggined() && !this.googleActions();
});
this.disconnectGoogle = Utils.createCommand(this, function () {
- App.googleDisconnect();
+ require('App:RainLoop').googleDisconnect();
});
this.connectFacebook = Utils.createCommand(this, function () {
if (!this.facebookLoggined())
{
- App.facebookConnect();
+ require('App:RainLoop').facebookConnect();
}
}, function () {
return !this.facebookLoggined() && !this.facebookActions();
});
this.disconnectFacebook = Utils.createCommand(this, function () {
- App.facebookDisconnect();
+ require('App:RainLoop').facebookDisconnect();
});
this.connectTwitter = Utils.createCommand(this, function () {
if (!this.twitterLoggined())
{
- App.twitterConnect();
+ require('App:RainLoop').twitterConnect();
}
}, function () {
return !this.twitterLoggined() && !this.twitterActions();
});
this.disconnectTwitter = Utils.createCommand(this, function () {
- App.twitterDisconnect();
+ require('App:RainLoop').twitterDisconnect();
});
}
diff --git a/dev/Settings/App/SettingsThemes.js b/dev/Settings/App/SettingsThemes.js
index 1c5e8f1ec..c8f76456a 100644
--- a/dev/Settings/App/SettingsThemes.js
+++ b/dev/Settings/App/SettingsThemes.js
@@ -14,8 +14,8 @@
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- Data = require('../../Storages/WebMailDataStorage.js'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js')
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote')
;
/**
diff --git a/dev/Storages/AbstractData.js b/dev/Storages/AbstractData.js
index 2d94fb1a4..8ed4fd3f6 100644
--- a/dev/Storages/AbstractData.js
+++ b/dev/Storages/AbstractData.js
@@ -8,7 +8,7 @@
Enums = require('Enums'),
Utils = require('Utils'),
- AppSettings = require('./AppSettings.js')
+ Settings = require('Storage:Settings')
;
/**
@@ -22,9 +22,9 @@
AbstractData.prototype.populateDataOnStart = function()
{
var
- mLayout = Utils.pInt(AppSettings.settingsGet('Layout')),
- aLanguages = AppSettings.settingsGet('Languages'),
- aThemes = AppSettings.settingsGet('Themes')
+ mLayout = Utils.pInt(Settings.settingsGet('Layout')),
+ aLanguages = Settings.settingsGet('Languages'),
+ aThemes = Settings.settingsGet('Themes')
;
if (Utils.isArray(aLanguages))
@@ -37,55 +37,55 @@
this.themes(aThemes);
}
- this.mainLanguage(AppSettings.settingsGet('Language'));
- this.mainTheme(AppSettings.settingsGet('Theme'));
+ this.mainLanguage(Settings.settingsGet('Language'));
+ this.mainTheme(Settings.settingsGet('Theme'));
- this.capaAdditionalAccounts(AppSettings.capa(Enums.Capa.AdditionalAccounts));
- this.capaAdditionalIdentities(AppSettings.capa(Enums.Capa.AdditionalIdentities));
- this.capaGravatar(AppSettings.capa(Enums.Capa.Gravatar));
- this.determineUserLanguage(!!AppSettings.settingsGet('DetermineUserLanguage'));
- this.determineUserDomain(!!AppSettings.settingsGet('DetermineUserDomain'));
+ this.capaAdditionalAccounts(Settings.capa(Enums.Capa.AdditionalAccounts));
+ this.capaAdditionalIdentities(Settings.capa(Enums.Capa.AdditionalIdentities));
+ this.capaGravatar(Settings.capa(Enums.Capa.Gravatar));
+ this.determineUserLanguage(!!Settings.settingsGet('DetermineUserLanguage'));
+ this.determineUserDomain(!!Settings.settingsGet('DetermineUserDomain'));
- this.capaThemes(AppSettings.capa(Enums.Capa.Themes));
- this.allowLanguagesOnLogin(!!AppSettings.settingsGet('AllowLanguagesOnLogin'));
- this.allowLanguagesOnSettings(!!AppSettings.settingsGet('AllowLanguagesOnSettings'));
- this.useLocalProxyForExternalImages(!!AppSettings.settingsGet('UseLocalProxyForExternalImages'));
+ this.capaThemes(Settings.capa(Enums.Capa.Themes));
+ this.allowLanguagesOnLogin(!!Settings.settingsGet('AllowLanguagesOnLogin'));
+ this.allowLanguagesOnSettings(!!Settings.settingsGet('AllowLanguagesOnSettings'));
+ this.useLocalProxyForExternalImages(!!Settings.settingsGet('UseLocalProxyForExternalImages'));
- this.editorDefaultType(AppSettings.settingsGet('EditorDefaultType'));
- this.showImages(!!AppSettings.settingsGet('ShowImages'));
- this.contactsAutosave(!!AppSettings.settingsGet('ContactsAutosave'));
- this.interfaceAnimation(AppSettings.settingsGet('InterfaceAnimation'));
+ this.editorDefaultType(Settings.settingsGet('EditorDefaultType'));
+ this.showImages(!!Settings.settingsGet('ShowImages'));
+ this.contactsAutosave(!!Settings.settingsGet('ContactsAutosave'));
+ this.interfaceAnimation(Settings.settingsGet('InterfaceAnimation'));
- this.mainMessagesPerPage(AppSettings.settingsGet('MPP'));
+ this.mainMessagesPerPage(Settings.settingsGet('MPP'));
- this.desktopNotifications(!!AppSettings.settingsGet('DesktopNotifications'));
- this.useThreads(!!AppSettings.settingsGet('UseThreads'));
- this.replySameFolder(!!AppSettings.settingsGet('ReplySameFolder'));
- this.useCheckboxesInList(!!AppSettings.settingsGet('UseCheckboxesInList'));
+ this.desktopNotifications(!!Settings.settingsGet('DesktopNotifications'));
+ this.useThreads(!!Settings.settingsGet('UseThreads'));
+ this.replySameFolder(!!Settings.settingsGet('ReplySameFolder'));
+ this.useCheckboxesInList(!!Settings.settingsGet('UseCheckboxesInList'));
this.layout(Enums.Layout.SidePreview);
if (-1 < Utils.inArray(mLayout, [Enums.Layout.NoPreview, Enums.Layout.SidePreview, Enums.Layout.BottomPreview]))
{
this.layout(mLayout);
}
- this.facebookSupported(!!AppSettings.settingsGet('SupportedFacebookSocial'));
- this.facebookEnable(!!AppSettings.settingsGet('AllowFacebookSocial'));
- this.facebookAppID(AppSettings.settingsGet('FacebookAppID'));
- this.facebookAppSecret(AppSettings.settingsGet('FacebookAppSecret'));
+ this.facebookSupported(!!Settings.settingsGet('SupportedFacebookSocial'));
+ this.facebookEnable(!!Settings.settingsGet('AllowFacebookSocial'));
+ this.facebookAppID(Settings.settingsGet('FacebookAppID'));
+ this.facebookAppSecret(Settings.settingsGet('FacebookAppSecret'));
- this.twitterEnable(!!AppSettings.settingsGet('AllowTwitterSocial'));
- this.twitterConsumerKey(AppSettings.settingsGet('TwitterConsumerKey'));
- this.twitterConsumerSecret(AppSettings.settingsGet('TwitterConsumerSecret'));
+ this.twitterEnable(!!Settings.settingsGet('AllowTwitterSocial'));
+ this.twitterConsumerKey(Settings.settingsGet('TwitterConsumerKey'));
+ this.twitterConsumerSecret(Settings.settingsGet('TwitterConsumerSecret'));
- this.googleEnable(!!AppSettings.settingsGet('AllowGoogleSocial'));
- this.googleClientID(AppSettings.settingsGet('GoogleClientID'));
- this.googleClientSecret(AppSettings.settingsGet('GoogleClientSecret'));
- this.googleApiKey(AppSettings.settingsGet('GoogleApiKey'));
+ this.googleEnable(!!Settings.settingsGet('AllowGoogleSocial'));
+ this.googleClientID(Settings.settingsGet('GoogleClientID'));
+ this.googleClientSecret(Settings.settingsGet('GoogleClientSecret'));
+ this.googleApiKey(Settings.settingsGet('GoogleApiKey'));
- this.dropboxEnable(!!AppSettings.settingsGet('AllowDropboxSocial'));
- this.dropboxApiKey(AppSettings.settingsGet('DropboxApiKey'));
+ this.dropboxEnable(!!Settings.settingsGet('AllowDropboxSocial'));
+ this.dropboxApiKey(Settings.settingsGet('DropboxApiKey'));
- this.contactsIsAllowed(!!AppSettings.settingsGet('ContactsIsAllowed'));
+ this.contactsIsAllowed(!!Settings.settingsGet('ContactsIsAllowed'));
};
module.exports = AbstractData;
diff --git a/dev/Storages/AbstractAjaxRemoteStorage.js b/dev/Storages/AbstractRemoteStorage.js
similarity index 86%
rename from dev/Storages/AbstractAjaxRemoteStorage.js
rename to dev/Storages/AbstractRemoteStorage.js
index 80c29b1d3..820078130 100644
--- a/dev/Storages/AbstractAjaxRemoteStorage.js
+++ b/dev/Storages/AbstractRemoteStorage.js
@@ -7,6 +7,7 @@
var
window = require('window'),
$ = require('$'),
+ _ = require('_'),
Consts = require('Consts'),
Enums = require('Enums'),
@@ -15,18 +16,18 @@
Plugins = require('Plugins'),
LinkBuilder = require('LinkBuilder'),
- AppSettings = require('./AppSettings.js')
+ Settings = require('Storage:Settings')
;
/**
* @constructor
*/
- function AbstractAjaxRemoteStorage()
+ function AbstractRemoteStorage()
{
this.oRequests = {};
}
- AbstractAjaxRemoteStorage.prototype.oRequests = {};
+ AbstractRemoteStorage.prototype.oRequests = {};
/**
* @param {?Function} fCallback
@@ -36,7 +37,7 @@
* @param {boolean} bCached
* @param {*=} oRequestParameters
*/
- AbstractAjaxRemoteStorage.prototype.defaultResponse = function (fCallback, sRequestAction, sType, oData, bCached, oRequestParameters)
+ AbstractRemoteStorage.prototype.defaultResponse = function (fCallback, sRequestAction, sType, oData, bCached, oRequestParameters)
{
var
fCall = function () {
@@ -134,7 +135,7 @@
* @param {Array=} aAbortActions = []
* @return {jQuery.jqXHR}
*/
- AbstractAjaxRemoteStorage.prototype.ajaxRequest = function (fResultCallback, oParameters, iTimeOut, sGetAdd, aAbortActions)
+ AbstractRemoteStorage.prototype.ajaxRequest = function (fResultCallback, oParameters, iTimeOut, sGetAdd, aAbortActions)
{
var
self = this,
@@ -169,7 +170,7 @@
if (bPost)
{
- oParameters['XToken'] = AppSettings.settingsGet('Token');
+ oParameters['XToken'] = Settings.settingsGet('Token');
}
oDefAjax = $.ajax({
@@ -230,7 +231,7 @@
* @param {string=} sGetAdd = ''
* @param {Array=} aAbortActions = []
*/
- AbstractAjaxRemoteStorage.prototype.defaultRequest = function (fCallback, sAction, oParameters, iTimeout, sGetAdd, aAbortActions)
+ AbstractRemoteStorage.prototype.defaultRequest = function (fCallback, sAction, oParameters, iTimeout, sGetAdd, aAbortActions)
{
oParameters = oParameters || {};
oParameters.Action = sAction;
@@ -246,7 +247,7 @@
/**
* @param {?Function} fCallback
*/
- AbstractAjaxRemoteStorage.prototype.noop = function (fCallback)
+ AbstractRemoteStorage.prototype.noop = function (fCallback)
{
this.defaultRequest(fCallback, 'Noop');
};
@@ -260,7 +261,7 @@
* @param {string} sHtmlCapa
* @param {number} iTime
*/
- AbstractAjaxRemoteStorage.prototype.jsError = function (fCallback, sMessage, sFileName, iLineNo, sLocation, sHtmlCapa, iTime)
+ AbstractRemoteStorage.prototype.jsError = function (fCallback, sMessage, sFileName, iLineNo, sLocation, sHtmlCapa, iTime)
{
this.defaultRequest(fCallback, 'JsError', {
'Message': sMessage,
@@ -278,7 +279,7 @@
* @param {Array=} mData = null
* @param {boolean=} bIsError = false
*/
- AbstractAjaxRemoteStorage.prototype.jsInfo = function (fCallback, sType, mData, bIsError)
+ AbstractRemoteStorage.prototype.jsInfo = function (fCallback, sType, mData, bIsError)
{
this.defaultRequest(fCallback, 'JsInfo', {
'Type': sType,
@@ -290,7 +291,7 @@
/**
* @param {?Function} fCallback
*/
- AbstractAjaxRemoteStorage.prototype.getPublicKey = function (fCallback)
+ AbstractRemoteStorage.prototype.getPublicKey = function (fCallback)
{
this.defaultRequest(fCallback, 'GetPublicKey');
};
@@ -299,13 +300,13 @@
* @param {?Function} fCallback
* @param {string} sVersion
*/
- AbstractAjaxRemoteStorage.prototype.jsVersion = function (fCallback, sVersion)
+ AbstractRemoteStorage.prototype.jsVersion = function (fCallback, sVersion)
{
this.defaultRequest(fCallback, 'Version', {
'Version': sVersion
});
};
- module.exports = AbstractAjaxRemoteStorage;
+ module.exports = AbstractRemoteStorage;
}(module, require));
\ No newline at end of file
diff --git a/dev/Storages/AdminDataStorage.js b/dev/Storages/AdminDataStorage.js
index 79d010610..f5687482d 100644
--- a/dev/Storages/AdminDataStorage.js
+++ b/dev/Storages/AdminDataStorage.js
@@ -8,7 +8,7 @@
_ = require('_'),
ko = require('ko'),
- AbstractData = require('./AbstractData.js')
+ AbstractData = require('Storage:Abstract:Data')
;
/**
diff --git a/dev/Storages/AdminAjaxRemoteStorage.js b/dev/Storages/AdminRemoteStorage.js
similarity index 67%
rename from dev/Storages/AdminAjaxRemoteStorage.js
rename to dev/Storages/AdminRemoteStorage.js
index e5eac2909..e912a05ed 100644
--- a/dev/Storages/AdminAjaxRemoteStorage.js
+++ b/dev/Storages/AdminRemoteStorage.js
@@ -7,28 +7,28 @@
var
_ = require('_'),
- AbstractAjaxRemoteStorage = require('./AbstractAjaxRemoteStorage.js')
+ AbstractRemoteStorage = require('Storage:Abstract:Remote')
;
/**
* @constructor
- * @extends AbstractAjaxRemoteStorage
+ * @extends AbstractRemoteStorage
*/
- function AdminAjaxRemoteStorage()
+ function AdminRemoteStorage()
{
- AbstractAjaxRemoteStorage.call(this);
+ AbstractRemoteStorage.call(this);
this.oRequests = {};
}
- _.extend(AdminAjaxRemoteStorage.prototype, AbstractAjaxRemoteStorage.prototype);
+ _.extend(AdminRemoteStorage.prototype, AbstractRemoteStorage.prototype);
/**
* @param {?Function} fCallback
* @param {string} sLogin
* @param {string} sPassword
*/
- AdminAjaxRemoteStorage.prototype.adminLogin = function (fCallback, sLogin, sPassword)
+ AdminRemoteStorage.prototype.adminLogin = function (fCallback, sLogin, sPassword)
{
this.defaultRequest(fCallback, 'AdminLogin', {
'Login': sLogin,
@@ -39,7 +39,7 @@
/**
* @param {?Function} fCallback
*/
- AdminAjaxRemoteStorage.prototype.adminLogout = function (fCallback)
+ AdminRemoteStorage.prototype.adminLogout = function (fCallback)
{
this.defaultRequest(fCallback, 'AdminLogout');
};
@@ -48,7 +48,7 @@
* @param {?Function} fCallback
* @param {?} oData
*/
- AdminAjaxRemoteStorage.prototype.saveAdminConfig = function (fCallback, oData)
+ AdminRemoteStorage.prototype.saveAdminConfig = function (fCallback, oData)
{
this.defaultRequest(fCallback, 'AdminSettingsUpdate', oData);
};
@@ -56,7 +56,7 @@
/**
* @param {?Function} fCallback
*/
- AdminAjaxRemoteStorage.prototype.domainList = function (fCallback)
+ AdminRemoteStorage.prototype.domainList = function (fCallback)
{
this.defaultRequest(fCallback, 'AdminDomainList');
};
@@ -64,7 +64,7 @@
/**
* @param {?Function} fCallback
*/
- AdminAjaxRemoteStorage.prototype.pluginList = function (fCallback)
+ AdminRemoteStorage.prototype.pluginList = function (fCallback)
{
this.defaultRequest(fCallback, 'AdminPluginList');
};
@@ -72,7 +72,7 @@
/**
* @param {?Function} fCallback
*/
- AdminAjaxRemoteStorage.prototype.packagesList = function (fCallback)
+ AdminRemoteStorage.prototype.packagesList = function (fCallback)
{
this.defaultRequest(fCallback, 'AdminPackagesList');
};
@@ -80,7 +80,7 @@
/**
* @param {?Function} fCallback
*/
- AdminAjaxRemoteStorage.prototype.coreData = function (fCallback)
+ AdminRemoteStorage.prototype.coreData = function (fCallback)
{
this.defaultRequest(fCallback, 'AdminCoreData');
};
@@ -88,7 +88,7 @@
/**
* @param {?Function} fCallback
*/
- AdminAjaxRemoteStorage.prototype.updateCoreData = function (fCallback)
+ AdminRemoteStorage.prototype.updateCoreData = function (fCallback)
{
this.defaultRequest(fCallback, 'AdminUpdateCoreData', {}, 90000);
};
@@ -97,7 +97,7 @@
* @param {?Function} fCallback
* @param {Object} oPackage
*/
- AdminAjaxRemoteStorage.prototype.packageInstall = function (fCallback, oPackage)
+ AdminRemoteStorage.prototype.packageInstall = function (fCallback, oPackage)
{
this.defaultRequest(fCallback, 'AdminPackageInstall', {
'Id': oPackage.id,
@@ -110,7 +110,7 @@
* @param {?Function} fCallback
* @param {Object} oPackage
*/
- AdminAjaxRemoteStorage.prototype.packageDelete = function (fCallback, oPackage)
+ AdminRemoteStorage.prototype.packageDelete = function (fCallback, oPackage)
{
this.defaultRequest(fCallback, 'AdminPackageDelete', {
'Id': oPackage.id
@@ -121,7 +121,7 @@
* @param {?Function} fCallback
* @param {string} sName
*/
- AdminAjaxRemoteStorage.prototype.domain = function (fCallback, sName)
+ AdminRemoteStorage.prototype.domain = function (fCallback, sName)
{
this.defaultRequest(fCallback, 'AdminDomainLoad', {
'Name': sName
@@ -132,7 +132,7 @@
* @param {?Function} fCallback
* @param {string} sName
*/
- AdminAjaxRemoteStorage.prototype.plugin = function (fCallback, sName)
+ AdminRemoteStorage.prototype.plugin = function (fCallback, sName)
{
this.defaultRequest(fCallback, 'AdminPluginLoad', {
'Name': sName
@@ -143,7 +143,7 @@
* @param {?Function} fCallback
* @param {string} sName
*/
- AdminAjaxRemoteStorage.prototype.domainDelete = function (fCallback, sName)
+ AdminRemoteStorage.prototype.domainDelete = function (fCallback, sName)
{
this.defaultRequest(fCallback, 'AdminDomainDelete', {
'Name': sName
@@ -155,7 +155,7 @@
* @param {string} sName
* @param {boolean} bDisabled
*/
- AdminAjaxRemoteStorage.prototype.domainDisable = function (fCallback, sName, bDisabled)
+ AdminRemoteStorage.prototype.domainDisable = function (fCallback, sName, bDisabled)
{
return this.defaultRequest(fCallback, 'AdminDomainDisable', {
'Name': sName,
@@ -167,7 +167,7 @@
* @param {?Function} fCallback
* @param {Object} oConfig
*/
- AdminAjaxRemoteStorage.prototype.pluginSettingsUpdate = function (fCallback, oConfig)
+ AdminRemoteStorage.prototype.pluginSettingsUpdate = function (fCallback, oConfig)
{
return this.defaultRequest(fCallback, 'AdminPluginSettingsUpdate', oConfig);
};
@@ -176,7 +176,7 @@
* @param {?Function} fCallback
* @param {boolean} bForce
*/
- AdminAjaxRemoteStorage.prototype.licensing = function (fCallback, bForce)
+ AdminRemoteStorage.prototype.licensing = function (fCallback, bForce)
{
return this.defaultRequest(fCallback, 'AdminLicensing', {
'Force' : bForce ? '1' : '0'
@@ -188,7 +188,7 @@
* @param {string} sDomain
* @param {string} sKey
*/
- AdminAjaxRemoteStorage.prototype.licensingActivate = function (fCallback, sDomain, sKey)
+ AdminRemoteStorage.prototype.licensingActivate = function (fCallback, sDomain, sKey)
{
return this.defaultRequest(fCallback, 'AdminLicensingActivate', {
'Domain' : sDomain,
@@ -201,7 +201,7 @@
* @param {string} sName
* @param {boolean} bDisabled
*/
- AdminAjaxRemoteStorage.prototype.pluginDisable = function (fCallback, sName, bDisabled)
+ AdminRemoteStorage.prototype.pluginDisable = function (fCallback, sName, bDisabled)
{
return this.defaultRequest(fCallback, 'AdminPluginDisable', {
'Name': sName,
@@ -209,7 +209,7 @@
});
};
- AdminAjaxRemoteStorage.prototype.createOrUpdateDomain = function (fCallback,
+ AdminRemoteStorage.prototype.createOrUpdateDomain = function (fCallback,
bCreate, sName, sIncHost, iIncPort, sIncSecure, bIncShortLogin,
sOutHost, iOutPort, sOutSecure, bOutShortLogin, bOutAuth, sWhiteList)
{
@@ -229,7 +229,7 @@
});
};
- AdminAjaxRemoteStorage.prototype.testConnectionForDomain = function (fCallback, sName,
+ AdminRemoteStorage.prototype.testConnectionForDomain = function (fCallback, sName,
sIncHost, iIncPort, sIncSecure,
sOutHost, iOutPort, sOutSecure, bOutAuth)
{
@@ -249,7 +249,7 @@
* @param {?Function} fCallback
* @param {?} oData
*/
- AdminAjaxRemoteStorage.prototype.testContacts = function (fCallback, oData)
+ AdminRemoteStorage.prototype.testContacts = function (fCallback, oData)
{
this.defaultRequest(fCallback, 'AdminContactsTest', oData);
};
@@ -258,7 +258,7 @@
* @param {?Function} fCallback
* @param {?} oData
*/
- AdminAjaxRemoteStorage.prototype.saveNewAdminPassword = function (fCallback, oData)
+ AdminRemoteStorage.prototype.saveNewAdminPassword = function (fCallback, oData)
{
this.defaultRequest(fCallback, 'AdminPasswordUpdate', oData);
};
@@ -266,11 +266,11 @@
/**
* @param {?Function} fCallback
*/
- AdminAjaxRemoteStorage.prototype.adminPing = function (fCallback)
+ AdminRemoteStorage.prototype.adminPing = function (fCallback)
{
this.defaultRequest(fCallback, 'AdminPing');
};
- module.exports = new AdminAjaxRemoteStorage();
+ module.exports = new AdminRemoteStorage();
}(module, require));
\ No newline at end of file
diff --git a/dev/Storages/WebMailCacheStorage.js b/dev/Storages/CacheStorage.js
similarity index 69%
rename from dev/Storages/WebMailCacheStorage.js
rename to dev/Storages/CacheStorage.js
index 83441bb50..3f040850d 100644
--- a/dev/Storages/WebMailCacheStorage.js
+++ b/dev/Storages/CacheStorage.js
@@ -11,13 +11,13 @@
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- AppSettings = require('./AppSettings.js')
+ Settings = require('Storage:Settings')
;
/**
* @constructor
*/
- function WebMailCacheStorage()
+ function CacheStorage()
{
this.oFoldersCache = {};
this.oFoldersNamesCache = {};
@@ -28,60 +28,60 @@
this.oNewMessage = {};
this.oRequestedMessage = {};
- this.bCapaGravatar = AppSettings.capa(Enums.Capa.Gravatar);
+ this.bCapaGravatar = Settings.capa(Enums.Capa.Gravatar);
}
/**
* @type {boolean}
*/
- WebMailCacheStorage.prototype.bCapaGravatar = false;
+ CacheStorage.prototype.bCapaGravatar = false;
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oFoldersCache = {};
+ CacheStorage.prototype.oFoldersCache = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oFoldersNamesCache = {};
+ CacheStorage.prototype.oFoldersNamesCache = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oFolderHashCache = {};
+ CacheStorage.prototype.oFolderHashCache = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oFolderUidNextCache = {};
+ CacheStorage.prototype.oFolderUidNextCache = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oMessageListHashCache = {};
+ CacheStorage.prototype.oMessageListHashCache = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oMessageFlagsCache = {};
+ CacheStorage.prototype.oMessageFlagsCache = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oBodies = {};
+ CacheStorage.prototype.oBodies = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oNewMessage = {};
+ CacheStorage.prototype.oNewMessage = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oRequestedMessage = {};
+ CacheStorage.prototype.oRequestedMessage = {};
- WebMailCacheStorage.prototype.clear = function ()
+ CacheStorage.prototype.clear = function ()
{
this.oFoldersCache = {};
this.oFoldersNamesCache = {};
@@ -98,7 +98,7 @@
* @param {Function} fCallback
* @return {string}
*/
- WebMailCacheStorage.prototype.getUserPic = function (sEmail, fCallback)
+ CacheStorage.prototype.getUserPic = function (sEmail, fCallback)
{
sEmail = Utils.trim(sEmail);
fCallback(this.bCapaGravatar && '' !== sEmail ? LinkBuilder.avatarLink(sEmail) : '', sEmail);
@@ -109,7 +109,7 @@
* @param {string} sUid
* @return {string}
*/
- WebMailCacheStorage.prototype.getMessageKey = function (sFolderFullNameRaw, sUid)
+ CacheStorage.prototype.getMessageKey = function (sFolderFullNameRaw, sUid)
{
return sFolderFullNameRaw + '#' + sUid;
};
@@ -118,7 +118,7 @@
* @param {string} sFolder
* @param {string} sUid
*/
- WebMailCacheStorage.prototype.addRequestedMessage = function (sFolder, sUid)
+ CacheStorage.prototype.addRequestedMessage = function (sFolder, sUid)
{
this.oRequestedMessage[this.getMessageKey(sFolder, sUid)] = true;
};
@@ -128,7 +128,7 @@
* @param {string} sUid
* @return {boolean}
*/
- WebMailCacheStorage.prototype.hasRequestedMessage = function (sFolder, sUid)
+ CacheStorage.prototype.hasRequestedMessage = function (sFolder, sUid)
{
return true === this.oRequestedMessage[this.getMessageKey(sFolder, sUid)];
};
@@ -137,7 +137,7 @@
* @param {string} sFolderFullNameRaw
* @param {string} sUid
*/
- WebMailCacheStorage.prototype.addNewMessageCache = function (sFolderFullNameRaw, sUid)
+ CacheStorage.prototype.addNewMessageCache = function (sFolderFullNameRaw, sUid)
{
this.oNewMessage[this.getMessageKey(sFolderFullNameRaw, sUid)] = true;
};
@@ -146,7 +146,7 @@
* @param {string} sFolderFullNameRaw
* @param {string} sUid
*/
- WebMailCacheStorage.prototype.hasNewMessageAndRemoveFromCache = function (sFolderFullNameRaw, sUid)
+ CacheStorage.prototype.hasNewMessageAndRemoveFromCache = function (sFolderFullNameRaw, sUid)
{
if (this.oNewMessage[this.getMessageKey(sFolderFullNameRaw, sUid)])
{
@@ -157,7 +157,7 @@
return false;
};
- WebMailCacheStorage.prototype.clearNewMessageCache = function ()
+ CacheStorage.prototype.clearNewMessageCache = function ()
{
this.oNewMessage = {};
};
@@ -166,7 +166,7 @@
* @param {string} sFolderHash
* @return {string}
*/
- WebMailCacheStorage.prototype.getFolderFullNameRaw = function (sFolderHash)
+ CacheStorage.prototype.getFolderFullNameRaw = function (sFolderHash)
{
return '' !== sFolderHash && this.oFoldersNamesCache[sFolderHash] ? this.oFoldersNamesCache[sFolderHash] : '';
};
@@ -175,7 +175,7 @@
* @param {string} sFolderHash
* @param {string} sFolderFullNameRaw
*/
- WebMailCacheStorage.prototype.setFolderFullNameRaw = function (sFolderHash, sFolderFullNameRaw)
+ CacheStorage.prototype.setFolderFullNameRaw = function (sFolderHash, sFolderFullNameRaw)
{
this.oFoldersNamesCache[sFolderHash] = sFolderFullNameRaw;
};
@@ -184,7 +184,7 @@
* @param {string} sFolderFullNameRaw
* @return {string}
*/
- WebMailCacheStorage.prototype.getFolderHash = function (sFolderFullNameRaw)
+ CacheStorage.prototype.getFolderHash = function (sFolderFullNameRaw)
{
return '' !== sFolderFullNameRaw && this.oFolderHashCache[sFolderFullNameRaw] ? this.oFolderHashCache[sFolderFullNameRaw] : '';
};
@@ -193,7 +193,7 @@
* @param {string} sFolderFullNameRaw
* @param {string} sFolderHash
*/
- WebMailCacheStorage.prototype.setFolderHash = function (sFolderFullNameRaw, sFolderHash)
+ CacheStorage.prototype.setFolderHash = function (sFolderFullNameRaw, sFolderHash)
{
this.oFolderHashCache[sFolderFullNameRaw] = sFolderHash;
};
@@ -202,7 +202,7 @@
* @param {string} sFolderFullNameRaw
* @return {string}
*/
- WebMailCacheStorage.prototype.getFolderUidNext = function (sFolderFullNameRaw)
+ CacheStorage.prototype.getFolderUidNext = function (sFolderFullNameRaw)
{
return '' !== sFolderFullNameRaw && this.oFolderUidNextCache[sFolderFullNameRaw] ? this.oFolderUidNextCache[sFolderFullNameRaw] : '';
};
@@ -211,7 +211,7 @@
* @param {string} sFolderFullNameRaw
* @param {string} sUidNext
*/
- WebMailCacheStorage.prototype.setFolderUidNext = function (sFolderFullNameRaw, sUidNext)
+ CacheStorage.prototype.setFolderUidNext = function (sFolderFullNameRaw, sUidNext)
{
this.oFolderUidNextCache[sFolderFullNameRaw] = sUidNext;
};
@@ -220,7 +220,7 @@
* @param {string} sFolderFullNameRaw
* @return {?FolderModel}
*/
- WebMailCacheStorage.prototype.getFolderFromCacheList = function (sFolderFullNameRaw)
+ CacheStorage.prototype.getFolderFromCacheList = function (sFolderFullNameRaw)
{
return '' !== sFolderFullNameRaw && this.oFoldersCache[sFolderFullNameRaw] ? this.oFoldersCache[sFolderFullNameRaw] : null;
};
@@ -229,7 +229,7 @@
* @param {string} sFolderFullNameRaw
* @param {?FolderModel} oFolder
*/
- WebMailCacheStorage.prototype.setFolderToCacheList = function (sFolderFullNameRaw, oFolder)
+ CacheStorage.prototype.setFolderToCacheList = function (sFolderFullNameRaw, oFolder)
{
this.oFoldersCache[sFolderFullNameRaw] = oFolder;
};
@@ -237,7 +237,7 @@
/**
* @param {string} sFolderFullNameRaw
*/
- WebMailCacheStorage.prototype.removeFolderFromCacheList = function (sFolderFullNameRaw)
+ CacheStorage.prototype.removeFolderFromCacheList = function (sFolderFullNameRaw)
{
this.setFolderToCacheList(sFolderFullNameRaw, null);
};
@@ -247,7 +247,7 @@
* @param {string} sUid
* @return {?Array}
*/
- WebMailCacheStorage.prototype.getMessageFlagsFromCache = function (sFolderFullName, sUid)
+ CacheStorage.prototype.getMessageFlagsFromCache = function (sFolderFullName, sUid)
{
return this.oMessageFlagsCache[sFolderFullName] && this.oMessageFlagsCache[sFolderFullName][sUid] ?
this.oMessageFlagsCache[sFolderFullName][sUid] : null;
@@ -258,7 +258,7 @@
* @param {string} sUid
* @param {Array} aFlagsCache
*/
- WebMailCacheStorage.prototype.setMessageFlagsToCache = function (sFolderFullName, sUid, aFlagsCache)
+ CacheStorage.prototype.setMessageFlagsToCache = function (sFolderFullName, sUid, aFlagsCache)
{
if (!this.oMessageFlagsCache[sFolderFullName])
{
@@ -271,7 +271,7 @@
/**
* @param {string} sFolderFullName
*/
- WebMailCacheStorage.prototype.clearMessageFlagsFromCacheByFolder = function (sFolderFullName)
+ CacheStorage.prototype.clearMessageFlagsFromCacheByFolder = function (sFolderFullName)
{
this.oMessageFlagsCache[sFolderFullName] = {};
};
@@ -279,7 +279,7 @@
/**
* @param {(MessageModel|null)} oMessage
*/
- WebMailCacheStorage.prototype.initMessageFlagsFromCache = function (oMessage)
+ CacheStorage.prototype.initMessageFlagsFromCache = function (oMessage)
{
if (oMessage)
{
@@ -320,7 +320,7 @@
/**
* @param {(MessageModel|null)} oMessage
*/
- WebMailCacheStorage.prototype.storeMessageFlagsToCache = function (oMessage)
+ CacheStorage.prototype.storeMessageFlagsToCache = function (oMessage)
{
if (oMessage)
{
@@ -336,7 +336,7 @@
* @param {string} sUid
* @param {Array} aFlags
*/
- WebMailCacheStorage.prototype.storeMessageFlagsToCacheByFolderAndUid = function (sFolder, sUid, aFlags)
+ CacheStorage.prototype.storeMessageFlagsToCacheByFolderAndUid = function (sFolder, sUid, aFlags)
{
if (Utils.isArray(aFlags) && 0 < aFlags.length)
{
@@ -344,6 +344,6 @@
}
};
- module.exports = new WebMailCacheStorage();
+ module.exports = new CacheStorage();
}(module, require));
\ No newline at end of file
diff --git a/dev/Storages/WebMailDataStorage.js b/dev/Storages/DataStorage.js
similarity index 90%
rename from dev/Storages/WebMailDataStorage.js
rename to dev/Storages/DataStorage.js
index 3339eb3a9..e80066ad8 100644
--- a/dev/Storages/WebMailDataStorage.js
+++ b/dev/Storages/DataStorage.js
@@ -19,22 +19,22 @@
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- AppSettings = require('./AppSettings.js'),
- Cache = require('./WebMailCacheStorage.js'),
+ Settings = require('Storage:Settings'),
+ Cache = require('Storage:RainLoop:Cache'),
- kn = require('kn'),
+ kn = require('App:Knoin'),
- MessageModel = require('../Models/MessageModel.js'),
+ MessageModel = require('Model:Message'),
- LocalStorage = require('./LocalStorage.js'),
- AbstractData = require('./AbstractData.js')
+ LocalStorage = require('Storage:LocalStorage'),
+ AbstractData = require('Storage:Abstract:Data')
;
/**
* @constructor
* @extends AbstractData
*/
- function WebMailDataStorage()
+ function DataStorage()
{
AbstractData.call(this);
@@ -127,11 +127,11 @@
this.contactsSyncUser = ko.observable('');
this.contactsSyncPass = ko.observable('');
- this.allowContactsSync = ko.observable(!!AppSettings.settingsGet('ContactsSyncIsAllowed'));
- this.enableContactsSync = ko.observable(!!AppSettings.settingsGet('EnableContactsSync'));
- this.contactsSyncUrl = ko.observable(AppSettings.settingsGet('ContactsSyncUrl'));
- this.contactsSyncUser = ko.observable(AppSettings.settingsGet('ContactsSyncUser'));
- this.contactsSyncPass = ko.observable(AppSettings.settingsGet('ContactsSyncPassword'));
+ this.allowContactsSync = ko.observable(!!Settings.settingsGet('ContactsSyncIsAllowed'));
+ this.enableContactsSync = ko.observable(!!Settings.settingsGet('EnableContactsSync'));
+ this.contactsSyncUrl = ko.observable(Settings.settingsGet('ContactsSyncUrl'));
+ this.contactsSyncUser = ko.observable(Settings.settingsGet('ContactsSyncUser'));
+ this.contactsSyncPass = ko.observable(Settings.settingsGet('ContactsSyncPassword'));
// folders
this.namespace = '';
@@ -475,9 +475,9 @@
this.purgeMessageBodyCacheThrottle = _.throttle(this.purgeMessageBodyCache, 1000 * 30);
}
- _.extend(WebMailDataStorage.prototype, AbstractData.prototype);
+ _.extend(DataStorage.prototype, AbstractData.prototype);
- WebMailDataStorage.prototype.purgeMessageBodyCache = function()
+ DataStorage.prototype.purgeMessageBodyCache = function()
{
var
iCount = 0,
@@ -509,32 +509,32 @@
}
};
- WebMailDataStorage.prototype.populateDataOnStart = function()
+ DataStorage.prototype.populateDataOnStart = function()
{
AbstractData.prototype.populateDataOnStart.call(this);
- this.accountEmail(AppSettings.settingsGet('Email'));
- this.accountIncLogin(AppSettings.settingsGet('IncLogin'));
- this.accountOutLogin(AppSettings.settingsGet('OutLogin'));
- this.projectHash(AppSettings.settingsGet('ProjectHash'));
+ this.accountEmail(Settings.settingsGet('Email'));
+ this.accountIncLogin(Settings.settingsGet('IncLogin'));
+ this.accountOutLogin(Settings.settingsGet('OutLogin'));
+ this.projectHash(Settings.settingsGet('ProjectHash'));
- this.defaultIdentityID(AppSettings.settingsGet('DefaultIdentityID'));
+ this.defaultIdentityID(Settings.settingsGet('DefaultIdentityID'));
- this.displayName(AppSettings.settingsGet('DisplayName'));
- this.replyTo(AppSettings.settingsGet('ReplyTo'));
- this.signature(AppSettings.settingsGet('Signature'));
- this.signatureToAll(!!AppSettings.settingsGet('SignatureToAll'));
- this.enableTwoFactor(!!AppSettings.settingsGet('EnableTwoFactor'));
+ this.displayName(Settings.settingsGet('DisplayName'));
+ this.replyTo(Settings.settingsGet('ReplyTo'));
+ this.signature(Settings.settingsGet('Signature'));
+ this.signatureToAll(!!Settings.settingsGet('SignatureToAll'));
+ this.enableTwoFactor(!!Settings.settingsGet('EnableTwoFactor'));
this.lastFoldersHash = LocalStorage.get(Enums.ClientSideKeyName.FoldersLashHash) || '';
- this.remoteSuggestions = !!AppSettings.settingsGet('RemoteSuggestions');
+ this.remoteSuggestions = !!Settings.settingsGet('RemoteSuggestions');
- this.devEmail = AppSettings.settingsGet('DevEmail');
- this.devPassword = AppSettings.settingsGet('DevPassword');
+ this.devEmail = Settings.settingsGet('DevEmail');
+ this.devPassword = Settings.settingsGet('DevPassword');
};
- WebMailDataStorage.prototype.initUidNextAndNewMessages = function (sFolder, sUidNext, aNewMessages)
+ DataStorage.prototype.initUidNextAndNewMessages = function (sFolder, sUidNext, aNewMessages)
{
if ('INBOX' === sFolder && Utils.isNormal(sUidNext) && sUidNext !== '')
{
@@ -609,7 +609,7 @@
}
};
- WebMailDataStorage.prototype.hideMessageBodies = function ()
+ DataStorage.prototype.hideMessageBodies = function ()
{
var oMessagesBodiesDom = this.messagesBodiesDom();
if (oMessagesBodiesDom)
@@ -622,7 +622,7 @@
* @param {boolean=} bBoot = false
* @returns {Array}
*/
- WebMailDataStorage.prototype.getNextFolderNames = function (bBoot)
+ DataStorage.prototype.getNextFolderNames = function (bBoot)
{
bBoot = Utils.isUnd(bBoot) ? false : !!bBoot;
@@ -685,7 +685,7 @@
* @param {string=} sToFolderFullNameRaw = ''
* @param {bCopy=} bCopy = false
*/
- WebMailDataStorage.prototype.removeMessagesFromList = function (
+ DataStorage.prototype.removeMessagesFromList = function (
sFromFolderFullNameRaw, aUidForRemove, sToFolderFullNameRaw, bCopy)
{
sToFolderFullNameRaw = Utils.isNormal(sToFolderFullNameRaw) ? sToFolderFullNameRaw : '';
@@ -779,7 +779,7 @@
}
};
- WebMailDataStorage.prototype.setMessage = function (oData, bCached)
+ DataStorage.prototype.setMessage = function (oData, bCached)
{
var
bIsHtml = false,
@@ -939,21 +939,21 @@
* @param {Array} aList
* @returns {string}
*/
- WebMailDataStorage.prototype.calculateMessageListHash = function (aList)
+ DataStorage.prototype.calculateMessageListHash = function (aList)
{
return _.map(aList, function (oMessage) {
return '' + oMessage.hash + '_' + oMessage.threadsLen() + '_' + oMessage.flagHash();
}).join('|');
};
- WebMailDataStorage.prototype.findPublicKeyByHex = function (sHash)
+ DataStorage.prototype.findPublicKeyByHex = function (sHash)
{
return _.find(this.openpgpkeysPublic(), function (oItem) {
return oItem && sHash === oItem.id;
});
};
- WebMailDataStorage.prototype.findPublicKeysByEmail = function (sEmail)
+ DataStorage.prototype.findPublicKeysByEmail = function (sEmail)
{
return _.compact(_.map(this.openpgpkeysPublic(), function (oItem) {
@@ -981,7 +981,7 @@
* @param {string=} sPassword
* @returns {?}
*/
- WebMailDataStorage.prototype.findPrivateKeyByEmail = function (sEmail, sPassword)
+ DataStorage.prototype.findPrivateKeyByEmail = function (sEmail, sPassword)
{
var
oPrivateKey = null,
@@ -1018,11 +1018,11 @@
* @param {string=} sPassword
* @returns {?}
*/
- WebMailDataStorage.prototype.findSelfPrivateKey = function (sPassword)
+ DataStorage.prototype.findSelfPrivateKey = function (sPassword)
{
return this.findPrivateKeyByEmail(this.accountEmail(), sPassword);
};
- module.exports = new WebMailDataStorage();
+ module.exports = new DataStorage();
}(module, require));
diff --git a/dev/Storages/LocalStorage.js b/dev/Storages/LocalStorage.js
index 03c5e960b..0108909d2 100644
--- a/dev/Storages/LocalStorage.js
+++ b/dev/Storages/LocalStorage.js
@@ -4,20 +4,17 @@
'use strict';
- var
- _ = require('_'),
-
- CookieDriver = require('./LocalStorages/CookieDriver.js'),
- LocalStorageDriver = require('./LocalStorages/LocalStorageDriver.js')
- ;
-
/**
* @constructor
*/
function LocalStorage()
{
var
- NextStorageDriver = _.find([LocalStorageDriver, CookieDriver], function (NextStorageDriver) {
+ _ = require('_'),
+ NextStorageDriver = _.find([
+ require('Storage:LocalStorage:Cookie'),
+ require('Storage:LocalStorage:LocalStorage')
+ ], function (NextStorageDriver) {
return NextStorageDriver.supported();
})
;
@@ -26,7 +23,6 @@
if (NextStorageDriver)
{
- NextStorageDriver = /** @type {?Function} */ NextStorageDriver;
this.oDriver = new NextStorageDriver();
}
}
diff --git a/dev/Storages/WebMailAjaxRemoteStorage.js b/dev/Storages/RemoteStorage.js
similarity index 73%
rename from dev/Storages/WebMailAjaxRemoteStorage.js
rename to dev/Storages/RemoteStorage.js
index 0e8885741..aeff1053d 100644
--- a/dev/Storages/WebMailAjaxRemoteStorage.js
+++ b/dev/Storages/RemoteStorage.js
@@ -12,37 +12,37 @@
Globals = require('Globals'),
Base64 = require('Base64'),
- AppSettings = require('./AppSettings.js'),
- Cache = require('./WebMailCacheStorage.js'),
- Data = require('./WebMailDataStorage.js'),
+ Settings = require('Storage:Settings'),
+ Cache = require('Storage:RainLoop:Cache'),
+ Data = require('Storage:RainLoop:Data'),
- AbstractAjaxRemoteStorage = require('./AbstractAjaxRemoteStorage.js')
+ AbstractRemoteStorage = require('Storage:Abstract:Remote')
;
/**
* @constructor
- * @extends AbstractAjaxRemoteStorage
+ * @extends AbstractRemoteStorage
*/
- function WebMailAjaxRemoteStorage()
+ function RemoteStorage()
{
- AbstractAjaxRemoteStorage.call(this);
+ AbstractRemoteStorage.call(this);
this.oRequests = {};
}
- _.extend(WebMailAjaxRemoteStorage.prototype, AbstractAjaxRemoteStorage.prototype);
+ _.extend(RemoteStorage.prototype, AbstractRemoteStorage.prototype);
/**
* @param {?Function} fCallback
*/
- WebMailAjaxRemoteStorage.prototype.folders = function (fCallback)
+ RemoteStorage.prototype.folders = function (fCallback)
{
this.defaultRequest(fCallback, 'Folders', {
- 'SentFolder': AppSettings.settingsGet('SentFolder'),
- 'DraftFolder': AppSettings.settingsGet('DraftFolder'),
- 'SpamFolder': AppSettings.settingsGet('SpamFolder'),
- 'TrashFolder': AppSettings.settingsGet('TrashFolder'),
- 'ArchiveFolder': AppSettings.settingsGet('ArchiveFolder')
+ 'SentFolder': Settings.settingsGet('SentFolder'),
+ 'DraftFolder': Settings.settingsGet('DraftFolder'),
+ 'SpamFolder': Settings.settingsGet('SpamFolder'),
+ 'TrashFolder': Settings.settingsGet('TrashFolder'),
+ 'ArchiveFolder': Settings.settingsGet('ArchiveFolder')
}, null, '', ['Folders']);
};
@@ -56,7 +56,7 @@
* @param {string=} sAdditionalCode
* @param {boolean=} bAdditionalCodeSignMe
*/
- WebMailAjaxRemoteStorage.prototype.login = function (fCallback, sEmail, sLogin, sPassword, bSignMe, sLanguage, sAdditionalCode, bAdditionalCodeSignMe)
+ RemoteStorage.prototype.login = function (fCallback, sEmail, sLogin, sPassword, bSignMe, sLanguage, sAdditionalCode, bAdditionalCodeSignMe)
{
this.defaultRequest(fCallback, 'Login', {
'Email': sEmail,
@@ -72,7 +72,7 @@
/**
* @param {?Function} fCallback
*/
- WebMailAjaxRemoteStorage.prototype.getTwoFactor = function (fCallback)
+ RemoteStorage.prototype.getTwoFactor = function (fCallback)
{
this.defaultRequest(fCallback, 'GetTwoFactorInfo');
};
@@ -80,7 +80,7 @@
/**
* @param {?Function} fCallback
*/
- WebMailAjaxRemoteStorage.prototype.createTwoFactor = function (fCallback)
+ RemoteStorage.prototype.createTwoFactor = function (fCallback)
{
this.defaultRequest(fCallback, 'CreateTwoFactorSecret');
};
@@ -88,7 +88,7 @@
/**
* @param {?Function} fCallback
*/
- WebMailAjaxRemoteStorage.prototype.clearTwoFactor = function (fCallback)
+ RemoteStorage.prototype.clearTwoFactor = function (fCallback)
{
this.defaultRequest(fCallback, 'ClearTwoFactorInfo');
};
@@ -96,7 +96,7 @@
/**
* @param {?Function} fCallback
*/
- WebMailAjaxRemoteStorage.prototype.showTwoFactorSecret = function (fCallback)
+ RemoteStorage.prototype.showTwoFactorSecret = function (fCallback)
{
this.defaultRequest(fCallback, 'ShowTwoFactorSecret');
};
@@ -105,7 +105,7 @@
* @param {?Function} fCallback
* @param {string} sCode
*/
- WebMailAjaxRemoteStorage.prototype.testTwoFactor = function (fCallback, sCode)
+ RemoteStorage.prototype.testTwoFactor = function (fCallback, sCode)
{
this.defaultRequest(fCallback, 'TestTwoFactorInfo', {
'Code': sCode
@@ -116,7 +116,7 @@
* @param {?Function} fCallback
* @param {boolean} bEnable
*/
- WebMailAjaxRemoteStorage.prototype.enableTwoFactor = function (fCallback, bEnable)
+ RemoteStorage.prototype.enableTwoFactor = function (fCallback, bEnable)
{
this.defaultRequest(fCallback, 'EnableTwoFactor', {
'Enable': bEnable ? '1' : '0'
@@ -126,7 +126,7 @@
/**
* @param {?Function} fCallback
*/
- WebMailAjaxRemoteStorage.prototype.clearTwoFactorInfo = function (fCallback)
+ RemoteStorage.prototype.clearTwoFactorInfo = function (fCallback)
{
this.defaultRequest(fCallback, 'ClearTwoFactorInfo');
};
@@ -134,7 +134,7 @@
/**
* @param {?Function} fCallback
*/
- WebMailAjaxRemoteStorage.prototype.contactsSync = function (fCallback)
+ RemoteStorage.prototype.contactsSync = function (fCallback)
{
this.defaultRequest(fCallback, 'ContactsSync', null, Consts.Defaults.ContactsSyncAjaxTimeout);
};
@@ -146,7 +146,7 @@
* @param {string} sUser
* @param {string} sPassword
*/
- WebMailAjaxRemoteStorage.prototype.saveContactsSyncData = function (fCallback, bEnable, sUrl, sUser, sPassword)
+ RemoteStorage.prototype.saveContactsSyncData = function (fCallback, bEnable, sUrl, sUser, sPassword)
{
this.defaultRequest(fCallback, 'SaveContactsSyncData', {
'Enable': bEnable ? '1' : '0',
@@ -162,7 +162,7 @@
* @param {string} sLogin
* @param {string} sPassword
*/
- WebMailAjaxRemoteStorage.prototype.accountAdd = function (fCallback, sEmail, sLogin, sPassword)
+ RemoteStorage.prototype.accountAdd = function (fCallback, sEmail, sLogin, sPassword)
{
this.defaultRequest(fCallback, 'AccountAdd', {
'Email': sEmail,
@@ -175,7 +175,7 @@
* @param {?Function} fCallback
* @param {string} sEmailToDelete
*/
- WebMailAjaxRemoteStorage.prototype.accountDelete = function (fCallback, sEmailToDelete)
+ RemoteStorage.prototype.accountDelete = function (fCallback, sEmailToDelete)
{
this.defaultRequest(fCallback, 'AccountDelete', {
'EmailToDelete': sEmailToDelete
@@ -190,7 +190,7 @@
* @param {string} sReplyTo
* @param {string} sBcc
*/
- WebMailAjaxRemoteStorage.prototype.identityUpdate = function (fCallback, sId, sEmail, sName, sReplyTo, sBcc)
+ RemoteStorage.prototype.identityUpdate = function (fCallback, sId, sEmail, sName, sReplyTo, sBcc)
{
this.defaultRequest(fCallback, 'IdentityUpdate', {
'Id': sId,
@@ -205,7 +205,7 @@
* @param {?Function} fCallback
* @param {string} sIdToDelete
*/
- WebMailAjaxRemoteStorage.prototype.identityDelete = function (fCallback, sIdToDelete)
+ RemoteStorage.prototype.identityDelete = function (fCallback, sIdToDelete)
{
this.defaultRequest(fCallback, 'IdentityDelete', {
'IdToDelete': sIdToDelete
@@ -215,7 +215,7 @@
/**
* @param {?Function} fCallback
*/
- WebMailAjaxRemoteStorage.prototype.accountsAndIdentities = function (fCallback)
+ RemoteStorage.prototype.accountsAndIdentities = function (fCallback)
{
this.defaultRequest(fCallback, 'AccountsAndIdentities');
};
@@ -228,7 +228,7 @@
* @param {string=} sSearch = ''
* @param {boolean=} bSilent = false
*/
- WebMailAjaxRemoteStorage.prototype.messageList = function (fCallback, sFolderFullNameRaw, iOffset, iLimit, sSearch, bSilent)
+ RemoteStorage.prototype.messageList = function (fCallback, sFolderFullNameRaw, iOffset, iLimit, sSearch, bSilent)
{
sFolderFullNameRaw = Utils.pString(sFolderFullNameRaw);
@@ -275,7 +275,7 @@
* @param {?Function} fCallback
* @param {Array} aDownloads
*/
- WebMailAjaxRemoteStorage.prototype.messageUploadAttachments = function (fCallback, aDownloads)
+ RemoteStorage.prototype.messageUploadAttachments = function (fCallback, aDownloads)
{
this.defaultRequest(fCallback, 'MessageUploadAttachments', {
'Attachments': aDownloads
@@ -288,7 +288,7 @@
* @param {number} iUid
* @return {boolean}
*/
- WebMailAjaxRemoteStorage.prototype.message = function (fCallback, sFolderFullNameRaw, iUid)
+ RemoteStorage.prototype.message = function (fCallback, sFolderFullNameRaw, iUid)
{
sFolderFullNameRaw = Utils.pString(sFolderFullNameRaw);
iUid = Utils.pInt(iUid);
@@ -313,7 +313,7 @@
* @param {?Function} fCallback
* @param {Array} aExternals
*/
- WebMailAjaxRemoteStorage.prototype.composeUploadExternals = function (fCallback, aExternals)
+ RemoteStorage.prototype.composeUploadExternals = function (fCallback, aExternals)
{
this.defaultRequest(fCallback, 'ComposeUploadExternals', {
'Externals': aExternals
@@ -325,7 +325,7 @@
* @param {string} sUrl
* @param {string} sAccessToken
*/
- WebMailAjaxRemoteStorage.prototype.composeUploadDrive = function (fCallback, sUrl, sAccessToken)
+ RemoteStorage.prototype.composeUploadDrive = function (fCallback, sUrl, sAccessToken)
{
this.defaultRequest(fCallback, 'ComposeUploadDrive', {
'AccessToken': sAccessToken,
@@ -338,7 +338,7 @@
* @param {string} sFolder
* @param {Array=} aList = []
*/
- WebMailAjaxRemoteStorage.prototype.folderInformation = function (fCallback, sFolder, aList)
+ RemoteStorage.prototype.folderInformation = function (fCallback, sFolder, aList)
{
var
bRequest = true,
@@ -392,7 +392,7 @@
* @param {?Function} fCallback
* @param {Array} aFolders
*/
- WebMailAjaxRemoteStorage.prototype.folderInformationMultiply = function (fCallback, aFolders)
+ RemoteStorage.prototype.folderInformationMultiply = function (fCallback, aFolders)
{
this.defaultRequest(fCallback, 'FolderInformationMultiply', {
'Folders': aFolders
@@ -402,7 +402,7 @@
/**
* @param {?Function} fCallback
*/
- WebMailAjaxRemoteStorage.prototype.logout = function (fCallback)
+ RemoteStorage.prototype.logout = function (fCallback)
{
this.defaultRequest(fCallback, 'Logout');
};
@@ -413,7 +413,7 @@
* @param {Array} aUids
* @param {boolean} bSetFlagged
*/
- WebMailAjaxRemoteStorage.prototype.messageSetFlagged = function (fCallback, sFolderFullNameRaw, aUids, bSetFlagged)
+ RemoteStorage.prototype.messageSetFlagged = function (fCallback, sFolderFullNameRaw, aUids, bSetFlagged)
{
this.defaultRequest(fCallback, 'MessageSetFlagged', {
'Folder': sFolderFullNameRaw,
@@ -428,7 +428,7 @@
* @param {Array} aUids
* @param {boolean} bSetSeen
*/
- WebMailAjaxRemoteStorage.prototype.messageSetSeen = function (fCallback, sFolderFullNameRaw, aUids, bSetSeen)
+ RemoteStorage.prototype.messageSetSeen = function (fCallback, sFolderFullNameRaw, aUids, bSetSeen)
{
this.defaultRequest(fCallback, 'MessageSetSeen', {
'Folder': sFolderFullNameRaw,
@@ -442,7 +442,7 @@
* @param {string} sFolderFullNameRaw
* @param {boolean} bSetSeen
*/
- WebMailAjaxRemoteStorage.prototype.messageSetSeenToAll = function (fCallback, sFolderFullNameRaw, bSetSeen)
+ RemoteStorage.prototype.messageSetSeenToAll = function (fCallback, sFolderFullNameRaw, bSetSeen)
{
this.defaultRequest(fCallback, 'MessageSetSeenToAll', {
'Folder': sFolderFullNameRaw,
@@ -467,7 +467,7 @@
* @param {string} sInReplyTo
* @param {string} sReferences
*/
- WebMailAjaxRemoteStorage.prototype.saveMessage = function (fCallback, sMessageFolder, sMessageUid, sDraftFolder,
+ RemoteStorage.prototype.saveMessage = function (fCallback, sMessageFolder, sMessageUid, sDraftFolder,
sFrom, sTo, sCc, sBcc, sSubject, bTextIsHtml, sText, aAttachments, aDraftInfo, sInReplyTo, sReferences)
{
this.defaultRequest(fCallback, 'SaveMessage', {
@@ -497,7 +497,7 @@
* @param {string} sSubject
* @param {string} sText
*/
- WebMailAjaxRemoteStorage.prototype.sendReadReceiptMessage = function (fCallback, sMessageFolder, sMessageUid, sReadReceipt, sSubject, sText)
+ RemoteStorage.prototype.sendReadReceiptMessage = function (fCallback, sMessageFolder, sMessageUid, sReadReceipt, sSubject, sText)
{
this.defaultRequest(fCallback, 'SendReadReceiptMessage', {
'MessageFolder': sMessageFolder,
@@ -526,7 +526,7 @@
* @param {string} sReferences
* @param {boolean} bRequestReadReceipt
*/
- WebMailAjaxRemoteStorage.prototype.sendMessage = function (fCallback, sMessageFolder, sMessageUid, sSentFolder,
+ RemoteStorage.prototype.sendMessage = function (fCallback, sMessageFolder, sMessageUid, sSentFolder,
sFrom, sTo, sCc, sBcc, sSubject, bTextIsHtml, sText, aAttachments, aDraftInfo, sInReplyTo, sReferences, bRequestReadReceipt)
{
this.defaultRequest(fCallback, 'SendMessage', {
@@ -552,7 +552,7 @@
* @param {?Function} fCallback
* @param {Object} oData
*/
- WebMailAjaxRemoteStorage.prototype.saveSystemFolders = function (fCallback, oData)
+ RemoteStorage.prototype.saveSystemFolders = function (fCallback, oData)
{
this.defaultRequest(fCallback, 'SystemFoldersUpdate', oData);
};
@@ -561,7 +561,7 @@
* @param {?Function} fCallback
* @param {Object} oData
*/
- WebMailAjaxRemoteStorage.prototype.saveSettings = function (fCallback, oData)
+ RemoteStorage.prototype.saveSettings = function (fCallback, oData)
{
this.defaultRequest(fCallback, 'SettingsUpdate', oData);
};
@@ -571,7 +571,7 @@
* @param {string} sPrevPassword
* @param {string} sNewPassword
*/
- WebMailAjaxRemoteStorage.prototype.changePassword = function (fCallback, sPrevPassword, sNewPassword)
+ RemoteStorage.prototype.changePassword = function (fCallback, sPrevPassword, sNewPassword)
{
this.defaultRequest(fCallback, 'ChangePassword', {
'PrevPassword': sPrevPassword,
@@ -584,7 +584,7 @@
* @param {string} sNewFolderName
* @param {string} sParentName
*/
- WebMailAjaxRemoteStorage.prototype.folderCreate = function (fCallback, sNewFolderName, sParentName)
+ RemoteStorage.prototype.folderCreate = function (fCallback, sNewFolderName, sParentName)
{
this.defaultRequest(fCallback, 'FolderCreate', {
'Folder': sNewFolderName,
@@ -596,7 +596,7 @@
* @param {?Function} fCallback
* @param {string} sFolderFullNameRaw
*/
- WebMailAjaxRemoteStorage.prototype.folderDelete = function (fCallback, sFolderFullNameRaw)
+ RemoteStorage.prototype.folderDelete = function (fCallback, sFolderFullNameRaw)
{
this.defaultRequest(fCallback, 'FolderDelete', {
'Folder': sFolderFullNameRaw
@@ -608,7 +608,7 @@
* @param {string} sPrevFolderFullNameRaw
* @param {string} sNewFolderName
*/
- WebMailAjaxRemoteStorage.prototype.folderRename = function (fCallback, sPrevFolderFullNameRaw, sNewFolderName)
+ RemoteStorage.prototype.folderRename = function (fCallback, sPrevFolderFullNameRaw, sNewFolderName)
{
this.defaultRequest(fCallback, 'FolderRename', {
'Folder': sPrevFolderFullNameRaw,
@@ -620,7 +620,7 @@
* @param {?Function} fCallback
* @param {string} sFolderFullNameRaw
*/
- WebMailAjaxRemoteStorage.prototype.folderClear = function (fCallback, sFolderFullNameRaw)
+ RemoteStorage.prototype.folderClear = function (fCallback, sFolderFullNameRaw)
{
this.defaultRequest(fCallback, 'FolderClear', {
'Folder': sFolderFullNameRaw
@@ -632,7 +632,7 @@
* @param {string} sFolderFullNameRaw
* @param {boolean} bSubscribe
*/
- WebMailAjaxRemoteStorage.prototype.folderSetSubscribe = function (fCallback, sFolderFullNameRaw, bSubscribe)
+ RemoteStorage.prototype.folderSetSubscribe = function (fCallback, sFolderFullNameRaw, bSubscribe)
{
this.defaultRequest(fCallback, 'FolderSubscribe', {
'Folder': sFolderFullNameRaw,
@@ -647,7 +647,7 @@
* @param {Array} aUids
* @param {string=} sLearning
*/
- WebMailAjaxRemoteStorage.prototype.messagesMove = function (fCallback, sFolder, sToFolder, aUids, sLearning)
+ RemoteStorage.prototype.messagesMove = function (fCallback, sFolder, sToFolder, aUids, sLearning)
{
this.defaultRequest(fCallback, 'MessageMove', {
'FromFolder': sFolder,
@@ -663,7 +663,7 @@
* @param {string} sToFolder
* @param {Array} aUids
*/
- WebMailAjaxRemoteStorage.prototype.messagesCopy = function (fCallback, sFolder, sToFolder, aUids)
+ RemoteStorage.prototype.messagesCopy = function (fCallback, sFolder, sToFolder, aUids)
{
this.defaultRequest(fCallback, 'MessageCopy', {
'FromFolder': sFolder,
@@ -677,7 +677,7 @@
* @param {string} sFolder
* @param {Array} aUids
*/
- WebMailAjaxRemoteStorage.prototype.messagesDelete = function (fCallback, sFolder, aUids)
+ RemoteStorage.prototype.messagesDelete = function (fCallback, sFolder, aUids)
{
this.defaultRequest(fCallback, 'MessageDelete', {
'Folder': sFolder,
@@ -688,7 +688,7 @@
/**
* @param {?Function} fCallback
*/
- WebMailAjaxRemoteStorage.prototype.appDelayStart = function (fCallback)
+ RemoteStorage.prototype.appDelayStart = function (fCallback)
{
this.defaultRequest(fCallback, 'AppDelayStart');
};
@@ -696,7 +696,7 @@
/**
* @param {?Function} fCallback
*/
- WebMailAjaxRemoteStorage.prototype.quota = function (fCallback)
+ RemoteStorage.prototype.quota = function (fCallback)
{
this.defaultRequest(fCallback, 'Quota');
};
@@ -707,7 +707,7 @@
* @param {number} iLimit
* @param {string} sSearch
*/
- WebMailAjaxRemoteStorage.prototype.contacts = function (fCallback, iOffset, iLimit, sSearch)
+ RemoteStorage.prototype.contacts = function (fCallback, iOffset, iLimit, sSearch)
{
this.defaultRequest(fCallback, 'Contacts', {
'Offset': iOffset,
@@ -719,7 +719,7 @@
/**
* @param {?Function} fCallback
*/
- WebMailAjaxRemoteStorage.prototype.contactSave = function (fCallback, sRequestUid, sUid, sTags, aProperties)
+ RemoteStorage.prototype.contactSave = function (fCallback, sRequestUid, sUid, sTags, aProperties)
{
this.defaultRequest(fCallback, 'ContactSave', {
'RequestUid': sRequestUid,
@@ -733,7 +733,7 @@
* @param {?Function} fCallback
* @param {Array} aUids
*/
- WebMailAjaxRemoteStorage.prototype.contactsDelete = function (fCallback, aUids)
+ RemoteStorage.prototype.contactsDelete = function (fCallback, aUids)
{
this.defaultRequest(fCallback, 'ContactsDelete', {
'Uids': aUids.join(',')
@@ -745,7 +745,7 @@
* @param {string} sQuery
* @param {number} iPage
*/
- WebMailAjaxRemoteStorage.prototype.suggestions = function (fCallback, sQuery, iPage)
+ RemoteStorage.prototype.suggestions = function (fCallback, sQuery, iPage)
{
this.defaultRequest(fCallback, 'Suggestions', {
'Query': sQuery,
@@ -756,7 +756,7 @@
/**
* @param {?Function} fCallback
*/
- WebMailAjaxRemoteStorage.prototype.facebookUser = function (fCallback)
+ RemoteStorage.prototype.facebookUser = function (fCallback)
{
this.defaultRequest(fCallback, 'SocialFacebookUserInformation');
};
@@ -764,7 +764,7 @@
/**
* @param {?Function} fCallback
*/
- WebMailAjaxRemoteStorage.prototype.facebookDisconnect = function (fCallback)
+ RemoteStorage.prototype.facebookDisconnect = function (fCallback)
{
this.defaultRequest(fCallback, 'SocialFacebookDisconnect');
};
@@ -772,7 +772,7 @@
/**
* @param {?Function} fCallback
*/
- WebMailAjaxRemoteStorage.prototype.twitterUser = function (fCallback)
+ RemoteStorage.prototype.twitterUser = function (fCallback)
{
this.defaultRequest(fCallback, 'SocialTwitterUserInformation');
};
@@ -780,7 +780,7 @@
/**
* @param {?Function} fCallback
*/
- WebMailAjaxRemoteStorage.prototype.twitterDisconnect = function (fCallback)
+ RemoteStorage.prototype.twitterDisconnect = function (fCallback)
{
this.defaultRequest(fCallback, 'SocialTwitterDisconnect');
};
@@ -788,7 +788,7 @@
/**
* @param {?Function} fCallback
*/
- WebMailAjaxRemoteStorage.prototype.googleUser = function (fCallback)
+ RemoteStorage.prototype.googleUser = function (fCallback)
{
this.defaultRequest(fCallback, 'SocialGoogleUserInformation');
};
@@ -796,7 +796,7 @@
/**
* @param {?Function} fCallback
*/
- WebMailAjaxRemoteStorage.prototype.googleDisconnect = function (fCallback)
+ RemoteStorage.prototype.googleDisconnect = function (fCallback)
{
this.defaultRequest(fCallback, 'SocialGoogleDisconnect');
};
@@ -804,11 +804,11 @@
/**
* @param {?Function} fCallback
*/
- WebMailAjaxRemoteStorage.prototype.socialUsers = function (fCallback)
+ RemoteStorage.prototype.socialUsers = function (fCallback)
{
this.defaultRequest(fCallback, 'SocialUsers');
};
- module.exports = new WebMailAjaxRemoteStorage();
+ module.exports = new RemoteStorage();
}(module, require));
\ No newline at end of file
diff --git a/dev/Storages/AppSettings.js b/dev/Storages/SettingsStorage.js
similarity index 55%
rename from dev/Storages/AppSettings.js
rename to dev/Storages/SettingsStorage.js
index 314f1263e..d23f6f6ac 100644
--- a/dev/Storages/AppSettings.js
+++ b/dev/Storages/SettingsStorage.js
@@ -5,31 +5,26 @@
'use strict';
var
- AppData = require('AppData'),
Utils = require('Utils')
;
/**
* @constructor
*/
- function AppSettings()
+ function SettingsStorage()
{
- this.oSettings = null;
+ this.oSettings = require('AppData');
+ this.oSettings = Utils.isNormal(this.oSettings) ? this.oSettings : {};
}
- AppSettings.prototype.oSettings = null;
+ SettingsStorage.prototype.oSettings = null;
/**
* @param {string} sName
* @return {?}
*/
- AppSettings.prototype.settingsGet = function (sName)
+ SettingsStorage.prototype.settingsGet = function (sName)
{
- if (null === this.oSettings)
- {
- this.oSettings = Utils.isNormal(AppData) ? AppData : {};
- }
-
return Utils.isUnd(this.oSettings[sName]) ? null : this.oSettings[sName];
};
@@ -37,13 +32,8 @@
* @param {string} sName
* @param {?} mValue
*/
- AppSettings.prototype.settingsSet = function (sName, mValue)
+ SettingsStorage.prototype.settingsSet = function (sName, mValue)
{
- if (null === this.oSettings)
- {
- this.oSettings = Utils.isNormal(AppData) ? AppData : {};
- }
-
this.oSettings[sName] = mValue;
};
@@ -51,13 +41,13 @@
* @param {string} sName
* @return {boolean}
*/
- AppSettings.prototype.capa = function (sName)
+ SettingsStorage.prototype.capa = function (sName)
{
var mCapa = this.settingsGet('Capa');
return Utils.isArray(mCapa) && Utils.isNormal(sName) && -1 < Utils.inArray(sName, mCapa);
};
- module.exports = new AppSettings();
+ module.exports = new SettingsStorage();
}(module, require));
\ No newline at end of file
diff --git a/dev/Styles/Login.less b/dev/Styles/Login.less
index c247d2bfa..5d04fd2e4 100644
--- a/dev/Styles/Login.less
+++ b/dev/Styles/Login.less
@@ -1,12 +1,4 @@
-.rl-view-model {
- &.RL-Login, &.RL-LoginNew, &.RL-AdminLogin {
- position: relative;
- height: 100%;
- z-index: 5;
- }
-}
-
.b-login-content {
height: 100%;
diff --git a/dev/Styles/_End.less b/dev/Styles/_End.less
index e69de29bb..64abb8c8e 100644
--- a/dev/Styles/_End.less
+++ b/dev/Styles/_End.less
@@ -0,0 +1,8 @@
+
+.rl-view-model {
+ &.RL-Login, &.RL-LoginNew, &.RL-AdminLogin, &.RL-About {
+ position: relative;
+ height: 100%;
+ z-index: 5;
+ }
+}
\ No newline at end of file
diff --git a/dev/ViewModels/AboutViewModel.js b/dev/ViewModels/AboutViewModel.js
new file mode 100644
index 000000000..e7ed97562
--- /dev/null
+++ b/dev/ViewModels/AboutViewModel.js
@@ -0,0 +1,33 @@
+/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
+
+(function (module, require) {
+
+ 'use strict';
+
+ var
+ ko = require('ko'),
+
+ kn = require('App:Knoin'),
+ Settings = require('Storage:Settings'),
+
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
+ ;
+
+ /**
+ * @constructor
+ * @extends KnoinAbstractViewModel
+ */
+ function AboutViewModel()
+ {
+ KnoinAbstractViewModel.call(this, 'Center', 'About');
+
+ this.version = ko.observable(Settings.settingsGet('Version'));
+
+ kn.constructorEnd(this);
+ }
+
+ kn.extendAsViewModel('AboutViewModel', AboutViewModel);
+
+ module.exports = AboutViewModel;
+
+}(module, require));
\ No newline at end of file
diff --git a/dev/ViewModels/AbstractSystemDropDownViewModel.js b/dev/ViewModels/AbstractSystemDropDownViewModel.js
index bd0580200..3eeddc120 100644
--- a/dev/ViewModels/AbstractSystemDropDownViewModel.js
+++ b/dev/ViewModels/AbstractSystemDropDownViewModel.js
@@ -14,15 +14,11 @@
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- AppSettings = require('../Storages/AppSettings.js'),
- Data = require('../Storages/WebMailDataStorage.js'),
- Remote = require('../Storages/WebMailAjaxRemoteStorage.js'),
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote'),
- PopupsKeyboardShortcutsHelpViewModel = require('../ViewModels/Popups/PopupsKeyboardShortcutsHelpViewModel.js'),
- PopupsAddAccountViewModel = require('../ViewModels/Popups/PopupsKeyboardShortcutsHelpViewModel.js'),
-
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -39,7 +35,7 @@
this.accountMenuDropdownTrigger = ko.observable(false);
- this.capaAdditionalAccounts = AppSettings.capa(Enums.Capa.AdditionalAccounts);
+ this.capaAdditionalAccounts = Settings.capa(Enums.Capa.AdditionalAccounts);
this.loading = ko.computed(function () {
return this.accountsLoading();
@@ -71,32 +67,32 @@
AbstractSystemDropDownViewModel.prototype.settingsClick = function ()
{
- kn.setHash(LinkBuilder.settings());
+ require('App:Knoin').setHash(LinkBuilder.settings());
};
AbstractSystemDropDownViewModel.prototype.settingsHelp = function ()
{
- kn.showScreenPopup(PopupsKeyboardShortcutsHelpViewModel);
+ require('App:Knoin').showScreenPopup(require('View:Popup:KeyboardShortcutsHelp'));
};
AbstractSystemDropDownViewModel.prototype.addAccountClick = function ()
{
if (this.capaAdditionalAccounts)
{
- kn.showScreenPopup(PopupsAddAccountViewModel);
+ require('App:Knoin').showScreenPopup(require('View:Popup:AddAccount'));
}
};
AbstractSystemDropDownViewModel.prototype.logoutClick = function ()
{
- var App = require('../Apps/RainLoopApp.js');
Remote.logout(function () {
if (window.__rlah_clear)
{
window.__rlah_clear();
}
- App.loginAndLogoutReload(true, AppSettings.settingsGet('ParentEmail') && 0 < AppSettings.settingsGet('ParentEmail').length);
+ require('App:RainLoop').loginAndLogoutReload(true,
+ Settings.settingsGet('ParentEmail') && 0 < Settings.settingsGet('ParentEmail').length);
});
};
@@ -114,7 +110,7 @@
key('shift+/', [Enums.KeyState.MessageList, Enums.KeyState.MessageView, Enums.KeyState.Settings], function () {
if (self.viewModelVisibility())
{
- kn.showScreenPopup(PopupsKeyboardShortcutsHelpViewModel);
+ require('App:Knoin').showScreenPopup(require('View:Popup:KeyboardShortcutsHelp'));
return false;
}
});
diff --git a/dev/ViewModels/AdminLoginViewModel.js b/dev/ViewModels/AdminLoginViewModel.js
index bfacec131..93dfeaf83 100644
--- a/dev/ViewModels/AdminLoginViewModel.js
+++ b/dev/ViewModels/AdminLoginViewModel.js
@@ -11,10 +11,10 @@
Enums = require('Enums'),
Utils = require('Utils'),
- Remote = require('../Storages/AdminAjaxRemoteStorage.js'),
+ Remote = require('Storage:Admin:Remote'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -64,8 +64,7 @@
{
if (oData.Result)
{
- var App = require('../Apps/AdminApp.js');
- App.loginAndLogoutReload();
+ require('App:Admin').loginAndLogoutReload();
}
else if (oData.ErrorCode)
{
diff --git a/dev/ViewModels/AdminMenuViewModel.js b/dev/ViewModels/AdminSettingsMenuViewModel.js
similarity index 88%
rename from dev/ViewModels/AdminMenuViewModel.js
rename to dev/ViewModels/AdminSettingsMenuViewModel.js
index 27cda0063..22857b4ba 100644
--- a/dev/ViewModels/AdminMenuViewModel.js
+++ b/dev/ViewModels/AdminSettingsMenuViewModel.js
@@ -5,9 +5,9 @@
'use strict';
var
- kn = require('kn'),
+ kn = require('App:Knoin'),
Globals = require('Globals'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
diff --git a/dev/ViewModels/AdminPaneViewModel.js b/dev/ViewModels/AdminSettingsPaneViewModel.js
similarity index 57%
rename from dev/ViewModels/AdminPaneViewModel.js
rename to dev/ViewModels/AdminSettingsPaneViewModel.js
index 5fa1c8ac3..d739b5ced 100644
--- a/dev/ViewModels/AdminPaneViewModel.js
+++ b/dev/ViewModels/AdminSettingsPaneViewModel.js
@@ -7,12 +7,12 @@
var
ko = require('ko'),
- AppSettings = require('../Storages/AppSettings.js'),
- Data = require('../Storages/AdminDataStorage.js'),
- Remote = require('../Storages/AdminAjaxRemoteStorage.js'),
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:Admin:Data'),
+ Remote = require('Storage:Admin:Remote'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -23,8 +23,8 @@
{
KnoinAbstractViewModel.call(this, 'Right', 'AdminPane');
- this.adminDomain = ko.observable(AppSettings.settingsGet('AdminDomain'));
- this.version = ko.observable(AppSettings.settingsGet('Version'));
+ this.adminDomain = ko.observable(Settings.settingsGet('AdminDomain'));
+ this.version = ko.observable(Settings.settingsGet('Version'));
this.adminManLoadingVisibility = Data.adminManLoadingVisibility;
@@ -36,8 +36,7 @@
AdminPaneViewModel.prototype.logoutClick = function ()
{
Remote.adminLogout(function () {
- var App = require('../Apps/AdminApp.js');
- App.loginAndLogoutReload();
+ require('App:Admin').loginAndLogoutReload();
});
};
diff --git a/dev/ViewModels/LoginViewModel.js b/dev/ViewModels/LoginViewModel.js
index 344918933..fb98aeded 100644
--- a/dev/ViewModels/LoginViewModel.js
+++ b/dev/ViewModels/LoginViewModel.js
@@ -14,14 +14,12 @@
Enums = require('Enums'),
LinkBuilder = require('LinkBuilder'),
- AppSettings = require('../Storages/AppSettings.js'),
- Data = require('../Storages/WebMailDataStorage.js'),
- Remote = require('../Storages/WebMailAjaxRemoteStorage.js'),
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel'),
-
- PopupsLanguagesViewModel = require('../ViewModels/Popups/PopupsLanguagesViewModel.js')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -42,9 +40,9 @@
this.additionalCode.visibility = ko.observable(false);
this.additionalCodeSignMe = ko.observable(false);
- this.logoImg = Utils.trim(AppSettings.settingsGet('LoginLogo'));
- this.loginDescription = Utils.trim(AppSettings.settingsGet('LoginDescription'));
- this.logoCss = Utils.trim(AppSettings.settingsGet('LoginCss'));
+ this.logoImg = Utils.trim(Settings.settingsGet('LoginLogo'));
+ this.loginDescription = Utils.trim(Settings.settingsGet('LoginDescription'));
+ this.logoCss = Utils.trim(Settings.settingsGet('LoginCss'));
this.emailError = ko.observable(false);
this.passwordError = ko.observable(false);
@@ -133,8 +131,7 @@
}
else
{
- var App = require('../Apps/RainLoopApp.js');
- App.loginAndLogoutReload();
+ require('App:RainLoop').loginAndLogoutReload();
}
}
else if (oData.ErrorCode)
@@ -167,7 +164,7 @@
}, this)
;
- if (!!AppSettings.settingsGet('UseRsaEncryption') && Utils.rsaEncode.supported)
+ if (!!Settings.settingsGet('UseRsaEncryption') && Utils.rsaEncode.supported)
{
Remote.getPublicKey(_.bind(function (sResult, oData) {
@@ -269,7 +266,7 @@
this.emailFocus(true);
}
- if (AppSettings.settingsGet('UserLanguage'))
+ if (Settings.settingsGet('UserLanguage'))
{
$.cookie('rllang', Data.language(), {'expires': 30});
}
@@ -287,15 +284,13 @@
{
var
self = this,
- sJsHash = AppSettings.settingsGet('JsHash'),
+ sJsHash = Settings.settingsGet('JsHash'),
fSocial = function (iErrorCode) {
iErrorCode = Utils.pInt(iErrorCode);
if (0 === iErrorCode)
{
self.submitRequest(true);
-
- var App = require('../Apps/RainLoopApp.js');
- App.loginAndLogoutReload();
+ require('App:RainLoop').loginAndLogoutReload();
}
else
{
@@ -304,11 +299,11 @@
}
;
- this.facebookLoginEnabled(!!AppSettings.settingsGet('AllowFacebookSocial'));
- this.twitterLoginEnabled(!!AppSettings.settingsGet('AllowTwitterSocial'));
- this.googleLoginEnabled(!!AppSettings.settingsGet('AllowGoogleSocial'));
+ this.facebookLoginEnabled(!!Settings.settingsGet('AllowFacebookSocial'));
+ this.twitterLoginEnabled(!!Settings.settingsGet('AllowTwitterSocial'));
+ this.googleLoginEnabled(!!Settings.settingsGet('AllowGoogleSocial'));
- switch ((AppSettings.settingsGet('SignMe') || 'unused').toLowerCase())
+ switch ((Settings.settingsGet('SignMe') || 'unused').toLowerCase())
{
case Enums.LoginSignMeTypeAsString.DefaultOff:
this.signMeType(Enums.LoginSignMeType.DefaultOff);
@@ -367,7 +362,7 @@
LoginViewModel.prototype.selectLanguage = function ()
{
- kn.showScreenPopup(PopupsLanguagesViewModel);
+ kn.showScreenPopup(require('View:Popup:Languages'));
};
module.exports = LoginViewModel;
diff --git a/dev/ViewModels/MailBoxFolderListViewModel.js b/dev/ViewModels/MailBoxFolderListViewModel.js
index 9d2ee3ba7..092c160fd 100644
--- a/dev/ViewModels/MailBoxFolderListViewModel.js
+++ b/dev/ViewModels/MailBoxFolderListViewModel.js
@@ -16,16 +16,12 @@
Globals = require('Globals'),
LinkBuilder = require('LinkBuilder'),
- AppSettings = require('../Storages/AppSettings.js'),
- Cache = require('../Storages/WebMailCacheStorage.js'),
- Data = require('../Storages/WebMailDataStorage.js'),
+ Settings = require('Storage:Settings'),
+ Cache = require('Storage:RainLoop:Cache'),
+ Data = require('Storage:RainLoop:Data'),
- PopupsComposeViewModel = require('./Popups/PopupsComposeViewModel.js'),
- PopupsFolderCreateViewModel = require('./Popups/PopupsFolderCreateViewModel.js'),
- PopupsContactsViewModel = require('./Popups/PopupsContactsViewModel.js'),
-
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -48,7 +44,7 @@
this.iDropOverTimer = 0;
- this.allowContacts = !!AppSettings.settingsGet('ContactsIsAllowed');
+ this.allowContacts = !!Settings.settingsGet('ContactsIsAllowed');
kn.constructorEnd(this);
}
@@ -60,10 +56,7 @@
this.oContentVisible = $('.b-content', oDom);
this.oContentScrollable = $('.content', this.oContentVisible);
- var
- self = this,
- App = require('../Apps/RainLoopApp.js')
- ;
+ var self = this;
oDom
.on('click', '.b-folders .e-item .e-link .e-collapsed-sign', function (oEvent) {
@@ -76,7 +69,7 @@
if (oFolder && oEvent)
{
bCollapsed = oFolder.collapsed();
- App.setExpandedFolder(oFolder.fullNameHash, bCollapsed);
+ require('App:RainLoop').setExpandedFolder(oFolder.fullNameHash, bCollapsed);
oFolder.collapsed(!bCollapsed);
oEvent.preventDefault();
@@ -159,7 +152,7 @@
if (oFolder)
{
bCollapsed = oFolder.collapsed();
- App.setExpandedFolder(oFolder.fullNameHash, bCollapsed);
+ require('App:RainLoop').setExpandedFolder(oFolder.fullNameHash, bCollapsed);
oFolder.collapsed(!bCollapsed);
}
}
@@ -186,10 +179,9 @@
window.clearTimeout(this.iDropOverTimer);
if (oFolder && oFolder.collapsed())
{
- var App = require('../Apps/RainLoopApp.js');
this.iDropOverTimer = window.setTimeout(function () {
oFolder.collapsed(false);
- App.setExpandedFolder(oFolder.fullNameHash, true);
+ require('App:RainLoop').setExpandedFolder(oFolder.fullNameHash, true);
Utils.windowResize();
}, 500);
}
@@ -242,7 +234,6 @@
if (oToFolder && oUi && oUi.helper)
{
var
- App = require('../Apps/RainLoopApp.js'),
sFromFolderFullNameRaw = oUi.helper.data('rl-folder'),
bCopy = $html.hasClass('rl-ctrl-key-pressed'),
aUids = oUi.helper.data('rl-uids')
@@ -250,19 +241,19 @@
if (Utils.isNormal(sFromFolderFullNameRaw) && '' !== sFromFolderFullNameRaw && Utils.isArray(aUids))
{
- App.moveMessagesToFolder(sFromFolderFullNameRaw, aUids, oToFolder.fullNameRaw, bCopy);
+ require('App:RainLoop').moveMessagesToFolder(sFromFolderFullNameRaw, aUids, oToFolder.fullNameRaw, bCopy);
}
}
};
MailBoxFolderListViewModel.prototype.composeClick = function ()
{
- kn.showScreenPopup(PopupsComposeViewModel);
+ kn.showScreenPopup(require('View:Popup:Compose'));
};
MailBoxFolderListViewModel.prototype.createFolder = function ()
{
- kn.showScreenPopup(PopupsFolderCreateViewModel);
+ kn.showScreenPopup(require('View:Popup:FolderCreate'));
};
MailBoxFolderListViewModel.prototype.configureFolders = function ()
@@ -274,7 +265,7 @@
{
if (this.allowContacts)
{
- kn.showScreenPopup(PopupsContactsViewModel);
+ kn.showScreenPopup(require('View:Popup:Contacts'));
}
};
diff --git a/dev/ViewModels/MailBoxMessageListViewModel.js b/dev/ViewModels/MailBoxMessageListViewModel.js
index e16e8908a..d2026aa91 100644
--- a/dev/ViewModels/MailBoxMessageListViewModel.js
+++ b/dev/ViewModels/MailBoxMessageListViewModel.js
@@ -20,17 +20,13 @@
Events = require('Events'),
Selector = require('Selector'),
- AppSettings = require('../Storages/AppSettings.js'),
- Cache = require('../Storages/WebMailCacheStorage.js'),
- Data = require('../Storages/WebMailDataStorage.js'),
- Remote = require('../Storages/WebMailAjaxRemoteStorage.js'),
+ Settings = require('Storage:Settings'),
+ Cache = require('Storage:RainLoop:Cache'),
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel'),
-
- PopupsComposeViewModel = require('./Popups/PopupsComposeViewModel.js'),
- PopupsAdvancedSearchViewModel = require('./Popups/PopupsAdvancedSearchViewModel.js'),
- PopupsFolderClearViewModel = require('./Popups/PopupsFolderClearViewModel.js')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -39,15 +35,13 @@
*/
function MailBoxMessageListViewModel()
{
- var App = require('../Apps/RainLoopApp.js');
-
KnoinAbstractViewModel.call(this, 'Right', 'MailMessageList');
this.sLastUid = null;
this.bPrefetch = false;
this.emptySubjectValue = '';
- this.hideDangerousActions = !!AppSettings.settingsGet('HideDangerousActions');
+ this.hideDangerousActions = !!Settings.settingsGet('HideDangerousActions');
this.popupVisibility = Globals.popupVisibility;
@@ -175,39 +169,40 @@
this.canBeMoved = this.hasCheckedOrSelectedLines;
this.clearCommand = Utils.createCommand(this, function () {
- kn.showScreenPopup(PopupsFolderClearViewModel, [Data.currentFolder()]);
+ kn.showScreenPopup(require('View:Popup:FolderClear'), [Data.currentFolder()]);
});
this.multyForwardCommand = Utils.createCommand(this, function () {
- kn.showScreenPopup(PopupsComposeViewModel, [Enums.ComposeType.ForwardAsAttachment, Data.messageListCheckedOrSelected()]);
+ kn.showScreenPopup(require('View:Popup:Compose'), [
+ Enums.ComposeType.ForwardAsAttachment, Data.messageListCheckedOrSelected()]);
}, this.canBeMoved);
this.deleteWithoutMoveCommand = Utils.createCommand(this, function () {
- App.deleteMessagesFromFolder(Enums.FolderType.Trash,
+ require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.Trash,
Data.currentFolderFullNameRaw(),
Data.messageListCheckedOrSelectedUidsWithSubMails(), false);
}, this.canBeMoved);
this.deleteCommand = Utils.createCommand(this, function () {
- App.deleteMessagesFromFolder(Enums.FolderType.Trash,
+ require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.Trash,
Data.currentFolderFullNameRaw(),
Data.messageListCheckedOrSelectedUidsWithSubMails(), true);
}, this.canBeMoved);
this.archiveCommand = Utils.createCommand(this, function () {
- App.deleteMessagesFromFolder(Enums.FolderType.Archive,
+ require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.Archive,
Data.currentFolderFullNameRaw(),
Data.messageListCheckedOrSelectedUidsWithSubMails(), true);
}, this.canBeMoved);
this.spamCommand = Utils.createCommand(this, function () {
- App.deleteMessagesFromFolder(Enums.FolderType.Spam,
+ require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.Spam,
Data.currentFolderFullNameRaw(),
Data.messageListCheckedOrSelectedUidsWithSubMails(), true);
}, this.canBeMoved);
this.notSpamCommand = Utils.createCommand(this, function () {
- App.deleteMessagesFromFolder(Enums.FolderType.NotSpam,
+ require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.NotSpam,
Data.currentFolderFullNameRaw(),
Data.messageListCheckedOrSelectedUidsWithSubMails(), true);
}, this.canBeMoved);
@@ -217,7 +212,7 @@
this.reloadCommand = Utils.createCommand(this, function () {
if (!Data.messageListCompleteLoadingThrottle())
{
- App.reloadMessageList(false, true);
+ require('App:RainLoop').reloadMessageList(false, true);
}
});
@@ -301,14 +296,14 @@
/**
* @param {string} sToFolderFullNameRaw
+ * @param {boolean} bCopy
* @return {boolean}
*/
MailBoxMessageListViewModel.prototype.moveSelectedMessagesToFolder = function (sToFolderFullNameRaw, bCopy)
{
if (this.canBeMoved())
{
- var App = require('../Apps/RainLoopApp.js');
- App.moveMessagesToFolder(
+ require('App:RainLoop').moveMessagesToFolder(
Data.currentFolderFullNameRaw(),
Data.messageListCheckedOrSelectedUidsWithSubMails(), sToFolderFullNameRaw, bCopy);
}
@@ -395,8 +390,7 @@
var
aUids = [],
oFolder = null,
- iAlreadyUnread = 0,
- App = require('../Apps/RainLoopApp.js')
+ iAlreadyUnread = 0
;
if (Utils.isUnd(aMessages))
@@ -464,7 +458,7 @@
break;
}
- App.reloadFlagsCurrentMessageListAndMessageFromCache();
+ require('App:RainLoop').reloadFlagsCurrentMessageListAndMessageFromCache();
}
};
@@ -476,8 +470,7 @@
{
var
oFolder = null,
- aMessages = Data.messageList(),
- App = require('../Apps/RainLoopApp.js')
+ aMessages = Data.messageList()
;
if ('' !== sFolderFullNameRaw)
@@ -516,7 +509,7 @@
break;
}
- App.reloadFlagsCurrentMessageListAndMessageFromCache();
+ require('App:RainLoop').reloadFlagsCurrentMessageListAndMessageFromCache();
}
}
};
@@ -629,10 +622,7 @@
MailBoxMessageListViewModel.prototype.onBuild = function (oDom)
{
- var
- self = this,
- App = require('../Apps/RainLoopApp.js')
- ;
+ var self = this;
this.oContentVisible = $('.b-content', oDom);
this.oContentScrollable = $('.content', this.oContentVisible);
@@ -663,7 +653,7 @@
oMessage.lastInCollapsedThreadLoading(true);
oMessage.lastInCollapsedThread(!oMessage.lastInCollapsedThread());
- App.reloadMessageList();
+ require('App:RainLoop').reloadMessageList();
}
return false;
@@ -700,7 +690,7 @@
this.initUploaderForAppend();
this.initShortcuts();
- if (!Globals.bMobileDevice && AppSettings.capa(Enums.Capa.Prefetch) && ifvisible)
+ if (!Globals.bMobileDevice && Settings.capa(Enums.Capa.Prefetch) && ifvisible)
{
ifvisible.setIdleDuration(10);
@@ -759,7 +749,7 @@
// write/compose (open compose popup)
key('w,c', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
- kn.showScreenPopup(PopupsComposeViewModel);
+ kn.showScreenPopup(require('View:Popup:Compose'));
return false;
});
@@ -869,12 +859,12 @@
MailBoxMessageListViewModel.prototype.composeClick = function ()
{
- kn.showScreenPopup(PopupsComposeViewModel);
+ kn.showScreenPopup(require('View:Popup:Compose'));
};
MailBoxMessageListViewModel.prototype.advancedSearchClick = function ()
{
- kn.showScreenPopup(PopupsAdvancedSearchViewModel);
+ kn.showScreenPopup(require('View:Popup:AdvancedSearch'));
};
MailBoxMessageListViewModel.prototype.quotaTooltip = function ()
@@ -888,7 +878,7 @@
MailBoxMessageListViewModel.prototype.initUploaderForAppend = function ()
{
- if (!AppSettings.settingsGet('AllowAppendMessage') || !this.dragOverArea())
+ if (!Settings.settingsGet('AllowAppendMessage') || !this.dragOverArea())
{
return false;
}
@@ -933,7 +923,7 @@
return false;
}, this))
.on('onComplete', _.bind(function () {
- require('../Apps/RainLoopApp.js').reloadMessageList(true, true);
+ require('App:RainLoop').reloadMessageList(true, true);
}, this))
;
diff --git a/dev/ViewModels/MailBoxMessageViewViewModel.js b/dev/ViewModels/MailBoxMessageViewViewModel.js
index bfdb3e54a..a969c4ff0 100644
--- a/dev/ViewModels/MailBoxMessageViewViewModel.js
+++ b/dev/ViewModels/MailBoxMessageViewViewModel.js
@@ -16,14 +16,12 @@
Utils = require('Utils'),
Events = require('Events'),
- Cache = require('../Storages/WebMailCacheStorage.js'),
- Data = require('../Storages/WebMailDataStorage.js'),
- Remote = require('../Storages/WebMailAjaxRemoteStorage.js'),
+ Cache = require('Storage:RainLoop:Cache'),
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote'),
- PopupsComposeViewModel = require('./Popups/PopupsComposeViewModel.js'),
-
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -37,7 +35,6 @@
var
self = this,
sLastEmail = '',
- App = require('../Apps/RainLoopApp.js'),
createCommandHelper = function (sType) {
return Utils.createCommand(self, function () {
this.replyOrforward(sType);
@@ -102,7 +99,7 @@
this.deleteCommand = Utils.createCommand(this, function () {
if (this.message())
{
- App.deleteMessagesFromFolder(Enums.FolderType.Trash,
+ require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.Trash,
this.message().folderFullNameRaw,
[this.message().uid], true);
}
@@ -111,7 +108,7 @@
this.deleteWithoutMoveCommand = Utils.createCommand(this, function () {
if (this.message())
{
- App.deleteMessagesFromFolder(Enums.FolderType.Trash,
+ require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.Trash,
Data.currentFolderFullNameRaw(),
[this.message().uid], false);
}
@@ -120,7 +117,7 @@
this.archiveCommand = Utils.createCommand(this, function () {
if (this.message())
{
- App.deleteMessagesFromFolder(Enums.FolderType.Archive,
+ require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.Archive,
this.message().folderFullNameRaw,
[this.message().uid], true);
}
@@ -129,7 +126,7 @@
this.spamCommand = Utils.createCommand(this, function () {
if (this.message())
{
- App.deleteMessagesFromFolder(Enums.FolderType.Spam,
+ require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.Spam,
this.message().folderFullNameRaw,
[this.message().uid], true);
}
@@ -138,7 +135,7 @@
this.notSpamCommand = Utils.createCommand(this, function () {
if (this.message())
{
- App.deleteMessagesFromFolder(Enums.FolderType.NotSpam,
+ require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.NotSpam,
this.message().folderFullNameRaw,
[this.message().uid], true);
}
@@ -336,16 +333,12 @@
*/
MailBoxMessageViewViewModel.prototype.replyOrforward = function (sType)
{
- kn.showScreenPopup(PopupsComposeViewModel, [sType, Data.message()]);
+ kn.showScreenPopup(require('View:Popup:Compose'), [sType, Data.message()]);
};
MailBoxMessageViewViewModel.prototype.onBuild = function (oDom)
{
- var
- self = this,
- App = require('../Apps/RainLoopApp.js')
- ;
-
+ var self = this;
this.fullScreenMode.subscribe(function (bValue) {
if (bValue)
{
@@ -382,7 +375,7 @@
})
.on('click', 'a', function (oEvent) {
// setup maito protocol
- return !(!!oEvent && 3 !== oEvent['which'] && App.mailToHelper($(this).attr('href')));
+ return !(!!oEvent && 3 !== oEvent['which'] && require('App:RainLoop').mailToHelper($(this).attr('href')));
})
.on('click', '.attachmentsPlace .attachmentPreview', function (oEvent) {
if (oEvent && oEvent.stopPropagation)
@@ -398,7 +391,7 @@
if (oAttachment && oAttachment.download)
{
- App.download(oAttachment.linkDownload());
+ require('App:RainLoop').download(oAttachment.linkDownload());
}
})
;
@@ -635,14 +628,14 @@
MailBoxMessageViewViewModel.prototype.composeClick = function ()
{
- kn.showScreenPopup(PopupsComposeViewModel);
+ kn.showScreenPopup(require('View:Popup:Compose'));
};
MailBoxMessageViewViewModel.prototype.editMessage = function ()
{
if (Data.message())
{
- kn.showScreenPopup(PopupsComposeViewModel, [Enums.ComposeType.Draft, Data.message()]);
+ kn.showScreenPopup(require('View:Popup:Compose'), [Enums.ComposeType.Draft, Data.message()]);
}
};
@@ -713,8 +706,7 @@
Cache.storeMessageFlagsToCache(oMessage);
- var App = require('../Apps/RainLoopApp.js');
- App.reloadFlagsCurrentMessageListAndMessageFromCache();
+ require('App:RainLoop').reloadFlagsCurrentMessageListAndMessageFromCache();
}
};
diff --git a/dev/ViewModels/MailBoxSystemDropDownViewModel.js b/dev/ViewModels/MailBoxSystemDropDownViewModel.js
index 55d3f1a96..cdaedba0d 100644
--- a/dev/ViewModels/MailBoxSystemDropDownViewModel.js
+++ b/dev/ViewModels/MailBoxSystemDropDownViewModel.js
@@ -5,8 +5,8 @@
'use strict';
var
- kn = require('kn'),
- AbstractSystemDropDownViewModel = require('./AbstractSystemDropDownViewModel.js')
+ kn = require('App:Knoin'),
+ AbstractSystemDropDownViewModel = require('View:RainLoop:AbstractSystemDropDown')
;
/**
diff --git a/dev/ViewModels/Popups/PopupsActivateViewModel.js b/dev/ViewModels/Popups/PopupsActivateViewModel.js
index 680c71ce0..f5c722797 100644
--- a/dev/ViewModels/Popups/PopupsActivateViewModel.js
+++ b/dev/ViewModels/Popups/PopupsActivateViewModel.js
@@ -10,12 +10,12 @@
Enums = require('Enums'),
Utils = require('Utils'),
- AppSettings = require('../../Storages/AppSettings.js'),
- Data = require('../../Storages/AdminDataStorage.js'),
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js'),
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:Admin:Data'),
+ Remote = require('Storage:Admin:Remote'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -108,7 +108,7 @@
PopupsActivateViewModel.prototype.onShow = function ()
{
- this.domain(AppSettings.settingsGet('AdminDomain'));
+ this.domain(Settings.settingsGet('AdminDomain'));
if (!this.activateProcess())
{
this.key('');
diff --git a/dev/ViewModels/Popups/PopupsAddAccountViewModel.js b/dev/ViewModels/Popups/PopupsAddAccountViewModel.js
index 8bea2d7b1..e2c1f1a07 100644
--- a/dev/ViewModels/Popups/PopupsAddAccountViewModel.js
+++ b/dev/ViewModels/Popups/PopupsAddAccountViewModel.js
@@ -11,10 +11,10 @@
Enums = require('Enums'),
Utils = require('Utils'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
+ Remote = require('Storage:RainLoop:Remote'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -25,8 +25,6 @@
{
KnoinAbstractViewModel.call(this, 'Popups', 'PopupsAddAccount');
- var App = require('../../Apps/RainLoopApp.js');
-
this.email = ko.observable('');
this.password = ko.observable('');
@@ -65,7 +63,7 @@
{
if (oData.Result)
{
- App.accountsAndIdentities();
+ require('App:RainLoop').accountsAndIdentities();
this.cancelCommand();
}
else if (oData.ErrorCode)
diff --git a/dev/ViewModels/Popups/PopupsAddOpenPgpKeyViewModel.js b/dev/ViewModels/Popups/PopupsAddOpenPgpKeyViewModel.js
index 2c98cb348..e3828f50a 100644
--- a/dev/ViewModels/Popups/PopupsAddOpenPgpKeyViewModel.js
+++ b/dev/ViewModels/Popups/PopupsAddOpenPgpKeyViewModel.js
@@ -9,10 +9,10 @@
Utils = require('Utils'),
- Data = require('../../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -23,8 +23,6 @@
{
KnoinAbstractViewModel.call(this, 'Popups', 'PopupsAddOpenPgpKey');
- var App = require('../../Apps/RainLoopApp.js');
-
this.key = ko.observable('');
this.key.error = ko.observable(false);
this.key.focus = ko.observable(false);
@@ -79,7 +77,7 @@
oOpenpgpKeyring.store();
- App.reloadOpenPgpKeys();
+ require('App:RainLoop').reloadOpenPgpKeys();
Utils.delegateRun(this, 'cancelCommand');
return true;
diff --git a/dev/ViewModels/Popups/PopupsAdvancedSearchViewModel.js b/dev/ViewModels/Popups/PopupsAdvancedSearchViewModel.js
index 46874e34e..f46c774d3 100644
--- a/dev/ViewModels/Popups/PopupsAdvancedSearchViewModel.js
+++ b/dev/ViewModels/Popups/PopupsAdvancedSearchViewModel.js
@@ -10,10 +10,10 @@
Utils = require('Utils'),
- Data = require('../../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
diff --git a/dev/ViewModels/Popups/PopupsAskViewModel.js b/dev/ViewModels/Popups/PopupsAskViewModel.js
index 78d212346..9e580b670 100644
--- a/dev/ViewModels/Popups/PopupsAskViewModel.js
+++ b/dev/ViewModels/Popups/PopupsAskViewModel.js
@@ -11,8 +11,8 @@
Enums = require('Enums'),
Utils = require('Utils'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
diff --git a/dev/ViewModels/Popups/PopupsComposeOpenPgpViewModel.js b/dev/ViewModels/Popups/PopupsComposeOpenPgpViewModel.js
index 71446c8ed..e26fc93a8 100644
--- a/dev/ViewModels/Popups/PopupsComposeOpenPgpViewModel.js
+++ b/dev/ViewModels/Popups/PopupsComposeOpenPgpViewModel.js
@@ -13,12 +13,12 @@
Utils = require('Utils'),
Enums = require('Enums'),
- Data = require('../../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
- EmailModel = require('../../Models/EmailModel.js'),
+ EmailModel = require('Model:Email'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
diff --git a/dev/ViewModels/Popups/PopupsComposeViewModel.js b/dev/ViewModels/Popups/PopupsComposeViewModel.js
index 4255cedf6..27deaf858 100644
--- a/dev/ViewModels/Popups/PopupsComposeViewModel.js
+++ b/dev/ViewModels/Popups/PopupsComposeViewModel.js
@@ -10,7 +10,7 @@
_ = require('_'),
ko = require('ko'),
moment = require('moment'),
- $window = require('$window'),
+ $win = require('$win'),
JSON = require('JSON'),
Jua = require('Jua'),
@@ -20,21 +20,17 @@
Globals = require('Globals'),
LinkBuilder = require('LinkBuilder'),
Events = require('Events'),
- NewHtmlEditorWrapper = require('NewHtmlEditorWrapper'),
+ HtmlEditor = require('HtmlEditor'),
- AppSettings = require('../../Storages/AppSettings.js'),
- Data = require('../../Storages/WebMailDataStorage.js'),
- Cache = require('../../Storages/WebMailCacheStorage.js'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:RainLoop:Data'),
+ Cache = require('Storage:RainLoop:Cache'),
+ Remote = require('Storage:RainLoop:Remote'),
- ComposeAttachmentModel = require('../../Models/ComposeAttachmentModel.js'),
+ ComposeAttachmentModel = require('Model:ComposeAttachment'),
- PopupsComposeOpenPgpViewModel = require('./PopupsComposeOpenPgpViewModel.js'),
- PopupsFolderSystemViewModel = require('./PopupsFolderSystemViewModel.js'),
- PopupsAskViewModel = require('./PopupsAskViewModel.js'),
-
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -45,8 +41,6 @@
{
KnoinAbstractViewModel.call(this, 'Popups', 'PopupsCompose');
- var App = require('../../Apps/RainLoopApp.js');
-
this.oEditor = null;
this.aDraftInfo = null;
this.sInReplyTo = '';
@@ -54,7 +48,7 @@
this.bSkipNext = false;
this.sReferences = '';
- this.bCapaAdditionalIdentities = AppSettings.capa(Enums.Capa.AdditionalIdentities);
+ this.bCapaAdditionalIdentities = Settings.capa(Enums.Capa.AdditionalIdentities);
var
self = this,
@@ -219,7 +213,7 @@
this.deleteCommand = Utils.createCommand(this, function () {
- App.deleteMessagesFromFolderWithoutCheck(this.draftFolder(), [this.draftUid()]);
+ require('App:RainLoop').deleteMessagesFromFolderWithoutCheck(this.draftFolder(), [this.draftUid()]);
kn.hideScreenPopup(PopupsComposeViewModel);
}, function () {
@@ -256,7 +250,7 @@
if ('' === sSentFolder)
{
- kn.showScreenPopup(PopupsFolderSystemViewModel, [Enums.SetSystemFoldersNotification.Sent]);
+ kn.showScreenPopup(require('View:Popup:FolderSystem'), [Enums.SetSystemFoldersNotification.Sent]);
}
else
{
@@ -278,7 +272,7 @@
}
Cache.setMessageFlagsToCache(this.aDraftInfo[2], this.aDraftInfo[1], aFlagsCache);
- App.reloadFlagsCurrentMessageListAndMessageFromCache();
+ require('App:RainLoop').reloadFlagsCurrentMessageListAndMessageFromCache();
Cache.setFolderHash(this.aDraftInfo[2], '');
}
}
@@ -314,7 +308,7 @@
if (Data.draftFolderNotEnabled())
{
- kn.showScreenPopup(PopupsFolderSystemViewModel, [Enums.SetSystemFoldersNotification.Draft]);
+ kn.showScreenPopup(require('View:Popup:FolderSystem'), [Enums.SetSystemFoldersNotification.Draft]);
}
else
{
@@ -359,7 +353,7 @@
this.triggerForResize();
}, this);
- this.dropboxEnabled = ko.observable(!!AppSettings.settingsGet('DropboxApiKey'));
+ this.dropboxEnabled = ko.observable(!!Settings.settingsGet('DropboxApiKey'));
this.dropboxCommand = Utils.createCommand(this, function () {
@@ -386,7 +380,7 @@
});
this.driveEnabled = ko.observable(Globals.bXMLHttpRequestSupported &&
- !!AppSettings.settingsGet('GoogleClientID') && !!AppSettings.settingsGet('GoogleApiKey'));
+ !!Settings.settingsGet('GoogleClientID') && !!Settings.settingsGet('GoogleApiKey'));
this.driveVisible = ko.observable(false);
@@ -415,8 +409,7 @@
PopupsComposeViewModel.prototype.emailsSource = function (oData, fResponse)
{
- var App = require('../../Apps/RainLoopApp.js');
- App.getAutocomplete(oData.term, function (aData) {
+ require('App:RainLoop').getAutocomplete(oData.term, function (aData) {
fResponse(_.map(aData, function (oEmailItem) {
return oEmailItem.toLine(false);
}));
@@ -428,7 +421,7 @@
if (this.capaOpenPGP() && this.oEditor && !this.oEditor.isHtml())
{
var self = this;
- kn.showScreenPopup(PopupsComposeOpenPgpViewModel, [
+ kn.showScreenPopup(require('View:Popup:ComposeOpenPgp'), [
function (sResult) {
self.editor(function (oEditor) {
oEditor.setPlain(sResult);
@@ -446,7 +439,6 @@
PopupsComposeViewModel.prototype.reloadDraftFolder = function ()
{
var
- App = require('../../Apps/RainLoopApp.js'),
sDraftFolder = Data.draftFolder()
;
@@ -455,11 +447,11 @@
Cache.setFolderHash(sDraftFolder, '');
if (Data.currentFolderFullNameRaw() === sDraftFolder)
{
- App.reloadMessageList(true);
+ require('App:RainLoop').reloadMessageList(true);
}
else
{
- App.folderInformation(sDraftFolder);
+ require('App:RainLoop').folderInformation(sDraftFolder);
}
}
};
@@ -715,7 +707,7 @@
if (!this.oEditor && this.composeEditorArea())
{
_.delay(function () {
- self.oEditor = new NewHtmlEditorWrapper(self.composeEditorArea(), null, function () {
+ self.oEditor = new HtmlEditor(self.composeEditorArea(), null, function () {
fOnInit(self.oEditor);
}, function (bHtml) {
self.isHtml(!!bHtml);
@@ -1016,7 +1008,11 @@
PopupsComposeViewModel.prototype.tryToClosePopup = function ()
{
- var self = this;
+ var
+ self = this,
+ PopupsAskViewModel = require('View:Popup:Ask')
+ ;
+
if (!kn.isPopupVisible(PopupsAskViewModel))
{
kn.showScreenPopup(PopupsAskViewModel, [Utils.i18n('POPUPS_ASK/DESC_WANT_CLOSE_THIS_WINDOW'), function () {
@@ -1060,7 +1056,7 @@
return false;
});
- $window.on('resize', function () {
+ $win.on('resize', function () {
self.triggerForResize();
});
@@ -1069,7 +1065,7 @@
oScript = window.document.createElement('script');
oScript.type = 'text/javascript';
oScript.src = 'https://www.dropbox.com/static/api/1/dropins.js';
- $(oScript).attr('id', 'dropboxjs').attr('data-app-key', AppSettings.settingsGet('DropboxApiKey'));
+ $(oScript).attr('id', 'dropboxjs').attr('data-app-key', Settings.settingsGet('DropboxApiKey'));
window.document.body.appendChild(oScript);
}
@@ -1168,7 +1164,7 @@
new window.google.picker.DocsView()
.setIncludeFolders(true)
)
- .setAppId(AppSettings.settingsGet('GoogleClientID'))
+ .setAppId(Settings.settingsGet('GoogleClientID'))
.setOAuthToken(oOauthToken.access_token)
.setCallback(_.bind(self.driveCallback, self, oOauthToken.access_token))
.enableFeature(window.google.picker.Feature.NAV_HIDDEN)
@@ -1193,7 +1189,7 @@
if (!oAuthToken)
{
window.gapi.auth.authorize({
- 'client_id': AppSettings.settingsGet('GoogleClientID'),
+ 'client_id': Settings.settingsGet('GoogleClientID'),
'scope': 'https://www.googleapis.com/auth/drive.readonly',
'immediate': true
}, function (oAuthResult) {
@@ -1208,7 +1204,7 @@
else
{
window.gapi.auth.authorize({
- 'client_id': AppSettings.settingsGet('GoogleClientID'),
+ 'client_id': Settings.settingsGet('GoogleClientID'),
'scope': 'https://www.googleapis.com/auth/drive.readonly',
'immediate': false
}, function (oAuthResult) {
@@ -1261,7 +1257,7 @@
{
var
oUploadCache = {},
- iAttachmentSizeLimit = Utils.pInt(AppSettings.settingsGet('AttachmentLimit')),
+ iAttachmentSizeLimit = Utils.pInt(Settings.settingsGet('AttachmentLimit')),
oJua = new Jua({
'action': LinkBuilder.upload(),
'name': 'uploader',
@@ -1510,7 +1506,7 @@
});
};
},
- iAttachmentSizeLimit = Utils.pInt(AppSettings.settingsGet('AttachmentLimit')),
+ iAttachmentSizeLimit = Utils.pInt(Settings.settingsGet('AttachmentLimit')),
mSize = oDropboxFile['bytes']
;
@@ -1571,7 +1567,7 @@
});
};
},
- iAttachmentSizeLimit = Utils.pInt(AppSettings.settingsGet('AttachmentLimit')),
+ iAttachmentSizeLimit = Utils.pInt(Settings.settingsGet('AttachmentLimit')),
oAttachment = null,
mSize = oDriveFile['fileSize'] ? Utils.pInt(oDriveFile['fileSize']) : 0
;
diff --git a/dev/ViewModels/Popups/PopupsContactsViewModel.js b/dev/ViewModels/Popups/PopupsContactsViewModel.js
index 926b49f71..71e80428d 100644
--- a/dev/ViewModels/Popups/PopupsContactsViewModel.js
+++ b/dev/ViewModels/Popups/PopupsContactsViewModel.js
@@ -18,18 +18,16 @@
LinkBuilder = require('LinkBuilder'),
Selector = require('Selector'),
- Data = require('../../Storages/WebMailDataStorage.js'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote'),
- EmailModel = require('../../Models/EmailModel.js'),
- ContactModel = require('../../Models/ContactModel.js'),
- ContactTagModel = require('../../Models/ContactTagModel.js'),
- ContactPropertyModel = require('../../Models/ContactPropertyModel.js'),
+ EmailModel = require('Model:Email'),
+ ContactModel = require('Model:Contact'),
+ ContactTagModel = require('Model:ContactTag'),
+ ContactPropertyModel = require('Model:ContactProperty'),
- PopupsComposeViewModel = require('./PopupsComposeViewModel.js'),
-
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -280,8 +278,8 @@
if (Utils.isNonEmptyArray(aE))
{
- kn.hideScreenPopup(PopupsContactsViewModel);
- kn.showScreenPopup(PopupsComposeViewModel, [Enums.ComposeType.Empty, null, aE]);
+ kn.hideScreenPopup(require('View:Popup:Contacts'));
+ kn.showScreenPopup(require('View:Popup:Compose'), [Enums.ComposeType.Empty, null, aE]);
}
}, function () {
@@ -351,12 +349,8 @@
this.syncCommand = Utils.createCommand(this, function () {
- var
- self = this,
- App = require('../../Apps/RainLoopApp.js')
- ;
-
- App.contactsSync(function (sResult, oData) {
+ var self = this;
+ require('App:RainLoop').contactsSync(function (sResult, oData) {
if (Enums.StorageResultType.Success !== sResult || !oData || !oData.Result)
{
window.alert(Utils.getNotification(
@@ -401,8 +395,7 @@
PopupsContactsViewModel.prototype.contactTagsSource = function (oData, fResponse)
{
- var App = require('../../Apps/RainLoopApp.js');
- App.getContactTagsAutocomplete(oData.term, function (aData) {
+ require('App:RainLoop').getContactTagsAutocomplete(oData.term, function (aData) {
fResponse(_.map(aData, function (oTagItem) {
return oTagItem.toLine(false);
}));
@@ -487,14 +480,12 @@
PopupsContactsViewModel.prototype.exportVcf = function ()
{
- var App = require('../../Apps/RainLoopApp.js');
- App.download(LinkBuilder.exportContactsVcf());
+ require('App:RainLoop').download(LinkBuilder.exportContactsVcf());
};
PopupsContactsViewModel.prototype.exportCsv = function ()
{
- var App = require('../../Apps/RainLoopApp.js');
- App.download(LinkBuilder.exportContactsCsv());
+ require('App:RainLoop').download(LinkBuilder.exportContactsCsv());
};
PopupsContactsViewModel.prototype.initUploader = function ()
diff --git a/dev/ViewModels/Popups/PopupsDomainViewModel.js b/dev/ViewModels/Popups/PopupsDomainViewModel.js
index 0610cd6d4..1952b307f 100644
--- a/dev/ViewModels/Popups/PopupsDomainViewModel.js
+++ b/dev/ViewModels/Popups/PopupsDomainViewModel.js
@@ -12,10 +12,10 @@
Consts = require('Consts'),
Utils = require('Utils'),
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js'),
+ Remote = require('Storage:Admin:Remote'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -235,9 +235,7 @@
{
if (oData.Result)
{
- var App = require('../../Apps/AdminApp.js');
- App.reloadDomainList();
-
+ require('App:Admin').reloadDomainList();
this.closeCommand();
}
else if (Enums.Notification.DomainAlreadyExists === oData.ErrorCode)
diff --git a/dev/ViewModels/Popups/PopupsFilterViewModel.js b/dev/ViewModels/Popups/PopupsFilterViewModel.js
index a904be722..93385aa18 100644
--- a/dev/ViewModels/Popups/PopupsFilterViewModel.js
+++ b/dev/ViewModels/Popups/PopupsFilterViewModel.js
@@ -10,10 +10,10 @@
Consts = require('Consts'),
Utils = require('Utils'),
- Data = require('../../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
diff --git a/dev/ViewModels/Popups/PopupsFolderClearViewModel.js b/dev/ViewModels/Popups/PopupsFolderClearViewModel.js
index 48b3e8ddd..b46583bb7 100644
--- a/dev/ViewModels/Popups/PopupsFolderClearViewModel.js
+++ b/dev/ViewModels/Popups/PopupsFolderClearViewModel.js
@@ -10,12 +10,12 @@
Enums = require('Enums'),
Utils = require('Utils'),
- Data = require('../../Storages/WebMailDataStorage.js'),
- Cache = require('../../Storages/WebMailCacheStorage.js'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
+ Cache = require('Storage:RainLoop:Cache'),
+ Remote = require('Storage:RainLoop:Remote'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -26,8 +26,6 @@
{
KnoinAbstractViewModel.call(this, 'Popups', 'PopupsFolderClear');
- var App = require('../../Apps/RainLoopApp.js');
-
this.selectedFolder = ko.observable(null);
this.clearingProcess = ko.observable(false);
this.clearingError = ko.observable('');
@@ -72,7 +70,7 @@
self.clearingProcess(false);
if (Enums.StorageResultType.Success === sResult && oData && oData.Result)
{
- App.reloadMessageList(true);
+ require('App:RainLoop').reloadMessageList(true);
self.cancelCommand();
}
else
diff --git a/dev/ViewModels/Popups/PopupsFolderCreateViewModel.js b/dev/ViewModels/Popups/PopupsFolderCreateViewModel.js
index 5154b6816..e6dc0cdb9 100644
--- a/dev/ViewModels/Popups/PopupsFolderCreateViewModel.js
+++ b/dev/ViewModels/Popups/PopupsFolderCreateViewModel.js
@@ -11,11 +11,11 @@
Consts = require('Consts'),
Utils = require('Utils'),
- Data = require('../../Storages/WebMailDataStorage.js'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -65,7 +65,6 @@
this.createFolder = Utils.createCommand(this, function () {
var
- App = require('../../Apps/RainLoopApp.js'),
sParentFolderName = this.selectedParentValue()
;
@@ -80,7 +79,7 @@
Data.foldersCreating(false);
if (Enums.StorageResultType.Success === sResult && oData && oData.Result)
{
- App.folders();
+ require('App:RainLoop').folders();
}
else
{
diff --git a/dev/ViewModels/Popups/PopupsFolderSystemViewModel.js b/dev/ViewModels/Popups/PopupsFolderSystemViewModel.js
index db21f5b7b..e26754d80 100644
--- a/dev/ViewModels/Popups/PopupsFolderSystemViewModel.js
+++ b/dev/ViewModels/Popups/PopupsFolderSystemViewModel.js
@@ -11,12 +11,12 @@
Consts = require('Consts'),
Utils = require('Utils'),
- AppSettings = require('../../Storages/AppSettings.js'),
- Data = require('../../Storages/WebMailDataStorage.js'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -55,11 +55,11 @@
fSaveSystemFolders = _.debounce(function () {
- AppSettings.settingsSet('SentFolder', self.sentFolder());
- AppSettings.settingsSet('DraftFolder', self.draftFolder());
- AppSettings.settingsSet('SpamFolder', self.spamFolder());
- AppSettings.settingsSet('TrashFolder', self.trashFolder());
- AppSettings.settingsSet('ArchiveFolder', self.archiveFolder());
+ Settings.settingsSet('SentFolder', self.sentFolder());
+ Settings.settingsSet('DraftFolder', self.draftFolder());
+ Settings.settingsSet('SpamFolder', self.spamFolder());
+ Settings.settingsSet('TrashFolder', self.trashFolder());
+ Settings.settingsSet('ArchiveFolder', self.archiveFolder());
Remote.saveSystemFolders(Utils.emptyFunction, {
'SentFolder': self.sentFolder(),
@@ -74,11 +74,11 @@
fCallback = function () {
- AppSettings.settingsSet('SentFolder', self.sentFolder());
- AppSettings.settingsSet('DraftFolder', self.draftFolder());
- AppSettings.settingsSet('SpamFolder', self.spamFolder());
- AppSettings.settingsSet('TrashFolder', self.trashFolder());
- AppSettings.settingsSet('ArchiveFolder', self.archiveFolder());
+ Settings.settingsSet('SentFolder', self.sentFolder());
+ Settings.settingsSet('DraftFolder', self.draftFolder());
+ Settings.settingsSet('SpamFolder', self.spamFolder());
+ Settings.settingsSet('TrashFolder', self.trashFolder());
+ Settings.settingsSet('ArchiveFolder', self.archiveFolder());
fSaveSystemFolders();
};
diff --git a/dev/ViewModels/Popups/PopupsIdentityViewModel.js b/dev/ViewModels/Popups/PopupsIdentityViewModel.js
index c0bdba438..0b885ab8e 100644
--- a/dev/ViewModels/Popups/PopupsIdentityViewModel.js
+++ b/dev/ViewModels/Popups/PopupsIdentityViewModel.js
@@ -9,12 +9,12 @@
Enums = require('Enums'),
Utils = require('Utils'),
- kn = require('kn'),
+ kn = require('App:Knoin'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
- Data = require('../../Storages/WebMailDataStorage.js'),
+ Remote = require('Storage:RainLoop:Remote'),
+ Data = require('Storage:RainLoop:Data'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -25,8 +25,6 @@
{
KnoinAbstractViewModel.call(this, 'Popups', 'PopupsIdentity');
- var App = require('../../Apps/RainLoopApp.js');
-
this.id = '';
this.edit = ko.observable(false);
this.owner = ko.observable(false);
@@ -85,7 +83,7 @@
{
if (oData.Result)
{
- App.accountsAndIdentities();
+ require('App:RainLoop').accountsAndIdentities();
this.cancelCommand();
}
else if (oData.ErrorCode)
diff --git a/dev/ViewModels/Popups/PopupsKeyboardShortcutsHelpViewModel.js b/dev/ViewModels/Popups/PopupsKeyboardShortcutsHelpViewModel.js
index 134dba740..09a774b06 100644
--- a/dev/ViewModels/Popups/PopupsKeyboardShortcutsHelpViewModel.js
+++ b/dev/ViewModels/Popups/PopupsKeyboardShortcutsHelpViewModel.js
@@ -10,8 +10,8 @@
Enums = require('Enums'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
diff --git a/dev/ViewModels/Popups/PopupsLanguagesViewModel.js b/dev/ViewModels/Popups/PopupsLanguagesViewModel.js
index af5b27724..d9f291d25 100644
--- a/dev/ViewModels/Popups/PopupsLanguagesViewModel.js
+++ b/dev/ViewModels/Popups/PopupsLanguagesViewModel.js
@@ -10,10 +10,10 @@
Utils = require('Utils'),
- Data = require('../../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
diff --git a/dev/ViewModels/Popups/PopupsGenerateNewOpenPgpKeyViewModel.js b/dev/ViewModels/Popups/PopupsNewOpenPgpKeyViewModel.js
similarity index 73%
rename from dev/ViewModels/Popups/PopupsGenerateNewOpenPgpKeyViewModel.js
rename to dev/ViewModels/Popups/PopupsNewOpenPgpKeyViewModel.js
index be47b68e6..5def435f8 100644
--- a/dev/ViewModels/Popups/PopupsGenerateNewOpenPgpKeyViewModel.js
+++ b/dev/ViewModels/Popups/PopupsNewOpenPgpKeyViewModel.js
@@ -11,21 +11,19 @@
Utils = require('Utils'),
- Data = require('../../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
* @constructor
* @extends KnoinAbstractViewModel
*/
- function PopupsGenerateNewOpenPgpKeyViewModel()
+ function PopupsNewOpenPgpKeyViewModel()
{
- KnoinAbstractViewModel.call(this, 'Popups', 'PopupsGenerateNewOpenPgpKey');
-
- var App = require('../../Apps/RainLoopApp.js');
+ KnoinAbstractViewModel.call(this, 'Popups', 'PopupsNewOpenPgpKey');
this.email = ko.observable('');
this.email.focus = ko.observable('');
@@ -78,7 +76,7 @@
oOpenpgpKeyring.publicKeys.importKey(mKeyPair.publicKeyArmored);
oOpenpgpKeyring.store();
- App.reloadOpenPgpKeys();
+ require('App:RainLoop').reloadOpenPgpKeys();
Utils.delegateRun(self, 'cancelCommand');
}
@@ -91,9 +89,9 @@
kn.constructorEnd(this);
}
- kn.extendAsViewModel('PopupsGenerateNewOpenPgpKeyViewModel', PopupsGenerateNewOpenPgpKeyViewModel);
+ kn.extendAsViewModel('PopupsNewOpenPgpKeyViewModel', PopupsNewOpenPgpKeyViewModel);
- PopupsGenerateNewOpenPgpKeyViewModel.prototype.clearPopup = function ()
+ PopupsNewOpenPgpKeyViewModel.prototype.clearPopup = function ()
{
this.name('');
this.password('');
@@ -103,16 +101,16 @@
this.keyBitLength(2048);
};
- PopupsGenerateNewOpenPgpKeyViewModel.prototype.onShow = function ()
+ PopupsNewOpenPgpKeyViewModel.prototype.onShow = function ()
{
this.clearPopup();
};
- PopupsGenerateNewOpenPgpKeyViewModel.prototype.onFocus = function ()
+ PopupsNewOpenPgpKeyViewModel.prototype.onFocus = function ()
{
this.email.focus(true);
};
- module.exports = PopupsGenerateNewOpenPgpKeyViewModel;
+ module.exports = PopupsNewOpenPgpKeyViewModel;
}(module, require));
\ No newline at end of file
diff --git a/dev/ViewModels/Popups/PopupsPluginViewModel.js b/dev/ViewModels/Popups/PopupsPluginViewModel.js
index 3c1035261..c89e1ebc1 100644
--- a/dev/ViewModels/Popups/PopupsPluginViewModel.js
+++ b/dev/ViewModels/Popups/PopupsPluginViewModel.js
@@ -12,12 +12,10 @@
Enums = require('Enums'),
Utils = require('Utils'),
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js'),
+ Remote = require('Storage:Admin:Remote'),
- PopupsAskViewModel = require('./PopupsAskViewModel.js'),
-
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -139,7 +137,11 @@
PopupsPluginViewModel.prototype.tryToClosePopup = function ()
{
- var self = this;
+ var
+ self = this,
+ PopupsAskViewModel = require('View:Popup:Ask')
+ ;
+
if (!kn.isPopupVisible(PopupsAskViewModel))
{
kn.showScreenPopup(PopupsAskViewModel, [Utils.i18n('POPUPS_ASK/DESC_WANT_CLOSE_THIS_WINDOW'), function () {
diff --git a/dev/ViewModels/Popups/PopupsTwoFactorTestViewModel.js b/dev/ViewModels/Popups/PopupsTwoFactorTestViewModel.js
index ba3e9afbe..add3de210 100644
--- a/dev/ViewModels/Popups/PopupsTwoFactorTestViewModel.js
+++ b/dev/ViewModels/Popups/PopupsTwoFactorTestViewModel.js
@@ -10,10 +10,10 @@
Enums = require('Enums'),
Utils = require('Utils'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
+ Remote = require('Storage:RainLoop:Remote'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
diff --git a/dev/ViewModels/Popups/PopupsViewOpenPgpKeyViewModel.js b/dev/ViewModels/Popups/PopupsViewOpenPgpKeyViewModel.js
index 35d05c78d..614329913 100644
--- a/dev/ViewModels/Popups/PopupsViewOpenPgpKeyViewModel.js
+++ b/dev/ViewModels/Popups/PopupsViewOpenPgpKeyViewModel.js
@@ -9,8 +9,8 @@
Utils = require('Utils'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
diff --git a/dev/ViewModels/SettingsMenuViewModel.js b/dev/ViewModels/SettingsMenuViewModel.js
index aa3bf3e99..d9c0beb90 100644
--- a/dev/ViewModels/SettingsMenuViewModel.js
+++ b/dev/ViewModels/SettingsMenuViewModel.js
@@ -8,8 +8,8 @@
LinkBuilder = require('LinkBuilder'),
Globals = require('Globals'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
diff --git a/dev/ViewModels/SettingsPaneViewModel.js b/dev/ViewModels/SettingsPaneViewModel.js
index 9c6a803be..e1fe48480 100644
--- a/dev/ViewModels/SettingsPaneViewModel.js
+++ b/dev/ViewModels/SettingsPaneViewModel.js
@@ -10,10 +10,10 @@
Enums = require('Enums'),
LinkBuilder = require('LinkBuilder'),
- Data = require('../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
diff --git a/dev/ViewModels/SettingsSystemDropDownViewModel.js b/dev/ViewModels/SettingsSystemDropDownViewModel.js
index c4d328229..4b59ba4e8 100644
--- a/dev/ViewModels/SettingsSystemDropDownViewModel.js
+++ b/dev/ViewModels/SettingsSystemDropDownViewModel.js
@@ -5,8 +5,8 @@
'use strict';
var
- kn = require('kn'),
- AbstractSystemDropDownViewModel = require('./AbstractSystemDropDownViewModel.js')
+ kn = require('App:Knoin'),
+ AbstractSystemDropDownViewModel = require('View:RainLoop:AbstractSystemDropDown')
;
/**
diff --git a/package.json b/package.json
index 99128e19c..5ddb825b2 100644
--- a/package.json
+++ b/package.json
@@ -44,9 +44,7 @@
"window": "./dev/External/window.js",
"JSON": "./dev/External/JSON.js",
"$": "./dev/External/jquery.js",
- "jquery": "./dev/External/jquery.js",
"_": "./dev/External/underscore.js",
- "underscore": "./dev/External/underscore.js",
"ko": "./dev/External/ko.js",
"key": "./dev/External/key.js",
"moment": "./dev/External/moment.js",
@@ -57,7 +55,7 @@
"Jua": "./dev/External/Jua.js",
"AppData": "./dev/External/AppData.js",
"NotificationClass": "./dev/External/NotificationClass.js",
- "$window": "./dev/External/$window.js",
+ "$win": "./dev/External/$win.js",
"$html": "./dev/External/$html.js",
"$doc": "./dev/External/$doc.js",
"$div": "./dev/External/$div.js",
@@ -71,13 +69,116 @@
"Events": "./dev/Common/Events.js",
"Selector": "./dev/Common/Selector.js",
"LinkBuilder": "./dev/Common/LinkBuilder.js",
- "NewHtmlEditorWrapper": "./dev/Common/NewHtmlEditorWrapper.js",
+ "HtmlEditor": "./dev/Common/HtmlEditor.js",
- "Knoin": "./dev/Knoin/Knoin.js",
- "KnoinAbstractBoot": "./dev/Knoin/KnoinAbstractBoot.js",
- "KnoinAbstractScreen": "./dev/Knoin/KnoinAbstractScreen.js",
- "KnoinAbstractViewModel": "./dev/Knoin/KnoinAbstractViewModel.js",
- "kn": "./dev/Knoin/Knoin.js"
+ "Knoin:AbstractBoot": "./dev/Knoin/KnoinAbstractBoot.js",
+ "Knoin:AbstractScreen": "./dev/Knoin/KnoinAbstractScreen.js",
+ "Knoin:AbstractViewModel": "./dev/Knoin/KnoinAbstractViewModel.js",
+
+ "App:Boot": "./dev/Boot.js",
+ "App:Knoin": "./dev/Knoin/Knoin.js",
+ "App:Abstract": "./dev/Apps/AbstractApp.js",
+ "App:RainLoop": "./dev/Apps/RainLoopApp.js",
+ "App:Admin": "./dev/Apps/AdminApp.js",
+
+ "Model:Account": "./dev/Models/AccountModel.js",
+ "Model:Attachment": "./dev/Models/AttachmentModel.js",
+ "Model:ComposeAttachment": "./dev/Models/ComposeAttachmentModel.js",
+ "Model:Contact": "./dev/Models/ContactModel.js",
+ "Model:ContactProperty": "./dev/Models/ContactPropertyModel.js",
+ "Model:ContactTag": "./dev/Models/ContactTagModel.js",
+ "Model:Email": "./dev/Models/EmailModel.js",
+ "Model:Filter": "./dev/Models/FilterModel.js",
+ "Model:FilterCondition": "./dev/Models/FilterConditionModel.js",
+ "Model:Folder": "./dev/Models/FolderModel.js",
+ "Model:Identity": "./dev/Models/IdentityModel.js",
+ "Model:Message": "./dev/Models/MessageModel.js",
+ "Model:OpenPgpKey": "./dev/Models/OpenPgpKeyModel.js",
+
+ "Storage:LocalStorage": "./dev/Storages/LocalStorage.js",
+ "Storage:LocalStorage:Cookie": "./dev/Storages/LocalStorages/CookieDriver.js",
+ "Storage:LocalStorage:LocalStorage": "./dev/Storages/LocalStorages/LocalStorageDriver.js",
+
+ "Storage:Settings": "./dev/Storages/SettingsStorage.js",
+
+ "Storage:Abstract:Remote": "./dev/Storages/AbstractRemoteStorage.js",
+ "Storage:Abstract:Data": "./dev/Storages/AbstractData.js",
+
+ "Storage:RainLoop:Cache": "./dev/Storages/CacheStorage.js",
+ "Storage:RainLoop:Remote": "./dev/Storages/RemoteStorage.js",
+ "Storage:RainLoop:Data": "./dev/Storages/DataStorage.js",
+
+ "Storage:Admin:Remote": "./dev/Storages/AdminRemoteStorage.js",
+ "Storage:Admin:Data": "./dev/Storages/AdminDataStorage.js",
+
+ "Screen:AbstractSettings": "./dev/Screens/AbstractSettings.js",
+ "Screen:RainLoop:Login": "./dev/Screens/LoginScreen.js",
+ "Screen:RainLoop:About": "./dev/Screens/AboutScreen.js",
+ "Screen:RainLoop:MailBox": "./dev/Screens/MailBoxScreen.js",
+ "Screen:RainLoop:Settings": "./dev/Screens/SettingsScreen.js",
+ "Screen:Admin:Login": "./dev/Screens/AdminLoginScreen.js",
+ "Screen:Admin:Settings": "./dev/Screens/AdminSettingsScreen.js",
+
+ "Settings:RainLoop:General": "./dev/Settings/App/SettingsGeneral.js",
+ "Settings:RainLoop:ChangePassword": "./dev/Settings/App/SettingsChangePassword.js",
+ "Settings:RainLoop:Accounts": "./dev/Settings/App/SettingsAccounts.js",
+ "Settings:RainLoop:Contacts": "./dev/Settings/App/SettingsContacts.js",
+ "Settings:RainLoop:Filters": "./dev/Settings/App/SettingsFilters.js",
+ "Settings:RainLoop:Folders": "./dev/Settings/App/SettingsFolders.js",
+ "Settings:RainLoop:Identity": "./dev/Settings/App/SettingsIdentity.js",
+ "Settings:RainLoop:Identities": "./dev/Settings/App/SettingsIdentities.js",
+ "Settings:RainLoop:OpenPGP": "./dev/Settings/App/SettingsOpenPGP.js",
+ "Settings:RainLoop:Security": "./dev/Settings/App/SettingsSecurity.js",
+ "Settings:RainLoop:Social": "./dev/Settings/App/SettingsSocial.js",
+ "Settings:RainLoop:Themes": "./dev/Settings/App/SettingsThemes.js",
+
+ "Settings:Admin:General": "./dev/Settings/Admin/AdminSettingsGeneral.js",
+ "Settings:Admin:Login": "./dev/Settings/Admin/AdminSettingsLogin.js",
+ "Settings:Admin:Branding": "./dev/Settings/Admin/AdminSettingsBranding.js",
+ "Settings:Admin:Contacts": "./dev/Settings/Admin/AdminSettingsContacts.js",
+ "Settings:Admin:Domains": "./dev/Settings/Admin/AdminSettingsDomains.js",
+ "Settings:Admin:Social": "./dev/Settings/Admin/AdminSettingsSocial.js",
+ "Settings:Admin:Security": "./dev/Settings/Admin/AdminSettingsSecurity.js",
+ "Settings:Admin:Plugins": "./dev/Settings/Admin/AdminSettingsPlugins.js",
+ "Settings:Admin:Packages": "./dev/Settings/Admin/AdminSettingsPackages.js",
+ "Settings:Admin:Licensing": "./dev/Settings/Admin/AdminSettingsLicensing.js",
+ "Settings:Admin:About": "./dev/Settings/Admin/AdminSettingsAbout.js",
+
+ "View:Admin:Login": "./dev/ViewModels/AdminLoginViewModel.js",
+ "View:Admin:SettingsMenu": "./dev/ViewModels/AdminSettingsMenuViewModel.js",
+ "View:Admin:SettingsPane": "./dev/ViewModels/AdminSettingsPaneViewModel.js",
+
+ "View:RainLoop:AbstractSystemDropDown": "./dev/ViewModels/AbstractSystemDropDownViewModel.js",
+ "View:RainLoop:MailBoxSystemDropDown": "./dev/ViewModels/MailBoxSystemDropDownViewModel.js",
+ "View:RainLoop:SettingsSystemDropDown": "./dev/ViewModels/SettingsSystemDropDownViewModel.js",
+ "View:RainLoop:SettingsMenu": "./dev/ViewModels/SettingsMenuViewModel.js",
+ "View:RainLoop:SettingsPane": "./dev/ViewModels/SettingsPaneViewModel.js",
+ "View:RainLoop:MailBoxMessageView": "./dev/ViewModels/MailBoxMessageViewViewModel.js",
+ "View:RainLoop:MailBoxMessageList": "./dev/ViewModels/MailBoxMessageListViewModel.js",
+ "View:RainLoop:MailBoxFolderList": "./dev/ViewModels/MailBoxFolderListViewModel.js",
+ "View:RainLoop:Login": "./dev/ViewModels/LoginViewModel.js",
+ "View:RainLoop:About": "./dev/ViewModels/AboutViewModel.js",
+
+ "View:Popup:Activate": "./dev/ViewModels/Popups/PopupsActivateViewModel.js",
+ "View:Popup:AddAccount": "./dev/ViewModels/Popups/PopupsAddAccountViewModel.js",
+ "View:Popup:AddOpenPgpKey": "./dev/ViewModels/Popups/PopupsAddOpenPgpKeyViewModel.js",
+ "View:Popup:AdvancedSearch": "./dev/ViewModels/Popups/PopupsAdvancedSearchViewModel.js",
+ "View:Popup:Ask": "./dev/ViewModels/Popups/PopupsAskViewModel.js",
+ "View:Popup:ComposeOpenPgp": "./dev/ViewModels/Popups/PopupsComposeOpenPgpViewModel.js",
+ "View:Popup:Compose": "./dev/ViewModels/Popups/PopupsComposeViewModel.js",
+ "View:Popup:Contacts": "./dev/ViewModels/Popups/PopupsContactsViewModel.js",
+ "View:Popup:Domain": "./dev/ViewModels/Popups/PopupsDomainViewModel.js",
+ "View:Popup:Filter": "./dev/ViewModels/Popups/PopupsFilterViewModel.js",
+ "View:Popup:FolderClear": "./dev/ViewModels/Popups/PopupsFolderClearViewModel.js",
+ "View:Popup:FolderCreate": "./dev/ViewModels/Popups/PopupsFolderCreateViewModel.js",
+ "View:Popup:FolderSystem": "./dev/ViewModels/Popups/PopupsFolderSystemViewModel.js",
+ "View:Popup:Identity": "./dev/ViewModels/Popups/PopupsIdentityViewModel.js",
+ "View:Popup:KeyboardShortcutsHelp": "./dev/ViewModels/Popups/PopupsKeyboardShortcutsHelpViewModel.js",
+ "View:Popup:Languages": "./dev/ViewModels/Popups/PopupsLanguagesViewModel.js",
+ "View:Popup:NewOpenPgpKey": "./dev/ViewModels/Popups/PopupsNewOpenPgpKeyViewModel.js",
+ "View:Popup:Plugin": "./dev/ViewModels/Popups/PopupsPluginViewModel.js",
+ "View:Popup:TwoFactorTest": "./dev/ViewModels/Popups/PopupsTwoFactorTestViewModel.js",
+ "View:Popup:ViewOpenPgpKey": "./dev/ViewModels/Popups/PopupsViewOpenPgpKeyViewModel.js"
},
"devDependencies": {
diff --git a/rainloop/v/0.0.0/app/templates/Views/App/About.html b/rainloop/v/0.0.0/app/templates/Views/App/About.html
new file mode 100644
index 000000000..7b93df14f
--- /dev/null
+++ b/rainloop/v/0.0.0/app/templates/Views/App/About.html
@@ -0,0 +1,8 @@
+
+
RainLoop Webmail
+
+
+
+
()
+
+
\ No newline at end of file
diff --git a/rainloop/v/0.0.0/app/templates/Views/App/PopupsGenerateNewOpenPgpKey.html b/rainloop/v/0.0.0/app/templates/Views/App/PopupsNewOpenPgpKey.html
similarity index 100%
rename from rainloop/v/0.0.0/app/templates/Views/App/PopupsGenerateNewOpenPgpKey.html
rename to rainloop/v/0.0.0/app/templates/Views/App/PopupsNewOpenPgpKey.html
diff --git a/rainloop/v/0.0.0/langs/en.ini b/rainloop/v/0.0.0/langs/en.ini
index 9b26eb12c..4c944bcff 100644
--- a/rainloop/v/0.0.0/langs/en.ini
+++ b/rainloop/v/0.0.0/langs/en.ini
@@ -553,9 +553,9 @@ AUTH_ERROR = "Authentication failed"
ACCESS_ERROR = "Access error"
CONNECTION_ERROR = "Can't connect to server"
CAPTCHA_ERROR = "Incorrect CAPTCHA."
-SOCIAL_FACEBOOK_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and add enable this feature in account settings."
-SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and add enable this feature in account settings."
-SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and add enable this feature in account settings."
+SOCIAL_FACEBOOK_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and enable this feature in account settings."
+SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and enable this feature in account settings."
+SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and enable this feature in account settings."
DOMAIN_NOT_ALLOWED = "Domain is not allowed"
ACCOUNT_NOT_ALLOWED = "Account is not allowed"
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
diff --git a/rainloop/v/0.0.0/langs/hu.ini b/rainloop/v/0.0.0/langs/hu.ini
index 08f17d895..7924ddf32 100644
--- a/rainloop/v/0.0.0/langs/hu.ini
+++ b/rainloop/v/0.0.0/langs/hu.ini
@@ -545,9 +545,9 @@ AUTH_ERROR = "Érvénytelen hitelesítés"
ACCESS_ERROR = "Érvénytelen hozzáférés"
CONNECTION_ERROR = "Can't connect to server"
CAPTCHA_ERROR = "Érvénytelen CAPTCHA."
-SOCIAL_FACEBOOK_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and add enable this feature in account settings."
-SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and add enable this feature in account settings."
-SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and add enable this feature in account settings."
+SOCIAL_FACEBOOK_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and enable this feature in account settings."
+SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and enable this feature in account settings."
+SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and enable this feature in account settings."
DOMAIN_NOT_ALLOWED = "Domain is not allowed"
ACCOUNT_NOT_ALLOWED = "Account is not allowed"
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
diff --git a/rainloop/v/0.0.0/langs/ja-jp.ini b/rainloop/v/0.0.0/langs/ja-jp.ini
index 27eaefaf3..4b9d4beb9 100644
--- a/rainloop/v/0.0.0/langs/ja-jp.ini
+++ b/rainloop/v/0.0.0/langs/ja-jp.ini
@@ -545,9 +545,9 @@ AUTH_ERROR = "Authentication failed"
ACCESS_ERROR = "Access error"
CONNECTION_ERROR = "Can't connect to server"
CAPTCHA_ERROR = "Incorrect CAPTCHA."
-SOCIAL_FACEBOOK_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and add enable this feature in account settings."
-SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and add enable this feature in account settings."
-SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and add enable this feature in account settings."
+SOCIAL_FACEBOOK_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and enable this feature in account settings."
+SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and enable this feature in account settings."
+SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and enable this feature in account settings."
DOMAIN_NOT_ALLOWED = "Domain is not allowed"
ACCOUNT_NOT_ALLOWED = "Account is not allowed"
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
diff --git a/rainloop/v/0.0.0/langs/sk.ini b/rainloop/v/0.0.0/langs/sk.ini
index 4d570827d..e8e91be77 100644
--- a/rainloop/v/0.0.0/langs/sk.ini
+++ b/rainloop/v/0.0.0/langs/sk.ini
@@ -545,9 +545,9 @@ AUTH_ERROR = "Overenie zlyhalo"
ACCESS_ERROR = "Chyba prístupu"
CONNECTION_ERROR = "Nepodarilo sa pripojiť k serveru"
CAPTCHA_ERROR = "Nesprávne CAPTCHA."
-SOCIAL_FACEBOOK_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and add enable this feature in account settings."
-SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and add enable this feature in account settings."
-SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and add enable this feature in account settings."
+SOCIAL_FACEBOOK_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and enable this feature in account settings."
+SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and enable this feature in account settings."
+SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and enable this feature in account settings."
DOMAIN_NOT_ALLOWED = "Doména nie je povolená"
ACCOUNT_NOT_ALLOWED = "Účet nie je povolený"
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
diff --git a/rainloop/v/0.0.0/langs/zh-cn.ini b/rainloop/v/0.0.0/langs/zh-cn.ini
index 653e41e4b..ee467f005 100644
--- a/rainloop/v/0.0.0/langs/zh-cn.ini
+++ b/rainloop/v/0.0.0/langs/zh-cn.ini
@@ -545,9 +545,9 @@ AUTH_ERROR = "认证失败"
ACCESS_ERROR = "访问错误"
CONNECTION_ERROR = "无法连接服务器"
CAPTCHA_ERROR = "验证码不正确。"
-SOCIAL_FACEBOOK_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and add enable this feature in account settings."
-SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and add enable this feature in account settings."
-SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and add enable this feature in account settings."
+SOCIAL_FACEBOOK_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and enable this feature in account settings."
+SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and enable this feature in account settings."
+SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and enable this feature in account settings."
DOMAIN_NOT_ALLOWED = "域不允许"
ACCOUNT_NOT_ALLOWED = "账户不允许"
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
diff --git a/rainloop/v/0.0.0/static/css/app.css b/rainloop/v/0.0.0/static/css/app.css
index 3dbdb1fa1..bbb35c2fc 100644
--- a/rainloop/v/0.0.0/static/css/app.css
+++ b/rainloop/v/0.0.0/static/css/app.css
@@ -7245,13 +7245,6 @@ html.rl-ctrl-key-pressed .btn-group.open .hidden-on-ctrl-btn {
text-overflow: ellipsis;
overflow: hidden;
}
-.rl-view-model.RL-Login,
-.rl-view-model.RL-LoginNew,
-.rl-view-model.RL-AdminLogin {
- position: relative;
- height: 100%;
- z-index: 5;
-}
.b-login-content {
height: 100%;
text-align: center;
@@ -9881,3 +9874,11 @@ html.rl-started-trigger.no-mobile #rl-content {
-moz-animation-delay: 0.6s;
animation-delay: 0.6s;
}
+.rl-view-model.RL-Login,
+.rl-view-model.RL-LoginNew,
+.rl-view-model.RL-AdminLogin,
+.rl-view-model.RL-About {
+ position: relative;
+ height: 100%;
+ z-index: 5;
+}
diff --git a/rainloop/v/0.0.0/static/css/app.min.css b/rainloop/v/0.0.0/static/css/app.min.css
index 79fec9329..0af815e9b 100644
--- a/rainloop/v/0.0.0/static/css/app.min.css
+++ b/rainloop/v/0.0.0/static/css/app.min.css
@@ -1,4 +1,4 @@
@charset "UTF-8";/*! jQuery UI - v1.10.3 - 2013-11-25
* http://jqueryui.com
* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.autocomplete.css, jquery.ui.menu.css, jquery.ui.theme.css
-* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:0}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:400}.ui-menu .ui-menu-item a.ui-state-active,.ui-menu .ui-menu-item a.ui-state-focus{font-weight:400;margin:-1px}.ui-menu .ui-state-disabled{font-weight:400;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget button,.ui-widget input,.ui-widget select,.ui-widget textarea{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc;color:#222;font-weight:700}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #ccc;background:#eee;font-weight:400;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-focus,.ui-state-hover,.ui-widget-content .ui-state-focus,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-focus,.ui-widget-header .ui-state-hover{border:1px solid #ccc;background:#eee;font-weight:400;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff;font-weight:400;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec;color:#cd0a0a}.ui-state-error a,.ui-state-error-text,.ui-widget-content .ui-state-error a,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error a,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-corner-all,.ui-corner-left,.ui-corner-tl,.ui-corner-top{border-top-left-radius:2px}.ui-corner-all,.ui-corner-right,.ui-corner-top,.ui-corner-tr{border-top-right-radius:2px}.ui-corner-all,.ui-corner-bl,.ui-corner-bottom,.ui-corner-left{border-bottom-left-radius:2px}.ui-corner-all,.ui-corner-bottom,.ui-corner-br,.ui-corner-right{border-bottom-right-radius:2px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}/*! normalize.css 2012-03-11T12:53 UTC - http://github.com/necolas/normalize.css */article,aside,details,figcaption,figure,footer,header,hgroup,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:dotted thin}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn{font-style:italic}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}q{quotes:none}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,menu,ol,ul{margin:1em 0}dd{margin:0 0 0 40px}menu,ol,ul{padding:0 0 0 40px}nav ol,nav ul{list-style:none}img{border:0;-ms-interpolation-mode:bicubic}svg:not(:root){overflow:hidden}figure,form{margin:0}legend{white-space:normal}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}@font-face{font-family:rainloop;src:url(fonts/rainloop.eot);src:url(fonts/rainloop.eot?#iefix) format("embedded-opentype"),url(fonts/rainloop.woff) format("woff"),url(fonts/rainloop.ttf) format("truetype"),url(fonts/rainloop.svg#rainloop) format("svg");font-weight:400;font-style:normal}[data-icon]:before{font-family:rainloop!important;content:attr(data-icon);font-style:normal!important;font-weight:400!important;font-variant:normal!important;text-transform:none!important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}[class*=" icon-"]:before,[class^=icon-]:before{font-family:rainloop!important;font-style:normal!important;font-weight:400!important;font-variant:normal!important;text-transform:none!important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-arrows-in:before{content:"\e000"}.icon-arrows-out:before{content:"\e001"}.icon-list:before{content:"\e002"}.icon-search:before{content:"\e003"}.icon-user:before{content:"\e004"}.icon-user-add:before{content:"\e005"}.icon-tags:before{content:"\e006"}.icon-paper-plane:before{content:"\e007"}.icon-reply:before{content:"\e008"}.icon-reply-all:before{content:"\e009"}.icon-forward:before{content:"\e00a"}.icon-info:before{content:"\e00b"}.icon-right-dir:before{content:"\e00c"}.icon-down-dir:before{content:"\e00d"}.icon-image:before{content:"\e00e"}.icon-print:before{content:"\e00f"}.icon-calendar:before{content:"\e010"}.icon-cog:before{content:"\e011"}.icon-wrench:before{content:"\e012"}.icon-rocket:before{content:"\e013"}.icon-fire:before{content:"\e014"}.icon-purchase:before{content:"\e015"}.icon-apple:before{content:"\e016"}.icon-dropbox:before{content:"\e017"}.icon-skype:before{content:"\e018"}.icon-creative-commons:before{content:"\e019"}.icon-ellipsis:before{content:"\e01a"}.icon-left:before{content:"\e01b"}.icon-right:before{content:"\e01c"}.icon-down:before{content:"\e01d"}.icon-right-mini:before{content:"\e01e"}.icon-down-mini:before{content:"\e01f"}.icon-up:before{content:"\e020"}.icon-star-empty:before{content:"\e021"}.icon-star:before{content:"\e022"}.icon-at:before{content:"\e023"}.icon-list-add:before{content:"\e024"}.icon-google:before{content:"\e025"}.icon-google-plus:before{content:"\e026"}.icon-twitter:before{content:"\e027"}.icon-youtube:before{content:"\e028"}.icon-warning:before{content:"\e029"}.icon-warning-alt:before{content:"\e02a"}.icon-power:before{content:"\e02b"}.icon-plus:before{content:"\e02c"}.icon-ok:before{content:"\e02d"}.icon-remove:before{content:"\e02e"}.icon-file:before{content:"\e02f"}.icon-file-code:before{content:"\e030"}.icon-file-chart-graph:before{content:"\e031"}.icon-file-zip:before{content:"\e032"}.icon-file-music:before{content:"\e033"}.icon-file-text:before{content:"\e034"}.icon-file-bookmark:before{content:"\e035"}.icon-file-image:before{content:"\e036"}.icon-file-analytics:before{content:"\e037"}.icon-file-certificate:before{content:"\e038"}.icon-attachment:before{content:"\e039"}.icon-file-excel:before{content:"\e03a"}.icon-file-movie:before{content:"\e03b"}.icon-folder-add:before{content:"\e03c"}.icon-folder:before{content:"\e03d"}.icon-floppy:before{content:"\e03e"}.icon-eye:before{content:"\e03f"}.icon-facebook-alt:before{content:"\e040"}.icon-facebook:before{content:"\e041"}.icon-bolt:before{content:"\e042"}.icon-download:before{content:"\e043"}.icon-upload:before{content:"\e044"}.icon-popup:before{content:"\e045"}.icon-github:before{content:"\e046"}.icon-telephone:before{content:"\e047"}.icon-mobile:before{content:"\e048"}.icon-pencil:before{content:"\e049"}.icon-trash:before{content:"\e04a"}.icon-left-middle:before{content:"\e04b"}.icon-right-middle:before{content:"\e04c"}.icon-repeat:before{content:"\e04d"}.icon-key:before{content:"\e04e"}.icon-lock:before{content:"\e04f"}.icon-home:before{content:"\e050"}.icon-address-book:before{content:"\e051"}.icon-share:before{content:"\e052"}.icon-suitcase:before{content:"\e053"}.icon-new-sign:before{content:"\e054"}.icon-users:before{content:"\e055"}.icon-earth:before{content:"\e056"}.icon-mail:before{content:"\e057"}.icon-checkbox-checked:before{content:"\e058"}.icon-checkbox-unchecked:before{content:"\e059"}.icon-checkbox-partial:before{content:"\e05a"}.icon-radio-checked:before{content:"\e05b"}.icon-radio-unchecked:before{content:"\e05c"}.icon-google-drive:before{content:"\e05d"}.icon-spinner:before{content:"\e05e"}.icon-archive:before{content:"\e05f"}.icon-buy-sign:before{content:"\e060"}.icon-filter:before{content:"\e061"}.icon-sync:before{content:"\e062"}.icon-ellipsis-alt:before{content:"\e063"}.icon-cloud-up:before{content:"\e064"}.icon-cloud-down:before{content:"\e065"}.icon-import:before{content:"\e066"}.icon-export:before{content:"\e067"}.icon-copy:before{content:"\e068"}.icon-angry-smiley:before{content:"\e069"}.icon-happy-smiley:before{content:"\e06a"}.icon-help:before{content:"\e06b"}.icon-resize-in:before{content:"\e06c"}.icon-resize-out:before{content:"\e06d"}.nano{overflow:hidden!important}.nano .content{position:absolute;overflow:scroll;top:0;right:0;bottom:0;left:0;-webkit-overflow-scrolling:touch}.nano .content .content-wrapper{height:100%}.nano .content::-webkit-scrollbar{visibility:hidden}.has-scrollbar .content::-webkit-scrollbar{visibility:hidden}.nano-visibility-hidden::-webkit-scrollbar{visibility:hidden}.nano>.pane{background:0 0;position:absolute;width:5px;right:0;top:1px;bottom:1px;opacity:.01;filter:alpha(opacity=1);-webkit-transition:.4s;-moz-transition:.4s;-o-transition:.4s;transition:.4s;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;z-index:102;margin:2px}.nano>.pane2{background:0 0;position:absolute;height:5px;right:1px;left:1px;bottom:0;opacity:.01;filter:alpha(opacity=1);-webkit-transition:.4s;-moz-transition:.4s;-o-transition:.4s;transition:.4s;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;z-index:10000;margin:2px}.nano>.pane>.slider{background-color:#999;background-color:rgba(0,0,0,.3);position:relative;margin:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;width:5px}.nano>.pane2>.slider2{background-color:#999;background-color:rgba(0,0,0,.3);position:relative;margin:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;height:5px}.nano:hover>.pane,.nano:hover>.pane2,.pane.active,.pane.activescroll,.pane.flashed,.pane2.active,.pane2.activescroll,.pane2.flashed{opacity:.99;filter:alpha(opacity=99)}.nano>.pane.active,.nano>.pane2.active,.nano>.pane2:hover,.nano>.pane:hover{background-color:rgba(0,0,0,.15)}.nano>.pane.active>.slider,.nano>.pane2.active>.slider2,.nano>.pane2:hover>.slider2,.nano>.pane:hover>.slider{background-color:rgba(0,0,0,.4)}.mfp-bg{top:0;left:0;width:100%;height:100%;z-index:1042;overflow:hidden;position:fixed;background:#0b0b0b;opacity:.8;filter:alpha(opacity=80)}.mfp-wrap{top:0;left:0;width:100%;height:100%;z-index:1043;position:fixed;outline:0!important;-webkit-backface-visibility:hidden}.mfp-container{text-align:center;position:absolute;width:100%;height:100%;left:0;top:0;padding:0 8px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mfp-container:before{content:'';display:inline-block;height:100%;vertical-align:middle}.mfp-align-top .mfp-container:before{display:none}.mfp-content{position:relative;display:inline-block;vertical-align:middle;margin:0 auto;text-align:left;z-index:1045}.mfp-ajax-holder .mfp-content,.mfp-inline-holder .mfp-content{width:100%;cursor:auto}.mfp-ajax-cur{cursor:progress}.mfp-zoom-out-cur,.mfp-zoom-out-cur .mfp-image-holder .mfp-close{cursor:-moz-zoom-out;cursor:-webkit-zoom-out;cursor:zoom-out}.mfp-zoom{cursor:pointer;cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.mfp-auto-cursor .mfp-content{cursor:auto}.mfp-arrow,.mfp-close,.mfp-counter,.mfp-preloader{-webkit-user-select:none;-moz-user-select:none;user-select:none}.mfp-loading.mfp-figure{display:none}.mfp-hide{display:none!important}.mfp-preloader{color:#ccc;position:absolute;top:50%;width:auto;text-align:center;margin-top:-.8em;left:8px;right:8px;z-index:1044}.mfp-preloader a{color:#ccc}.mfp-preloader a:hover{color:#fff}.mfp-s-error .mfp-content,.mfp-s-ready .mfp-preloader{display:none}button.mfp-arrow,button.mfp-close{overflow:visible;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;display:block;outline:0;padding:0;z-index:1046;-webkit-box-shadow:none;box-shadow:none}button::-moz-focus-inner{padding:0;border:0}.mfp-close{width:44px;height:44px;line-height:44px;position:absolute;right:0;top:0;text-decoration:none;text-align:center;opacity:.65;padding:0 0 18px 10px;color:#fff;font-style:normal;font-size:28px;font-family:Arial,Baskerville,monospace}.mfp-close:focus,.mfp-close:hover{opacity:1}.mfp-close:active{top:1px}.mfp-close-btn-in .mfp-close{color:#333}.mfp-iframe-holder .mfp-close,.mfp-image-holder .mfp-close{color:#fff;right:-6px;text-align:right;padding-right:6px;width:100%}.mfp-counter{position:absolute;top:0;right:0;color:#ccc;font-size:12px;line-height:18px}.mfp-arrow{position:absolute;opacity:.65;margin:-55px 0 0;top:50%;padding:0;width:90px;height:110px;-webkit-tap-highlight-color:transparent}.mfp-arrow:active{margin-top:-54px}.mfp-arrow:focus,.mfp-arrow:hover{opacity:1}.mfp-arrow .mfp-a,.mfp-arrow .mfp-b,.mfp-arrow:after,.mfp-arrow:before{content:'';display:block;width:0;height:0;position:absolute;left:0;top:0;margin-top:35px;margin-left:35px;border:inset transparent}.mfp-arrow .mfp-a,.mfp-arrow:after{border-top-width:13px;border-bottom-width:13px;top:8px}.mfp-arrow .mfp-b,.mfp-arrow:before{border-top-width:21px;border-bottom-width:21px}.mfp-arrow-left{left:0}.mfp-arrow-left .mfp-a,.mfp-arrow-left:after{border-right:17px solid #fff;margin-left:31px}.mfp-arrow-left .mfp-b,.mfp-arrow-left:before{margin-left:25px;border-right:27px solid #3f3f3f}.mfp-arrow-right{right:0}.mfp-arrow-right .mfp-a,.mfp-arrow-right:after{border-left:17px solid #fff;margin-left:39px}.mfp-arrow-right .mfp-b,.mfp-arrow-right:before{border-left:27px solid #3f3f3f}.mfp-iframe-holder{padding-top:40px;padding-bottom:40px}.mfp-iframe-holder .mfp-content{line-height:0;width:100%;max-width:900px}.mfp-iframe-holder .mfp-close{top:-40px}.mfp-iframe-scaler{width:100%;height:0;overflow:hidden;padding-top:56.25%}.mfp-iframe-scaler iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;box-shadow:0 0 8px rgba(0,0,0,.6);background:#000}img.mfp-img{width:auto;max-width:100%;height:auto;display:block;line-height:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:40px 0;margin:0 auto}.mfp-figure{line-height:0}.mfp-figure:after{content:'';position:absolute;left:0;top:40px;bottom:40px;display:block;right:0;width:auto;height:auto;z-index:-1;box-shadow:0 0 8px rgba(0,0,0,.6);background:#444}.mfp-figure small{color:#bdbdbd;display:block;font-size:12px;line-height:14px}.mfp-bottom-bar{margin-top:-36px;position:absolute;top:100%;left:0;width:100%;cursor:auto}.mfp-title{text-align:left;line-height:18px;color:#f3f3f3;word-wrap:break-word;padding-right:36px}.mfp-image-holder .mfp-content{max-width:100%}.mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer}@media screen and (max-width:800px) and (orientation:landscape),screen and (max-height:300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0}.mfp-img-mobile img.mfp-img{padding:0}.mfp-img-mobile .mfp-figure:after{top:0;bottom:0}.mfp-img-mobile .mfp-figure small{display:inline;margin-left:5px}.mfp-img-mobile .mfp-bottom-bar{background:rgba(0,0,0,.6);bottom:0;margin:0;top:auto;padding:3px 5px;position:fixed;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mfp-img-mobile .mfp-bottom-bar:empty{padding:0}.mfp-img-mobile .mfp-counter{right:5px;top:3px}.mfp-img-mobile .mfp-close{top:0;right:0;width:35px;height:35px;line-height:35px;background:rgba(0,0,0,.6);position:fixed;text-align:center;padding:0}}@media all and (max-width:900px){.mfp-arrow{-webkit-transform:scale(0.75);transform:scale(0.75)}.mfp-arrow-left{-webkit-transform-origin:0;transform-origin:0}.mfp-arrow-right{-webkit-transform-origin:100%;transform-origin:100%}.mfp-container{padding-left:6px;padding-right:6px}}.mfp-ie7 .mfp-img{padding:0}.mfp-ie7 .mfp-bottom-bar{width:600px;left:50%;margin-left:-300px;margin-top:5px;padding-bottom:5px}.mfp-ie7 .mfp-container{padding:0}.mfp-ie7 .mfp-content{padding-top:44px}.mfp-ie7 .mfp-close{top:0;right:0;padding-top:0}.mfp-fade.mfp-bg{opacity:0;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;transition:all .2s ease-out}.mfp-fade.mfp-bg.mfp-ready{opacity:.8}.mfp-fade.mfp-bg.mfp-removing{opacity:0}.mfp-fade.mfp-wrap .mfp-content{opacity:0;-webkit-transition:all .15s ease-out;-moz-transition:all .15s ease-out;transition:all .15s ease-out;-webkit-transform:translateX(-50px);-moz-transform:translateX(-50px);transform:translateX(-50px)}.mfp-fade.mfp-wrap.mfp-ready .mfp-content{opacity:1;-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translateX(0)}.mfp-fade.mfp-wrap.mfp-removing .mfp-content{opacity:0;-webkit-transform:translateX(50px);-moz-transform:translateX(50px);transform:translateX(50px)}.simple-pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.simple-pace-inactive{display:none}.simple-pace .simple-pace-progress{background-color:#939595;position:fixed;z-index:2000;top:0;left:0;height:3px;overflow:hidden;-webkit-transition:width .5s;-moz-transition:width .5s;-o-transition:width .5s;transition:width .5s}.simple-pace .simple-pace-progress-inner{position:absolute;top:0;left:0;right:-32px;bottom:0;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.3)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.3)),color-stop(0.75,rgba(255,255,255,.3)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.3) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.3) 50%,rgba(255,255,255,.3) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.3) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.3) 50%,rgba(255,255,255,.3) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.3) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.3) 50%,rgba(255,255,255,.3) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.3) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.3) 50%,rgba(255,255,255,.3) 75%,transparent 75%,transparent);-webkit-background-size:32px 32px;-moz-background-size:32px 32px;-o-background-size:32px 32px;background-size:32px 32px;-webkit-animation:simple-pace-stripe-animation 500ms linear infinite;-moz-animation:simple-pace-stripe-animation 500ms linear infinite;-ms-animation:simple-pace-stripe-animation 500ms linear infinite;-o-animation:simple-pace-stripe-animation 500ms linear infinite;animation:simple-pace-stripe-animation 500ms linear infinite}@-webkit-keyframes simple-pace-stripe-animation{0%{-webkit-transform:none;transform:none}100%{-webkit-transform:translate(-32px,0);transform:translate(-32px,0)}}@-moz-keyframes simple-pace-stripe-animation{0%{-moz-transform:none;transform:none}100%{-moz-transform:translate(-32px,0);transform:translate(-32px,0)}}@-o-keyframes simple-pace-stripe-animation{0%{-o-transform:none;transform:none}100%{-o-transform:translate(-32px,0);transform:translate(-32px,0)}}@-ms-keyframes simple-pace-stripe-animation{0%{-ms-transform:none;transform:none}100%{-ms-transform:translate(-32px,0);transform:translate(-32px,0)}}@keyframes simple-pace-stripe-animation{0%{transform:none}100%{transform:translate(-32px,0)}}.inputosaurus-container{background-color:#fff;margin:0 5px 0 0;display:inline-block;cursor:text;font-size:14px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.inputosaurus-container li{display:block;float:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;-ms-text-overflow:ellipsis;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.75) inset;-moz-box-shadow:0 1px 0 rgba(255,255,255,.75) inset;box-shadow:0 1px 0 rgba(255,255,255,.75) inset;cursor:default}.inputosaurus-container li a{padding:1px;text-decoration:none;outline:0}.inputosaurus-container .inputosaurus-input{border:none;box-shadow:none;background-color:#fff}.inputosaurus-container .inputosaurus-input input{font-size:14px;line-height:20px;color:#555;margin:0;outline:0;padding:0 0 1px 1px;width:25px;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.inputosaurus-container .inputosaurus-input input:hover{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.inputosaurus-input-hidden{display:none}.flag-wrapper{width:24px;height:16px;display:inline-block}.flag{width:16px;height:11px;display:inline-block;background:url(flags.png) no-repeat}.flag.flag-en,.flag.flag-en-us{background-position:-144px -154px}.flag.flag-en-gb,.flag.flag-en-uk{background-position:-176px -44px}.flag.flag-en-ca{background-position:-48px -22px}.flag.flag-nl,.flag.flag-nl-nl{background-position:-80px -110px}.flag.flag-pl,.flag.flag-pl-pl{background-position:-32px -121px}.flag.flag-ru,.flag.flag-ru-ru{background-position:-224px -121px}.flag.flag-ro,.flag.flag-ro-ro{background-position:-192px -121px}.flag.flag-de,.flag.flag-de-de{background-position:-80px -33px}.flag.flag-it,.flag.flag-it-it{background-position:-208px -66px}.flag.flag-is,.flag.flag-is-is{background-position:-192px -66px}.flag.flag-lv,.flag.flag-lv-lv{background-position:-112px -88px}.flag.flag-hu,.flag.flag-hu-hu{background-position:-32px -66px}.flag.flag-sk,.flag.flag-sk-sk{background-position:-144px -132px}.flag.flag-sl,.flag.flag-sl-si,.flag.flag-sl-sl{background-position:-160px -132px}.flag.flag-ua,.flag.flag-ua-ua,.flag.flag-uk-ua{background-position:-96px -154px}.flag.flag-nb,.flag.flag-nb-no,.flag.flag-no{background-position:-96px -110px}.flag.flag-fr,.flag.flag-fr-ca,.flag.flag-fr-fr{background-position:-144px -44px}.flag.flag-es,.flag.flag-es-es,.flag.flag-es-la{background-position:-16px -44px}.flag.flag-ja,.flag.flag-ja-jp,.flag.flag-jp{background-position:-16px -77px}.flag.flag-ko-kr{background-position:-144px -77px}.flag.flag-pt,.flag.flag-pt-pt{background-position:-112px -121px}.flag.flag-pt-br{background-position:-192px -11px}.flag.flag-cn,.flag.flag-zh-cn,.flag.flag-zh-hk,.flag.flag-zh-tw{background-position:-208px -22px}.clearfix:after,.clearfix:before{display:table;content:"";line-height:0}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body{font-size:14px;line-height:20px;color:#333}a{color:#08c;text-decoration:none}a:hover{color:#005580;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px}.row:after,.row:before{display:table;content:"";line-height:0}.row:after{clear:both}[class*=span]{float:left;margin-left:20px}.container,.navbar-fixed-bottom .container,.navbar-fixed-top .container,.navbar-static-top .container,.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%}.row-fluid:after,.row-fluid:before{display:table;content:"";line-height:0}.row-fluid:after{clear:both}.row-fluid [class*=span]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.12765957%}.row-fluid [class*=span]:first-child{margin-left:0}.row-fluid .span12{width:100%}.row-fluid .span11{width:91.4893617%}.row-fluid .span10{width:82.9787234%}.row-fluid .span9{width:74.46808511%}.row-fluid .span8{width:65.95744681%}.row-fluid .span7{width:57.44680851%}.row-fluid .span6{width:48.93617021%}.row-fluid .span5{width:40.42553191%}.row-fluid .span4{width:31.91489362%}.row-fluid .span3{width:23.40425532%}.row-fluid .span2{width:14.89361702%}.row-fluid .span1{width:6.38297872%}.row-fluid .offset12{margin-left:104.25531915%}.row-fluid .offset12:first-child{margin-left:102.12765957%}.row-fluid .offset11{margin-left:95.74468085%}.row-fluid .offset11:first-child{margin-left:93.61702128%}.row-fluid .offset10{margin-left:87.23404255%}.row-fluid .offset10:first-child{margin-left:85.10638298%}.row-fluid .offset9{margin-left:78.72340426%}.row-fluid .offset9:first-child{margin-left:76.59574468%}.row-fluid .offset8{margin-left:70.21276596%}.row-fluid .offset8:first-child{margin-left:68.08510638%}.row-fluid .offset7{margin-left:61.70212766%}.row-fluid .offset7:first-child{margin-left:59.57446809%}.row-fluid .offset6{margin-left:53.19148936%}.row-fluid .offset6:first-child{margin-left:51.06382979%}.row-fluid .offset5{margin-left:44.68085106%}.row-fluid .offset5:first-child{margin-left:42.55319149%}.row-fluid .offset4{margin-left:36.17021277%}.row-fluid .offset4:first-child{margin-left:34.04255319%}.row-fluid .offset3{margin-left:27.65957447%}.row-fluid .offset3:first-child{margin-left:25.53191489%}.row-fluid .offset2{margin-left:19.14893617%}.row-fluid .offset2:first-child{margin-left:17.0212766%}.row-fluid .offset1{margin-left:10.63829787%}.row-fluid .offset1:first-child{margin-left:8.5106383%}.row-fluid [class*=span].hide,[class*=span].hide{display:none}.row-fluid [class*=span].pull-right,[class*=span].pull-right{float:right}.container{margin-right:auto;margin-left:auto}.container:after,.container:before{display:table;content:"";line-height:0}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px}.container-fluid:after,.container-fluid:before{display:table;content:"";line-height:0}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:20px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:700}em{font-style:italic}cite{font-style:normal}.muted{color:#999}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:700;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:400;line-height:1;color:#999}h1{font-size:36px;line-height:40px}h2{font-size:30px;line-height:40px}h3{font-size:24px;line-height:40px}h4{font-size:18px;line-height:20px}h5{font-size:14px;line-height:20px}h6{font-size:12px;line-height:20px}h1 small{font-size:24px}h2 small{font-size:18px}h3 small,h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}ol,ul{padding:0;margin:0 0 10px 25px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}li{line-height:20px}ol.unstyled,ul.unstyled{margin-left:0;list-style:none}dl{margin-bottom:20px}dd,dt{line-height:20px}dt{font-weight:700}dd{margin-left:10px}.dl-horizontal dt{float:left;width:120px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:130px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:25px}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}blockquote:after,blockquote:before,q:after,q:before{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}button,input,label,select,textarea{font-size:14px;font-weight:400;line-height:20px}button,input,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}.uneditable-input,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{display:inline-block;height:20px;padding:4px 6px;margin-bottom:9px;font-size:14px;line-height:20px;color:#555;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}input,textarea{width:210px}textarea{height:auto}.uneditable-input,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}.uneditable-input:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,textarea:focus{border-color:rgba(82,168,236,.8);outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6)}input[type=checkbox],input[type=radio]{margin:4px 0 0;line-height:normal;cursor:pointer}input[type=button],input[type=checkbox],input[type=file],input[type=image],input[type=radio],input[type=reset],input[type=submit]{width:auto}input[type=file],select{height:30px;line-height:30px}select{background-color:#fff}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus,select:focus{outline:#333 dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.025);box-shadow:inset 0 1px 2px rgba(0,0,0,.025);cursor:not-allowed}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.checkbox,.radio{min-height:18px;padding-left:18px}.checkbox input[type=checkbox],.radio input[type=radio]{float:left;margin-left:-18px}.controls>.checkbox:first-child,.controls>.radio:first-child{padding-top:5px}.checkbox.inline,.radio.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.checkbox.inline+.checkbox.inline,.radio.inline+.radio.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}.row-fluid .uneditable-input[class*=span],.row-fluid input[class*=span],.row-fluid select[class*=span],.row-fluid textarea[class*=span],.uneditable-input[class*=span],input[class*=span],select[class*=span],textarea[class*=span]{float:none;margin-left:0}.input-append .uneditable-input[class*=span],.input-append input[class*=span],.input-prepend .uneditable-input[class*=span],.input-prepend input[class*=span],.row-fluid .input-append [class*=span],.row-fluid .input-prepend [class*=span],.row-fluid .uneditable-input[class*=span],.row-fluid input[class*=span],.row-fluid select[class*=span],.row-fluid textarea[class*=span]{display:inline-block}.uneditable-input,input,textarea{margin-left:0}.controls-row [class*=span]+[class*=span]{margin-left:20px}.uneditable-input.span12,input.span12,textarea.span12{width:926px}.uneditable-input.span11,input.span11,textarea.span11{width:846px}.uneditable-input.span10,input.span10,textarea.span10{width:766px}.uneditable-input.span9,input.span9,textarea.span9{width:686px}.uneditable-input.span8,input.span8,textarea.span8{width:606px}.uneditable-input.span7,input.span7,textarea.span7{width:526px}.uneditable-input.span6,input.span6,textarea.span6{width:446px}.uneditable-input.span5,input.span5,textarea.span5{width:366px}.uneditable-input.span4,input.span4,textarea.span4{width:286px}.uneditable-input.span3,input.span3,textarea.span3{width:206px}.uneditable-input.span2,input.span2,textarea.span2{width:126px}.uneditable-input.span1,input.span1,textarea.span1{width:46px}.controls-row:after,.controls-row:before{display:table;content:"";line-height:0}.controls-row:after{clear:both}.controls-row [class*=span]{float:left}input[disabled],input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type=checkbox][disabled],input[type=checkbox][readonly],input[type=radio][disabled],input[type=radio][readonly]{background-color:transparent}.control-group.warning .help-block,.control-group.warning .help-inline,.control-group.warning>label{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.control-group.warning .checkbox:focus,.control-group.warning .radio:focus,.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e}.control-group.warning .input-append .add-on,.control-group.warning .input-prepend .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error .help-block,.control-group.error .help-inline,.control-group.error>label{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.control-group.error .checkbox:focus,.control-group.error .radio:focus,.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392}.control-group.error .input-append .add-on,.control-group.error .input-prepend .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success .help-block,.control-group.success .help-inline,.control-group.success>label{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.control-group.success .checkbox:focus,.control-group.success .radio:focus,.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b}.control-group.success .input-append .add-on,.control-group.success .input-prepend .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}input:focus:required:invalid,select:focus:required:invalid,textarea:focus:required:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:required:invalid:focus,select:focus:required:invalid:focus,textarea:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5}.form-actions:after,.form-actions:before{display:table;content:"";line-height:0}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;vertical-align:middle;padding-left:5px}.input-append,.input-prepend{margin-bottom:5px;font-size:0;white-space:nowrap}.input-append .uneditable-input,.input-append input,.input-append select,.input-prepend .uneditable-input,.input-prepend input,.input-prepend select{position:relative;margin-bottom:0;font-size:14px;vertical-align:top;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-append .uneditable-input:focus,.input-append input:focus,.input-append select:focus,.input-prepend .uneditable-input:focus,.input-prepend input:focus,.input-prepend select:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:400;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-append .btn,.input-prepend .add-on,.input-prepend .btn{margin-left:-1px;vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-append .uneditable-input,.input-append input,.input-append select,.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-append .add-on:last-child,.input-append .btn:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-prepend.input-append .uneditable-input,.input-prepend.input-append input,.input-prepend.input-append select{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}input.search-query{padding-right:14px;padding-left:14px;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn,.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-horizontal .help-inline,.form-horizontal .input-append,.form-horizontal .input-prepend,.form-horizontal .uneditable-input,.form-horizontal input,.form-horizontal select,.form-horizontal textarea,.form-inline .help-inline,.form-inline .input-append,.form-inline .input-prepend,.form-inline .uneditable-input,.form-inline input,.form-inline select,.form-inline textarea,.form-search .help-inline,.form-search .input-append,.form-search .input-prepend,.form-search .uneditable-input,.form-search input,.form-search select,.form-search textarea{display:inline-block;margin-bottom:0;vertical-align:middle}.form-horizontal .hide,.form-inline .hide,.form-search .hide{display:none}.form-inline .btn-group,.form-inline label,.form-search .btn-group,.form-search label{display:inline-block}.form-inline .input-append,.form-inline .input-prepend,.form-search .input-append,.form-search .input-prepend{margin-bottom:0}.form-inline .checkbox,.form-inline .radio,.form-search .checkbox,.form-search .radio{padding-left:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio],.form-search .checkbox input[type=checkbox],.form-search .radio input[type=radio]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px}.form-horizontal .control-group:after,.form-horizontal .control-group:before{display:table;content:"";line-height:0}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:140px;padding-top:5px;text-align:right}.form-horizontal .controls{margin-left:160px}.form-horizontal .help-block{margin-top:10px;margin-bottom:0}.form-horizontal .form-actions{padding-left:160px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table td,.table th{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:700}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child td,.table caption+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table thead:first-child tr:first-child td,.table thead:first-child tr:first-child th{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table-condensed td,.table-condensed th{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered td,.table-bordered th{border-left:1px solid #ddd}.table-bordered caption+tbody tr:first-child td,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+thead tr:first-child th,.table-bordered tbody:first-child tr:first-child td,.table-bordered tbody:first-child tr:first-child th,.table-bordered thead:first-child tr:first-child th{border-top:0}.table-bordered tbody:first-child tr:first-child td:first-child,.table-bordered thead:first-child tr:first-child th:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered tbody:first-child tr:first-child td:last-child,.table-bordered thead:first-child tr:first-child th:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered tbody:last-child tr:last-child td:first-child,.table-bordered tfoot:last-child tr:last-child td:first-child,.table-bordered thead:last-child tr:last-child th:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;-moz-border-radius-bottomleft:4px}.table-bordered tbody:last-child tr:last-child td:last-child,.table-bordered tfoot:last-child tr:last-child td:last-child,.table-bordered thead:last-child tr:last-child th:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered caption+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered caption+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-right-topleft:4px}.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9}.table-hover tbody tr:hover td,.table-hover tbody tr:hover th{background-color:#f5f5f5}.row-fluid table [class*=span],table [class*=span]{display:table-cell;float:none;margin-left:0}table .span1{float:none;width:44px;margin-left:0}table .span2{float:none;width:124px;margin-left:0}table .span3{float:none;width:204px;margin-left:0}table .span4{float:none;width:284px;margin-left:0}table .span5{float:none;width:364px;margin-left:0}table .span6{float:none;width:444px;margin-left:0}table .span7{float:none;width:524px;margin-left:0}table .span8{float:none;width:604px;margin-left:0}table .span9{float:none;width:684px;margin-left:0}table .span10{float:none;width:764px;margin-left:0}table .span11{float:none;width:844px;margin-left:0}table .span12{float:none;width:924px;margin-left:0}table .span13{float:none;width:1004px;margin-left:0}table .span14{float:none;width:1084px;margin-left:0}table .span15{float:none;width:1164px;margin-left:0}table .span16{float:none;width:1244px;margin-left:0}table .span17{float:none;width:1324px;margin-left:0}table .span18{float:none;width:1404px;margin-left:0}table .span19{float:none;width:1484px;margin-left:0}table .span20{float:none;width:1564px;margin-left:0}table .span21{float:none;width:1644px;margin-left:0}table .span22{float:none;width:1724px;margin-left:0}table .span23{float:none;width:1804px;margin-left:0}table .span24{float:none;width:1884px;margin-left:0}.table tbody tr.success td{background-color:#dff0d8}.table tbody tr.error td{background-color:#f2dede}.table tbody tr.info td{background-color:#d9edf7}.dropdown,.dropup{position:relative}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu li>a:focus,.dropdown-menu li>a:hover,.dropdown-submenu:hover>a{text-decoration:none;color:#fff;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0)}.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0)}.dropdown-menu .disabled>a,.dropdown-menu .disabled>a:hover{color:#999}.dropdown-menu .disabled>a:hover{text-decoration:none;background-color:transparent;cursor:default}.open>.dropdown-menu{display:block}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:"\2191"}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px;-moz-border-radius:0 6px 6px;border-radius:0 6px 6px}.dropdown-submenu:hover .dropdown-menu{display:block}.dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc;margin-top:5px;margin-right:-10px}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown .dropdown-menu .nav-header{padding-left:20px;padding-right:20px}.typeahead{margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:700;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.btn{display:inline-block;padding:4px 14px;margin-bottom:0;font-size:14px;line-height:20px;text-align:center;vertical-align:middle;cursor:pointer;color:#333;background-color:#f5f5f5;background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);border:1px solid #bbb;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.btn.active,.btn.disabled,.btn:active,.btn:hover,.btn[disabled]{color:#333;background-color:#e6e6e6}.btn:hover{color:#333;text-decoration:none;background-color:#e6e6e6;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:#333 dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.active,.btn:active{background-color:#e6e6e6;background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.btn.disabled,.btn[disabled]{cursor:default;background-color:#e6e6e6;background-image:none}.btn-large{padding:9px 14px;font-size:16px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.btn-large [class^=icon-]{margin-top:2px}.btn-small{padding:3px 9px;font-size:12px;line-height:18px}.btn-small [class^=icon-]{margin-top:0}.btn-mini{padding:2px 6px;font-size:11px;line-height:16px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary.active,.btn-primary.disabled,.btn-primary:active,.btn-primary:hover,.btn-primary[disabled]{color:#fff;background-color:#04c}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning.active,.btn-warning.disabled,.btn-warning:active,.btn-warning:hover,.btn-warning[disabled]{color:#fff;background-color:#f89406}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#da4f49;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger.active,.btn-danger.disabled,.btn-danger:active,.btn-danger:hover,.btn-danger[disabled]{color:#fff;background-color:#bd362f}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#5bb75b;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success.active,.btn-success.disabled,.btn-success:active,.btn-success:hover,.btn-success[disabled]{color:#fff;background-color:#51a351}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#49afcd;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info.active,.btn-info.disabled,.btn-info:active,.btn-info:hover,.btn-info[disabled]{color:#fff;background-color:#2f96b4}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#363636;background-image:-moz-linear-gradient(top,#444,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse.active,.btn-inverse.disabled,.btn-inverse:active,.btn-inverse:hover,.btn-inverse[disabled]{color:#fff;background-color:#222}button.btn::-moz-focus-inner,input[type=submit].btn::-moz-focus-inner{padding:0;border:0}.btn-link,.btn-link:active{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{border-color:transparent;cursor:pointer;color:#08c;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover{color:#005580;text-decoration:underline;background-color:transparent}.btn-group{position:relative;font-size:0;white-space:nowrap}.btn-toolbar{font-size:0}.btn-toolbar .btn-group{display:inline-block}.btn-toolbar .btn+.btn,.btn-toolbar .btn+.btn-group,.btn-toolbar .btn-group+.btn{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu{font-size:14px}.btn-group>.btn-mini{font-size:11px}.btn-group>.btn-small{font-size:12px}.btn-group>.btn-large{font-size:16px}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn.large:first-child{margin-left:0}.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,.125),inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,.125),inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 1px 0 0 rgba(255,255,255,.125),inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.btn-group>.btn-mini+.dropdown-toggle{padding-left:5px;padding-right:5px}.btn-group>.btn-large+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-large .caret,.btn-mini .caret,.btn-small .caret{margin-top:6px}.btn-large .caret{border-left-width:5px;border-right-width:5px;border-top-width:5px}.dropup .btn-large .caret{border-bottom:5px solid #000;border-top:0}.btn-danger .caret,.btn-info .caret,.btn-inverse .caret,.btn-primary .caret,.btn-success .caret,.btn-warning .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block}.btn-group-vertical .btn{display:block;float:none;width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical .btn+.btn{margin-left:0;margin-top:-1px}.btn-group-vertical .btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical .btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical .btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical .btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847}.alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-left:0;margin-bottom:20px;list-style:none}.nav>li>a{display:block}.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:700;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-left:15px;padding-right:15px;margin-bottom:0}.nav-list .nav-header,.nav-list>li>a{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255,255,255,.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#08c}.nav-list [class^=icon-]{margin-right:2px}.nav-list .divider{height:1px;margin:9px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-pills:after,.nav-pills:before,.nav-tabs:after,.nav-tabs:before{display:table;content:"";line-height:0}.nav-pills:after,.nav-tabs:after{clear:both}.nav-pills>li,.nav-tabs>li{float:left}.nav-pills>li>a,.nav-tabs>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px}.nav-tabs.nav-stacked>li>a:hover{border-color:#ddd;z-index:2}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{border-top-color:#08c;border-bottom-color:#08c;margin-top:6px}.nav .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover{cursor:pointer}.nav-pills .open .dropdown-toggle,.nav-tabs .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open.active .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover{border-color:#999}.tabbable:after,.tabbable:before{display:table;content:"";line-height:0}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-left>.nav-tabs,.tabs-right>.nav-tabs{border-bottom:0}.pill-content>.pill-pane,.tab-content>.tab-pane{display:none}.pill-content>.active,.tab-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover{border-bottom-color:transparent;border-top-color:#ddd}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover{text-decoration:none;background-color:transparent;cursor:default}.navbar{overflow:visible;margin-bottom:20px;color:#555}.navbar-inner{min-height:40px;padding-left:20px;padding-right:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,.065);box-shadow:0 1px 4px rgba(0,0,0,.065)}.navbar .container{width:auto}.nav-collapse.collapse{height:auto}.navbar .brand{float:left;display:block;padding:10px 20px;margin-left:-20px;font-size:20px;font-weight:200;color:#555;text-shadow:0 1px 0 #fff}.navbar .brand:hover{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px}.navbar-link{color:#555}.navbar-link:hover{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-left:1px solid #f2f2f2;border-right:1px solid #fff}.navbar .btn,.navbar .btn-group{margin-top:6px}.navbar .btn-group .btn{margin:0}.navbar-form{margin-bottom:0}.navbar-form:after,.navbar-form:before{display:table;content:"";line-height:0}.navbar-form:after{clear:both}.navbar-form .checkbox,.navbar-form .radio,.navbar-form input,.navbar-form select{margin-top:5px}.navbar-form .btn,.navbar-form input,.navbar-form select{display:inline-block;margin-bottom:0}.navbar-form input[type=checkbox],.navbar-form input[type=image],.navbar-form input[type=radio]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:6px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{margin-bottom:0;padding:4px 14px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:400;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;width:100%;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-bottom .navbar-inner,.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border:0}.navbar-fixed-bottom .navbar-inner,.navbar-fixed-top .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-bottom .container,.navbar-fixed-top .container,.navbar-static-top .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1),0 1px 10px rgba(0,0,0,.1);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1),0 1px 10px rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1),0 1px 10px rgba(0,0,0,.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1),0 -1px 10px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 0 rgba(0,0,0,.1),0 -1px 10px rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1),0 -1px 10px rgba(0,0,0,.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px;color:#555;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{background-color:transparent;color:#333;text-decoration:none}.navbar .nav>.active>a,.navbar .nav>.active>a:focus,.navbar .nav>.active>a:hover{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,.125);box-shadow:inset 0 3px 8px rgba(0,0,0,.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#ededed;background-image:-moz-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-o-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:linear-gradient(to bottom,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.075)}.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar:active,.navbar .btn-navbar:hover,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,.25);box-shadow:0 1px 0 rgba(0,0,0,.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);position:absolute;top:-7px;left:9px}.navbar .nav>li>.dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;top:-6px;left:10px}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0,0,0,.2);border-bottom:0;bottom:-7px;top:auto}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{border-top:6px solid #fff;border-bottom:0;bottom:-6px;top:auto}.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle,.navbar .nav li.dropdown.open>.dropdown-toggle{background-color:#e5e5e5;color:#555}.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .nav>li>.dropdown-menu.pull-right,.navbar .pull-right>li>.dropdown-menu{left:auto;right:0}.navbar .nav>li>.dropdown-menu.pull-right:before,.navbar .pull-right>li>.dropdown-menu:before{left:auto;right:12px}.navbar .nav>li>.dropdown-menu.pull-right:after,.navbar .pull-right>li>.dropdown-menu:after{left:auto;right:13px}.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu,.navbar .pull-right>li>.dropdown-menu .dropdown-menu{left:auto;right:100%;margin-left:0;margin-right:-1px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse{color:#999}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);border-color:#252525}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover{color:#fff}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{background-color:transparent;color:#fff}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:focus,.navbar-inverse .nav .active>a:hover{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .divider-vertical{border-left-color:#111;border-right-color:#222}.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open>.dropdown-toggle{background-color:#111;color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1),0 1px 0 rgba(255,255,255,.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1),0 1px 0 rgba(255,255,255,.15);box-shadow:inset 0 1px 2px rgba(0,0,0,.1),0 1px 0 rgba(255,255,255,.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query.focused,.navbar-inverse .navbar-search .search-query:focus{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);-moz-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15);outline:0}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e0e0e;background-image:-moz-linear-gradient(top,#151515,#040404);background-image:-webkit-gradient(linear,0 0,0 100%,from(#151515),to(#040404));background-image:-webkit-linear-gradient(top,#151515,#040404);background-image:-o-linear-gradient(top,#151515,#040404);background-image:linear-gradient(to bottom,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb li{display:inline-block;text-shadow:0 1px 0 #fff}.breadcrumb .divider{padding:0 5px;color:#ccc}.breadcrumb .active{color:#999}.modal-open .dropdown-menu{z-index:2050}.modal-open .popover{z-index:2060}.modal-open .tooltip{z-index:2080}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal{position:fixed;top:50%;left:50%;z-index:1050;overflow:auto;width:560px;margin:-250px 0 0 -280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.3);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,.3);box-shadow:0 3px 7px rgba(0,0,0,.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{overflow-y:auto;max-height:400px;padding:15px}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:after,.modal-footer:before{display:table;content:"";line-height:0}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.tooltip{position:absolute;display:block;visibility:visible;padding:5px;opacity:0;filter:alpha(opacity=0)}.tooltip.top{margin-top:-3px}.tooltip.right{margin-left:3px}.tooltip.bottom{margin-top:3px}.tooltip.left{margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#eee;text-align:center;text-decoration:none;background-color:#333;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#333}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#333}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#333}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#333}.popover{position:absolute;top:0;left:0;display:none;width:236px;padding:1px;background-color:#fff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-bottom:10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-right:10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover-content ol,.popover-content p,.popover-content ul{margin-bottom:0}.popover .arrow,.popover .arrow:after{position:absolute;display:inline-block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow:after{content:"";z-index:-1}.popover.top .arrow{bottom:-10px;left:50%;margin-left:-10px;border-width:10px 10px 0;border-top-color:#fff}.popover.top .arrow:after{border-width:11px 11px 0;border-top-color:rgba(0,0,0,.25);bottom:-1px;left:-11px}.popover.right .arrow{top:50%;left:-10px;margin-top:-10px;border-width:10px 10px 10px 0;border-right-color:#fff}.popover.right .arrow:after{border-width:11px 11px 11px 0;border-right-color:rgba(0,0,0,.25);bottom:-11px;left:-1px}.popover.bottom .arrow{top:-10px;left:50%;margin-left:-10px;border-width:0 10px 10px;border-bottom-color:#fff}.popover.bottom .arrow:after{border-width:0 11px 11px;border-bottom-color:rgba(0,0,0,.25);top:-1px;left:-11px}.popover.left .arrow{top:50%;right:-10px;margin-top:-10px;border-width:10px 0 10px 10px;border-left-color:#fff}.popover.left .arrow:after{border-width:11px 0 11px 11px;border-left-color:rgba(0,0,0,.25);bottom:-11px;right:-1px}.badge,.label{font-size:11.84px;font-weight:700;line-height:14px;color:#fff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#999}.label{padding:1px 4px 2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding:1px 9px 2px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}a.badge:hover,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.badge-important,.label-important{background-color:#b94a48}.badge-important[href],.label-important[href]{background-color:#953b39}.badge-warning,.label-warning{background-color:#f89406}.badge-warning[href],.label-warning[href]{background-color:#c67605}.badge-success,.label-success{background-color:#468847}.badge-success[href],.label-success[href]{background-color:#356635}.badge-info,.label-info{background-color:#3a87ad}.badge-info[href],.label-info[href]{background-color:#2d6987}.badge-inverse,.label-inverse{background-color:#333}.badge-inverse[href],.label-inverse[href]{background-color:#1a1a1a}.btn .badge,.btn .label{position:relative;top:-1px}.btn-mini .badge,.btn-mini .label{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.progress .bar{width:0;height:100%;color:#fff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress .bar-danger,.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress .bar-success,.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0)}.progress-striped .bar-success,.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress .bar-info,.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress .bar-warning,.progress-warning .bar{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0)}.progress-striped .bar-warning,.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed}[class*=" icon-"],[class^=icon-]{display:inline-block;width:16px;height:16px;line-height:17px;font-size:16px;vertical-align:text-top}.icon-folder,.icon-folder-add,.icon-list{line-height:18px;font-size:18px;margin-top:-1px;margin-left:-1px;width:17px}.iconsize24{line-height:24px;font-size:24px}.g-ui-menu .e-item:hover [class*=" icon-"],.g-ui-menu .e-item:hover [class^=icon-],.icon-white,.nav>.active>a>[class*=" icon-"],.nav>.active>a>[class^=icon-]{color:#fff}.icon-none{background-image:none!important}.icon-checkbox-checked,.icon-checkbox-partial,.icon-checkbox-unchecked,.icon-radio-checked,.icon-radio-unchecked{cursor:pointer;color:#555;font-size:1em}.icon-checkbox-checked:active,.icon-checkbox-checked:hover,.icon-checkbox-partial:active,.icon-checkbox-partial:hover,.icon-checkbox-unchecked:active,.icon-checkbox-unchecked:hover,.icon-radio-checked:active,.icon-radio-checked:hover,.icon-radio-unchecked:active,.icon-radio-unchecked:hover{color:#000}.icon-white.icon-checkbox-checked,.icon-white.icon-checkbox-partial,.icon-white.icon-checkbox-unchecked,.icon-white.icon-radio-checked,.icon-white.icon-radio-unchecked{color:#eee}.icon-white.icon-checkbox-checked:active,.icon-white.icon-checkbox-checked:hover,.icon-white.icon-checkbox-partial:active,.icon-white.icon-checkbox-partial:hover,.icon-white.icon-checkbox-unchecked:active,.icon-white.icon-checkbox-unchecked:hover,.icon-white.icon-radio-checked:active,.icon-white.icon-radio-checked:hover,.icon-white.icon-radio-unchecked:active,.icon-white.icon-radio-unchecked:hover{color:#fff}.denied-by-browser,.denied-by-browser .icon-checkbox-checked,.denied-by-browser icon-checkbox-unchecked{cursor:default}.down-mini,.right-mini{width:16px;line-height:20px}@-webkit-keyframes rotation{to{-webkit-transform:rotate(1turn)}}@-moz-keyframes rotation{to{-moz-transform:rotate(1turn)}}@keyframes rotation{to{transform:rotate(1turn)}}.icon-spinner{width:16px;height:16px}.icon-spinner:before{-webkit-transform-origin:8px 8px;-moz-transform-origin:8px 8px;transform-origin:8px 8px;margin-top:1px;display:inline-block;font-size:16px;line-height:100%}html.no-cssanimations .icon-spinner{background-image:url(images/sync.png);background-repeat:no-repeat;font-family:Arial}html.no-cssanimations .icon-spinner:before{content:""}html.no-cssanimations .icon-spinner.animated{background-image:url(images/sync.gif)}html.cssanimations .icon-spinner.animated:before{-webkit-animation:rotation 1s infinite steps(40);-moz-animation:rotation 1s infinite steps(40);animation:rotation 1s infinite steps(40)}label{cursor:pointer}label.inline{display:inline-block}.legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}.legend small{font-size:15px;color:#999}.legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.input-append .uneditable-input,.input-append input,.input-append select{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}select{width:223px}.btn-small.btn-small-small{padding:3px 9px;font-size:11px;line-height:11px}.btn.btn-ellipsis{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.btn.btn-narrow{padding-left:12px;padding-right:12px}.btn-group.btn-group-custom-margin>.btn+.btn{margin-left:0}.btn-group+.btn-group{margin-left:3px}.btn{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background-image:none;padding-left:13px;padding-right:13px;text-shadow:0 1px 0 #fff;border-color:rgba(0,0,0,.25)}.btn.disabled,.btn[disabled]{opacity:.75;filter:alpha(opacity=75);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.btn.btn-dark-disabled-border.disabled,.btn.btn-dark-disabled-border[disabled]{border-color:#aaa}html.rgba.textshadow .btn.btn-danger,html.rgba.textshadow .btn.btn-primary,html.rgba.textshadow .btn.btn-success{text-shadow:0 1px 0 rgba(0,0,0,.3)}.btn-toolbar{margin-top:0;margin-bottom:0}.dropdown-menu{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.2);-moz-box-shadow:0 1px 2px rgba(0,0,0,.2);box-shadow:0 1px 2px rgba(0,0,0,.2)}.tooltip{font-size:14px;z-index:2000!important;overflow:hidden;text-overflow:ellipsis}.tooltip.in{opacity:1;filter:alpha(opacity=100)}.tooltip .tooltip-inner{max-width:400px;text-shadow:0 0 5px rgba(0,0,0,.2);padding:5px 10px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.tooltip .tooltip-big{font-size:18px;padding:0 10px;white-space:nowrap}.btn-group>.btn:first-child{-webkit-border-top-left-radius:3px;-moz-border-radius-topleft:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-moz-border-radius-bottomleft:3px;border-bottom-left-radius:3px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:3px;-moz-border-radius-topright:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-bottomright:3px;border-bottom-right-radius:3px}.btn-group>.btn.large:first-child{-webkit-border-top-left-radius:3px;-moz-border-radius-topleft:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-moz-border-radius-bottomleft:3px;border-bottom-left-radius:3px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:3px;-moz-border-radius-topright:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-bottomright:3px;border-bottom-right-radius:3px}.dropdown.colored-toggle.open .btn.dropdown-toggle{color:#BD362F}.dropdown.colored-toggle.open .btn.dropdown-toggle .caret{border-top-color:#BD362F}.dropdown.colored-toggle.open .btn.dropdown-toggle [class^=icon-]:before{color:#BD362F}input[type=email],input[type=password],input[type=search],input[type=text],textarea{border:1px solid #ccc}input[type=email]:focus,input[type=password]:focus,input[type=search]:focus,input[type=text]:focus,textarea:focus{background-color:#fff;border:1px solid #999;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}input[type=email],input[type=password],input[type=search],input[type=text]{height:20px;line-height:20px}select{border:1px solid #ccc}.alert a{text-decoration:underline}.alert.alert-null-left-margin{margin-left:0}.alert.alert-error a{color:#b94a48}.nav-tabs>li>a{color:#555}.popover{z-index:2000}html.no-rgba .modal{border-width:0!important}.modal-backdrop,.modal-backdrop.fade.in{opacity:.1;filter:alpha(opacity=10)}.popups{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1100;overflow:auto}.popups .modal{position:static;z-index:1101;margin:5% auto;background-color:transparent;overflow:hidden;-webkit-box-shadow:0 5px 80px rgba(0,0,0,.3);-moz-box-shadow:0 5px 80px rgba(0,0,0,.3);box-shadow:0 5px 80px rgba(0,0,0,.3)}.popups .modal .modal-body{background-color:#fff;max-height:none}.modal.fade{-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;top:0}.modal.fade.in{top:0}.modal.loginAdminContent .modal-body,.modal.loginContent .modal-body{background-color:transparent!important}.picker.modal-dialog-bg,.picker.picker-dialog-bg{z-index:2000!important}.picker.modal-dialog,.picker.picker-dialog{z-index:2001!important}.form-horizontal.long-label .control-group .control-label{width:160px}.form-horizontal.long-label .control-group .controls{margin-left:180px}.control-label.remove-padding-top{padding-top:0}.inputosaurus-container{width:99%;line-height:20px;padding:2px;border:1px solid #ccc;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}.inputosaurus-container.inputosaurus-focused{background-color:#fff;border:1px solid #999;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.inputosaurus-container li{max-width:500px;background-color:#eee;border:1px solid #aaa;line-height:18px;padding:2px 15px 2px 5px;margin:2px;color:#555;z-index:100;position:relative}.inputosaurus-container li.ui-draggable.ui-draggable-dragging{z-index:101}.inputosaurus-container li a{color:#999;font-size:12px;position:absolute;top:1px;right:2px}.inputosaurus-container li a:hover{color:#666}.inputosaurus-container li span{padding-right:3px}.inputosaurus-container li.inputosaurus-required{padding-rigth:5px}.inputosaurus-container li.inputosaurus-selected{background-color:#ddd}.inputosaurus-container .inputosaurus-input{margin:1px 10px 1px 0;height:22px}.inputosaurus-container .inputosaurus-input input{border:0;height:21px;padding-left:0}.ui-autocomplete{z-index:2000}.inputosaurus-fake-span{position:absolute;top:0;left:-5000px}.cke_plain{background-color:#fff;outline:0;overflow:auto;z-index:1;margin:0;border:0;padding:10px 0 10px 10px;white-space:pre-wrap;font-family:Monaco,Menlo,Consolas,'Courier New',monospace;font-size:13px;line-height:16px;color:#333;resize:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.cke_plain:focus,.cke_source:focus{border:0}.b-compose .cke_chrome{border-right:0;border-left:0;border-bottom:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.cke_wysiwyg_div{padding:10px!important;font-family:arial,sans-serif;font-size:13px;line-height:16px;color:#333}.cke_wysiwyg_div ul{padding-left:40px}.cke_wysiwyg_div ul li{list-style-type:disc!important}.cke_wysiwyg_div ol{padding-left:40px}.cke_wysiwyg_div ol li{list-style-type:decimal!important}.cke_wysiwyg_div pre{margin:0;padding:0;background:#fff;border:none;font-family:Monaco,Menlo,Consolas,'Courier New',monospace}.cke_wysiwyg_div blockquote{border:0;border-left:solid 2px #444;margin:5px 0 5px 5px;padding-left:5px}.cke_wysiwyg_div blockquote *{font-family:arial,sans-serif;font-size:13px;line-height:16px;color:#333}.cke_wysiwyg_div img{vertical-align:bottom}.cke_wysiwyg_div a{color:#00f;text-decoration:underline}.cke_wysiwyg_div a:visited{color:#609}.cke_wysiwyg_div a:active{color:red}.g-ui-user-select-none{-webkit-user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;standard-user-select:none}.g-ui-user-select-allow{-webkit-user-select:inherit;-webkit-touch-callout:inherit;-khtml-user-select:inherit;-moz-user-select:inherit;-ms-user-select:inherit;-o-user-select:inherit;user-select:inherit;standard-user-select:inherit}.g-ui-clearfix:after,.g-ui-clearfix:before{display:table;content:"";line-height:0}.g-ui-clearfix:after{clear:both}.g-ui-link{color:#369;text-decoration:underline;cursor:pointer}.g-ui-min-height-300{min-height:300px}.g-ui-absolute-reset{position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0;border:0;z-index:0}.g-ui-menu{max-height:400px;max-width:300px;overflow-y:auto;overflow-x:hidden}.g-ui-menu .e-link{text-decoration:none;cursor:pointer}.g-ui-menu .e-item.selected>.e-link{background-color:#eee!important}.g-ui-menu .e-item>.e-link:focus,.g-ui-menu .e-item>.e-link:hover{background-color:#555;background-image:none;color:#fff}.g-ui-menu .e-item.disabled>.e-link{cursor:not-allowed;background-color:#fff;background-image:none;color:grey}.g-ui-menu .e-item.disabled [class^=icon-]{color:grey}.g-ui-table{display:table;width:100%}.g-ui-table .e-row{display:table-row}.g-ui-table .e-cell{display:table-cell;vertical-align:top;text-align:left}.g-ui-height-100proc{height:100%}.g-ui-resizable-delimiter-highlight{border:none;border-right:6px solid #aaa}.e-pagenator .e-page{display:inline-block;color:#999;text-decoration:none;font-size:22px;padding:3px;cursor:pointer}.e-pagenator .e-page:hover .e-page-number{color:#555}.e-pagenator .e-page.current .e-page-number{font-size:25px;color:#333;border-bottom:2px solid #000}html.rgba .g-ui-resizable-delimiter-highlight{border-right-color:rgba(0,0,0,.2)}.settings-saved-trigger{display:inline-block;line-height:17px;font-size:16px}.settings-saved-trigger .animated{color:green}.settings-saved-trigger .success{color:green;-webkit-transition:opacity .5s linear;-moz-transition:opacity .5s linear;-o-transition:opacity .5s linear;transition:opacity .5s linear;opacity:0;filter:alpha(opacity=0)}.settings-saved-trigger .error{color:red;-webkit-transition:opacity .5s linear;-moz-transition:opacity .5s linear;-o-transition:opacity .5s linear;transition:opacity .5s linear;opacity:0;filter:alpha(opacity=0)}.settings-saved-trigger .visible{opacity:1;filter:alpha(opacity=100)}.settings-saved-trigger-input.success{border-color:green!important;-webkit-transition:border-color .5s linear;-moz-transition:border-color .5s linear;-o-transition:border-color .5s linear;transition:border-color .5s linear}.settings-saved-trigger-input.error{border-color:red!important;-webkit-transition:border-color .5s linear;-moz-transition:border-color .5s linear;-o-transition:border-color .5s linear;transition:border-color .5s linear}e-spinner{display:none}html.cssanimations .e-spinner{display:block;margin:5px auto 0;width:100px;text-align:center}html.cssanimations .e-spinner .e-bounce{width:15px;height:15px;background-color:#ddd;margin:0 5px;-webkit-box-shadow:0 0 3px rgba(0,0,0,.3);-moz-box-shadow:0 0 3px rgba(0,0,0,.3);box-shadow:0 0 3px rgba(0,0,0,.3);border-radius:100%;display:inline-block;-webkit-animation:bouncedelay 1.4s infinite ease-in-out;animation:bouncedelay 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}html.cssanimations .e-spinner .bounce1{-webkit-animation-delay:-.32s;animation-delay:-.32s}html.cssanimations .e-spinner .bounce2{-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes bouncedelay{0%,100%,80%{-webkit-transform:scale(0)}40%{-webkit-transform:scale(1)}}@keyframes bouncedelay{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}html{margin:0;padding:0;overflow:hidden;font-family:Arial,Verdana,Geneva,sans-serif;height:100%}body{margin:0;padding:0;overflow:hidden;background-color:#e3e3e3;font-family:Arial,Verdana,Geneva,sans-serif;-webkit-touch-callout:none;position:absolute;top:0;left:0;bottom:0;right:0;height:100%}textarea{resize:none}option:disabled{color:#aaa;cursor:not-allowed}body:before{content:"";position:fixed;top:-10px;left:0;width:100%;height:8px;z-index:100;-webkit-box-shadow:0 0 10px rgba(0,0,0,.6);-moz-box-shadow:0 0 10px rgba(0,0,0,.6);box-shadow:0 0 10px rgba(0,0,0,.6)}*,select:focus{outline:0}html.mobile *{-webkit-tap-highlight-color:transparent}#rl-bg{z-index:-1;position:absolute;left:0;right:0;top:0;bottom:0}#rl-content{height:100%;width:100%}#rl-center{position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0;border:0;z-index:0;min-width:600px;min-height:400px}#rl-top{position:absolute;top:0;right:0;left:0;padding:0;margin:0;border:0;bottom:auto;z-index:2}#rl-bottom{position:absolute;right:0;bottom:0;left:0;padding:0;margin:0;border:0;top:auto;z-index:1}#rl-left{position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0;border:0;z-index:0;width:200px;min-width:60px}#rl-right{position:absolute;top:0;right:0;bottom:0;padding:0;margin:0;border:0;z-index:0;z-index:1;left:200px}#rl-sub-left{position:absolute;top:0;bottom:0;left:0;width:500px}#rl-sub-right{position:absolute;top:0;bottom:0;right:0;left:500px}html.ssm-state-desktop-large #rl-left{width:220px}html.ssm-state-desktop-large #rl-right{left:220px}html.ssm-state-desktop-large #rl-sub-left{width:500px}html.ssm-state-desktop-large #rl-sub-right{left:500px}html.ssm-state-desktop-large .b-compose.modal{width:1000px}html.ssm-state-desktop-large .b-contacts-content.modal{width:900px}html.ssm-state-desktop #rl-left{width:200px}html.ssm-state-desktop #rl-right{left:200px}html.ssm-state-desktop #rl-sub-left{width:400px}html.ssm-state-desktop #rl-sub-right{left:400px}html.ssm-state-desktop .b-compose.modal{width:1000px}html.ssm-state-desktop .b-contacts-content.modal{width:900px}html.ssm-state-mobile #rl-left,html.ssm-state-tablet #rl-left{width:155px}html.ssm-state-mobile #rl-right,html.ssm-state-tablet #rl-right{left:155px}html.ssm-state-mobile #rl-sub-left,html.ssm-state-tablet #rl-sub-left{width:310px}html.ssm-state-mobile #rl-sub-left .messageList .inputSearch,html.ssm-state-tablet #rl-sub-left .messageList .inputSearch{width:200px}html.ssm-state-mobile #rl-sub-right,html.ssm-state-tablet #rl-sub-right{left:310px}html.ssm-state-mobile .b-compose.modal,html.ssm-state-mobile .b-contacts-content.modal,html.ssm-state-tablet .b-compose.modal,html.ssm-state-tablet .b-contacts-content.modal{width:700px}html.ssm-state-mobile .b-contacts-content.modal .contactValueInput,html.ssm-state-tablet .b-contacts-content.modal .contactValueInput{width:200px}html.ssm-state-tablet .b-compose.modal{width:700px}html.ssm-state-tablet .b-contacts-content.modal{width:800px}html.ssm-state-tablet .b-contacts-content.modal .contactValueInput{width:250px}.show-on-panel-disabled{display:none}html.rl-left-panel-disabled #rl-left{width:60px!important}html.rl-left-panel-disabled #rl-left .show-on-panel-disabled{display:block}html.rl-left-panel-disabled #rl-left .opacity-on-panel-disabled{opacity:.3;filter:alpha(opacity=30)}html.rl-left-panel-disabled #rl-left .visibility-hidden-on-panel-disabled{visibility:hidden}html.rl-left-panel-disabled #rl-left .hide-on-panel-disabled{display:none}html.rl-left-panel-disabled #rl-left.ui-state-disabled{opacity:1;filter:alpha(opacity=100)}html.rl-left-panel-disabled #rl-right{left:60px!important}.ui-resizable-helper{border-right:5px solid #777;border-right-color:rgba(255,255,255,.7)}html.rl-no-preview-pane #rl-sub-left{right:5px!important;width:inherit}html.rl-no-preview-pane #rl-sub-left .messageList .inputSearch{width:300px!important}html.rl-no-preview-pane #rl-sub-right{left:0!important}html.rl-no-preview-pane #rl-right .ui-resizable-handle{display:none!important}.visible-on-ctrl,.visible-on-ctrl-btn{display:none}.hidden-on-ctrl-btn,html.rl-ctrl-key-pressed .btn-group.open .visible-on-ctrl-btn,html.rl-ctrl-key-pressed .visible-on-ctrl{display:inline-block}html.rl-ctrl-key-pressed .btn-group.open .hidden-on-ctrl-btn,html.rl-ctrl-key-pressed .hidden-on-ctrl{display:none}#rl-loading,#rl-loading-error{position:absolute;font:30px Tahoma;top:50%;width:100%;height:65px;margin:-60px 0 0;background-color:transparent;text-align:center;color:#000}#rl-loading-error{background-image:none;display:none}.nano:after,.nano:before{display:none;content:"";position:absolute;left:0;width:100%;height:10px;z-index:102;-webkit-box-shadow:0 0 20px rgba(0,0,0,.3);-moz-box-shadow:0 0 20px rgba(0,0,0,.3);box-shadow:0 0 20px rgba(0,0,0,.3)}.nano:before{top:-10px}.nano:after{bottom:-10px}.nano.nano-scrolllimit-bottom:after,.nano.nano-scrolllimit-top:before{display:block}.b-system-drop-down .b-toolbar{position:absolute;top:0;right:0;height:30px;padding:10px 8px;z-index:103}.b-system-drop-down .e-facebook-name{display:inline-block;padding-top:4px}.b-system-drop-down .btn.system-dropdown{padding-left:10px;padding-right:10px}.b-system-drop-down .button-fb-logout{margin:5px}.b-system-drop-down .email-title{display:inline-block;max-width:200px;text-align:left;text-overflow:ellipsis;overflow:hidden}.rl-view-model.RL-AdminLogin,.rl-view-model.RL-Login,.rl-view-model.RL-LoginNew{position:relative;height:100%;z-index:5}.b-login-content{height:100%;text-align:center}.b-login-content .loginFormWrapper{display:inline-block;vertical-align:middle;text-align:center}.b-login-content .loginFormWrapper .descWrapper{margin-bottom:10px}.b-login-content .loginFormWrapper .descWrapper .desc{font-size:18px;padding:2px}.b-login-content .loginFormWrapper .alertError{max-width:450px}.b-login-content .loginFormWrapper .loginForm{background-color:#efefef;text-align:left;color:#333;margin:0;float:none}.b-login-content .loginFormWrapper .control-label{font-size:16px;line-height:30px}.b-login-content .loginFormWrapper .control-group{margin-bottom:25px}.b-login-content .loginFormWrapper .wrapper{padding:40px 40px 10px}.b-login-content .loginFormWrapper #recaptcha_image img{border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.b-login-content .loginFormWrapper .inputAdditionalCode,.b-login-content .loginFormWrapper .inputEmail,.b-login-content .loginFormWrapper .inputLogin,.b-login-content .loginFormWrapper .inputLoginForm,.b-login-content .loginFormWrapper .inputPassword{font-size:18px;height:30px;line-height:29px}.b-login-content .loginFormWrapper .signMeLabel{margin-top:5px}.b-login-content .loginFormWrapper .input-append .add-on{position:relative;height:30px;background:0 0;margin-left:-35px;z-index:1000;border:0}.b-login-content .loginFormWrapper .input-append .add-on i{font-size:17px;line-height:29px;color:#999}.b-login-content .loginFormWrapper .control-group.error .add-on i{color:#b94a48}.b-login-content .buttonLogin{margin:0}.b-login-content .alert{margin:0 0 20px;text-align:left}.b-login-content .loginAfter{display:inline-block;height:90%;vertical-align:middle;width:0}.b-login-content .flag-selector{margin-bottom:0}.popups .b-ask-content .modal-header{background-color:#fff}.popups .b-ask-content .modal-body{text-align:center}.popups .b-ask-content .desc-place{font-size:18px}.popups .b-shortcuts-content.modal{width:700px}.popups .b-shortcuts-content .modal-header{background-color:#fff}.b-folders .b-toolbar{position:absolute;top:0;right:0;left:0;height:30px;padding:10px 10px 0 8px;color:#fff;z-index:101}.b-folders .b-footer{position:absolute;bottom:20px;right:0;left:0;height:20px;padding:0 10px 0 5px;z-index:101}.b-folders .b-content{position:absolute;top:58px;bottom:45px;left:0;right:0;overflow:hidden;overflow-y:auto;min-width:100px}.b-folders .b-content .content{-webkit-overflow-scrolling:touch}.b-folders .b-list-delimiter{margin:10px;border-top:0 solid #000;border-bottom:1px solid #999}.b-folders .b-content .e-item{overflow:hidden;white-space:nowrap}.b-folders .b-content .e-item .e-link{display:block;position:relative;z-index:1;height:34px;line-height:34px;background-color:transparent;vertical-align:middle;color:grey;cursor:not-allowed;font-size:14px;padding:0 10px;outline:0;text-decoration:none}.b-folders .b-content .e-item .e-link.selectable{color:#000;cursor:pointer}.b-folders .b-content .e-item .e-link.selectable.droppableHover,.b-folders .b-content .e-item .e-link.selectable.focused,.b-folders .b-content .e-item .e-link.selectable.selected,.b-folders .b-content .e-item .e-link.selectable:hover{background-color:#555;color:#fff}.b-folders .b-content .e-item .e-link.selectable.focused{color:#fff}.b-folders .b-content .e-item .e-link.focused{background-color:#888}.b-folders .b-content .e-item .e-link.system{cursor:default;color:grey}.b-folders .b-content .e-item .e-link .count{position:relative;display:none;margin-top:5px;line-height:19px}.b-folders .b-content .e-item .e-link.print-count{font-weight:700}.b-folders .b-content .e-item .e-link.print-count .count{display:inline}.b-folders .b-content .e-item .e-link.unread-sub{font-weight:700}.b-folders .b-content .e-item .e-link .e-collapsed-sign{cursor:pointer;width:22px;height:30px;line-height:30px;text-align:center;vertical-align:inherit}.b-folders .b-content .e-item .hidden.e-link{display:none}.b-folders .b-content .e-item .b-sub-folders.collapsed{max-height:0;height:0;display:none}.b-folders .b-folder-system-item{font-weight:700}.b-folders .b-sub-folders .e-item .e-link{padding-left:25px}.b-folders .b-sub-folders.unpaddig-folder .e-item .e-link{padding-left:10px}.b-folders .b-sub-folders .b-sub-folders .e-item .e-link{padding-left:40px}.b-folders .b-sub-folders.unpaddig-folder .b-sub-folders .e-item .e-link{padding-left:25px}.b-folders .b-sub-folders .b-sub-folders .b-sub-folders .e-item .e-link{padding-left:55px}.b-folders .b-sub-folders.unpaddig-folder .b-sub-folders .b-sub-folders .e-item .e-link{padding-left:40px}.b-folders .b-sub-folders .b-sub-folders .b-sub-folders .b-sub-folders .e-item .e-link{padding-left:70px}.b-folders .b-sub-folders.unpaddig-folder .b-sub-folders .b-sub-folders .b-sub-folders .e-item .e-link{padding-left:55px}html.rl-left-panel-disabled .btn.buttonContacts{margin-top:10px!important;margin-left:0!important}.popups .b-folder-clear-content .modal-header,.popups .b-folder-create-content .modal-header,.popups .b-folder-system-content .modal-header{background-color:#fff}.popups .b-filter-content{width:800px}.popups .b-filter-content .modal-header{background-color:#fff}.popups .b-languages-content.modal{width:700px}.popups .b-languages-content.exp{width:701px}.popups .b-languages-content .modal-header{background-color:#fff}.popups .b-languages-content .lang-item{display:inline-block;padding:5px 15px;margin:2px 5px;width:180px;background-color:#fff;text-align:left}.popups .b-languages-content .lang-item.selected{background-color:#f5f5f5}.popups .b-languages-content .lang-item:hover{background-color:#eee}.popups .b-account-add-content .modal-header,.popups .b-compose-open-pgp-content .modal-header,.popups .b-open-pgp-key-add-content .modal-header,.popups .b-open-pgp-key-generate-content .modal-header,.popups .b-open-pgp-key-view-content .modal-header{background-color:#fff}.popups .b-compose-open-pgp-content.modal,.popups .b-open-pgp-key-add-content.modal,.popups .b-open-pgp-key-generate-content.modal,.popups .b-open-pgp-key-view-content.modal{width:570px}.popups .b-compose-open-pgp-content .inputKey,.popups .b-open-pgp-key-add-content .inputKey,.popups .b-open-pgp-key-generate-content .inputKey,.popups .b-open-pgp-key-view-content .inputKey{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}.popups .b-compose-open-pgp-content .key-viewer,.popups .b-open-pgp-key-add-content .key-viewer,.popups .b-open-pgp-key-generate-content .key-viewer,.popups .b-open-pgp-key-view-content .key-viewer{max-height:500px;overflow:auto}.popups .b-identity-content .modal-header,.popups .b-two-factor-test-content .modal-header{background-color:#fff}.popups .b-identity-content .textEmail{margin-top:5px;font-weight:700}.popups .b-advanced-search-content.modal{width:750px}.popups .b-advanced-search-content.modal .control-label{width:100px}.popups .b-advanced-search-content.modal .controls{margin-left:110px}.popups .b-advanced-search-content .modal-header{background-color:#fff}html.rl-no-preview-pane .messageList.message-selected{display:none}.messageList .toolbar{position:absolute;top:0;right:0;left:0;height:30px;padding:10px 1px;z-index:102}.messageList .b-footer{position:absolute;bottom:0;right:0;left:0;height:30px;padding:7px;z-index:101;background-color:#eee;-webkit-border-bottom-right-radius:5px;-moz-border-radius-bottomright:5px;border-bottom-right-radius:5px;-webkit-border-bottom-left-radius:5px;-moz-border-radius-bottomleft:5px;border-bottom-left-radius:5px}.messageList .b-footer .e-quota{display:inline-block;margin-top:5px;margin-left:5px;font-size:18px;cursor:help}.messageList .b-footer .e-quota:hover{border-bottom:1px dashed #333}.messageList .inputSearch{width:258px}.messageList .btn.buttonMoreSearch{padding-left:8px;padding-right:8px}.messageList .b-message-list-wrapper{position:absolute;top:50px;right:0;left:0;bottom:5px;border:1px solid #aaa;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);-moz-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;z-index:101}.messageList .second-toolbar{position:absolute;top:0;right:0;left:0;height:29px;padding:10px 8px 10px 11px;z-index:101;background-color:#eee;-webkit-border-top-right-radius:5px;-moz-border-radius-topright:5px;border-top-right-radius:5px;-webkit-border-top-left-radius:5px;-moz-border-radius-topleft:5px;border-top-left-radius:5px}.messageList .second-toolbar .checkboxCkeckAll{margin:5px 0}.messageList .line-loading{position:absolute;left:0;right:0;z-index:102;height:0;top:50px}.messageList .mainDelimiter{position:absolute;left:0;right:0;height:1px;z-index:101;background-color:#bbb}.messageList .toolbarDelimiter{top:49px}.messageList .footerDelimiter{bottom:44px}.messageList .b-content{position:absolute;top:50px;bottom:45px;left:0;right:0;padding:0;overflow-x:hidden;overflow-y:auto;z-index:101;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background-color:#fff}.messageList .b-content .content{-webkit-overflow-scrolling:touch}.messageList .b-content .listClear{color:#333;text-align:center;padding:10px;font-size:14px;line-height:13px}.messageList .b-content .listDragOver,.messageList .b-content .listEmptyList,.messageList .b-content .listEmptyListLoading,.messageList .b-content .listEmptySearchList,.messageList .b-content .listError{color:#999;text-align:center;padding:60px 10px;font-size:24px;line-height:30px}.messageList .b-content .listDragOver .e-icon,.messageList .b-content .listEmptyList .e-icon,.messageList .b-content .listEmptyListLoading .e-icon,.messageList .b-content .listEmptySearchList .e-icon,.messageList .b-content .listError .e-icon{font-size:24px;line-height:30px}.messageList .b-content .listDragOver{max-height:0;overflow:hidden;padding:0 10px}.messageList .b-content .listDragOver.viewAppendArea{max-height:120px;padding:30px 10px}.messageList .b-content .listDragOver.dragOverEnter{background-color:#e0fdda;color:#333}.messageList .b-content .listError{color:#DA4F49}.messageList .b-content .listSearchDesc{font-size:20px;padding:20px;border-bottom:1px solid #eee}.messageList .b-content .delimiter{display:block;height:1px;background-color:#e5e5e5}.messageList .b-content .messageListItem:last-child{border-bottom:1px solid #e5e5e5}.messageList .b-content .messageListItem:last-child.selected{border-bottom:1px solid #bfd5ef}.messageList .b-content .fullThreadsParent{height:25px;padding:3px 5px;background-color:#f4f4f4;text-align:center}.messageList .b-content .messageListItem{position:relative;height:52px;max-height:60px;font-size:12px;line-height:21px;overflow:hidden;cursor:pointer;margin:0;border:0 solid transparent;z-index:100;background-color:#f9f9f9}.messageList .b-content .messageListItem .delimiter{position:relative;display:block;height:1px;background-color:#999;opacity:.2;filter:alpha(opacity=20)}.messageList .b-content .messageListItem .wrapper{padding:5px 0}.messageList .b-content .messageListItem .sidebarParent{display:inline-block;width:6px;background-color:#eee;float:left;height:100%}.messageList .b-content .messageListItem.focused .sidebarParent{background-color:#ccc!important}.messageList .b-content .messageListItem.e-single-line{height:35px}.messageList .b-content .messageListItem.e-single-line .wrapper{line-height:25px;padding:5px}.messageList .b-content .messageListItem.new{max-height:0}.messageList .b-content .messageListItem.deleted{max-height:0;border-color:transparent!important}.messageList .b-content .messageListItem .checkedParent{display:inline-block;float:left;margin-top:11px;padding:0 8px 0 6px;font-size:14px}.messageList .b-content .messageListItem.e-single-line .checkedParent{margin-top:1px}.messageList .b-content .messageListItem .flagParent{display:inline-block;float:right;padding:0 8px 0 5px}.messageList .b-content .messageListItem.e-single-line .flagParent{float:left;padding:0 8px 0 2px}.messageList .b-content .messageListItem .dateParent{display:inline-block;float:right;position:relative;margin:0 5px;color:#999;font-size:11px}.messageList .b-content .messageListItem .attachmentParent{display:inline-block;float:right;position:relative;margin:2px 8px 0 5px}.messageList .b-content .messageListItem.e-single-line .attachmentParent{float:left;margin:0 5px 0 0}.messageList .b-content .messageListItem .senderParent{display:block;overflow:hidden;text-overflow:ellipsis}.messageList .b-content .messageListItem .threadsCountParent{display:inline;overflow:hidden;background-color:#eee;padding:1px 5px;margin-right:5px;border:1px solid #ccc;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.messageList .b-content .messageListItem .threadsCountParent.lastSelected{background-color:#999;border-color:#999;color:#fff}.messageList .b-content .messageListItem .threadsCountParent:hover{border-color:#666}.messageList .b-content .messageListItem.e-single-line .senderParent{display:inline-block;text-overflow:none;width:200px;float:left;font-weight:400}.messageList .b-content .messageListItem .subjectParent{display:block;overflow:hidden;text-overflow:ellipsis;color:#000}.messageList .b-content .messageListItem .dateParent,.messageList .b-content .messageListItem .senderParent,.messageList .b-content .messageListItem .subjectParent{white-space:nowrap}.messageList .b-content .messageListItem .subjectParent .emptySubjectText{display:none;font-style:italic;color:#999}.messageList .b-content .messageListItem.emptySubject .subjectParent .subject,.messageList .b-content .messageListItem.emptySubject .subjectParent .subject-prefix,.messageList .b-content .messageListItem.emptySubject .subjectParent .subject-suffix{display:none}.messageList .b-content .messageListItem.emptySubject .subjectParent .emptySubjectText{display:inline}.messageList .b-content .messageListItem .sender,.messageList .b-content .messageListItem .subject,.messageList .b-content .messageListItem .subject-suffix{overflow:hidden;text-overflow:ellipsis}.messageList .b-content .messageListItem .subject-prefix{color:#888}.messageList .b-content .messageListItem .attachment{display:none}.messageList .b-content .messageListItem .flagOff,.messageList .b-content .messageListItem .flagOn,.messageList .b-content .messageListItem .flagOnHalf{cursor:pointer;display:inline-block}.messageList .b-content .messageListItem .flagOff{opacity:.5;filter:alpha(opacity=50)}.messageList .b-content .messageListItem .flagOff:hover{opacity:1;filter:alpha(opacity=100)}.messageList .b-content .messageListItem .flagOn,.messageList .b-content .messageListItem .flagOnHalf{display:none;color:orange}.messageList .b-content .messageListItem .forwardFlag,.messageList .b-content .messageListItem .replyFlag{display:none}.messageList .b-content .messageListItem.answered .replyFlag,.messageList .b-content .messageListItem.forwarded .forwardFlag{display:inline-block}.messageList .b-content .messageListItem.withAttachments .attachment{display:inline-block;color:#666;text-shadow:0 1px 0 #eee}.messageList .b-content .messageListItem.unseen{background-color:#FFFFD9}.messageList .b-content .messageListItem.unseen .sender,.messageList .b-content .messageListItem.unseen .subject,.messageList .b-content .messageListItem.unseen .subject-suffix{font-weight:700}.messageList .b-content .messageListItem.unseen .sidebarParent{background-color:orange}.messageList .b-content .messageListItem.unseen.focused .sidebarParent{background-color:#cc8400!important}.messageList .b-content .messageListItem.hasUnseenSubMessage{background-color:#FFFFD9}.messageList .b-content .messageListItem.hasUnseenSubMessage .sidebarParent{background-color:#ffdb99}.messageList .b-content .messageListItem.hasUnseenSubMessage.focused .sidebarParent{background-color:#cc8400!important}.messageList .b-content .messageListItem.hasParentMessage{background-color:#ecf0f1}.messageList .b-content .messageListItem.hasParentMessage .sidebarParent{background-color:#bdc3c7}.messageList .b-content .messageListItem.hasParentMessage.focused .sidebarParent{background-color:#a1aab0!important}.messageList .b-content .messageListItem.hasParentMessage.unseen{background-color:#dde4e6}.messageList .b-content .messageListItem.hasParentMessage.unseen .sidebarParent{background-color:#6c777f}.messageList .b-content .messageListItem.hasParentMessage.unseen.focused .sidebarParent{background-color:#545e64!important}.messageList .b-content .messageListItem.checked .sidebarParent{background-color:#69a8f5!important}.messageList .b-content .messageListItem.checked.focused .sidebarParent{background-color:#217ef0!important}.messageList .b-content .messageListItem.selected{background-color:#DFEFFF;z-index:101}.messageList .b-content .messageListItem.selected .sidebarParent{background-color:#398CF2!important}.messageList .b-content .messageListItem.selected .delimiter{background-color:#398CF2;opacity:.2;filter:alpha(opacity=20)}.messageList .b-content .messageListItem.selected+.messageListItem .delimiter{background-color:#398CF2;opacity:.3;filter:alpha(opacity=30)}.messageList .b-content .messageListItem.hasFlaggedSubMessage .flagOff,.messageList .b-content .messageListItem.hasFlaggedSubMessage .flagOn{display:none}.messageList .b-content .messageListItem.hasFlaggedSubMessage .flagOnHalf{display:inline-block}.messageList .b-content .messageListItem.flagged .flagOff,.messageList .b-content .messageListItem.flagged .flagOnHalf{display:none}.messageList .b-content .messageListItem.flagged .flagOn{display:inline-block}.messageList.message-focused .b-message-list-wrapper{background-color:#000}.messageList.message-focused .b-content{opacity:.97;filter:alpha(opacity=97)}.messageList.hideMessageListCheckbox .checkboxCkeckAll,.messageList.hideMessageListCheckbox .checkedParent{display:none!important}.messageList.hideMessageListCheckbox .sidebarParent{margin-right:10px!important}html.ssm-state-desktop-large .messageList .b-content .messageListItem,html.ssm-state-desktop-large .messageList .b-content .messageListItem .dateParent{font-size:13px}html.cssanimations.rl-anim .messageList .line-loading{height:5px!important}.draggablePlace{z-index:10002;color:#fff;background-color:#333;background-color:rgba(0,0,0,.5);padding:4px 10px;min-width:30px;height:20px;cursor:pointer;cursor:move}html.rl-no-preview-pane .messageView{display:none}html.rl-no-preview-pane .messageView.message-selected{display:block}.messageView{z-index:100}.messageView .toolbar{position:absolute;top:0;right:0;left:0;height:30px;padding:10px 0;color:#fff}.messageView .b-content{position:absolute;margin:0;top:58px;bottom:13px;right:8px;left:-1px;overflow:hidden;border:1px solid #aaa;-webkit-border-top-right-radius:3px;-moz-border-radius-topright:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-bottomright:3px;border-bottom-right-radius:3px;background-color:#fff}.messageView .b-content .b-message-view-checked-helper{text-align:center;font-size:70px;line-height:70px;padding-top:140px;color:#999}.messageView .b-content .b-message-view-checked-helper .icon-mail{font-size:100px;font-size:50px;line-height:90px;padding-left:10px}.messageView .b-content .b-message-view-desc{text-align:center;font-size:24px;line-height:30px;padding-top:120px;color:#999}.messageView .b-content .b-message-view-desc.error{color:#DA4F49}.messageView .b-content .content{-webkit-overflow-scrolling:touch}.messageView .b-content .messageItem{position:absolute;top:0;bottom:0;left:0;right:0;overflow:auto;-webkit-overflow-scrolling:touch;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.messageView .b-content .messageItem .emptySubjectText{display:none;font-style:italic;color:#999}.messageView .b-content .messageItem.emptySubject .emptySubjectText{display:inline}.messageView .b-content .messageItem .buttonFull,.messageView .b-content .messageItem .buttonUnFull,.messageView .b-content .messageItem .buttonUp{display:inline-block;position:fixed;right:30px;top:90px;height:30px;width:30px;text-align:center;vertical-align:middle;line-height:30px;background-color:#fff;border:1px solid #333;color:#333;z-index:2;cursor:pointer;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;opacity:.3;filter:alpha(opacity=30)}.messageView .b-content .messageItem .buttonFull:hover,.messageView .b-content .messageItem .buttonUnFull:hover,.messageView .b-content .messageItem .buttonUp:hover{opacity:.8;filter:alpha(opacity=80);border-color:#000;background-color:#888;color:#fff}.messageView .b-content .messageItem .buttonUp{right:70px;z-index:0}.messageView .b-content .messageItem .buttonUnFull{display:none}.messageView .b-content .messageItem .messageItemHeader{position:relative;padding:10px;background-color:#f8f8f8;border-top:0;border-bottom:1px solid #ddd;z-index:1}.messageView .b-content .messageItem .messageItemHeader .fromPic{display:inline-block;width:50px;height:50px;float:left;padding:2px;margin:0 5px 0 0;background:#fff;border:1px solid #ccc;border-radius:10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.messageView .b-content .messageItem .messageItemHeader .subjectParent{font-size:16px;font-weight:700;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;margin-left:3px}.messageView .b-content .messageItem .messageItemHeader .senderParent{margin-top:10px}.messageView .b-content .messageItem .messageItemHeader .messageButtons{margin-top:5px}.messageView .b-content .messageItem .messageItemHeader .informationShort{margin-left:15px}.messageView .b-content .messageItem .messageItemHeader .informationShort a{color:#369;text-decoration:underline;cursor:pointer}.messageView .b-content .messageItem .messageItemHeader .informationFull{margin-top:10px;border:1px solid #ddd;background-color:#fff;border-radius:5px;padding:10px 15px}.messageView .b-content .messageItem .loading{text-align:center;font-size:24px;color:grey;padding-top:50px}.messageView .b-content .messageItem .line-loading{height:0}.messageView .b-content .messageItem .pgpEncrypted,.messageView .b-content .messageItem .pgpSigned,.messageView .b-content .messageItem .readReceipt,.messageView .b-content .messageItem .showImages{cursor:pointer;padding:10px 15px;border-bottom:1px solid #ddd;background-color:#eee}.messageView .b-content .messageItem .pgpInfo{padding:5px 15px;border-bottom:1px solid #ddd;background-color:#fcf8e3}.messageView .b-content .messageItem .pgpInfo.success{background-color:#e9f4ff}.messageView .b-content .messageItem .readReceipt{background-color:#ffffd9}.messageView .b-content .messageItem .attachmentsPlace{padding:10px}.messageView .b-content .messageItem .attachmentsPlace .attachmentList{margin:0}.messageView .b-content .messageItem .attachmentsPlace .attachmentList .attachmentItem{display:inline-block;margin:5px;padding:5px;max-width:170px;min-width:60px;overflow:hidden;cursor:pointer;list-style:none;line-height:24px;border:2px solid grey;background-color:#fff;box-shadow:1px 1px 5px #ccc;box-shadow:1px 1px 5px rgba(0,0,0,.1);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.messageView .b-content .messageItem .attachmentsPlace .attachmentList .attachmentItem .attachmentIcon{font-size:23px;width:23px;height:23px}.messageView .b-content .messageItem .attachmentsPlace .attachmentList .attachmentItem .attachmentPreview{color:#999;margin:0 5px}.messageView .b-content .messageItem .attachmentsPlace .attachmentList .attachmentItem .attachmentPreview:hover{color:#333}.messageView .b-content .messageItem .rlBlockquoteSwitcher{background-color:#eee;border:1px solid #999;display:inline-block;width:30px;height:14px;line-height:14px;text-align:center;cursor:pointer;margin:10px 0;opacity:.5;filter:alpha(opacity=50)}.messageView .b-content .messageItem .rlBlockquoteSwitcher:hover{opacity:1;filter:alpha(opacity=100)}.messageView .b-content .messageItem .bodyText{color:#000;font-family:Arial,Verdana,Geneva,sans-serif}.messageView .b-content .messageItem .bodyText .b-text-part div[data-x-div-type=html],.messageView .b-content .messageItem .bodyText .b-text-part div[data-x-div-type=html] div[data-x-div-type=html]{height:100%}.messageView .b-content .messageItem .bodyText .b-text-part a{color:#00f;text-decoration:underline}.messageView .b-content .messageItem .bodyText .b-text-part a:visited{color:#609}.messageView .b-content .messageItem .bodyText .b-text-part a:active{color:red}.messageView .b-content .messageItem .bodyText .b-text-part table{border-collapse:separate}.messageView .b-content .messageItem .bodyText .b-text-part blockquote{border-left:2px solid #000;margin:0;padding:0 10px}.messageView .b-content .messageItem .bodyText .b-text-part .rl-bq-switcher.hidden-bq{display:none}.messageView .b-content .messageItem .bodyText .b-text-part.html div[data-x-div-type=body]{margin:15px}.messageView .b-content .messageItem .bodyText .b-text-part.html pre{margin:0;padding:0;background:#fff;border:none;font-family:Monaco,Menlo,Consolas,'Courier New',monospace}.messageView .b-content .messageItem .bodyText .b-text-part.plain{padding:15px;white-space:pre-wrap;font-family:Monaco,Menlo,Consolas,'Courier New',monospace}.messageView .b-content .messageItem .bodyText .b-text-part.plain pre{margin:0;padding:0;background:#fff;border:none;font-family:Monaco,Menlo,Consolas,'Courier New',monospace}.messageView .b-content .messageItem .bodyText .b-text-part.plain blockquote{border-left:2px solid #00f;color:#00f}.messageView .b-content .messageItem .bodyText .b-text-part.plain blockquote blockquote{border-left:2px solid green;color:green}.messageView .b-content .messageItem .bodyText .b-text-part.plain blockquote blockquote blockquote{border-left:2px solid red;color:red}.messageView.message-focused .b-content{z-index:102;-webkit-box-shadow:0 2px 10px rgba(0,0,0,.3);-moz-box-shadow:0 2px 10px rgba(0,0,0,.3);box-shadow:0 2px 10px rgba(0,0,0,.3);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;border-color:#9d9d9d}html.rl-no-preview-pane .messageView .toolbar{padding-left:1px}html.rl-no-preview-pane .messageView .b-content{top:50px;bottom:5px;right:5px;border:1px solid #aaa;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);-moz-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}html.rl-no-preview-pane .messageView .b-content .buttonFull,html.rl-no-preview-pane .messageView .b-content .buttonUnFull,html.rl-no-preview-pane .messageView .b-content .buttonUp{top:70px}html.cssanimations.rl-anim .messageItem .line-loading{height:5px!important}html.rl-message-fullscreen #rl-bottom,html.rl-message-fullscreen #rl-left,html.rl-message-fullscreen #rl-right .RL-MailMessageList,html.rl-message-fullscreen #rl-right .RL-MailMessageView .messageView .toolbar,html.rl-message-fullscreen #rl-right .RL-SettingsPane,html.rl-message-fullscreen #rl-right .RL-SystemDropDown{display:none!important}html.rl-message-fullscreen .messageView .b-content{position:fixed;margin:5px;top:0;left:0;right:0;bottom:0;z-index:10000;border:1px solid #aaa;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}html.rl-message-fullscreen .messageView .b-content .buttonUnFull,html.rl-message-fullscreen .messageView .b-content .buttonUp{display:inline-block;top:36px}html.rl-message-fullscreen .messageView .b-content .buttonFull{display:none}.b-contacts-content .control-group .control-label.fix-width{width:50px}.b-contacts-content .control-group .controls.fix-width{margin-left:70px}.b-contacts-content.modal{position:absolute;right:0;top:0;bottom:0;left:0;width:900px;min-height:300px;max-height:700px;margin:auto}.b-contacts-content.modal .modal-body{overflow:auto;height:100%;background-color:#f5f5f5;padding:0}.b-contacts-content.modal .b-header-toolbar{height:40px;color:#fff;background-color:#333;background-color:rgba(0,0,0,.8)!important}.b-contacts-content.modal .b-header-toolbar .close{color:#fff;opacity:1;filter:alpha(opacity=100)}.b-contacts-content.modal .b-header-toolbar .btn{margin-top:4px}.b-contacts-content.modal .b-list-toolbar{padding:0;height:45px;text-align:right;width:220px;-webkit-box-shadow:inset 0 -1px 0 #ccc;-moz-box-shadow:inset 0 -1px 0 #ccc;box-shadow:inset 0 -1px 0 #ccc}.b-contacts-content.modal .b-list-toolbar .e-search{margin-top:7px;width:200px}.b-contacts-content.modal .b-list-footer-toolbar{position:absolute;left:0;bottom:0;height:105px;width:220px;background-color:#eee;-webkit-box-shadow:inset 0 1px 0 #ccc;-moz-box-shadow:inset 0 1px 0 #ccc;box-shadow:inset 0 1px 0 #ccc}.b-contacts-content.modal .b-list-footer-toolbar .footer-pager{padding:8px 10px 0 0}.b-contacts-content.modal .b-list-content{position:absolute;top:45px;bottom:105px;left:0;width:220px;overflow:hidden;overflow-y:auto}.b-contacts-content.modal .b-list-content .content{-webkit-overflow-scrolling:touch}.b-contacts-content.modal .b-list-content .listClear{color:#333;text-align:center;padding:10px;font-size:14px;line-height:13px;background-color:#fff;-webkit-box-shadow:inset 0 -1px 0 #ccc;-moz-box-shadow:inset 0 -1px 0 #ccc;box-shadow:inset 0 -1px 0 #ccc}.b-contacts-content.modal .b-list-content .listEmptyList,.b-contacts-content.modal .b-list-content .listEmptyListLoading,.b-contacts-content.modal .b-list-content .listEmptySearchList{color:#999;text-align:center;padding:60px 10px;font-size:24px;line-height:30px}.b-contacts-content.modal .b-list-content.hideContactListCheckbox .checkboxCkeckAll,.b-contacts-content.modal .b-list-content.hideContactListCheckbox .checkedParent{display:none!important}.b-contacts-content.modal .b-list-content.hideContactListCheckbox .sidebarParent{margin-right:10px!important}.b-contacts-content.modal .b-list-content .e-contact-foreach{border-bottom:1px solid #ddd}.b-contacts-content.modal .b-list-content .e-contact-item{position:relative;height:45px;max-height:45px;line-height:45px;overflow:hidden;cursor:pointer;margin:0;border:0 solid transparent;z-index:100}.b-contacts-content.modal .b-list-content .e-contact-item .delimiter{position:relative;display:block;height:1px;background-color:#999;opacity:.2;filter:alpha(opacity=20)}.b-contacts-content.modal .b-list-content .e-contact-item .wrapper{padding:0}.b-contacts-content.modal .b-list-content .e-contact-item .sidebarParent{display:inline-block;width:6px;background-color:#eee;float:left;height:100%}.b-contacts-content.modal .b-list-content .e-contact-item.focused .sidebarParent{background-color:#bbb}.b-contacts-content.modal .b-list-content .e-contact-item.deleted{max-height:0;border-color:transparent!important}.b-contacts-content.modal .b-list-content .e-contact-item .checkedParent{display:inline-block;float:left;padding:0 8px 0 6px}.b-contacts-content.modal .b-list-content .e-contact-item .shareParent{display:none;float:right;position:relative;margin:2px 8px 0 5px}.b-contacts-content.modal .b-list-content .e-contact-item .nameParent{display:block;overflow:hidden;text-overflow:ellipsis;color:#333;font-size:16px}.b-contacts-content.modal .b-list-content .e-contact-item .emailParent,.b-contacts-content.modal .b-list-content .e-contact-item .nameParent{white-space:nowrap}.b-contacts-content.modal .b-list-content .e-contact-item .displayEmail,.b-contacts-content.modal .b-list-content .e-contact-item .displayName{overflow:hidden;text-overflow:ellipsis}.b-contacts-content.modal .b-list-content .e-contact-item .displayImg{display:inline-block;float:right;position:relative;margin:0 5px}.b-contacts-content.modal .b-list-content .e-contact-item.shared .shareParent{display:inline-block}.b-contacts-content.modal .b-list-content .e-contact-item.checked{z-index:101}.b-contacts-content.modal .b-list-content .e-contact-item.checked .sidebarParent{background-color:#69A8F5}.b-contacts-content.modal .b-list-content .e-contact-item.checked.focused .sidebarParent{background-color:#519af3!important}.b-contacts-content.modal .b-list-content .e-contact-item.selected{background-color:#fff;z-index:102}.b-contacts-content.modal .b-list-content .e-contact-item.selected .sidebarParent{background-color:#398CF2}.b-contacts-content.modal .b-list-content .e-contact-item.selected.focused .sidebarParent{background-color:#217ef0!important}.b-contacts-content.modal .b-view-content-toolbar{background-color:#f5f5f5;padding:7px;position:absolute;top:0;right:0;left:220px;height:31px;text-align:center;-webkit-box-shadow:inset 0 -1px 0 #ccc;-moz-box-shadow:inset 0 -1px 0 #ccc;box-shadow:inset 0 -1px 0 #ccc}.b-contacts-content.modal .b-view-content-toolbar .button-save-contact.no-disabled.dirty{color:#51a351;font-weight:700}.b-contacts-content.modal .b-view-content-toolbar.read-only .button-save-contact{display:none}.b-contacts-content.modal .b-view-content{position:absolute;top:45px;bottom:60px;left:220px;right:0;overflow:hidden;overflow-y:auto;background-color:#fff;border-left:1px solid #ddd}.b-contacts-content.modal .b-view-content .content{-webkit-overflow-scrolling:touch}.b-contacts-content.modal .b-view-content .tags-property-container{font-size:18px;width:400px}.b-contacts-content.modal .b-view-content .tags-property-container .inputosaurus-container{border-width:1px;border-color:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.b-contacts-content.modal .b-view-content .tags-property-container .inputosaurus-container:hover{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);border-color:#ccc}.b-contacts-content.modal .b-view-content .tags-property-container .inputosaurus-container.inputosaurus-focused{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);border-color:#999}.b-contacts-content.modal .b-view-content .contactValueLargeStatic,.b-contacts-content.modal .b-view-content .contactValueStatic,.b-contacts-content.modal .b-view-content .contactValueTextAreaStatic{height:20px;line-height:20px;padding:5px 7px;color:#555}.b-contacts-content.modal .b-view-content.read-only .contactValueLargeStatic,.b-contacts-content.modal .b-view-content.read-only .contactValueStatic,.b-contacts-content.modal .b-view-content.read-only .contactValueTextAreaStatic{display:inline-block}.b-contacts-content.modal .b-view-content.read-only .contactValueInput,.b-contacts-content.modal .b-view-content.read-only .contactValueInputLarge,.b-contacts-content.modal .b-view-content.read-only .contactValueTextArea{display:none}.b-contacts-content.modal .b-view-content .b-contact-view-desc{text-align:center;font-size:24px;line-height:30px;padding-top:120px;color:#999}.b-contacts-content.modal .b-view-content .top-part{padding-top:20px}.b-contacts-content.modal .b-view-content .property-line{margin-bottom:5px}.b-contacts-content.modal .b-view-content .top-row{padding:10px 0;height:30px}.b-contacts-content.modal .b-view-content .add-link{margin-left:2px;padding:5px;font-size:12px;color:#aaa}.b-contacts-content.modal .b-view-content .contactValueLargeStatic,.b-contacts-content.modal .b-view-content .contactValueStatic,.b-contacts-content.modal .b-view-content .contactValueTextAreaStatic{font-size:18px;display:none}.b-contacts-content.modal .b-view-content .contactValueInput,.b-contacts-content.modal .b-view-content .contactValueInputLarge,.b-contacts-content.modal .b-view-content .contactValueTextArea{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;border-color:#fff;font-size:18px;width:300px}.b-contacts-content.modal .b-view-content .contactValueInput:hover,.b-contacts-content.modal .b-view-content .contactValueInputLarge:hover,.b-contacts-content.modal .b-view-content .contactValueTextArea:hover{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);border-color:#ccc}.b-contacts-content.modal .b-view-content .contactValueInput:focus,.b-contacts-content.modal .b-view-content .contactValueInputLarge:focus,.b-contacts-content.modal .b-view-content .contactValueTextArea:focus{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);border-color:#999}.b-contacts-content.modal .b-view-content .contactValueInput::-webkit-input-placeholder,.b-contacts-content.modal .b-view-content .contactValueInputLarge::-webkit-input-placeholder,.b-contacts-content.modal .b-view-content .contactValueTextArea::-webkit-input-placeholder{color:#ddd}.b-contacts-content.modal .b-view-content .contactValueInput::-moz-placeholder,.b-contacts-content.modal .b-view-content .contactValueInputLarge::-moz-placeholder,.b-contacts-content.modal .b-view-content .contactValueTextArea::-moz-placeholder{color:#ddd}.b-contacts-content.modal .b-view-content .contactValueInput:-moz-placeholder,.b-contacts-content.modal .b-view-content .contactValueInputLarge:-moz-placeholder,.b-contacts-content.modal .b-view-content .contactValueTextArea:-moz-placeholder{color:#ddd}.b-contacts-content.modal .b-view-content .contactValueInput:-ms-input-placeholder,.b-contacts-content.modal .b-view-content .contactValueInputLarge:-ms-input-placeholder,.b-contacts-content.modal .b-view-content .contactValueTextArea:-ms-input-placeholder{color:#ddd}.b-contacts-content.modal .b-view-content .contactValueTextArea{width:300px}.b-contacts-content.modal .b-view-content .contactValueInputLarge{width:400px}.b-contacts-content.modal .b-view-content .hasError .contactValueInput{color:#ee5f5b;border-color:#ee5f5b}.b-contacts-content.modal .b-view-content .e-save-trigger{position:absolute;top:25px;left:10px}.b-contacts-content.modal .b-view-content .e-read-only-sign{display:none;position:absolute;top:20px;right:40px}.b-contacts-content.modal .b-view-content .e-share-sign{position:absolute;top:20px;right:20px;cursor:pointer}.b-contacts-content.modal .b-view-content.read-only .e-read-only-sign{display:inline-block}.b-contacts-content.modal .b-view-content.read-only .e-share-sign{display:none}.b-contacts-content .e-contact-item{position:relative;height:55px;max-height:60px;line-height:22px;overflow:hidden;cursor:pointer;margin:0;border:0 solid transparent;z-index:100}.b-compose.modal{width:850px;margin:10px auto}.b-compose.modal .modal-body{overflow:auto;padding:0}.b-compose .textAreaParent{overflow:hidden}.b-compose .b-header-toolbar{height:40px;color:#fff;background-color:#333;background-color:rgba(0,0,0,.8)!important}.b-compose .b-header-toolbar .close{color:#fff;opacity:1;filter:alpha(opacity=100)}.b-compose .b-header-toolbar .btn.disabled.button-delete{visibility:hidden}.b-compose .b-header-toolbar .button-delete,.b-compose .b-header-toolbar .button-save,.b-compose .b-header-toolbar .saved-text{margin-left:8px}.b-compose .b-header-toolbar .disabled.button-delete{margin-left:0}.b-compose .b-header{padding:10px;background-color:#eee;color:#333}.b-compose .b-header .e-identity{color:#333;text-decoration:none;font-weight:700}.b-compose .b-header .e-identity:hover{color:#333;text-decoration:none}.b-compose .b-header .e-identity.multiply{cursor:pointer;border-bottom:1px dashed #555}.b-compose .b-header .e-row{line-height:30px}.b-compose .b-header .e-label{text-align:right;width:1%;min-width:70px;padding:6px 10px}.b-compose .b-header .e-value{padding:2px 0}.b-compose .b-header .e-value input[type=text],.b-compose .b-header .e-value textarea{width:98%}.b-compose .b-header .e-value textarea{height:40px}.b-compose .b-header .error-desc{color:red}.b-compose .b-header .b-appachments .b-attacment,.b-compose .b-header .b-appachments .b-attacment-in-process{line-height:20px;padding-bottom:10px}.b-compose .b-header .b-appachments .b-attacment-in-process .uploading{display:none;padding-right:5px}.b-compose .b-header .b-appachments .b-attacment-in-process.uploading .uploading{display:inline}.b-compose .b-header .b-appachments .b-attacment-in-process .upload-progress{font-weight:700}.b-compose .b-header .b-appachments .b-attacment-in-process.error .namedStr{color:#888}.b-compose .b-header .b-appachments .b-attacment-in-process .error{color:red}.b-compose .b-header .b-appachments .b-attacment-in-process .close{float:left;padding-right:13px}.b-compose .b-attachment-button{display:inline-block}.b-compose .b-attachment-place{position:absolute;height:120px;border:2px dashed #777;line-height:119px;text-align:center;background-color:#fff;z-index:300;left:20px;right:20px;font-size:24px}.b-compose .b-attachment-place.drag-and-drop-over{background:#777;color:#fff}.b-admin-left .b-toolbar{position:absolute;top:0;right:0;left:0;height:34px;padding:8px 0 0 8px}.b-admin-left .b-content{position:absolute;top:68px;bottom:8px;left:0;right:0;overflow:hidden}.b-admin-left .b-content .content{-webkit-overflow-scrolling:touch}.b-admin-menu .e-item{overflow:hidden;text-decoration:none;outline:0}.b-admin-menu .e-link{position:relative;display:block;height:30px;line-height:29px;font-size:18px;z-index:1;cursor:default;background-color:transparent;color:#888;padding:4px 10px;outline:0;text-decoration:none}.b-admin-menu .e-item.selectable .e-link{cursor:pointer}.b-admin-menu .e-item.selectable.selected .e-link,.b-admin-menu .e-item.selectable:hover .e-link{background-color:#555;color:#fff}.b-admin-right .b-toolbar{position:absolute;top:0;right:0;left:0;height:34px;padding:8px;color:#fff}.b-admin-right .b-content{position:absolute;top:58px;bottom:8px;left:0;right:8px;overflow-y:auto;z-index:2;background-color:#fff;border:1px solid #aaa;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);-moz-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.b-admin-right .b-content .content{-webkit-overflow-scrolling:touch}.b-admin-right .b-settings-content{padding:20px 20px 20px 30px}.b-admin-general .flag-selector{padding-top:5px}.b-admin-general .flag-name{border-bottom:1px dashed #555}.b-admin-domains .process-place{width:600px;padding:14px 0;text-align:center;visibility:hidden}.b-admin-domains-list-table{width:600px}.b-admin-domains-list-table .e-item .e-action{cursor:pointer}.b-admin-domains-list-table .e-item .domain-name{display:inline-block;word-break:break-all;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.b-admin-domains-list-table .e-item.disabled .domain-name{color:#bbb}.b-admin-domains-list-table .e-item .button-delete{margin-right:15px;visibility:hidden;opacity:0;filter:alpha(opacity=0)}.b-admin-domains-list-table .e-item .delete-access.button-delete{visibility:visible;margin-right:0;opacity:1;filter:alpha(opacity=100)}.b-admin-domains-list-table .e-item .delete-domain,.b-admin-domains-list-table .e-item .disabled-domain{cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.b-admin-domains-list-table .e-item.disabled .disabled-domain{opacity:.5;filter:alpha(opacity=50)}.b-admin-domains-list-table .e-item .delete-domain:hover,.b-admin-domains-list-table .e-item .disabled-domain:hover{opacity:1;filter:alpha(opacity=100)}.b-domain-content.modal{width:810px}.b-domain-content .modal-header{background-color:#fff}.b-domain-content .modal-body{position:relative;overflow:hidden;width:1600px;height:370px;left:0}.b-domain-content.domain-edit .modal-body{height:320px}.b-domain-content.domain-white-list-page .modal-body{left:-800px}.b-domain-content .error-desc{color:red;margin-left:10px}.b-domain-content .testing-done .imap-header,.b-domain-content .testing-done .smtp-header{color:green;font-weight:700}.b-domain-content .testing-error .imap-header,.b-domain-content .testing-error .smtp-header{color:red}.b-admin-packages .alert{width:650px}.b-admin-packages .process-place{visibility:hidden}.b-admin-packages-list-table{width:700px}.b-admin-packages-list-table .e-item .package-img{font-size:12px;margin-right:2px}.b-admin-packages-list-table .e-item .package-name.core{font-weight:700}.b-admin-packages-list-table .e-item .package-desc{color:#999;font-size:12px}.b-admin-packages-list-table .e-item .e-action{cursor:pointer}.b-admin-packages-list-table .e-item .package-actions-parent,.b-admin-packages-list-table .e-item .package-release-parent{text-align:center}.b-admin-packages-list-table .e-item .package-actions-parent{vertical-align:middle}.b-admin-plugins .process-place{visibility:hidden}.b-admin-plugins-list-table.disabled{opacity:.5;filter:alpha(opacity=50);background-color:#eee}.b-admin-plugins-list-table .e-item .e-action{cursor:pointer}.b-admin-plugins-list-table .e-item .plugin-img{font-size:12px;margin-right:2px}.b-admin-plugins-list-table .e-item.disabled .plugin-img,.b-admin-plugins-list-table .e-item.disabled .plugin-name{color:#bbb}.b-admin-plugins-list-table .e-item.disabled .disabled-plugin{opacity:.5;filter:alpha(opacity=50)}.b-admin-plugin-property .help-block{margin-bottom:5px}.b-plugin-content.modal{width:660px}.b-plugin-content.modal .modal-body{overflow:auto}.b-plugin-content .modal-header{background-color:#fff}.b-plugin-content .information{display:inline-block;background-color:#ddd;border-radius:10px;cursor:pointer;height:25px;width:30px;text-align:center;padding-top:5px}.b-plugin-content textarea{width:400px;height:70px}.b-admin-about .rl-logo{display:inline-block;width:250px;height:250px;margin-top:-10px;margin-bottom:-10px;background-image:url(images/rainloop-logo.png)}.b-admin-about .rl-desc{margin-top:20px;margin-left:-20px}.popups .b-activate-content{width:700px}.popups .b-activate-content .modal-header{background-color:#fff}.popups .b-activate-content .help-inline{padding-left:0}.b-settins-left .b-toolbar{position:absolute;top:0;right:0;left:0;height:34px;padding:8px 0 0 8px}.b-settins-left .b-content{position:absolute;top:68px;bottom:8px;left:0;right:0;overflow:hidden}.b-settins-left .b-content .content{-webkit-overflow-scrolling:touch}.b-settings-menu .e-item{overflow:hidden;text-decoration:none;outline:0}.b-settings-menu .e-link{position:relative;display:block;height:30px;line-height:29px;font-size:18px;z-index:1;cursor:default;background-color:transparent;color:#888;padding:4px 10px;outline:0;text-decoration:none}.b-settings-menu .e-item.selectable .e-link{cursor:pointer}.b-settings-menu .e-item.selectable.selected .e-link,.b-settings-menu .e-item.selectable:hover .e-link{background-color:#555;color:#fff}.b-settins-right .b-toolbar{position:absolute;top:0;right:0;left:0;height:34px;padding:8px 5px;color:#fff}.b-settins-right .b-content{position:absolute;top:50px;bottom:8px;left:0;right:8px;overflow-y:auto;z-index:2;background-color:#fff;border:1px solid #aaa;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);-moz-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.b-settins-right .b-content .content{-webkit-overflow-scrolling:touch}.b-settins-right .b-settings-content{padding:20px 20px 20px 30px}.b-settings-general .notification-desc-denied{color:#999;display:none}.b-settings-general .denied-by-browser .notification-desc-denied{display:inline}.b-settings-general .denied-by-browser .notification-desc{color:#999}.b-settings-general .flag-selector{padding-top:5px}.b-settings-general .flag-name{border-bottom:1px dashed #555}.b-settings-accounts .process-place{text-align:center;width:600px;padding:14px 0}.b-settings-accounts .list-table{width:600px}.b-settings-accounts .list-table td{padding:4px 8px;line-height:30px}.b-settings-accounts .list-table .account-img{font-size:12px;margin-right:5px}.b-settings-accounts .list-table .account-name{display:inline-block;word-break:break-all;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;line-height:22px;cursor:default}.b-settings-accounts .account-item .button-delete{margin-right:15px;margin-top:5px;visibility:hidden;opacity:0;filter:alpha(opacity=0)}.b-settings-accounts .account-item .delete-access.button-delete{visibility:visible;margin-right:0;opacity:1;filter:alpha(opacity=100)}.b-settings-accounts .account-item .delete-account{cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.b-settings-identity .e-signature-place{display:inline-block;width:680px;height:250px}.b-settings-identities .process-place{text-align:center;width:600px;padding:14px 0}.b-settings-identities .e-signature-place{display:inline-block;width:680px;height:250px}.b-settings-identities .list-table{width:600px}.b-settings-identities .list-table td{padding:4px 8px;line-height:30px}.b-settings-identities .list-table .identity-img{font-size:12px;margin-right:5px}.b-settings-identities .list-table .identity-name{display:inline-block;word-break:break-all;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;line-height:22px;cursor:pointer}.b-settings-identities .identity-item .e-action{cursor:pointer}.b-settings-identities .identity-item .button-delete{margin-right:15px;margin-top:5px;visibility:hidden;opacity:0;filter:alpha(opacity=0)}.b-settings-identities .identity-item .delete-access.button-delete{visibility:visible;margin-right:0;opacity:1;filter:alpha(opacity=100)}.b-settings-identities .identity-item .delete-identity{cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.b-settings-open-pgp .process-place{text-align:center;width:600px;padding:14px 0}.b-settings-open-pgp .list-table{width:750px}.b-settings-open-pgp .list-table td{padding:4px 8px;line-height:30px}.b-settings-open-pgp .list-table .open-pgp-key-img{font-size:12px;margin-right:5px}.b-settings-open-pgp .list-table .open-pgp-key-id,.b-settings-open-pgp .list-table .open-pgp-key-user{display:inline-block;word-break:break-all;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;line-height:22px;cursor:default}.b-settings-open-pgp .open-pgp-key-item .button-delete{margin-right:15px;margin-top:5px;visibility:hidden;opacity:0;filter:alpha(opacity=0)}.b-settings-open-pgp .open-pgp-key-item .delete-access.button-delete{visibility:visible;margin-right:0;opacity:1;filter:alpha(opacity=100)}.b-settings-open-pgp .open-pgp-key-item .delete-open-pgp-key,.b-settings-open-pgp .open-pgp-key-item .view-open-pgp-key{cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.b-settings-folders.ignore-folder-subscribe .subscribe-folder,.b-settings-folders.ignore-folder-subscribe .unsubscribe-folder{display:none}.b-settings-folders .process-place{text-align:center;width:600px;padding:14px 0}.b-settings-folders .folders-list-error{width:550px;margin:10px 0}.b-settings-folders .list-table{width:600px}.b-settings-folders .list-table .e-action{cursor:pointer}.b-settings-folders .list-table td{padding:4px 8px;line-height:30px}.b-settings-folders .list-table .folder-padding{display:inline-block;width:0}.b-settings-folders .list-table .folder-name{display:inline-block;word-break:break-all;white-space:pre-wrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-left:7px;line-height:22px;cursor:default}.b-settings-folders .list-table .folder-system-name{display:inline-block;line-height:22px;color:#999;cursor:default}.b-settings-folders .list-table .folder-name.can-be-edited:hover{border-bottom:1px dashed #333;cursor:pointer}.b-settings-folders .list-table .folder-name-input{border-width:1px;margin-bottom:0;margin-left:-4px}.b-settings-folders .folder-item.system .folder-name{font-weight:700}.b-settings-folders .folder-item .button-delete{margin-right:15px;margin-top:5px;visibility:hidden;opacity:0;filter:alpha(opacity=0)}.b-settings-folders .folder-item .delete-access.button-delete{visibility:visible;margin-right:0;opacity:1;filter:alpha(opacity=100)}.b-settings-folders .folder-item .delete-folder,.b-settings-folders .folder-item .subscribe-folder,.b-settings-folders .folder-item .unsubscribe-folder{cursor:pointer;opacity:.6;filter:alpha(opacity=60)}.b-settings-folders .folder-item .unsubscribe-folder{opacity:.25;filter:alpha(opacity=25)}.b-settings-folders .folder-padding.deep-1{width:25px}.b-settings-folders .folder-padding.deep-2{width:40px}.b-settings-folders .folder-padding.deep-3{width:55px}.b-settings-folders .folder-padding.deep-4{width:70px}.b-settings-folders .folder-padding.deep-5{width:85px}.b-themes-list .e-item{display:inline-block;border:2px solid transparent;cursor:pointer;color:#000;background-color:#fff;padding:16px;margin:5px}.b-themes-list .e-item:hover{border:2px solid grey}.b-themes-list .e-item.selected{background-color:#eee;border:2px solid #000}.b-themes-list .e-item .e-image{width:100px;height:100px;border:1px solid #ddd}@keyframes highlight-folder-row{0%{transform:scale(1)}50%{transform:scale(1.1)}100%{transform:scale(1)}}@-moz-keyframes highlight-folder-row{0%{-moz-transform:scale(1)}50%{-moz-transform:scale(1.1)}100%{-moz-transform:scale(1)}}@-webkit-keyframes highlight-folder-row{0%{-webkit-transform:scale(1)}50%{-webkit-transform:scale(1.1)}100%{-webkit-transform:scale(1)}}@-webkit-keyframes textLoadingAnimationKeyFrame{0%{opacity:1}33%{opacity:0}100%{opacity:1}}@-moz-keyframes textLoadingAnimationKeyFrame{0%{opacity:1}33%{opacity:0}100%{opacity:1}}@keyframes textLoadingAnimationKeyFrame{0%{opacity:1}33%{opacity:0}100%{opacity:1}}@-webkit-keyframes animate-stripes{0%{background-position:0 0}100%{background-position:60px 0}}@-moz-keyframes animate-stripes{0%{background-position:0 0}100%{background-position:60px 0}}@keyframes animate-stripes{0%{background-position:0 0}100%{background-position:60px 0}}html.rl-started-trigger.no-mobile .b-login-content .loginFormWrapper{-webkit-transform:translateY(-30px);-moz-transform:translateY(-30px);transform:translateY(-30px)}html.rl-started-trigger.no-mobile #rl-content{opacity:.7;filter:alpha(opacity=70)}#rl-loading{-webkit-transition:opacity .5s linear;-moz-transition:opacity .5s linear;-o-transition:opacity .5s linear;transition:opacity .5s linear}.rl-anim.csstransitions.no-mobile #rl-left{-webkit-transition:width .3s ease-out;-moz-transition:width .3s ease-out;-o-transition:width .3s ease-out;transition:width .3s ease-out}.rl-anim.csstransitions.no-mobile #rl-right{-webkit-transition:left .3s ease-out;-moz-transition:left .3s ease-out;-o-transition:left .3s ease-out;transition:left .3s ease-out}.rl-anim.csstransitions.no-mobile #rl-sub-left,.rl-anim.csstransitions.no-mobile #rl-sub-left .messageList .inputSearch{-webkit-transition:width .3s ease-out;-moz-transition:width .3s ease-out;-o-transition:width .3s ease-out;transition:width .3s ease-out}.rl-anim.csstransitions.no-mobile #rl-sub-right{-webkit-transition:left .3s ease-out;-moz-transition:left .3s ease-out;-o-transition:left .3s ease-out;transition:left .3s ease-out}.rl-anim.csstransitions.no-mobile #rl-content{-webkit-transition:opacity .3s ease-out;-moz-transition:opacity .3s ease-out;-o-transition:opacity .3s ease-out;transition:opacity .3s ease-out}.rl-anim.csstransitions.no-mobile .b-login-content .loginFormWrapper{-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}.rl-anim.rgba.cssanimations.backgroundsize .e-strip-animation{-webkit-background-size:60px 60px;-moz-background-size:60px 60px;background-size:60px 60px;background-image:-webkit-linear-gradient(135deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.1) 50%,rgba(0,0,0,.1) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(135deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.1) 50%,rgba(0,0,0,.1) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(135deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.1) 50%,rgba(0,0,0,.1) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(135deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.1) 50%,rgba(0,0,0,.1) 75%,transparent 75%,transparent);background-image:linear-gradient(135deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.1) 50%,rgba(0,0,0,.1) 75%,transparent 75%,transparent);-webkit-animation:animate-stripes 2s linear infinite;-moz-animation:animate-stripes 2s linear infinite;animation:animate-stripes 2s linear infinite}.rl-anim.csstransitions .button-delete-transitions{-webkit-transition:all .2s linear;-moz-transition:all .2s linear;-o-transition:all .2s linear;transition:all .2s linear}.rl-anim.cssanimations .b-folders .e-item .anim-action-class{-webkit-animation:highlight-folder-row .5s linear;-moz-animation:highlight-folder-row .5s linear;animation:highlight-folder-row .5s linear}.rl-anim.csstransitions .b-folders .btn.buttonContacts{-webkit-transition:margin .3s linear;-moz-transition:margin .3s linear;-o-transition:margin .3s linear;transition:margin .3s linear}.rl-anim.csstransitions .b-folders .b-content.opacity-on-panel-disabled{-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;-o-transition:opacity .3s linear;transition:opacity .3s linear}.rl-anim.csstransitions .messageList .messageListItem{-webkit-transition:max-height 400ms ease;-moz-transition:max-height 400ms ease;-o-transition:max-height 400ms ease;transition:max-height 400ms ease}.rl-anim.csstransitions .messageList .listDragOver{-webkit-transition:all 400ms ease;-moz-transition:all 400ms ease;-o-transition:all 400ms ease;transition:all 400ms ease}.rl-anim.csstransitions .b-list-content .e-contact-item{-webkit-transition:max-height 400ms ease;-moz-transition:max-height 400ms ease;-o-transition:max-height 400ms ease;transition:max-height 400ms ease}.rl-anim.csstransitions .modal.b-domain-content .modal-body{-webkit-transition:left 500ms ease;-moz-transition:left 500ms ease;-o-transition:left 500ms ease;transition:left 500ms ease}.rl-anim.csstransitions .modal.fade{-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out;-webkit-transform:translateY(-20px);-moz-transform:translateY(-20px);transform:translateY(-20px)}.rl-anim.csstransitions .modal.fade.in{-webkit-transform:none;-moz-transform:none;transform:none}.rl-anim.cssanimations .b-compose.loading .b-header-toolbar{-webkit-background-size:60px 60px;-moz-background-size:60px 60px;background-size:60px 60px;background-image:-webkit-linear-gradient(135deg,rgba(255,255,255,.2) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.2) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(135deg,rgba(255,255,255,.2) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.2) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(135deg,rgba(255,255,255,.2) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.2) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(135deg,rgba(255,255,255,.2) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.2) 75%,transparent 75%,transparent);background-image:linear-gradient(135deg,rgba(255,255,255,.2) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.2) 75%,transparent 75%,transparent);-webkit-animation:animate-stripes 2s linear infinite;-moz-animation:animate-stripes 2s linear infinite;animation:animate-stripes 2s linear infinite}.textLoadingAnimationD1,.textLoadingAnimationD2,.textLoadingAnimationD3{-webkit-animation:textLoadingAnimationKeyFrame 1s linear infinite 0s;-moz-animation:textLoadingAnimationKeyFrame 1s linear infinite 0s;animation:textLoadingAnimationKeyFrame 1s linear infinite 0s}.textLoadingAnimationD2{-webkit-animation-delay:.3s;-moz-animation-delay:.3s;animation-delay:.3s}.textLoadingAnimationD3{-webkit-animation-delay:.6s;-moz-animation-delay:.6s;animation-delay:.6s}
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:0}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:400}.ui-menu .ui-menu-item a.ui-state-active,.ui-menu .ui-menu-item a.ui-state-focus{font-weight:400;margin:-1px}.ui-menu .ui-state-disabled{font-weight:400;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget button,.ui-widget input,.ui-widget select,.ui-widget textarea{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc;color:#222;font-weight:700}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #ccc;background:#eee;font-weight:400;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-focus,.ui-state-hover,.ui-widget-content .ui-state-focus,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-focus,.ui-widget-header .ui-state-hover{border:1px solid #ccc;background:#eee;font-weight:400;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff;font-weight:400;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec;color:#cd0a0a}.ui-state-error a,.ui-state-error-text,.ui-widget-content .ui-state-error a,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error a,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-corner-all,.ui-corner-left,.ui-corner-tl,.ui-corner-top{border-top-left-radius:2px}.ui-corner-all,.ui-corner-right,.ui-corner-top,.ui-corner-tr{border-top-right-radius:2px}.ui-corner-all,.ui-corner-bl,.ui-corner-bottom,.ui-corner-left{border-bottom-left-radius:2px}.ui-corner-all,.ui-corner-bottom,.ui-corner-br,.ui-corner-right{border-bottom-right-radius:2px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}/*! normalize.css 2012-03-11T12:53 UTC - http://github.com/necolas/normalize.css */article,aside,details,figcaption,figure,footer,header,hgroup,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:dotted thin}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn{font-style:italic}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}q{quotes:none}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,menu,ol,ul{margin:1em 0}dd{margin:0 0 0 40px}menu,ol,ul{padding:0 0 0 40px}nav ol,nav ul{list-style:none}img{border:0;-ms-interpolation-mode:bicubic}svg:not(:root){overflow:hidden}figure,form{margin:0}legend{white-space:normal}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}@font-face{font-family:rainloop;src:url(fonts/rainloop.eot);src:url(fonts/rainloop.eot?#iefix) format("embedded-opentype"),url(fonts/rainloop.woff) format("woff"),url(fonts/rainloop.ttf) format("truetype"),url(fonts/rainloop.svg#rainloop) format("svg");font-weight:400;font-style:normal}[data-icon]:before{font-family:rainloop!important;content:attr(data-icon);font-style:normal!important;font-weight:400!important;font-variant:normal!important;text-transform:none!important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}[class*=" icon-"]:before,[class^=icon-]:before{font-family:rainloop!important;font-style:normal!important;font-weight:400!important;font-variant:normal!important;text-transform:none!important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-arrows-in:before{content:"\e000"}.icon-arrows-out:before{content:"\e001"}.icon-list:before{content:"\e002"}.icon-search:before{content:"\e003"}.icon-user:before{content:"\e004"}.icon-user-add:before{content:"\e005"}.icon-tags:before{content:"\e006"}.icon-paper-plane:before{content:"\e007"}.icon-reply:before{content:"\e008"}.icon-reply-all:before{content:"\e009"}.icon-forward:before{content:"\e00a"}.icon-info:before{content:"\e00b"}.icon-right-dir:before{content:"\e00c"}.icon-down-dir:before{content:"\e00d"}.icon-image:before{content:"\e00e"}.icon-print:before{content:"\e00f"}.icon-calendar:before{content:"\e010"}.icon-cog:before{content:"\e011"}.icon-wrench:before{content:"\e012"}.icon-rocket:before{content:"\e013"}.icon-fire:before{content:"\e014"}.icon-purchase:before{content:"\e015"}.icon-apple:before{content:"\e016"}.icon-dropbox:before{content:"\e017"}.icon-skype:before{content:"\e018"}.icon-creative-commons:before{content:"\e019"}.icon-ellipsis:before{content:"\e01a"}.icon-left:before{content:"\e01b"}.icon-right:before{content:"\e01c"}.icon-down:before{content:"\e01d"}.icon-right-mini:before{content:"\e01e"}.icon-down-mini:before{content:"\e01f"}.icon-up:before{content:"\e020"}.icon-star-empty:before{content:"\e021"}.icon-star:before{content:"\e022"}.icon-at:before{content:"\e023"}.icon-list-add:before{content:"\e024"}.icon-google:before{content:"\e025"}.icon-google-plus:before{content:"\e026"}.icon-twitter:before{content:"\e027"}.icon-youtube:before{content:"\e028"}.icon-warning:before{content:"\e029"}.icon-warning-alt:before{content:"\e02a"}.icon-power:before{content:"\e02b"}.icon-plus:before{content:"\e02c"}.icon-ok:before{content:"\e02d"}.icon-remove:before{content:"\e02e"}.icon-file:before{content:"\e02f"}.icon-file-code:before{content:"\e030"}.icon-file-chart-graph:before{content:"\e031"}.icon-file-zip:before{content:"\e032"}.icon-file-music:before{content:"\e033"}.icon-file-text:before{content:"\e034"}.icon-file-bookmark:before{content:"\e035"}.icon-file-image:before{content:"\e036"}.icon-file-analytics:before{content:"\e037"}.icon-file-certificate:before{content:"\e038"}.icon-attachment:before{content:"\e039"}.icon-file-excel:before{content:"\e03a"}.icon-file-movie:before{content:"\e03b"}.icon-folder-add:before{content:"\e03c"}.icon-folder:before{content:"\e03d"}.icon-floppy:before{content:"\e03e"}.icon-eye:before{content:"\e03f"}.icon-facebook-alt:before{content:"\e040"}.icon-facebook:before{content:"\e041"}.icon-bolt:before{content:"\e042"}.icon-download:before{content:"\e043"}.icon-upload:before{content:"\e044"}.icon-popup:before{content:"\e045"}.icon-github:before{content:"\e046"}.icon-telephone:before{content:"\e047"}.icon-mobile:before{content:"\e048"}.icon-pencil:before{content:"\e049"}.icon-trash:before{content:"\e04a"}.icon-left-middle:before{content:"\e04b"}.icon-right-middle:before{content:"\e04c"}.icon-repeat:before{content:"\e04d"}.icon-key:before{content:"\e04e"}.icon-lock:before{content:"\e04f"}.icon-home:before{content:"\e050"}.icon-address-book:before{content:"\e051"}.icon-share:before{content:"\e052"}.icon-suitcase:before{content:"\e053"}.icon-new-sign:before{content:"\e054"}.icon-users:before{content:"\e055"}.icon-earth:before{content:"\e056"}.icon-mail:before{content:"\e057"}.icon-checkbox-checked:before{content:"\e058"}.icon-checkbox-unchecked:before{content:"\e059"}.icon-checkbox-partial:before{content:"\e05a"}.icon-radio-checked:before{content:"\e05b"}.icon-radio-unchecked:before{content:"\e05c"}.icon-google-drive:before{content:"\e05d"}.icon-spinner:before{content:"\e05e"}.icon-archive:before{content:"\e05f"}.icon-buy-sign:before{content:"\e060"}.icon-filter:before{content:"\e061"}.icon-sync:before{content:"\e062"}.icon-ellipsis-alt:before{content:"\e063"}.icon-cloud-up:before{content:"\e064"}.icon-cloud-down:before{content:"\e065"}.icon-import:before{content:"\e066"}.icon-export:before{content:"\e067"}.icon-copy:before{content:"\e068"}.icon-angry-smiley:before{content:"\e069"}.icon-happy-smiley:before{content:"\e06a"}.icon-help:before{content:"\e06b"}.icon-resize-in:before{content:"\e06c"}.icon-resize-out:before{content:"\e06d"}.nano{overflow:hidden!important}.nano .content{position:absolute;overflow:scroll;top:0;right:0;bottom:0;left:0;-webkit-overflow-scrolling:touch}.nano .content .content-wrapper{height:100%}.nano .content::-webkit-scrollbar{visibility:hidden}.has-scrollbar .content::-webkit-scrollbar{visibility:hidden}.nano-visibility-hidden::-webkit-scrollbar{visibility:hidden}.nano>.pane{background:0 0;position:absolute;width:5px;right:0;top:1px;bottom:1px;opacity:.01;filter:alpha(opacity=1);-webkit-transition:.4s;-moz-transition:.4s;-o-transition:.4s;transition:.4s;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;z-index:102;margin:2px}.nano>.pane2{background:0 0;position:absolute;height:5px;right:1px;left:1px;bottom:0;opacity:.01;filter:alpha(opacity=1);-webkit-transition:.4s;-moz-transition:.4s;-o-transition:.4s;transition:.4s;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;z-index:10000;margin:2px}.nano>.pane>.slider{background-color:#999;background-color:rgba(0,0,0,.3);position:relative;margin:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;width:5px}.nano>.pane2>.slider2{background-color:#999;background-color:rgba(0,0,0,.3);position:relative;margin:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;height:5px}.nano:hover>.pane,.nano:hover>.pane2,.pane.active,.pane.activescroll,.pane.flashed,.pane2.active,.pane2.activescroll,.pane2.flashed{opacity:.99;filter:alpha(opacity=99)}.nano>.pane.active,.nano>.pane2.active,.nano>.pane2:hover,.nano>.pane:hover{background-color:rgba(0,0,0,.15)}.nano>.pane.active>.slider,.nano>.pane2.active>.slider2,.nano>.pane2:hover>.slider2,.nano>.pane:hover>.slider{background-color:rgba(0,0,0,.4)}.mfp-bg{top:0;left:0;width:100%;height:100%;z-index:1042;overflow:hidden;position:fixed;background:#0b0b0b;opacity:.8;filter:alpha(opacity=80)}.mfp-wrap{top:0;left:0;width:100%;height:100%;z-index:1043;position:fixed;outline:0!important;-webkit-backface-visibility:hidden}.mfp-container{text-align:center;position:absolute;width:100%;height:100%;left:0;top:0;padding:0 8px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mfp-container:before{content:'';display:inline-block;height:100%;vertical-align:middle}.mfp-align-top .mfp-container:before{display:none}.mfp-content{position:relative;display:inline-block;vertical-align:middle;margin:0 auto;text-align:left;z-index:1045}.mfp-ajax-holder .mfp-content,.mfp-inline-holder .mfp-content{width:100%;cursor:auto}.mfp-ajax-cur{cursor:progress}.mfp-zoom-out-cur,.mfp-zoom-out-cur .mfp-image-holder .mfp-close{cursor:-moz-zoom-out;cursor:-webkit-zoom-out;cursor:zoom-out}.mfp-zoom{cursor:pointer;cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.mfp-auto-cursor .mfp-content{cursor:auto}.mfp-arrow,.mfp-close,.mfp-counter,.mfp-preloader{-webkit-user-select:none;-moz-user-select:none;user-select:none}.mfp-loading.mfp-figure{display:none}.mfp-hide{display:none!important}.mfp-preloader{color:#ccc;position:absolute;top:50%;width:auto;text-align:center;margin-top:-.8em;left:8px;right:8px;z-index:1044}.mfp-preloader a{color:#ccc}.mfp-preloader a:hover{color:#fff}.mfp-s-error .mfp-content,.mfp-s-ready .mfp-preloader{display:none}button.mfp-arrow,button.mfp-close{overflow:visible;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;display:block;outline:0;padding:0;z-index:1046;-webkit-box-shadow:none;box-shadow:none}button::-moz-focus-inner{padding:0;border:0}.mfp-close{width:44px;height:44px;line-height:44px;position:absolute;right:0;top:0;text-decoration:none;text-align:center;opacity:.65;padding:0 0 18px 10px;color:#fff;font-style:normal;font-size:28px;font-family:Arial,Baskerville,monospace}.mfp-close:focus,.mfp-close:hover{opacity:1}.mfp-close:active{top:1px}.mfp-close-btn-in .mfp-close{color:#333}.mfp-iframe-holder .mfp-close,.mfp-image-holder .mfp-close{color:#fff;right:-6px;text-align:right;padding-right:6px;width:100%}.mfp-counter{position:absolute;top:0;right:0;color:#ccc;font-size:12px;line-height:18px}.mfp-arrow{position:absolute;opacity:.65;margin:-55px 0 0;top:50%;padding:0;width:90px;height:110px;-webkit-tap-highlight-color:transparent}.mfp-arrow:active{margin-top:-54px}.mfp-arrow:focus,.mfp-arrow:hover{opacity:1}.mfp-arrow .mfp-a,.mfp-arrow .mfp-b,.mfp-arrow:after,.mfp-arrow:before{content:'';display:block;width:0;height:0;position:absolute;left:0;top:0;margin-top:35px;margin-left:35px;border:inset transparent}.mfp-arrow .mfp-a,.mfp-arrow:after{border-top-width:13px;border-bottom-width:13px;top:8px}.mfp-arrow .mfp-b,.mfp-arrow:before{border-top-width:21px;border-bottom-width:21px}.mfp-arrow-left{left:0}.mfp-arrow-left .mfp-a,.mfp-arrow-left:after{border-right:17px solid #fff;margin-left:31px}.mfp-arrow-left .mfp-b,.mfp-arrow-left:before{margin-left:25px;border-right:27px solid #3f3f3f}.mfp-arrow-right{right:0}.mfp-arrow-right .mfp-a,.mfp-arrow-right:after{border-left:17px solid #fff;margin-left:39px}.mfp-arrow-right .mfp-b,.mfp-arrow-right:before{border-left:27px solid #3f3f3f}.mfp-iframe-holder{padding-top:40px;padding-bottom:40px}.mfp-iframe-holder .mfp-content{line-height:0;width:100%;max-width:900px}.mfp-iframe-holder .mfp-close{top:-40px}.mfp-iframe-scaler{width:100%;height:0;overflow:hidden;padding-top:56.25%}.mfp-iframe-scaler iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;box-shadow:0 0 8px rgba(0,0,0,.6);background:#000}img.mfp-img{width:auto;max-width:100%;height:auto;display:block;line-height:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:40px 0;margin:0 auto}.mfp-figure{line-height:0}.mfp-figure:after{content:'';position:absolute;left:0;top:40px;bottom:40px;display:block;right:0;width:auto;height:auto;z-index:-1;box-shadow:0 0 8px rgba(0,0,0,.6);background:#444}.mfp-figure small{color:#bdbdbd;display:block;font-size:12px;line-height:14px}.mfp-bottom-bar{margin-top:-36px;position:absolute;top:100%;left:0;width:100%;cursor:auto}.mfp-title{text-align:left;line-height:18px;color:#f3f3f3;word-wrap:break-word;padding-right:36px}.mfp-image-holder .mfp-content{max-width:100%}.mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer}@media screen and (max-width:800px) and (orientation:landscape),screen and (max-height:300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0}.mfp-img-mobile img.mfp-img{padding:0}.mfp-img-mobile .mfp-figure:after{top:0;bottom:0}.mfp-img-mobile .mfp-figure small{display:inline;margin-left:5px}.mfp-img-mobile .mfp-bottom-bar{background:rgba(0,0,0,.6);bottom:0;margin:0;top:auto;padding:3px 5px;position:fixed;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mfp-img-mobile .mfp-bottom-bar:empty{padding:0}.mfp-img-mobile .mfp-counter{right:5px;top:3px}.mfp-img-mobile .mfp-close{top:0;right:0;width:35px;height:35px;line-height:35px;background:rgba(0,0,0,.6);position:fixed;text-align:center;padding:0}}@media all and (max-width:900px){.mfp-arrow{-webkit-transform:scale(0.75);transform:scale(0.75)}.mfp-arrow-left{-webkit-transform-origin:0;transform-origin:0}.mfp-arrow-right{-webkit-transform-origin:100%;transform-origin:100%}.mfp-container{padding-left:6px;padding-right:6px}}.mfp-ie7 .mfp-img{padding:0}.mfp-ie7 .mfp-bottom-bar{width:600px;left:50%;margin-left:-300px;margin-top:5px;padding-bottom:5px}.mfp-ie7 .mfp-container{padding:0}.mfp-ie7 .mfp-content{padding-top:44px}.mfp-ie7 .mfp-close{top:0;right:0;padding-top:0}.mfp-fade.mfp-bg{opacity:0;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;transition:all .2s ease-out}.mfp-fade.mfp-bg.mfp-ready{opacity:.8}.mfp-fade.mfp-bg.mfp-removing{opacity:0}.mfp-fade.mfp-wrap .mfp-content{opacity:0;-webkit-transition:all .15s ease-out;-moz-transition:all .15s ease-out;transition:all .15s ease-out;-webkit-transform:translateX(-50px);-moz-transform:translateX(-50px);transform:translateX(-50px)}.mfp-fade.mfp-wrap.mfp-ready .mfp-content{opacity:1;-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translateX(0)}.mfp-fade.mfp-wrap.mfp-removing .mfp-content{opacity:0;-webkit-transform:translateX(50px);-moz-transform:translateX(50px);transform:translateX(50px)}.simple-pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.simple-pace-inactive{display:none}.simple-pace .simple-pace-progress{background-color:#939595;position:fixed;z-index:2000;top:0;left:0;height:3px;overflow:hidden;-webkit-transition:width .5s;-moz-transition:width .5s;-o-transition:width .5s;transition:width .5s}.simple-pace .simple-pace-progress-inner{position:absolute;top:0;left:0;right:-32px;bottom:0;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.3)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.3)),color-stop(0.75,rgba(255,255,255,.3)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.3) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.3) 50%,rgba(255,255,255,.3) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.3) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.3) 50%,rgba(255,255,255,.3) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.3) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.3) 50%,rgba(255,255,255,.3) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.3) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.3) 50%,rgba(255,255,255,.3) 75%,transparent 75%,transparent);-webkit-background-size:32px 32px;-moz-background-size:32px 32px;-o-background-size:32px 32px;background-size:32px 32px;-webkit-animation:simple-pace-stripe-animation 500ms linear infinite;-moz-animation:simple-pace-stripe-animation 500ms linear infinite;-ms-animation:simple-pace-stripe-animation 500ms linear infinite;-o-animation:simple-pace-stripe-animation 500ms linear infinite;animation:simple-pace-stripe-animation 500ms linear infinite}@-webkit-keyframes simple-pace-stripe-animation{0%{-webkit-transform:none;transform:none}100%{-webkit-transform:translate(-32px,0);transform:translate(-32px,0)}}@-moz-keyframes simple-pace-stripe-animation{0%{-moz-transform:none;transform:none}100%{-moz-transform:translate(-32px,0);transform:translate(-32px,0)}}@-o-keyframes simple-pace-stripe-animation{0%{-o-transform:none;transform:none}100%{-o-transform:translate(-32px,0);transform:translate(-32px,0)}}@-ms-keyframes simple-pace-stripe-animation{0%{-ms-transform:none;transform:none}100%{-ms-transform:translate(-32px,0);transform:translate(-32px,0)}}@keyframes simple-pace-stripe-animation{0%{transform:none}100%{transform:translate(-32px,0)}}.inputosaurus-container{background-color:#fff;margin:0 5px 0 0;display:inline-block;cursor:text;font-size:14px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.inputosaurus-container li{display:block;float:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;-ms-text-overflow:ellipsis;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.75) inset;-moz-box-shadow:0 1px 0 rgba(255,255,255,.75) inset;box-shadow:0 1px 0 rgba(255,255,255,.75) inset;cursor:default}.inputosaurus-container li a{padding:1px;text-decoration:none;outline:0}.inputosaurus-container .inputosaurus-input{border:none;box-shadow:none;background-color:#fff}.inputosaurus-container .inputosaurus-input input{font-size:14px;line-height:20px;color:#555;margin:0;outline:0;padding:0 0 1px 1px;width:25px;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.inputosaurus-container .inputosaurus-input input:hover{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.inputosaurus-input-hidden{display:none}.flag-wrapper{width:24px;height:16px;display:inline-block}.flag{width:16px;height:11px;display:inline-block;background:url(flags.png) no-repeat}.flag.flag-en,.flag.flag-en-us{background-position:-144px -154px}.flag.flag-en-gb,.flag.flag-en-uk{background-position:-176px -44px}.flag.flag-en-ca{background-position:-48px -22px}.flag.flag-nl,.flag.flag-nl-nl{background-position:-80px -110px}.flag.flag-pl,.flag.flag-pl-pl{background-position:-32px -121px}.flag.flag-ru,.flag.flag-ru-ru{background-position:-224px -121px}.flag.flag-ro,.flag.flag-ro-ro{background-position:-192px -121px}.flag.flag-de,.flag.flag-de-de{background-position:-80px -33px}.flag.flag-it,.flag.flag-it-it{background-position:-208px -66px}.flag.flag-is,.flag.flag-is-is{background-position:-192px -66px}.flag.flag-lv,.flag.flag-lv-lv{background-position:-112px -88px}.flag.flag-hu,.flag.flag-hu-hu{background-position:-32px -66px}.flag.flag-sk,.flag.flag-sk-sk{background-position:-144px -132px}.flag.flag-sl,.flag.flag-sl-si,.flag.flag-sl-sl{background-position:-160px -132px}.flag.flag-ua,.flag.flag-ua-ua,.flag.flag-uk-ua{background-position:-96px -154px}.flag.flag-nb,.flag.flag-nb-no,.flag.flag-no{background-position:-96px -110px}.flag.flag-fr,.flag.flag-fr-ca,.flag.flag-fr-fr{background-position:-144px -44px}.flag.flag-es,.flag.flag-es-es,.flag.flag-es-la{background-position:-16px -44px}.flag.flag-ja,.flag.flag-ja-jp,.flag.flag-jp{background-position:-16px -77px}.flag.flag-ko-kr{background-position:-144px -77px}.flag.flag-pt,.flag.flag-pt-pt{background-position:-112px -121px}.flag.flag-pt-br{background-position:-192px -11px}.flag.flag-cn,.flag.flag-zh-cn,.flag.flag-zh-hk,.flag.flag-zh-tw{background-position:-208px -22px}.clearfix:after,.clearfix:before{display:table;content:"";line-height:0}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body{font-size:14px;line-height:20px;color:#333}a{color:#08c;text-decoration:none}a:hover{color:#005580;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px}.row:after,.row:before{display:table;content:"";line-height:0}.row:after{clear:both}[class*=span]{float:left;margin-left:20px}.container,.navbar-fixed-bottom .container,.navbar-fixed-top .container,.navbar-static-top .container,.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%}.row-fluid:after,.row-fluid:before{display:table;content:"";line-height:0}.row-fluid:after{clear:both}.row-fluid [class*=span]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.12765957%}.row-fluid [class*=span]:first-child{margin-left:0}.row-fluid .span12{width:100%}.row-fluid .span11{width:91.4893617%}.row-fluid .span10{width:82.9787234%}.row-fluid .span9{width:74.46808511%}.row-fluid .span8{width:65.95744681%}.row-fluid .span7{width:57.44680851%}.row-fluid .span6{width:48.93617021%}.row-fluid .span5{width:40.42553191%}.row-fluid .span4{width:31.91489362%}.row-fluid .span3{width:23.40425532%}.row-fluid .span2{width:14.89361702%}.row-fluid .span1{width:6.38297872%}.row-fluid .offset12{margin-left:104.25531915%}.row-fluid .offset12:first-child{margin-left:102.12765957%}.row-fluid .offset11{margin-left:95.74468085%}.row-fluid .offset11:first-child{margin-left:93.61702128%}.row-fluid .offset10{margin-left:87.23404255%}.row-fluid .offset10:first-child{margin-left:85.10638298%}.row-fluid .offset9{margin-left:78.72340426%}.row-fluid .offset9:first-child{margin-left:76.59574468%}.row-fluid .offset8{margin-left:70.21276596%}.row-fluid .offset8:first-child{margin-left:68.08510638%}.row-fluid .offset7{margin-left:61.70212766%}.row-fluid .offset7:first-child{margin-left:59.57446809%}.row-fluid .offset6{margin-left:53.19148936%}.row-fluid .offset6:first-child{margin-left:51.06382979%}.row-fluid .offset5{margin-left:44.68085106%}.row-fluid .offset5:first-child{margin-left:42.55319149%}.row-fluid .offset4{margin-left:36.17021277%}.row-fluid .offset4:first-child{margin-left:34.04255319%}.row-fluid .offset3{margin-left:27.65957447%}.row-fluid .offset3:first-child{margin-left:25.53191489%}.row-fluid .offset2{margin-left:19.14893617%}.row-fluid .offset2:first-child{margin-left:17.0212766%}.row-fluid .offset1{margin-left:10.63829787%}.row-fluid .offset1:first-child{margin-left:8.5106383%}.row-fluid [class*=span].hide,[class*=span].hide{display:none}.row-fluid [class*=span].pull-right,[class*=span].pull-right{float:right}.container{margin-right:auto;margin-left:auto}.container:after,.container:before{display:table;content:"";line-height:0}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px}.container-fluid:after,.container-fluid:before{display:table;content:"";line-height:0}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:20px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:700}em{font-style:italic}cite{font-style:normal}.muted{color:#999}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:700;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:400;line-height:1;color:#999}h1{font-size:36px;line-height:40px}h2{font-size:30px;line-height:40px}h3{font-size:24px;line-height:40px}h4{font-size:18px;line-height:20px}h5{font-size:14px;line-height:20px}h6{font-size:12px;line-height:20px}h1 small{font-size:24px}h2 small{font-size:18px}h3 small,h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}ol,ul{padding:0;margin:0 0 10px 25px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}li{line-height:20px}ol.unstyled,ul.unstyled{margin-left:0;list-style:none}dl{margin-bottom:20px}dd,dt{line-height:20px}dt{font-weight:700}dd{margin-left:10px}.dl-horizontal dt{float:left;width:120px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:130px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:25px}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}blockquote:after,blockquote:before,q:after,q:before{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}button,input,label,select,textarea{font-size:14px;font-weight:400;line-height:20px}button,input,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}.uneditable-input,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{display:inline-block;height:20px;padding:4px 6px;margin-bottom:9px;font-size:14px;line-height:20px;color:#555;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}input,textarea{width:210px}textarea{height:auto}.uneditable-input,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}.uneditable-input:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,textarea:focus{border-color:rgba(82,168,236,.8);outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6)}input[type=checkbox],input[type=radio]{margin:4px 0 0;line-height:normal;cursor:pointer}input[type=button],input[type=checkbox],input[type=file],input[type=image],input[type=radio],input[type=reset],input[type=submit]{width:auto}input[type=file],select{height:30px;line-height:30px}select{background-color:#fff}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus,select:focus{outline:#333 dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.025);box-shadow:inset 0 1px 2px rgba(0,0,0,.025);cursor:not-allowed}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.checkbox,.radio{min-height:18px;padding-left:18px}.checkbox input[type=checkbox],.radio input[type=radio]{float:left;margin-left:-18px}.controls>.checkbox:first-child,.controls>.radio:first-child{padding-top:5px}.checkbox.inline,.radio.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.checkbox.inline+.checkbox.inline,.radio.inline+.radio.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}.row-fluid .uneditable-input[class*=span],.row-fluid input[class*=span],.row-fluid select[class*=span],.row-fluid textarea[class*=span],.uneditable-input[class*=span],input[class*=span],select[class*=span],textarea[class*=span]{float:none;margin-left:0}.input-append .uneditable-input[class*=span],.input-append input[class*=span],.input-prepend .uneditable-input[class*=span],.input-prepend input[class*=span],.row-fluid .input-append [class*=span],.row-fluid .input-prepend [class*=span],.row-fluid .uneditable-input[class*=span],.row-fluid input[class*=span],.row-fluid select[class*=span],.row-fluid textarea[class*=span]{display:inline-block}.uneditable-input,input,textarea{margin-left:0}.controls-row [class*=span]+[class*=span]{margin-left:20px}.uneditable-input.span12,input.span12,textarea.span12{width:926px}.uneditable-input.span11,input.span11,textarea.span11{width:846px}.uneditable-input.span10,input.span10,textarea.span10{width:766px}.uneditable-input.span9,input.span9,textarea.span9{width:686px}.uneditable-input.span8,input.span8,textarea.span8{width:606px}.uneditable-input.span7,input.span7,textarea.span7{width:526px}.uneditable-input.span6,input.span6,textarea.span6{width:446px}.uneditable-input.span5,input.span5,textarea.span5{width:366px}.uneditable-input.span4,input.span4,textarea.span4{width:286px}.uneditable-input.span3,input.span3,textarea.span3{width:206px}.uneditable-input.span2,input.span2,textarea.span2{width:126px}.uneditable-input.span1,input.span1,textarea.span1{width:46px}.controls-row:after,.controls-row:before{display:table;content:"";line-height:0}.controls-row:after{clear:both}.controls-row [class*=span]{float:left}input[disabled],input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type=checkbox][disabled],input[type=checkbox][readonly],input[type=radio][disabled],input[type=radio][readonly]{background-color:transparent}.control-group.warning .help-block,.control-group.warning .help-inline,.control-group.warning>label{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.control-group.warning .checkbox:focus,.control-group.warning .radio:focus,.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e}.control-group.warning .input-append .add-on,.control-group.warning .input-prepend .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error .help-block,.control-group.error .help-inline,.control-group.error>label{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.control-group.error .checkbox:focus,.control-group.error .radio:focus,.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392}.control-group.error .input-append .add-on,.control-group.error .input-prepend .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success .help-block,.control-group.success .help-inline,.control-group.success>label{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.control-group.success .checkbox:focus,.control-group.success .radio:focus,.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b}.control-group.success .input-append .add-on,.control-group.success .input-prepend .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}input:focus:required:invalid,select:focus:required:invalid,textarea:focus:required:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:required:invalid:focus,select:focus:required:invalid:focus,textarea:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5}.form-actions:after,.form-actions:before{display:table;content:"";line-height:0}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;vertical-align:middle;padding-left:5px}.input-append,.input-prepend{margin-bottom:5px;font-size:0;white-space:nowrap}.input-append .uneditable-input,.input-append input,.input-append select,.input-prepend .uneditable-input,.input-prepend input,.input-prepend select{position:relative;margin-bottom:0;font-size:14px;vertical-align:top;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-append .uneditable-input:focus,.input-append input:focus,.input-append select:focus,.input-prepend .uneditable-input:focus,.input-prepend input:focus,.input-prepend select:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:400;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-append .btn,.input-prepend .add-on,.input-prepend .btn{margin-left:-1px;vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-append .uneditable-input,.input-append input,.input-append select,.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-append .add-on:last-child,.input-append .btn:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-prepend.input-append .uneditable-input,.input-prepend.input-append input,.input-prepend.input-append select{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}input.search-query{padding-right:14px;padding-left:14px;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn,.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-horizontal .help-inline,.form-horizontal .input-append,.form-horizontal .input-prepend,.form-horizontal .uneditable-input,.form-horizontal input,.form-horizontal select,.form-horizontal textarea,.form-inline .help-inline,.form-inline .input-append,.form-inline .input-prepend,.form-inline .uneditable-input,.form-inline input,.form-inline select,.form-inline textarea,.form-search .help-inline,.form-search .input-append,.form-search .input-prepend,.form-search .uneditable-input,.form-search input,.form-search select,.form-search textarea{display:inline-block;margin-bottom:0;vertical-align:middle}.form-horizontal .hide,.form-inline .hide,.form-search .hide{display:none}.form-inline .btn-group,.form-inline label,.form-search .btn-group,.form-search label{display:inline-block}.form-inline .input-append,.form-inline .input-prepend,.form-search .input-append,.form-search .input-prepend{margin-bottom:0}.form-inline .checkbox,.form-inline .radio,.form-search .checkbox,.form-search .radio{padding-left:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio],.form-search .checkbox input[type=checkbox],.form-search .radio input[type=radio]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px}.form-horizontal .control-group:after,.form-horizontal .control-group:before{display:table;content:"";line-height:0}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:140px;padding-top:5px;text-align:right}.form-horizontal .controls{margin-left:160px}.form-horizontal .help-block{margin-top:10px;margin-bottom:0}.form-horizontal .form-actions{padding-left:160px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table td,.table th{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:700}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child td,.table caption+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table thead:first-child tr:first-child td,.table thead:first-child tr:first-child th{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table-condensed td,.table-condensed th{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered td,.table-bordered th{border-left:1px solid #ddd}.table-bordered caption+tbody tr:first-child td,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+thead tr:first-child th,.table-bordered tbody:first-child tr:first-child td,.table-bordered tbody:first-child tr:first-child th,.table-bordered thead:first-child tr:first-child th{border-top:0}.table-bordered tbody:first-child tr:first-child td:first-child,.table-bordered thead:first-child tr:first-child th:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered tbody:first-child tr:first-child td:last-child,.table-bordered thead:first-child tr:first-child th:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered tbody:last-child tr:last-child td:first-child,.table-bordered tfoot:last-child tr:last-child td:first-child,.table-bordered thead:last-child tr:last-child th:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;-moz-border-radius-bottomleft:4px}.table-bordered tbody:last-child tr:last-child td:last-child,.table-bordered tfoot:last-child tr:last-child td:last-child,.table-bordered thead:last-child tr:last-child th:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered caption+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered caption+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-right-topleft:4px}.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9}.table-hover tbody tr:hover td,.table-hover tbody tr:hover th{background-color:#f5f5f5}.row-fluid table [class*=span],table [class*=span]{display:table-cell;float:none;margin-left:0}table .span1{float:none;width:44px;margin-left:0}table .span2{float:none;width:124px;margin-left:0}table .span3{float:none;width:204px;margin-left:0}table .span4{float:none;width:284px;margin-left:0}table .span5{float:none;width:364px;margin-left:0}table .span6{float:none;width:444px;margin-left:0}table .span7{float:none;width:524px;margin-left:0}table .span8{float:none;width:604px;margin-left:0}table .span9{float:none;width:684px;margin-left:0}table .span10{float:none;width:764px;margin-left:0}table .span11{float:none;width:844px;margin-left:0}table .span12{float:none;width:924px;margin-left:0}table .span13{float:none;width:1004px;margin-left:0}table .span14{float:none;width:1084px;margin-left:0}table .span15{float:none;width:1164px;margin-left:0}table .span16{float:none;width:1244px;margin-left:0}table .span17{float:none;width:1324px;margin-left:0}table .span18{float:none;width:1404px;margin-left:0}table .span19{float:none;width:1484px;margin-left:0}table .span20{float:none;width:1564px;margin-left:0}table .span21{float:none;width:1644px;margin-left:0}table .span22{float:none;width:1724px;margin-left:0}table .span23{float:none;width:1804px;margin-left:0}table .span24{float:none;width:1884px;margin-left:0}.table tbody tr.success td{background-color:#dff0d8}.table tbody tr.error td{background-color:#f2dede}.table tbody tr.info td{background-color:#d9edf7}.dropdown,.dropup{position:relative}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu li>a:focus,.dropdown-menu li>a:hover,.dropdown-submenu:hover>a{text-decoration:none;color:#fff;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0)}.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0)}.dropdown-menu .disabled>a,.dropdown-menu .disabled>a:hover{color:#999}.dropdown-menu .disabled>a:hover{text-decoration:none;background-color:transparent;cursor:default}.open>.dropdown-menu{display:block}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:"\2191"}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px;-moz-border-radius:0 6px 6px;border-radius:0 6px 6px}.dropdown-submenu:hover .dropdown-menu{display:block}.dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc;margin-top:5px;margin-right:-10px}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown .dropdown-menu .nav-header{padding-left:20px;padding-right:20px}.typeahead{margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:700;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.btn{display:inline-block;padding:4px 14px;margin-bottom:0;font-size:14px;line-height:20px;text-align:center;vertical-align:middle;cursor:pointer;color:#333;background-color:#f5f5f5;background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);border:1px solid #bbb;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.btn.active,.btn.disabled,.btn:active,.btn:hover,.btn[disabled]{color:#333;background-color:#e6e6e6}.btn:hover{color:#333;text-decoration:none;background-color:#e6e6e6;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:#333 dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.active,.btn:active{background-color:#e6e6e6;background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.btn.disabled,.btn[disabled]{cursor:default;background-color:#e6e6e6;background-image:none}.btn-large{padding:9px 14px;font-size:16px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.btn-large [class^=icon-]{margin-top:2px}.btn-small{padding:3px 9px;font-size:12px;line-height:18px}.btn-small [class^=icon-]{margin-top:0}.btn-mini{padding:2px 6px;font-size:11px;line-height:16px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary.active,.btn-primary.disabled,.btn-primary:active,.btn-primary:hover,.btn-primary[disabled]{color:#fff;background-color:#04c}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning.active,.btn-warning.disabled,.btn-warning:active,.btn-warning:hover,.btn-warning[disabled]{color:#fff;background-color:#f89406}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#da4f49;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger.active,.btn-danger.disabled,.btn-danger:active,.btn-danger:hover,.btn-danger[disabled]{color:#fff;background-color:#bd362f}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#5bb75b;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success.active,.btn-success.disabled,.btn-success:active,.btn-success:hover,.btn-success[disabled]{color:#fff;background-color:#51a351}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#49afcd;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info.active,.btn-info.disabled,.btn-info:active,.btn-info:hover,.btn-info[disabled]{color:#fff;background-color:#2f96b4}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#363636;background-image:-moz-linear-gradient(top,#444,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse.active,.btn-inverse.disabled,.btn-inverse:active,.btn-inverse:hover,.btn-inverse[disabled]{color:#fff;background-color:#222}button.btn::-moz-focus-inner,input[type=submit].btn::-moz-focus-inner{padding:0;border:0}.btn-link,.btn-link:active{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{border-color:transparent;cursor:pointer;color:#08c;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover{color:#005580;text-decoration:underline;background-color:transparent}.btn-group{position:relative;font-size:0;white-space:nowrap}.btn-toolbar{font-size:0}.btn-toolbar .btn-group{display:inline-block}.btn-toolbar .btn+.btn,.btn-toolbar .btn+.btn-group,.btn-toolbar .btn-group+.btn{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu{font-size:14px}.btn-group>.btn-mini{font-size:11px}.btn-group>.btn-small{font-size:12px}.btn-group>.btn-large{font-size:16px}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn.large:first-child{margin-left:0}.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,.125),inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,.125),inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 1px 0 0 rgba(255,255,255,.125),inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.btn-group>.btn-mini+.dropdown-toggle{padding-left:5px;padding-right:5px}.btn-group>.btn-large+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-large .caret,.btn-mini .caret,.btn-small .caret{margin-top:6px}.btn-large .caret{border-left-width:5px;border-right-width:5px;border-top-width:5px}.dropup .btn-large .caret{border-bottom:5px solid #000;border-top:0}.btn-danger .caret,.btn-info .caret,.btn-inverse .caret,.btn-primary .caret,.btn-success .caret,.btn-warning .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block}.btn-group-vertical .btn{display:block;float:none;width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical .btn+.btn{margin-left:0;margin-top:-1px}.btn-group-vertical .btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical .btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical .btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical .btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847}.alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-left:0;margin-bottom:20px;list-style:none}.nav>li>a{display:block}.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:700;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-left:15px;padding-right:15px;margin-bottom:0}.nav-list .nav-header,.nav-list>li>a{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255,255,255,.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#08c}.nav-list [class^=icon-]{margin-right:2px}.nav-list .divider{height:1px;margin:9px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-pills:after,.nav-pills:before,.nav-tabs:after,.nav-tabs:before{display:table;content:"";line-height:0}.nav-pills:after,.nav-tabs:after{clear:both}.nav-pills>li,.nav-tabs>li{float:left}.nav-pills>li>a,.nav-tabs>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px}.nav-tabs.nav-stacked>li>a:hover{border-color:#ddd;z-index:2}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{border-top-color:#08c;border-bottom-color:#08c;margin-top:6px}.nav .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover{cursor:pointer}.nav-pills .open .dropdown-toggle,.nav-tabs .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open.active .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover{border-color:#999}.tabbable:after,.tabbable:before{display:table;content:"";line-height:0}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-left>.nav-tabs,.tabs-right>.nav-tabs{border-bottom:0}.pill-content>.pill-pane,.tab-content>.tab-pane{display:none}.pill-content>.active,.tab-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover{border-bottom-color:transparent;border-top-color:#ddd}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover{text-decoration:none;background-color:transparent;cursor:default}.navbar{overflow:visible;margin-bottom:20px;color:#555}.navbar-inner{min-height:40px;padding-left:20px;padding-right:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,.065);box-shadow:0 1px 4px rgba(0,0,0,.065)}.navbar .container{width:auto}.nav-collapse.collapse{height:auto}.navbar .brand{float:left;display:block;padding:10px 20px;margin-left:-20px;font-size:20px;font-weight:200;color:#555;text-shadow:0 1px 0 #fff}.navbar .brand:hover{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px}.navbar-link{color:#555}.navbar-link:hover{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-left:1px solid #f2f2f2;border-right:1px solid #fff}.navbar .btn,.navbar .btn-group{margin-top:6px}.navbar .btn-group .btn{margin:0}.navbar-form{margin-bottom:0}.navbar-form:after,.navbar-form:before{display:table;content:"";line-height:0}.navbar-form:after{clear:both}.navbar-form .checkbox,.navbar-form .radio,.navbar-form input,.navbar-form select{margin-top:5px}.navbar-form .btn,.navbar-form input,.navbar-form select{display:inline-block;margin-bottom:0}.navbar-form input[type=checkbox],.navbar-form input[type=image],.navbar-form input[type=radio]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:6px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{margin-bottom:0;padding:4px 14px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:400;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;width:100%;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-bottom .navbar-inner,.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border:0}.navbar-fixed-bottom .navbar-inner,.navbar-fixed-top .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-bottom .container,.navbar-fixed-top .container,.navbar-static-top .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1),0 1px 10px rgba(0,0,0,.1);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1),0 1px 10px rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1),0 1px 10px rgba(0,0,0,.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1),0 -1px 10px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 0 rgba(0,0,0,.1),0 -1px 10px rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1),0 -1px 10px rgba(0,0,0,.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px;color:#555;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{background-color:transparent;color:#333;text-decoration:none}.navbar .nav>.active>a,.navbar .nav>.active>a:focus,.navbar .nav>.active>a:hover{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,.125);box-shadow:inset 0 3px 8px rgba(0,0,0,.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#ededed;background-image:-moz-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-o-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:linear-gradient(to bottom,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.075)}.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar:active,.navbar .btn-navbar:hover,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,.25);box-shadow:0 1px 0 rgba(0,0,0,.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);position:absolute;top:-7px;left:9px}.navbar .nav>li>.dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;top:-6px;left:10px}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0,0,0,.2);border-bottom:0;bottom:-7px;top:auto}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{border-top:6px solid #fff;border-bottom:0;bottom:-6px;top:auto}.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle,.navbar .nav li.dropdown.open>.dropdown-toggle{background-color:#e5e5e5;color:#555}.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .nav>li>.dropdown-menu.pull-right,.navbar .pull-right>li>.dropdown-menu{left:auto;right:0}.navbar .nav>li>.dropdown-menu.pull-right:before,.navbar .pull-right>li>.dropdown-menu:before{left:auto;right:12px}.navbar .nav>li>.dropdown-menu.pull-right:after,.navbar .pull-right>li>.dropdown-menu:after{left:auto;right:13px}.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu,.navbar .pull-right>li>.dropdown-menu .dropdown-menu{left:auto;right:100%;margin-left:0;margin-right:-1px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse{color:#999}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);border-color:#252525}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover{color:#fff}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{background-color:transparent;color:#fff}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:focus,.navbar-inverse .nav .active>a:hover{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .divider-vertical{border-left-color:#111;border-right-color:#222}.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open>.dropdown-toggle{background-color:#111;color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1),0 1px 0 rgba(255,255,255,.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1),0 1px 0 rgba(255,255,255,.15);box-shadow:inset 0 1px 2px rgba(0,0,0,.1),0 1px 0 rgba(255,255,255,.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query.focused,.navbar-inverse .navbar-search .search-query:focus{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);-moz-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15);outline:0}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e0e0e;background-image:-moz-linear-gradient(top,#151515,#040404);background-image:-webkit-gradient(linear,0 0,0 100%,from(#151515),to(#040404));background-image:-webkit-linear-gradient(top,#151515,#040404);background-image:-o-linear-gradient(top,#151515,#040404);background-image:linear-gradient(to bottom,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb li{display:inline-block;text-shadow:0 1px 0 #fff}.breadcrumb .divider{padding:0 5px;color:#ccc}.breadcrumb .active{color:#999}.modal-open .dropdown-menu{z-index:2050}.modal-open .popover{z-index:2060}.modal-open .tooltip{z-index:2080}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal{position:fixed;top:50%;left:50%;z-index:1050;overflow:auto;width:560px;margin:-250px 0 0 -280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.3);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,.3);box-shadow:0 3px 7px rgba(0,0,0,.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{overflow-y:auto;max-height:400px;padding:15px}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:after,.modal-footer:before{display:table;content:"";line-height:0}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.tooltip{position:absolute;display:block;visibility:visible;padding:5px;opacity:0;filter:alpha(opacity=0)}.tooltip.top{margin-top:-3px}.tooltip.right{margin-left:3px}.tooltip.bottom{margin-top:3px}.tooltip.left{margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#eee;text-align:center;text-decoration:none;background-color:#333;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#333}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#333}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#333}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#333}.popover{position:absolute;top:0;left:0;display:none;width:236px;padding:1px;background-color:#fff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-bottom:10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-right:10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover-content ol,.popover-content p,.popover-content ul{margin-bottom:0}.popover .arrow,.popover .arrow:after{position:absolute;display:inline-block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow:after{content:"";z-index:-1}.popover.top .arrow{bottom:-10px;left:50%;margin-left:-10px;border-width:10px 10px 0;border-top-color:#fff}.popover.top .arrow:after{border-width:11px 11px 0;border-top-color:rgba(0,0,0,.25);bottom:-1px;left:-11px}.popover.right .arrow{top:50%;left:-10px;margin-top:-10px;border-width:10px 10px 10px 0;border-right-color:#fff}.popover.right .arrow:after{border-width:11px 11px 11px 0;border-right-color:rgba(0,0,0,.25);bottom:-11px;left:-1px}.popover.bottom .arrow{top:-10px;left:50%;margin-left:-10px;border-width:0 10px 10px;border-bottom-color:#fff}.popover.bottom .arrow:after{border-width:0 11px 11px;border-bottom-color:rgba(0,0,0,.25);top:-1px;left:-11px}.popover.left .arrow{top:50%;right:-10px;margin-top:-10px;border-width:10px 0 10px 10px;border-left-color:#fff}.popover.left .arrow:after{border-width:11px 0 11px 11px;border-left-color:rgba(0,0,0,.25);bottom:-11px;right:-1px}.badge,.label{font-size:11.84px;font-weight:700;line-height:14px;color:#fff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#999}.label{padding:1px 4px 2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding:1px 9px 2px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}a.badge:hover,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.badge-important,.label-important{background-color:#b94a48}.badge-important[href],.label-important[href]{background-color:#953b39}.badge-warning,.label-warning{background-color:#f89406}.badge-warning[href],.label-warning[href]{background-color:#c67605}.badge-success,.label-success{background-color:#468847}.badge-success[href],.label-success[href]{background-color:#356635}.badge-info,.label-info{background-color:#3a87ad}.badge-info[href],.label-info[href]{background-color:#2d6987}.badge-inverse,.label-inverse{background-color:#333}.badge-inverse[href],.label-inverse[href]{background-color:#1a1a1a}.btn .badge,.btn .label{position:relative;top:-1px}.btn-mini .badge,.btn-mini .label{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.progress .bar{width:0;height:100%;color:#fff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress .bar-danger,.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress .bar-success,.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0)}.progress-striped .bar-success,.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress .bar-info,.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress .bar-warning,.progress-warning .bar{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0)}.progress-striped .bar-warning,.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed}[class*=" icon-"],[class^=icon-]{display:inline-block;width:16px;height:16px;line-height:17px;font-size:16px;vertical-align:text-top}.icon-folder,.icon-folder-add,.icon-list{line-height:18px;font-size:18px;margin-top:-1px;margin-left:-1px;width:17px}.iconsize24{line-height:24px;font-size:24px}.g-ui-menu .e-item:hover [class*=" icon-"],.g-ui-menu .e-item:hover [class^=icon-],.icon-white,.nav>.active>a>[class*=" icon-"],.nav>.active>a>[class^=icon-]{color:#fff}.icon-none{background-image:none!important}.icon-checkbox-checked,.icon-checkbox-partial,.icon-checkbox-unchecked,.icon-radio-checked,.icon-radio-unchecked{cursor:pointer;color:#555;font-size:1em}.icon-checkbox-checked:active,.icon-checkbox-checked:hover,.icon-checkbox-partial:active,.icon-checkbox-partial:hover,.icon-checkbox-unchecked:active,.icon-checkbox-unchecked:hover,.icon-radio-checked:active,.icon-radio-checked:hover,.icon-radio-unchecked:active,.icon-radio-unchecked:hover{color:#000}.icon-white.icon-checkbox-checked,.icon-white.icon-checkbox-partial,.icon-white.icon-checkbox-unchecked,.icon-white.icon-radio-checked,.icon-white.icon-radio-unchecked{color:#eee}.icon-white.icon-checkbox-checked:active,.icon-white.icon-checkbox-checked:hover,.icon-white.icon-checkbox-partial:active,.icon-white.icon-checkbox-partial:hover,.icon-white.icon-checkbox-unchecked:active,.icon-white.icon-checkbox-unchecked:hover,.icon-white.icon-radio-checked:active,.icon-white.icon-radio-checked:hover,.icon-white.icon-radio-unchecked:active,.icon-white.icon-radio-unchecked:hover{color:#fff}.denied-by-browser,.denied-by-browser .icon-checkbox-checked,.denied-by-browser icon-checkbox-unchecked{cursor:default}.down-mini,.right-mini{width:16px;line-height:20px}@-webkit-keyframes rotation{to{-webkit-transform:rotate(1turn)}}@-moz-keyframes rotation{to{-moz-transform:rotate(1turn)}}@keyframes rotation{to{transform:rotate(1turn)}}.icon-spinner{width:16px;height:16px}.icon-spinner:before{-webkit-transform-origin:8px 8px;-moz-transform-origin:8px 8px;transform-origin:8px 8px;margin-top:1px;display:inline-block;font-size:16px;line-height:100%}html.no-cssanimations .icon-spinner{background-image:url(images/sync.png);background-repeat:no-repeat;font-family:Arial}html.no-cssanimations .icon-spinner:before{content:""}html.no-cssanimations .icon-spinner.animated{background-image:url(images/sync.gif)}html.cssanimations .icon-spinner.animated:before{-webkit-animation:rotation 1s infinite steps(40);-moz-animation:rotation 1s infinite steps(40);animation:rotation 1s infinite steps(40)}label{cursor:pointer}label.inline{display:inline-block}.legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}.legend small{font-size:15px;color:#999}.legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.input-append .uneditable-input,.input-append input,.input-append select{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}select{width:223px}.btn-small.btn-small-small{padding:3px 9px;font-size:11px;line-height:11px}.btn.btn-ellipsis{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.btn.btn-narrow{padding-left:12px;padding-right:12px}.btn-group.btn-group-custom-margin>.btn+.btn{margin-left:0}.btn-group+.btn-group{margin-left:3px}.btn{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background-image:none;padding-left:13px;padding-right:13px;text-shadow:0 1px 0 #fff;border-color:rgba(0,0,0,.25)}.btn.disabled,.btn[disabled]{opacity:.75;filter:alpha(opacity=75);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.btn.btn-dark-disabled-border.disabled,.btn.btn-dark-disabled-border[disabled]{border-color:#aaa}html.rgba.textshadow .btn.btn-danger,html.rgba.textshadow .btn.btn-primary,html.rgba.textshadow .btn.btn-success{text-shadow:0 1px 0 rgba(0,0,0,.3)}.btn-toolbar{margin-top:0;margin-bottom:0}.dropdown-menu{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.2);-moz-box-shadow:0 1px 2px rgba(0,0,0,.2);box-shadow:0 1px 2px rgba(0,0,0,.2)}.tooltip{font-size:14px;z-index:2000!important;overflow:hidden;text-overflow:ellipsis}.tooltip.in{opacity:1;filter:alpha(opacity=100)}.tooltip .tooltip-inner{max-width:400px;text-shadow:0 0 5px rgba(0,0,0,.2);padding:5px 10px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.tooltip .tooltip-big{font-size:18px;padding:0 10px;white-space:nowrap}.btn-group>.btn:first-child{-webkit-border-top-left-radius:3px;-moz-border-radius-topleft:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-moz-border-radius-bottomleft:3px;border-bottom-left-radius:3px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:3px;-moz-border-radius-topright:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-bottomright:3px;border-bottom-right-radius:3px}.btn-group>.btn.large:first-child{-webkit-border-top-left-radius:3px;-moz-border-radius-topleft:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-moz-border-radius-bottomleft:3px;border-bottom-left-radius:3px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:3px;-moz-border-radius-topright:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-bottomright:3px;border-bottom-right-radius:3px}.dropdown.colored-toggle.open .btn.dropdown-toggle{color:#BD362F}.dropdown.colored-toggle.open .btn.dropdown-toggle .caret{border-top-color:#BD362F}.dropdown.colored-toggle.open .btn.dropdown-toggle [class^=icon-]:before{color:#BD362F}input[type=email],input[type=password],input[type=search],input[type=text],textarea{border:1px solid #ccc}input[type=email]:focus,input[type=password]:focus,input[type=search]:focus,input[type=text]:focus,textarea:focus{background-color:#fff;border:1px solid #999;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}input[type=email],input[type=password],input[type=search],input[type=text]{height:20px;line-height:20px}select{border:1px solid #ccc}.alert a{text-decoration:underline}.alert.alert-null-left-margin{margin-left:0}.alert.alert-error a{color:#b94a48}.nav-tabs>li>a{color:#555}.popover{z-index:2000}html.no-rgba .modal{border-width:0!important}.modal-backdrop,.modal-backdrop.fade.in{opacity:.1;filter:alpha(opacity=10)}.popups{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1100;overflow:auto}.popups .modal{position:static;z-index:1101;margin:5% auto;background-color:transparent;overflow:hidden;-webkit-box-shadow:0 5px 80px rgba(0,0,0,.3);-moz-box-shadow:0 5px 80px rgba(0,0,0,.3);box-shadow:0 5px 80px rgba(0,0,0,.3)}.popups .modal .modal-body{background-color:#fff;max-height:none}.modal.fade{-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;top:0}.modal.fade.in{top:0}.modal.loginAdminContent .modal-body,.modal.loginContent .modal-body{background-color:transparent!important}.picker.modal-dialog-bg,.picker.picker-dialog-bg{z-index:2000!important}.picker.modal-dialog,.picker.picker-dialog{z-index:2001!important}.form-horizontal.long-label .control-group .control-label{width:160px}.form-horizontal.long-label .control-group .controls{margin-left:180px}.control-label.remove-padding-top{padding-top:0}.inputosaurus-container{width:99%;line-height:20px;padding:2px;border:1px solid #ccc;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}.inputosaurus-container.inputosaurus-focused{background-color:#fff;border:1px solid #999;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.inputosaurus-container li{max-width:500px;background-color:#eee;border:1px solid #aaa;line-height:18px;padding:2px 15px 2px 5px;margin:2px;color:#555;z-index:100;position:relative}.inputosaurus-container li.ui-draggable.ui-draggable-dragging{z-index:101}.inputosaurus-container li a{color:#999;font-size:12px;position:absolute;top:1px;right:2px}.inputosaurus-container li a:hover{color:#666}.inputosaurus-container li span{padding-right:3px}.inputosaurus-container li.inputosaurus-required{padding-rigth:5px}.inputosaurus-container li.inputosaurus-selected{background-color:#ddd}.inputosaurus-container .inputosaurus-input{margin:1px 10px 1px 0;height:22px}.inputosaurus-container .inputosaurus-input input{border:0;height:21px;padding-left:0}.ui-autocomplete{z-index:2000}.inputosaurus-fake-span{position:absolute;top:0;left:-5000px}.cke_plain{background-color:#fff;outline:0;overflow:auto;z-index:1;margin:0;border:0;padding:10px 0 10px 10px;white-space:pre-wrap;font-family:Monaco,Menlo,Consolas,'Courier New',monospace;font-size:13px;line-height:16px;color:#333;resize:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.cke_plain:focus,.cke_source:focus{border:0}.b-compose .cke_chrome{border-right:0;border-left:0;border-bottom:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.cke_wysiwyg_div{padding:10px!important;font-family:arial,sans-serif;font-size:13px;line-height:16px;color:#333}.cke_wysiwyg_div ul{padding-left:40px}.cke_wysiwyg_div ul li{list-style-type:disc!important}.cke_wysiwyg_div ol{padding-left:40px}.cke_wysiwyg_div ol li{list-style-type:decimal!important}.cke_wysiwyg_div pre{margin:0;padding:0;background:#fff;border:none;font-family:Monaco,Menlo,Consolas,'Courier New',monospace}.cke_wysiwyg_div blockquote{border:0;border-left:solid 2px #444;margin:5px 0 5px 5px;padding-left:5px}.cke_wysiwyg_div blockquote *{font-family:arial,sans-serif;font-size:13px;line-height:16px;color:#333}.cke_wysiwyg_div img{vertical-align:bottom}.cke_wysiwyg_div a{color:#00f;text-decoration:underline}.cke_wysiwyg_div a:visited{color:#609}.cke_wysiwyg_div a:active{color:red}.g-ui-user-select-none{-webkit-user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;standard-user-select:none}.g-ui-user-select-allow{-webkit-user-select:inherit;-webkit-touch-callout:inherit;-khtml-user-select:inherit;-moz-user-select:inherit;-ms-user-select:inherit;-o-user-select:inherit;user-select:inherit;standard-user-select:inherit}.g-ui-clearfix:after,.g-ui-clearfix:before{display:table;content:"";line-height:0}.g-ui-clearfix:after{clear:both}.g-ui-link{color:#369;text-decoration:underline;cursor:pointer}.g-ui-min-height-300{min-height:300px}.g-ui-absolute-reset{position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0;border:0;z-index:0}.g-ui-menu{max-height:400px;max-width:300px;overflow-y:auto;overflow-x:hidden}.g-ui-menu .e-link{text-decoration:none;cursor:pointer}.g-ui-menu .e-item.selected>.e-link{background-color:#eee!important}.g-ui-menu .e-item>.e-link:focus,.g-ui-menu .e-item>.e-link:hover{background-color:#555;background-image:none;color:#fff}.g-ui-menu .e-item.disabled>.e-link{cursor:not-allowed;background-color:#fff;background-image:none;color:grey}.g-ui-menu .e-item.disabled [class^=icon-]{color:grey}.g-ui-table{display:table;width:100%}.g-ui-table .e-row{display:table-row}.g-ui-table .e-cell{display:table-cell;vertical-align:top;text-align:left}.g-ui-height-100proc{height:100%}.g-ui-resizable-delimiter-highlight{border:none;border-right:6px solid #aaa}.e-pagenator .e-page{display:inline-block;color:#999;text-decoration:none;font-size:22px;padding:3px;cursor:pointer}.e-pagenator .e-page:hover .e-page-number{color:#555}.e-pagenator .e-page.current .e-page-number{font-size:25px;color:#333;border-bottom:2px solid #000}html.rgba .g-ui-resizable-delimiter-highlight{border-right-color:rgba(0,0,0,.2)}.settings-saved-trigger{display:inline-block;line-height:17px;font-size:16px}.settings-saved-trigger .animated{color:green}.settings-saved-trigger .success{color:green;-webkit-transition:opacity .5s linear;-moz-transition:opacity .5s linear;-o-transition:opacity .5s linear;transition:opacity .5s linear;opacity:0;filter:alpha(opacity=0)}.settings-saved-trigger .error{color:red;-webkit-transition:opacity .5s linear;-moz-transition:opacity .5s linear;-o-transition:opacity .5s linear;transition:opacity .5s linear;opacity:0;filter:alpha(opacity=0)}.settings-saved-trigger .visible{opacity:1;filter:alpha(opacity=100)}.settings-saved-trigger-input.success{border-color:green!important;-webkit-transition:border-color .5s linear;-moz-transition:border-color .5s linear;-o-transition:border-color .5s linear;transition:border-color .5s linear}.settings-saved-trigger-input.error{border-color:red!important;-webkit-transition:border-color .5s linear;-moz-transition:border-color .5s linear;-o-transition:border-color .5s linear;transition:border-color .5s linear}e-spinner{display:none}html.cssanimations .e-spinner{display:block;margin:5px auto 0;width:100px;text-align:center}html.cssanimations .e-spinner .e-bounce{width:15px;height:15px;background-color:#ddd;margin:0 5px;-webkit-box-shadow:0 0 3px rgba(0,0,0,.3);-moz-box-shadow:0 0 3px rgba(0,0,0,.3);box-shadow:0 0 3px rgba(0,0,0,.3);border-radius:100%;display:inline-block;-webkit-animation:bouncedelay 1.4s infinite ease-in-out;animation:bouncedelay 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}html.cssanimations .e-spinner .bounce1{-webkit-animation-delay:-.32s;animation-delay:-.32s}html.cssanimations .e-spinner .bounce2{-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes bouncedelay{0%,100%,80%{-webkit-transform:scale(0)}40%{-webkit-transform:scale(1)}}@keyframes bouncedelay{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}html{margin:0;padding:0;overflow:hidden;font-family:Arial,Verdana,Geneva,sans-serif;height:100%}body{margin:0;padding:0;overflow:hidden;background-color:#e3e3e3;font-family:Arial,Verdana,Geneva,sans-serif;-webkit-touch-callout:none;position:absolute;top:0;left:0;bottom:0;right:0;height:100%}textarea{resize:none}option:disabled{color:#aaa;cursor:not-allowed}body:before{content:"";position:fixed;top:-10px;left:0;width:100%;height:8px;z-index:100;-webkit-box-shadow:0 0 10px rgba(0,0,0,.6);-moz-box-shadow:0 0 10px rgba(0,0,0,.6);box-shadow:0 0 10px rgba(0,0,0,.6)}*,select:focus{outline:0}html.mobile *{-webkit-tap-highlight-color:transparent}#rl-bg{z-index:-1;position:absolute;left:0;right:0;top:0;bottom:0}#rl-content{height:100%;width:100%}#rl-center{position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0;border:0;z-index:0;min-width:600px;min-height:400px}#rl-top{position:absolute;top:0;right:0;left:0;padding:0;margin:0;border:0;bottom:auto;z-index:2}#rl-bottom{position:absolute;right:0;bottom:0;left:0;padding:0;margin:0;border:0;top:auto;z-index:1}#rl-left{position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0;border:0;z-index:0;width:200px;min-width:60px}#rl-right{position:absolute;top:0;right:0;bottom:0;padding:0;margin:0;border:0;z-index:0;z-index:1;left:200px}#rl-sub-left{position:absolute;top:0;bottom:0;left:0;width:500px}#rl-sub-right{position:absolute;top:0;bottom:0;right:0;left:500px}html.ssm-state-desktop-large #rl-left{width:220px}html.ssm-state-desktop-large #rl-right{left:220px}html.ssm-state-desktop-large #rl-sub-left{width:500px}html.ssm-state-desktop-large #rl-sub-right{left:500px}html.ssm-state-desktop-large .b-compose.modal{width:1000px}html.ssm-state-desktop-large .b-contacts-content.modal{width:900px}html.ssm-state-desktop #rl-left{width:200px}html.ssm-state-desktop #rl-right{left:200px}html.ssm-state-desktop #rl-sub-left{width:400px}html.ssm-state-desktop #rl-sub-right{left:400px}html.ssm-state-desktop .b-compose.modal{width:1000px}html.ssm-state-desktop .b-contacts-content.modal{width:900px}html.ssm-state-mobile #rl-left,html.ssm-state-tablet #rl-left{width:155px}html.ssm-state-mobile #rl-right,html.ssm-state-tablet #rl-right{left:155px}html.ssm-state-mobile #rl-sub-left,html.ssm-state-tablet #rl-sub-left{width:310px}html.ssm-state-mobile #rl-sub-left .messageList .inputSearch,html.ssm-state-tablet #rl-sub-left .messageList .inputSearch{width:200px}html.ssm-state-mobile #rl-sub-right,html.ssm-state-tablet #rl-sub-right{left:310px}html.ssm-state-mobile .b-compose.modal,html.ssm-state-mobile .b-contacts-content.modal,html.ssm-state-tablet .b-compose.modal,html.ssm-state-tablet .b-contacts-content.modal{width:700px}html.ssm-state-mobile .b-contacts-content.modal .contactValueInput,html.ssm-state-tablet .b-contacts-content.modal .contactValueInput{width:200px}html.ssm-state-tablet .b-compose.modal{width:700px}html.ssm-state-tablet .b-contacts-content.modal{width:800px}html.ssm-state-tablet .b-contacts-content.modal .contactValueInput{width:250px}.show-on-panel-disabled{display:none}html.rl-left-panel-disabled #rl-left{width:60px!important}html.rl-left-panel-disabled #rl-left .show-on-panel-disabled{display:block}html.rl-left-panel-disabled #rl-left .opacity-on-panel-disabled{opacity:.3;filter:alpha(opacity=30)}html.rl-left-panel-disabled #rl-left .visibility-hidden-on-panel-disabled{visibility:hidden}html.rl-left-panel-disabled #rl-left .hide-on-panel-disabled{display:none}html.rl-left-panel-disabled #rl-left.ui-state-disabled{opacity:1;filter:alpha(opacity=100)}html.rl-left-panel-disabled #rl-right{left:60px!important}.ui-resizable-helper{border-right:5px solid #777;border-right-color:rgba(255,255,255,.7)}html.rl-no-preview-pane #rl-sub-left{right:5px!important;width:inherit}html.rl-no-preview-pane #rl-sub-left .messageList .inputSearch{width:300px!important}html.rl-no-preview-pane #rl-sub-right{left:0!important}html.rl-no-preview-pane #rl-right .ui-resizable-handle{display:none!important}.visible-on-ctrl,.visible-on-ctrl-btn{display:none}.hidden-on-ctrl-btn,html.rl-ctrl-key-pressed .btn-group.open .visible-on-ctrl-btn,html.rl-ctrl-key-pressed .visible-on-ctrl{display:inline-block}html.rl-ctrl-key-pressed .btn-group.open .hidden-on-ctrl-btn,html.rl-ctrl-key-pressed .hidden-on-ctrl{display:none}#rl-loading,#rl-loading-error{position:absolute;font:30px Tahoma;top:50%;width:100%;height:65px;margin:-60px 0 0;background-color:transparent;text-align:center;color:#000}#rl-loading-error{background-image:none;display:none}.nano:after,.nano:before{display:none;content:"";position:absolute;left:0;width:100%;height:10px;z-index:102;-webkit-box-shadow:0 0 20px rgba(0,0,0,.3);-moz-box-shadow:0 0 20px rgba(0,0,0,.3);box-shadow:0 0 20px rgba(0,0,0,.3)}.nano:before{top:-10px}.nano:after{bottom:-10px}.nano.nano-scrolllimit-bottom:after,.nano.nano-scrolllimit-top:before{display:block}.b-system-drop-down .b-toolbar{position:absolute;top:0;right:0;height:30px;padding:10px 8px;z-index:103}.b-system-drop-down .e-facebook-name{display:inline-block;padding-top:4px}.b-system-drop-down .btn.system-dropdown{padding-left:10px;padding-right:10px}.b-system-drop-down .button-fb-logout{margin:5px}.b-system-drop-down .email-title{display:inline-block;max-width:200px;text-align:left;text-overflow:ellipsis;overflow:hidden}.b-login-content{height:100%;text-align:center}.b-login-content .loginFormWrapper{display:inline-block;vertical-align:middle;text-align:center}.b-login-content .loginFormWrapper .descWrapper{margin-bottom:10px}.b-login-content .loginFormWrapper .descWrapper .desc{font-size:18px;padding:2px}.b-login-content .loginFormWrapper .alertError{max-width:450px}.b-login-content .loginFormWrapper .loginForm{background-color:#efefef;text-align:left;color:#333;margin:0;float:none}.b-login-content .loginFormWrapper .control-label{font-size:16px;line-height:30px}.b-login-content .loginFormWrapper .control-group{margin-bottom:25px}.b-login-content .loginFormWrapper .wrapper{padding:40px 40px 10px}.b-login-content .loginFormWrapper #recaptcha_image img{border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.b-login-content .loginFormWrapper .inputAdditionalCode,.b-login-content .loginFormWrapper .inputEmail,.b-login-content .loginFormWrapper .inputLogin,.b-login-content .loginFormWrapper .inputLoginForm,.b-login-content .loginFormWrapper .inputPassword{font-size:18px;height:30px;line-height:29px}.b-login-content .loginFormWrapper .signMeLabel{margin-top:5px}.b-login-content .loginFormWrapper .input-append .add-on{position:relative;height:30px;background:0 0;margin-left:-35px;z-index:1000;border:0}.b-login-content .loginFormWrapper .input-append .add-on i{font-size:17px;line-height:29px;color:#999}.b-login-content .loginFormWrapper .control-group.error .add-on i{color:#b94a48}.b-login-content .buttonLogin{margin:0}.b-login-content .alert{margin:0 0 20px;text-align:left}.b-login-content .loginAfter{display:inline-block;height:90%;vertical-align:middle;width:0}.b-login-content .flag-selector{margin-bottom:0}.popups .b-ask-content .modal-header{background-color:#fff}.popups .b-ask-content .modal-body{text-align:center}.popups .b-ask-content .desc-place{font-size:18px}.popups .b-shortcuts-content.modal{width:700px}.popups .b-shortcuts-content .modal-header{background-color:#fff}.b-folders .b-toolbar{position:absolute;top:0;right:0;left:0;height:30px;padding:10px 10px 0 8px;color:#fff;z-index:101}.b-folders .b-footer{position:absolute;bottom:20px;right:0;left:0;height:20px;padding:0 10px 0 5px;z-index:101}.b-folders .b-content{position:absolute;top:58px;bottom:45px;left:0;right:0;overflow:hidden;overflow-y:auto;min-width:100px}.b-folders .b-content .content{-webkit-overflow-scrolling:touch}.b-folders .b-list-delimiter{margin:10px;border-top:0 solid #000;border-bottom:1px solid #999}.b-folders .b-content .e-item{overflow:hidden;white-space:nowrap}.b-folders .b-content .e-item .e-link{display:block;position:relative;z-index:1;height:34px;line-height:34px;background-color:transparent;vertical-align:middle;color:grey;cursor:not-allowed;font-size:14px;padding:0 10px;outline:0;text-decoration:none}.b-folders .b-content .e-item .e-link.selectable{color:#000;cursor:pointer}.b-folders .b-content .e-item .e-link.selectable.droppableHover,.b-folders .b-content .e-item .e-link.selectable.focused,.b-folders .b-content .e-item .e-link.selectable.selected,.b-folders .b-content .e-item .e-link.selectable:hover{background-color:#555;color:#fff}.b-folders .b-content .e-item .e-link.selectable.focused{color:#fff}.b-folders .b-content .e-item .e-link.focused{background-color:#888}.b-folders .b-content .e-item .e-link.system{cursor:default;color:grey}.b-folders .b-content .e-item .e-link .count{position:relative;display:none;margin-top:5px;line-height:19px}.b-folders .b-content .e-item .e-link.print-count{font-weight:700}.b-folders .b-content .e-item .e-link.print-count .count{display:inline}.b-folders .b-content .e-item .e-link.unread-sub{font-weight:700}.b-folders .b-content .e-item .e-link .e-collapsed-sign{cursor:pointer;width:22px;height:30px;line-height:30px;text-align:center;vertical-align:inherit}.b-folders .b-content .e-item .hidden.e-link{display:none}.b-folders .b-content .e-item .b-sub-folders.collapsed{max-height:0;height:0;display:none}.b-folders .b-folder-system-item{font-weight:700}.b-folders .b-sub-folders .e-item .e-link{padding-left:25px}.b-folders .b-sub-folders.unpaddig-folder .e-item .e-link{padding-left:10px}.b-folders .b-sub-folders .b-sub-folders .e-item .e-link{padding-left:40px}.b-folders .b-sub-folders.unpaddig-folder .b-sub-folders .e-item .e-link{padding-left:25px}.b-folders .b-sub-folders .b-sub-folders .b-sub-folders .e-item .e-link{padding-left:55px}.b-folders .b-sub-folders.unpaddig-folder .b-sub-folders .b-sub-folders .e-item .e-link{padding-left:40px}.b-folders .b-sub-folders .b-sub-folders .b-sub-folders .b-sub-folders .e-item .e-link{padding-left:70px}.b-folders .b-sub-folders.unpaddig-folder .b-sub-folders .b-sub-folders .b-sub-folders .e-item .e-link{padding-left:55px}html.rl-left-panel-disabled .btn.buttonContacts{margin-top:10px!important;margin-left:0!important}.popups .b-folder-clear-content .modal-header,.popups .b-folder-create-content .modal-header,.popups .b-folder-system-content .modal-header{background-color:#fff}.popups .b-filter-content{width:800px}.popups .b-filter-content .modal-header{background-color:#fff}.popups .b-languages-content.modal{width:700px}.popups .b-languages-content.exp{width:701px}.popups .b-languages-content .modal-header{background-color:#fff}.popups .b-languages-content .lang-item{display:inline-block;padding:5px 15px;margin:2px 5px;width:180px;background-color:#fff;text-align:left}.popups .b-languages-content .lang-item.selected{background-color:#f5f5f5}.popups .b-languages-content .lang-item:hover{background-color:#eee}.popups .b-account-add-content .modal-header,.popups .b-compose-open-pgp-content .modal-header,.popups .b-open-pgp-key-add-content .modal-header,.popups .b-open-pgp-key-generate-content .modal-header,.popups .b-open-pgp-key-view-content .modal-header{background-color:#fff}.popups .b-compose-open-pgp-content.modal,.popups .b-open-pgp-key-add-content.modal,.popups .b-open-pgp-key-generate-content.modal,.popups .b-open-pgp-key-view-content.modal{width:570px}.popups .b-compose-open-pgp-content .inputKey,.popups .b-open-pgp-key-add-content .inputKey,.popups .b-open-pgp-key-generate-content .inputKey,.popups .b-open-pgp-key-view-content .inputKey{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}.popups .b-compose-open-pgp-content .key-viewer,.popups .b-open-pgp-key-add-content .key-viewer,.popups .b-open-pgp-key-generate-content .key-viewer,.popups .b-open-pgp-key-view-content .key-viewer{max-height:500px;overflow:auto}.popups .b-identity-content .modal-header,.popups .b-two-factor-test-content .modal-header{background-color:#fff}.popups .b-identity-content .textEmail{margin-top:5px;font-weight:700}.popups .b-advanced-search-content.modal{width:750px}.popups .b-advanced-search-content.modal .control-label{width:100px}.popups .b-advanced-search-content.modal .controls{margin-left:110px}.popups .b-advanced-search-content .modal-header{background-color:#fff}html.rl-no-preview-pane .messageList.message-selected{display:none}.messageList .toolbar{position:absolute;top:0;right:0;left:0;height:30px;padding:10px 1px;z-index:102}.messageList .b-footer{position:absolute;bottom:0;right:0;left:0;height:30px;padding:7px;z-index:101;background-color:#eee;-webkit-border-bottom-right-radius:5px;-moz-border-radius-bottomright:5px;border-bottom-right-radius:5px;-webkit-border-bottom-left-radius:5px;-moz-border-radius-bottomleft:5px;border-bottom-left-radius:5px}.messageList .b-footer .e-quota{display:inline-block;margin-top:5px;margin-left:5px;font-size:18px;cursor:help}.messageList .b-footer .e-quota:hover{border-bottom:1px dashed #333}.messageList .inputSearch{width:258px}.messageList .btn.buttonMoreSearch{padding-left:8px;padding-right:8px}.messageList .b-message-list-wrapper{position:absolute;top:50px;right:0;left:0;bottom:5px;border:1px solid #aaa;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);-moz-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;z-index:101}.messageList .second-toolbar{position:absolute;top:0;right:0;left:0;height:29px;padding:10px 8px 10px 11px;z-index:101;background-color:#eee;-webkit-border-top-right-radius:5px;-moz-border-radius-topright:5px;border-top-right-radius:5px;-webkit-border-top-left-radius:5px;-moz-border-radius-topleft:5px;border-top-left-radius:5px}.messageList .second-toolbar .checkboxCkeckAll{margin:5px 0}.messageList .line-loading{position:absolute;left:0;right:0;z-index:102;height:0;top:50px}.messageList .mainDelimiter{position:absolute;left:0;right:0;height:1px;z-index:101;background-color:#bbb}.messageList .toolbarDelimiter{top:49px}.messageList .footerDelimiter{bottom:44px}.messageList .b-content{position:absolute;top:50px;bottom:45px;left:0;right:0;padding:0;overflow-x:hidden;overflow-y:auto;z-index:101;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background-color:#fff}.messageList .b-content .content{-webkit-overflow-scrolling:touch}.messageList .b-content .listClear{color:#333;text-align:center;padding:10px;font-size:14px;line-height:13px}.messageList .b-content .listDragOver,.messageList .b-content .listEmptyList,.messageList .b-content .listEmptyListLoading,.messageList .b-content .listEmptySearchList,.messageList .b-content .listError{color:#999;text-align:center;padding:60px 10px;font-size:24px;line-height:30px}.messageList .b-content .listDragOver .e-icon,.messageList .b-content .listEmptyList .e-icon,.messageList .b-content .listEmptyListLoading .e-icon,.messageList .b-content .listEmptySearchList .e-icon,.messageList .b-content .listError .e-icon{font-size:24px;line-height:30px}.messageList .b-content .listDragOver{max-height:0;overflow:hidden;padding:0 10px}.messageList .b-content .listDragOver.viewAppendArea{max-height:120px;padding:30px 10px}.messageList .b-content .listDragOver.dragOverEnter{background-color:#e0fdda;color:#333}.messageList .b-content .listError{color:#DA4F49}.messageList .b-content .listSearchDesc{font-size:20px;padding:20px;border-bottom:1px solid #eee}.messageList .b-content .delimiter{display:block;height:1px;background-color:#e5e5e5}.messageList .b-content .messageListItem:last-child{border-bottom:1px solid #e5e5e5}.messageList .b-content .messageListItem:last-child.selected{border-bottom:1px solid #bfd5ef}.messageList .b-content .fullThreadsParent{height:25px;padding:3px 5px;background-color:#f4f4f4;text-align:center}.messageList .b-content .messageListItem{position:relative;height:52px;max-height:60px;font-size:12px;line-height:21px;overflow:hidden;cursor:pointer;margin:0;border:0 solid transparent;z-index:100;background-color:#f9f9f9}.messageList .b-content .messageListItem .delimiter{position:relative;display:block;height:1px;background-color:#999;opacity:.2;filter:alpha(opacity=20)}.messageList .b-content .messageListItem .wrapper{padding:5px 0}.messageList .b-content .messageListItem .sidebarParent{display:inline-block;width:6px;background-color:#eee;float:left;height:100%}.messageList .b-content .messageListItem.focused .sidebarParent{background-color:#ccc!important}.messageList .b-content .messageListItem.e-single-line{height:35px}.messageList .b-content .messageListItem.e-single-line .wrapper{line-height:25px;padding:5px}.messageList .b-content .messageListItem.new{max-height:0}.messageList .b-content .messageListItem.deleted{max-height:0;border-color:transparent!important}.messageList .b-content .messageListItem .checkedParent{display:inline-block;float:left;margin-top:11px;padding:0 8px 0 6px;font-size:14px}.messageList .b-content .messageListItem.e-single-line .checkedParent{margin-top:1px}.messageList .b-content .messageListItem .flagParent{display:inline-block;float:right;padding:0 8px 0 5px}.messageList .b-content .messageListItem.e-single-line .flagParent{float:left;padding:0 8px 0 2px}.messageList .b-content .messageListItem .dateParent{display:inline-block;float:right;position:relative;margin:0 5px;color:#999;font-size:11px}.messageList .b-content .messageListItem .attachmentParent{display:inline-block;float:right;position:relative;margin:2px 8px 0 5px}.messageList .b-content .messageListItem.e-single-line .attachmentParent{float:left;margin:0 5px 0 0}.messageList .b-content .messageListItem .senderParent{display:block;overflow:hidden;text-overflow:ellipsis}.messageList .b-content .messageListItem .threadsCountParent{display:inline;overflow:hidden;background-color:#eee;padding:1px 5px;margin-right:5px;border:1px solid #ccc;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.messageList .b-content .messageListItem .threadsCountParent.lastSelected{background-color:#999;border-color:#999;color:#fff}.messageList .b-content .messageListItem .threadsCountParent:hover{border-color:#666}.messageList .b-content .messageListItem.e-single-line .senderParent{display:inline-block;text-overflow:none;width:200px;float:left;font-weight:400}.messageList .b-content .messageListItem .subjectParent{display:block;overflow:hidden;text-overflow:ellipsis;color:#000}.messageList .b-content .messageListItem .dateParent,.messageList .b-content .messageListItem .senderParent,.messageList .b-content .messageListItem .subjectParent{white-space:nowrap}.messageList .b-content .messageListItem .subjectParent .emptySubjectText{display:none;font-style:italic;color:#999}.messageList .b-content .messageListItem.emptySubject .subjectParent .subject,.messageList .b-content .messageListItem.emptySubject .subjectParent .subject-prefix,.messageList .b-content .messageListItem.emptySubject .subjectParent .subject-suffix{display:none}.messageList .b-content .messageListItem.emptySubject .subjectParent .emptySubjectText{display:inline}.messageList .b-content .messageListItem .sender,.messageList .b-content .messageListItem .subject,.messageList .b-content .messageListItem .subject-suffix{overflow:hidden;text-overflow:ellipsis}.messageList .b-content .messageListItem .subject-prefix{color:#888}.messageList .b-content .messageListItem .attachment{display:none}.messageList .b-content .messageListItem .flagOff,.messageList .b-content .messageListItem .flagOn,.messageList .b-content .messageListItem .flagOnHalf{cursor:pointer;display:inline-block}.messageList .b-content .messageListItem .flagOff{opacity:.5;filter:alpha(opacity=50)}.messageList .b-content .messageListItem .flagOff:hover{opacity:1;filter:alpha(opacity=100)}.messageList .b-content .messageListItem .flagOn,.messageList .b-content .messageListItem .flagOnHalf{display:none;color:orange}.messageList .b-content .messageListItem .forwardFlag,.messageList .b-content .messageListItem .replyFlag{display:none}.messageList .b-content .messageListItem.answered .replyFlag,.messageList .b-content .messageListItem.forwarded .forwardFlag{display:inline-block}.messageList .b-content .messageListItem.withAttachments .attachment{display:inline-block;color:#666;text-shadow:0 1px 0 #eee}.messageList .b-content .messageListItem.unseen{background-color:#FFFFD9}.messageList .b-content .messageListItem.unseen .sender,.messageList .b-content .messageListItem.unseen .subject,.messageList .b-content .messageListItem.unseen .subject-suffix{font-weight:700}.messageList .b-content .messageListItem.unseen .sidebarParent{background-color:orange}.messageList .b-content .messageListItem.unseen.focused .sidebarParent{background-color:#cc8400!important}.messageList .b-content .messageListItem.hasUnseenSubMessage{background-color:#FFFFD9}.messageList .b-content .messageListItem.hasUnseenSubMessage .sidebarParent{background-color:#ffdb99}.messageList .b-content .messageListItem.hasUnseenSubMessage.focused .sidebarParent{background-color:#cc8400!important}.messageList .b-content .messageListItem.hasParentMessage{background-color:#ecf0f1}.messageList .b-content .messageListItem.hasParentMessage .sidebarParent{background-color:#bdc3c7}.messageList .b-content .messageListItem.hasParentMessage.focused .sidebarParent{background-color:#a1aab0!important}.messageList .b-content .messageListItem.hasParentMessage.unseen{background-color:#dde4e6}.messageList .b-content .messageListItem.hasParentMessage.unseen .sidebarParent{background-color:#6c777f}.messageList .b-content .messageListItem.hasParentMessage.unseen.focused .sidebarParent{background-color:#545e64!important}.messageList .b-content .messageListItem.checked .sidebarParent{background-color:#69a8f5!important}.messageList .b-content .messageListItem.checked.focused .sidebarParent{background-color:#217ef0!important}.messageList .b-content .messageListItem.selected{background-color:#DFEFFF;z-index:101}.messageList .b-content .messageListItem.selected .sidebarParent{background-color:#398CF2!important}.messageList .b-content .messageListItem.selected .delimiter{background-color:#398CF2;opacity:.2;filter:alpha(opacity=20)}.messageList .b-content .messageListItem.selected+.messageListItem .delimiter{background-color:#398CF2;opacity:.3;filter:alpha(opacity=30)}.messageList .b-content .messageListItem.hasFlaggedSubMessage .flagOff,.messageList .b-content .messageListItem.hasFlaggedSubMessage .flagOn{display:none}.messageList .b-content .messageListItem.hasFlaggedSubMessage .flagOnHalf{display:inline-block}.messageList .b-content .messageListItem.flagged .flagOff,.messageList .b-content .messageListItem.flagged .flagOnHalf{display:none}.messageList .b-content .messageListItem.flagged .flagOn{display:inline-block}.messageList.message-focused .b-message-list-wrapper{background-color:#000}.messageList.message-focused .b-content{opacity:.97;filter:alpha(opacity=97)}.messageList.hideMessageListCheckbox .checkboxCkeckAll,.messageList.hideMessageListCheckbox .checkedParent{display:none!important}.messageList.hideMessageListCheckbox .sidebarParent{margin-right:10px!important}html.ssm-state-desktop-large .messageList .b-content .messageListItem,html.ssm-state-desktop-large .messageList .b-content .messageListItem .dateParent{font-size:13px}html.cssanimations.rl-anim .messageList .line-loading{height:5px!important}.draggablePlace{z-index:10002;color:#fff;background-color:#333;background-color:rgba(0,0,0,.5);padding:4px 10px;min-width:30px;height:20px;cursor:pointer;cursor:move}html.rl-no-preview-pane .messageView{display:none}html.rl-no-preview-pane .messageView.message-selected{display:block}.messageView{z-index:100}.messageView .toolbar{position:absolute;top:0;right:0;left:0;height:30px;padding:10px 0;color:#fff}.messageView .b-content{position:absolute;margin:0;top:58px;bottom:13px;right:8px;left:-1px;overflow:hidden;border:1px solid #aaa;-webkit-border-top-right-radius:3px;-moz-border-radius-topright:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-bottomright:3px;border-bottom-right-radius:3px;background-color:#fff}.messageView .b-content .b-message-view-checked-helper{text-align:center;font-size:70px;line-height:70px;padding-top:140px;color:#999}.messageView .b-content .b-message-view-checked-helper .icon-mail{font-size:100px;font-size:50px;line-height:90px;padding-left:10px}.messageView .b-content .b-message-view-desc{text-align:center;font-size:24px;line-height:30px;padding-top:120px;color:#999}.messageView .b-content .b-message-view-desc.error{color:#DA4F49}.messageView .b-content .content{-webkit-overflow-scrolling:touch}.messageView .b-content .messageItem{position:absolute;top:0;bottom:0;left:0;right:0;overflow:auto;-webkit-overflow-scrolling:touch;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.messageView .b-content .messageItem .emptySubjectText{display:none;font-style:italic;color:#999}.messageView .b-content .messageItem.emptySubject .emptySubjectText{display:inline}.messageView .b-content .messageItem .buttonFull,.messageView .b-content .messageItem .buttonUnFull,.messageView .b-content .messageItem .buttonUp{display:inline-block;position:fixed;right:30px;top:90px;height:30px;width:30px;text-align:center;vertical-align:middle;line-height:30px;background-color:#fff;border:1px solid #333;color:#333;z-index:2;cursor:pointer;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;opacity:.3;filter:alpha(opacity=30)}.messageView .b-content .messageItem .buttonFull:hover,.messageView .b-content .messageItem .buttonUnFull:hover,.messageView .b-content .messageItem .buttonUp:hover{opacity:.8;filter:alpha(opacity=80);border-color:#000;background-color:#888;color:#fff}.messageView .b-content .messageItem .buttonUp{right:70px;z-index:0}.messageView .b-content .messageItem .buttonUnFull{display:none}.messageView .b-content .messageItem .messageItemHeader{position:relative;padding:10px;background-color:#f8f8f8;border-top:0;border-bottom:1px solid #ddd;z-index:1}.messageView .b-content .messageItem .messageItemHeader .fromPic{display:inline-block;width:50px;height:50px;float:left;padding:2px;margin:0 5px 0 0;background:#fff;border:1px solid #ccc;border-radius:10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.messageView .b-content .messageItem .messageItemHeader .subjectParent{font-size:16px;font-weight:700;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;margin-left:3px}.messageView .b-content .messageItem .messageItemHeader .senderParent{margin-top:10px}.messageView .b-content .messageItem .messageItemHeader .messageButtons{margin-top:5px}.messageView .b-content .messageItem .messageItemHeader .informationShort{margin-left:15px}.messageView .b-content .messageItem .messageItemHeader .informationShort a{color:#369;text-decoration:underline;cursor:pointer}.messageView .b-content .messageItem .messageItemHeader .informationFull{margin-top:10px;border:1px solid #ddd;background-color:#fff;border-radius:5px;padding:10px 15px}.messageView .b-content .messageItem .loading{text-align:center;font-size:24px;color:grey;padding-top:50px}.messageView .b-content .messageItem .line-loading{height:0}.messageView .b-content .messageItem .pgpEncrypted,.messageView .b-content .messageItem .pgpSigned,.messageView .b-content .messageItem .readReceipt,.messageView .b-content .messageItem .showImages{cursor:pointer;padding:10px 15px;border-bottom:1px solid #ddd;background-color:#eee}.messageView .b-content .messageItem .pgpInfo{padding:5px 15px;border-bottom:1px solid #ddd;background-color:#fcf8e3}.messageView .b-content .messageItem .pgpInfo.success{background-color:#e9f4ff}.messageView .b-content .messageItem .readReceipt{background-color:#ffffd9}.messageView .b-content .messageItem .attachmentsPlace{padding:10px}.messageView .b-content .messageItem .attachmentsPlace .attachmentList{margin:0}.messageView .b-content .messageItem .attachmentsPlace .attachmentList .attachmentItem{display:inline-block;margin:5px;padding:5px;max-width:170px;min-width:60px;overflow:hidden;cursor:pointer;list-style:none;line-height:24px;border:2px solid grey;background-color:#fff;box-shadow:1px 1px 5px #ccc;box-shadow:1px 1px 5px rgba(0,0,0,.1);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.messageView .b-content .messageItem .attachmentsPlace .attachmentList .attachmentItem .attachmentIcon{font-size:23px;width:23px;height:23px}.messageView .b-content .messageItem .attachmentsPlace .attachmentList .attachmentItem .attachmentPreview{color:#999;margin:0 5px}.messageView .b-content .messageItem .attachmentsPlace .attachmentList .attachmentItem .attachmentPreview:hover{color:#333}.messageView .b-content .messageItem .rlBlockquoteSwitcher{background-color:#eee;border:1px solid #999;display:inline-block;width:30px;height:14px;line-height:14px;text-align:center;cursor:pointer;margin:10px 0;opacity:.5;filter:alpha(opacity=50)}.messageView .b-content .messageItem .rlBlockquoteSwitcher:hover{opacity:1;filter:alpha(opacity=100)}.messageView .b-content .messageItem .bodyText{color:#000;font-family:Arial,Verdana,Geneva,sans-serif}.messageView .b-content .messageItem .bodyText .b-text-part div[data-x-div-type=html],.messageView .b-content .messageItem .bodyText .b-text-part div[data-x-div-type=html] div[data-x-div-type=html]{height:100%}.messageView .b-content .messageItem .bodyText .b-text-part a{color:#00f;text-decoration:underline}.messageView .b-content .messageItem .bodyText .b-text-part a:visited{color:#609}.messageView .b-content .messageItem .bodyText .b-text-part a:active{color:red}.messageView .b-content .messageItem .bodyText .b-text-part table{border-collapse:separate}.messageView .b-content .messageItem .bodyText .b-text-part blockquote{border-left:2px solid #000;margin:0;padding:0 10px}.messageView .b-content .messageItem .bodyText .b-text-part .rl-bq-switcher.hidden-bq{display:none}.messageView .b-content .messageItem .bodyText .b-text-part.html div[data-x-div-type=body]{margin:15px}.messageView .b-content .messageItem .bodyText .b-text-part.html pre{margin:0;padding:0;background:#fff;border:none;font-family:Monaco,Menlo,Consolas,'Courier New',monospace}.messageView .b-content .messageItem .bodyText .b-text-part.plain{padding:15px;white-space:pre-wrap;font-family:Monaco,Menlo,Consolas,'Courier New',monospace}.messageView .b-content .messageItem .bodyText .b-text-part.plain pre{margin:0;padding:0;background:#fff;border:none;font-family:Monaco,Menlo,Consolas,'Courier New',monospace}.messageView .b-content .messageItem .bodyText .b-text-part.plain blockquote{border-left:2px solid #00f;color:#00f}.messageView .b-content .messageItem .bodyText .b-text-part.plain blockquote blockquote{border-left:2px solid green;color:green}.messageView .b-content .messageItem .bodyText .b-text-part.plain blockquote blockquote blockquote{border-left:2px solid red;color:red}.messageView.message-focused .b-content{z-index:102;-webkit-box-shadow:0 2px 10px rgba(0,0,0,.3);-moz-box-shadow:0 2px 10px rgba(0,0,0,.3);box-shadow:0 2px 10px rgba(0,0,0,.3);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;border-color:#9d9d9d}html.rl-no-preview-pane .messageView .toolbar{padding-left:1px}html.rl-no-preview-pane .messageView .b-content{top:50px;bottom:5px;right:5px;border:1px solid #aaa;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);-moz-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}html.rl-no-preview-pane .messageView .b-content .buttonFull,html.rl-no-preview-pane .messageView .b-content .buttonUnFull,html.rl-no-preview-pane .messageView .b-content .buttonUp{top:70px}html.cssanimations.rl-anim .messageItem .line-loading{height:5px!important}html.rl-message-fullscreen #rl-bottom,html.rl-message-fullscreen #rl-left,html.rl-message-fullscreen #rl-right .RL-MailMessageList,html.rl-message-fullscreen #rl-right .RL-MailMessageView .messageView .toolbar,html.rl-message-fullscreen #rl-right .RL-SettingsPane,html.rl-message-fullscreen #rl-right .RL-SystemDropDown{display:none!important}html.rl-message-fullscreen .messageView .b-content{position:fixed;margin:5px;top:0;left:0;right:0;bottom:0;z-index:10000;border:1px solid #aaa;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}html.rl-message-fullscreen .messageView .b-content .buttonUnFull,html.rl-message-fullscreen .messageView .b-content .buttonUp{display:inline-block;top:36px}html.rl-message-fullscreen .messageView .b-content .buttonFull{display:none}.b-contacts-content .control-group .control-label.fix-width{width:50px}.b-contacts-content .control-group .controls.fix-width{margin-left:70px}.b-contacts-content.modal{position:absolute;right:0;top:0;bottom:0;left:0;width:900px;min-height:300px;max-height:700px;margin:auto}.b-contacts-content.modal .modal-body{overflow:auto;height:100%;background-color:#f5f5f5;padding:0}.b-contacts-content.modal .b-header-toolbar{height:40px;color:#fff;background-color:#333;background-color:rgba(0,0,0,.8)!important}.b-contacts-content.modal .b-header-toolbar .close{color:#fff;opacity:1;filter:alpha(opacity=100)}.b-contacts-content.modal .b-header-toolbar .btn{margin-top:4px}.b-contacts-content.modal .b-list-toolbar{padding:0;height:45px;text-align:right;width:220px;-webkit-box-shadow:inset 0 -1px 0 #ccc;-moz-box-shadow:inset 0 -1px 0 #ccc;box-shadow:inset 0 -1px 0 #ccc}.b-contacts-content.modal .b-list-toolbar .e-search{margin-top:7px;width:200px}.b-contacts-content.modal .b-list-footer-toolbar{position:absolute;left:0;bottom:0;height:105px;width:220px;background-color:#eee;-webkit-box-shadow:inset 0 1px 0 #ccc;-moz-box-shadow:inset 0 1px 0 #ccc;box-shadow:inset 0 1px 0 #ccc}.b-contacts-content.modal .b-list-footer-toolbar .footer-pager{padding:8px 10px 0 0}.b-contacts-content.modal .b-list-content{position:absolute;top:45px;bottom:105px;left:0;width:220px;overflow:hidden;overflow-y:auto}.b-contacts-content.modal .b-list-content .content{-webkit-overflow-scrolling:touch}.b-contacts-content.modal .b-list-content .listClear{color:#333;text-align:center;padding:10px;font-size:14px;line-height:13px;background-color:#fff;-webkit-box-shadow:inset 0 -1px 0 #ccc;-moz-box-shadow:inset 0 -1px 0 #ccc;box-shadow:inset 0 -1px 0 #ccc}.b-contacts-content.modal .b-list-content .listEmptyList,.b-contacts-content.modal .b-list-content .listEmptyListLoading,.b-contacts-content.modal .b-list-content .listEmptySearchList{color:#999;text-align:center;padding:60px 10px;font-size:24px;line-height:30px}.b-contacts-content.modal .b-list-content.hideContactListCheckbox .checkboxCkeckAll,.b-contacts-content.modal .b-list-content.hideContactListCheckbox .checkedParent{display:none!important}.b-contacts-content.modal .b-list-content.hideContactListCheckbox .sidebarParent{margin-right:10px!important}.b-contacts-content.modal .b-list-content .e-contact-foreach{border-bottom:1px solid #ddd}.b-contacts-content.modal .b-list-content .e-contact-item{position:relative;height:45px;max-height:45px;line-height:45px;overflow:hidden;cursor:pointer;margin:0;border:0 solid transparent;z-index:100}.b-contacts-content.modal .b-list-content .e-contact-item .delimiter{position:relative;display:block;height:1px;background-color:#999;opacity:.2;filter:alpha(opacity=20)}.b-contacts-content.modal .b-list-content .e-contact-item .wrapper{padding:0}.b-contacts-content.modal .b-list-content .e-contact-item .sidebarParent{display:inline-block;width:6px;background-color:#eee;float:left;height:100%}.b-contacts-content.modal .b-list-content .e-contact-item.focused .sidebarParent{background-color:#bbb}.b-contacts-content.modal .b-list-content .e-contact-item.deleted{max-height:0;border-color:transparent!important}.b-contacts-content.modal .b-list-content .e-contact-item .checkedParent{display:inline-block;float:left;padding:0 8px 0 6px}.b-contacts-content.modal .b-list-content .e-contact-item .shareParent{display:none;float:right;position:relative;margin:2px 8px 0 5px}.b-contacts-content.modal .b-list-content .e-contact-item .nameParent{display:block;overflow:hidden;text-overflow:ellipsis;color:#333;font-size:16px}.b-contacts-content.modal .b-list-content .e-contact-item .emailParent,.b-contacts-content.modal .b-list-content .e-contact-item .nameParent{white-space:nowrap}.b-contacts-content.modal .b-list-content .e-contact-item .displayEmail,.b-contacts-content.modal .b-list-content .e-contact-item .displayName{overflow:hidden;text-overflow:ellipsis}.b-contacts-content.modal .b-list-content .e-contact-item .displayImg{display:inline-block;float:right;position:relative;margin:0 5px}.b-contacts-content.modal .b-list-content .e-contact-item.shared .shareParent{display:inline-block}.b-contacts-content.modal .b-list-content .e-contact-item.checked{z-index:101}.b-contacts-content.modal .b-list-content .e-contact-item.checked .sidebarParent{background-color:#69A8F5}.b-contacts-content.modal .b-list-content .e-contact-item.checked.focused .sidebarParent{background-color:#519af3!important}.b-contacts-content.modal .b-list-content .e-contact-item.selected{background-color:#fff;z-index:102}.b-contacts-content.modal .b-list-content .e-contact-item.selected .sidebarParent{background-color:#398CF2}.b-contacts-content.modal .b-list-content .e-contact-item.selected.focused .sidebarParent{background-color:#217ef0!important}.b-contacts-content.modal .b-view-content-toolbar{background-color:#f5f5f5;padding:7px;position:absolute;top:0;right:0;left:220px;height:31px;text-align:center;-webkit-box-shadow:inset 0 -1px 0 #ccc;-moz-box-shadow:inset 0 -1px 0 #ccc;box-shadow:inset 0 -1px 0 #ccc}.b-contacts-content.modal .b-view-content-toolbar .button-save-contact.no-disabled.dirty{color:#51a351;font-weight:700}.b-contacts-content.modal .b-view-content-toolbar.read-only .button-save-contact{display:none}.b-contacts-content.modal .b-view-content{position:absolute;top:45px;bottom:60px;left:220px;right:0;overflow:hidden;overflow-y:auto;background-color:#fff;border-left:1px solid #ddd}.b-contacts-content.modal .b-view-content .content{-webkit-overflow-scrolling:touch}.b-contacts-content.modal .b-view-content .tags-property-container{font-size:18px;width:400px}.b-contacts-content.modal .b-view-content .tags-property-container .inputosaurus-container{border-width:1px;border-color:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.b-contacts-content.modal .b-view-content .tags-property-container .inputosaurus-container:hover{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);border-color:#ccc}.b-contacts-content.modal .b-view-content .tags-property-container .inputosaurus-container.inputosaurus-focused{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);border-color:#999}.b-contacts-content.modal .b-view-content .contactValueLargeStatic,.b-contacts-content.modal .b-view-content .contactValueStatic,.b-contacts-content.modal .b-view-content .contactValueTextAreaStatic{height:20px;line-height:20px;padding:5px 7px;color:#555}.b-contacts-content.modal .b-view-content.read-only .contactValueLargeStatic,.b-contacts-content.modal .b-view-content.read-only .contactValueStatic,.b-contacts-content.modal .b-view-content.read-only .contactValueTextAreaStatic{display:inline-block}.b-contacts-content.modal .b-view-content.read-only .contactValueInput,.b-contacts-content.modal .b-view-content.read-only .contactValueInputLarge,.b-contacts-content.modal .b-view-content.read-only .contactValueTextArea{display:none}.b-contacts-content.modal .b-view-content .b-contact-view-desc{text-align:center;font-size:24px;line-height:30px;padding-top:120px;color:#999}.b-contacts-content.modal .b-view-content .top-part{padding-top:20px}.b-contacts-content.modal .b-view-content .property-line{margin-bottom:5px}.b-contacts-content.modal .b-view-content .top-row{padding:10px 0;height:30px}.b-contacts-content.modal .b-view-content .add-link{margin-left:2px;padding:5px;font-size:12px;color:#aaa}.b-contacts-content.modal .b-view-content .contactValueLargeStatic,.b-contacts-content.modal .b-view-content .contactValueStatic,.b-contacts-content.modal .b-view-content .contactValueTextAreaStatic{font-size:18px;display:none}.b-contacts-content.modal .b-view-content .contactValueInput,.b-contacts-content.modal .b-view-content .contactValueInputLarge,.b-contacts-content.modal .b-view-content .contactValueTextArea{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;border-color:#fff;font-size:18px;width:300px}.b-contacts-content.modal .b-view-content .contactValueInput:hover,.b-contacts-content.modal .b-view-content .contactValueInputLarge:hover,.b-contacts-content.modal .b-view-content .contactValueTextArea:hover{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);border-color:#ccc}.b-contacts-content.modal .b-view-content .contactValueInput:focus,.b-contacts-content.modal .b-view-content .contactValueInputLarge:focus,.b-contacts-content.modal .b-view-content .contactValueTextArea:focus{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);border-color:#999}.b-contacts-content.modal .b-view-content .contactValueInput::-webkit-input-placeholder,.b-contacts-content.modal .b-view-content .contactValueInputLarge::-webkit-input-placeholder,.b-contacts-content.modal .b-view-content .contactValueTextArea::-webkit-input-placeholder{color:#ddd}.b-contacts-content.modal .b-view-content .contactValueInput::-moz-placeholder,.b-contacts-content.modal .b-view-content .contactValueInputLarge::-moz-placeholder,.b-contacts-content.modal .b-view-content .contactValueTextArea::-moz-placeholder{color:#ddd}.b-contacts-content.modal .b-view-content .contactValueInput:-moz-placeholder,.b-contacts-content.modal .b-view-content .contactValueInputLarge:-moz-placeholder,.b-contacts-content.modal .b-view-content .contactValueTextArea:-moz-placeholder{color:#ddd}.b-contacts-content.modal .b-view-content .contactValueInput:-ms-input-placeholder,.b-contacts-content.modal .b-view-content .contactValueInputLarge:-ms-input-placeholder,.b-contacts-content.modal .b-view-content .contactValueTextArea:-ms-input-placeholder{color:#ddd}.b-contacts-content.modal .b-view-content .contactValueTextArea{width:300px}.b-contacts-content.modal .b-view-content .contactValueInputLarge{width:400px}.b-contacts-content.modal .b-view-content .hasError .contactValueInput{color:#ee5f5b;border-color:#ee5f5b}.b-contacts-content.modal .b-view-content .e-save-trigger{position:absolute;top:25px;left:10px}.b-contacts-content.modal .b-view-content .e-read-only-sign{display:none;position:absolute;top:20px;right:40px}.b-contacts-content.modal .b-view-content .e-share-sign{position:absolute;top:20px;right:20px;cursor:pointer}.b-contacts-content.modal .b-view-content.read-only .e-read-only-sign{display:inline-block}.b-contacts-content.modal .b-view-content.read-only .e-share-sign{display:none}.b-contacts-content .e-contact-item{position:relative;height:55px;max-height:60px;line-height:22px;overflow:hidden;cursor:pointer;margin:0;border:0 solid transparent;z-index:100}.b-compose.modal{width:850px;margin:10px auto}.b-compose.modal .modal-body{overflow:auto;padding:0}.b-compose .textAreaParent{overflow:hidden}.b-compose .b-header-toolbar{height:40px;color:#fff;background-color:#333;background-color:rgba(0,0,0,.8)!important}.b-compose .b-header-toolbar .close{color:#fff;opacity:1;filter:alpha(opacity=100)}.b-compose .b-header-toolbar .btn.disabled.button-delete{visibility:hidden}.b-compose .b-header-toolbar .button-delete,.b-compose .b-header-toolbar .button-save,.b-compose .b-header-toolbar .saved-text{margin-left:8px}.b-compose .b-header-toolbar .disabled.button-delete{margin-left:0}.b-compose .b-header{padding:10px;background-color:#eee;color:#333}.b-compose .b-header .e-identity{color:#333;text-decoration:none;font-weight:700}.b-compose .b-header .e-identity:hover{color:#333;text-decoration:none}.b-compose .b-header .e-identity.multiply{cursor:pointer;border-bottom:1px dashed #555}.b-compose .b-header .e-row{line-height:30px}.b-compose .b-header .e-label{text-align:right;width:1%;min-width:70px;padding:6px 10px}.b-compose .b-header .e-value{padding:2px 0}.b-compose .b-header .e-value input[type=text],.b-compose .b-header .e-value textarea{width:98%}.b-compose .b-header .e-value textarea{height:40px}.b-compose .b-header .error-desc{color:red}.b-compose .b-header .b-appachments .b-attacment,.b-compose .b-header .b-appachments .b-attacment-in-process{line-height:20px;padding-bottom:10px}.b-compose .b-header .b-appachments .b-attacment-in-process .uploading{display:none;padding-right:5px}.b-compose .b-header .b-appachments .b-attacment-in-process.uploading .uploading{display:inline}.b-compose .b-header .b-appachments .b-attacment-in-process .upload-progress{font-weight:700}.b-compose .b-header .b-appachments .b-attacment-in-process.error .namedStr{color:#888}.b-compose .b-header .b-appachments .b-attacment-in-process .error{color:red}.b-compose .b-header .b-appachments .b-attacment-in-process .close{float:left;padding-right:13px}.b-compose .b-attachment-button{display:inline-block}.b-compose .b-attachment-place{position:absolute;height:120px;border:2px dashed #777;line-height:119px;text-align:center;background-color:#fff;z-index:300;left:20px;right:20px;font-size:24px}.b-compose .b-attachment-place.drag-and-drop-over{background:#777;color:#fff}.b-admin-left .b-toolbar{position:absolute;top:0;right:0;left:0;height:34px;padding:8px 0 0 8px}.b-admin-left .b-content{position:absolute;top:68px;bottom:8px;left:0;right:0;overflow:hidden}.b-admin-left .b-content .content{-webkit-overflow-scrolling:touch}.b-admin-menu .e-item{overflow:hidden;text-decoration:none;outline:0}.b-admin-menu .e-link{position:relative;display:block;height:30px;line-height:29px;font-size:18px;z-index:1;cursor:default;background-color:transparent;color:#888;padding:4px 10px;outline:0;text-decoration:none}.b-admin-menu .e-item.selectable .e-link{cursor:pointer}.b-admin-menu .e-item.selectable.selected .e-link,.b-admin-menu .e-item.selectable:hover .e-link{background-color:#555;color:#fff}.b-admin-right .b-toolbar{position:absolute;top:0;right:0;left:0;height:34px;padding:8px;color:#fff}.b-admin-right .b-content{position:absolute;top:58px;bottom:8px;left:0;right:8px;overflow-y:auto;z-index:2;background-color:#fff;border:1px solid #aaa;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);-moz-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.b-admin-right .b-content .content{-webkit-overflow-scrolling:touch}.b-admin-right .b-settings-content{padding:20px 20px 20px 30px}.b-admin-general .flag-selector{padding-top:5px}.b-admin-general .flag-name{border-bottom:1px dashed #555}.b-admin-domains .process-place{width:600px;padding:14px 0;text-align:center;visibility:hidden}.b-admin-domains-list-table{width:600px}.b-admin-domains-list-table .e-item .e-action{cursor:pointer}.b-admin-domains-list-table .e-item .domain-name{display:inline-block;word-break:break-all;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.b-admin-domains-list-table .e-item.disabled .domain-name{color:#bbb}.b-admin-domains-list-table .e-item .button-delete{margin-right:15px;visibility:hidden;opacity:0;filter:alpha(opacity=0)}.b-admin-domains-list-table .e-item .delete-access.button-delete{visibility:visible;margin-right:0;opacity:1;filter:alpha(opacity=100)}.b-admin-domains-list-table .e-item .delete-domain,.b-admin-domains-list-table .e-item .disabled-domain{cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.b-admin-domains-list-table .e-item.disabled .disabled-domain{opacity:.5;filter:alpha(opacity=50)}.b-admin-domains-list-table .e-item .delete-domain:hover,.b-admin-domains-list-table .e-item .disabled-domain:hover{opacity:1;filter:alpha(opacity=100)}.b-domain-content.modal{width:810px}.b-domain-content .modal-header{background-color:#fff}.b-domain-content .modal-body{position:relative;overflow:hidden;width:1600px;height:370px;left:0}.b-domain-content.domain-edit .modal-body{height:320px}.b-domain-content.domain-white-list-page .modal-body{left:-800px}.b-domain-content .error-desc{color:red;margin-left:10px}.b-domain-content .testing-done .imap-header,.b-domain-content .testing-done .smtp-header{color:green;font-weight:700}.b-domain-content .testing-error .imap-header,.b-domain-content .testing-error .smtp-header{color:red}.b-admin-packages .alert{width:650px}.b-admin-packages .process-place{visibility:hidden}.b-admin-packages-list-table{width:700px}.b-admin-packages-list-table .e-item .package-img{font-size:12px;margin-right:2px}.b-admin-packages-list-table .e-item .package-name.core{font-weight:700}.b-admin-packages-list-table .e-item .package-desc{color:#999;font-size:12px}.b-admin-packages-list-table .e-item .e-action{cursor:pointer}.b-admin-packages-list-table .e-item .package-actions-parent,.b-admin-packages-list-table .e-item .package-release-parent{text-align:center}.b-admin-packages-list-table .e-item .package-actions-parent{vertical-align:middle}.b-admin-plugins .process-place{visibility:hidden}.b-admin-plugins-list-table.disabled{opacity:.5;filter:alpha(opacity=50);background-color:#eee}.b-admin-plugins-list-table .e-item .e-action{cursor:pointer}.b-admin-plugins-list-table .e-item .plugin-img{font-size:12px;margin-right:2px}.b-admin-plugins-list-table .e-item.disabled .plugin-img,.b-admin-plugins-list-table .e-item.disabled .plugin-name{color:#bbb}.b-admin-plugins-list-table .e-item.disabled .disabled-plugin{opacity:.5;filter:alpha(opacity=50)}.b-admin-plugin-property .help-block{margin-bottom:5px}.b-plugin-content.modal{width:660px}.b-plugin-content.modal .modal-body{overflow:auto}.b-plugin-content .modal-header{background-color:#fff}.b-plugin-content .information{display:inline-block;background-color:#ddd;border-radius:10px;cursor:pointer;height:25px;width:30px;text-align:center;padding-top:5px}.b-plugin-content textarea{width:400px;height:70px}.b-admin-about .rl-logo{display:inline-block;width:250px;height:250px;margin-top:-10px;margin-bottom:-10px;background-image:url(images/rainloop-logo.png)}.b-admin-about .rl-desc{margin-top:20px;margin-left:-20px}.popups .b-activate-content{width:700px}.popups .b-activate-content .modal-header{background-color:#fff}.popups .b-activate-content .help-inline{padding-left:0}.b-settins-left .b-toolbar{position:absolute;top:0;right:0;left:0;height:34px;padding:8px 0 0 8px}.b-settins-left .b-content{position:absolute;top:68px;bottom:8px;left:0;right:0;overflow:hidden}.b-settins-left .b-content .content{-webkit-overflow-scrolling:touch}.b-settings-menu .e-item{overflow:hidden;text-decoration:none;outline:0}.b-settings-menu .e-link{position:relative;display:block;height:30px;line-height:29px;font-size:18px;z-index:1;cursor:default;background-color:transparent;color:#888;padding:4px 10px;outline:0;text-decoration:none}.b-settings-menu .e-item.selectable .e-link{cursor:pointer}.b-settings-menu .e-item.selectable.selected .e-link,.b-settings-menu .e-item.selectable:hover .e-link{background-color:#555;color:#fff}.b-settins-right .b-toolbar{position:absolute;top:0;right:0;left:0;height:34px;padding:8px 5px;color:#fff}.b-settins-right .b-content{position:absolute;top:50px;bottom:8px;left:0;right:8px;overflow-y:auto;z-index:2;background-color:#fff;border:1px solid #aaa;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);-moz-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.b-settins-right .b-content .content{-webkit-overflow-scrolling:touch}.b-settins-right .b-settings-content{padding:20px 20px 20px 30px}.b-settings-general .notification-desc-denied{color:#999;display:none}.b-settings-general .denied-by-browser .notification-desc-denied{display:inline}.b-settings-general .denied-by-browser .notification-desc{color:#999}.b-settings-general .flag-selector{padding-top:5px}.b-settings-general .flag-name{border-bottom:1px dashed #555}.b-settings-accounts .process-place{text-align:center;width:600px;padding:14px 0}.b-settings-accounts .list-table{width:600px}.b-settings-accounts .list-table td{padding:4px 8px;line-height:30px}.b-settings-accounts .list-table .account-img{font-size:12px;margin-right:5px}.b-settings-accounts .list-table .account-name{display:inline-block;word-break:break-all;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;line-height:22px;cursor:default}.b-settings-accounts .account-item .button-delete{margin-right:15px;margin-top:5px;visibility:hidden;opacity:0;filter:alpha(opacity=0)}.b-settings-accounts .account-item .delete-access.button-delete{visibility:visible;margin-right:0;opacity:1;filter:alpha(opacity=100)}.b-settings-accounts .account-item .delete-account{cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.b-settings-identity .e-signature-place{display:inline-block;width:680px;height:250px}.b-settings-identities .process-place{text-align:center;width:600px;padding:14px 0}.b-settings-identities .e-signature-place{display:inline-block;width:680px;height:250px}.b-settings-identities .list-table{width:600px}.b-settings-identities .list-table td{padding:4px 8px;line-height:30px}.b-settings-identities .list-table .identity-img{font-size:12px;margin-right:5px}.b-settings-identities .list-table .identity-name{display:inline-block;word-break:break-all;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;line-height:22px;cursor:pointer}.b-settings-identities .identity-item .e-action{cursor:pointer}.b-settings-identities .identity-item .button-delete{margin-right:15px;margin-top:5px;visibility:hidden;opacity:0;filter:alpha(opacity=0)}.b-settings-identities .identity-item .delete-access.button-delete{visibility:visible;margin-right:0;opacity:1;filter:alpha(opacity=100)}.b-settings-identities .identity-item .delete-identity{cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.b-settings-open-pgp .process-place{text-align:center;width:600px;padding:14px 0}.b-settings-open-pgp .list-table{width:750px}.b-settings-open-pgp .list-table td{padding:4px 8px;line-height:30px}.b-settings-open-pgp .list-table .open-pgp-key-img{font-size:12px;margin-right:5px}.b-settings-open-pgp .list-table .open-pgp-key-id,.b-settings-open-pgp .list-table .open-pgp-key-user{display:inline-block;word-break:break-all;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;line-height:22px;cursor:default}.b-settings-open-pgp .open-pgp-key-item .button-delete{margin-right:15px;margin-top:5px;visibility:hidden;opacity:0;filter:alpha(opacity=0)}.b-settings-open-pgp .open-pgp-key-item .delete-access.button-delete{visibility:visible;margin-right:0;opacity:1;filter:alpha(opacity=100)}.b-settings-open-pgp .open-pgp-key-item .delete-open-pgp-key,.b-settings-open-pgp .open-pgp-key-item .view-open-pgp-key{cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.b-settings-folders.ignore-folder-subscribe .subscribe-folder,.b-settings-folders.ignore-folder-subscribe .unsubscribe-folder{display:none}.b-settings-folders .process-place{text-align:center;width:600px;padding:14px 0}.b-settings-folders .folders-list-error{width:550px;margin:10px 0}.b-settings-folders .list-table{width:600px}.b-settings-folders .list-table .e-action{cursor:pointer}.b-settings-folders .list-table td{padding:4px 8px;line-height:30px}.b-settings-folders .list-table .folder-padding{display:inline-block;width:0}.b-settings-folders .list-table .folder-name{display:inline-block;word-break:break-all;white-space:pre-wrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-left:7px;line-height:22px;cursor:default}.b-settings-folders .list-table .folder-system-name{display:inline-block;line-height:22px;color:#999;cursor:default}.b-settings-folders .list-table .folder-name.can-be-edited:hover{border-bottom:1px dashed #333;cursor:pointer}.b-settings-folders .list-table .folder-name-input{border-width:1px;margin-bottom:0;margin-left:-4px}.b-settings-folders .folder-item.system .folder-name{font-weight:700}.b-settings-folders .folder-item .button-delete{margin-right:15px;margin-top:5px;visibility:hidden;opacity:0;filter:alpha(opacity=0)}.b-settings-folders .folder-item .delete-access.button-delete{visibility:visible;margin-right:0;opacity:1;filter:alpha(opacity=100)}.b-settings-folders .folder-item .delete-folder,.b-settings-folders .folder-item .subscribe-folder,.b-settings-folders .folder-item .unsubscribe-folder{cursor:pointer;opacity:.6;filter:alpha(opacity=60)}.b-settings-folders .folder-item .unsubscribe-folder{opacity:.25;filter:alpha(opacity=25)}.b-settings-folders .folder-padding.deep-1{width:25px}.b-settings-folders .folder-padding.deep-2{width:40px}.b-settings-folders .folder-padding.deep-3{width:55px}.b-settings-folders .folder-padding.deep-4{width:70px}.b-settings-folders .folder-padding.deep-5{width:85px}.b-themes-list .e-item{display:inline-block;border:2px solid transparent;cursor:pointer;color:#000;background-color:#fff;padding:16px;margin:5px}.b-themes-list .e-item:hover{border:2px solid grey}.b-themes-list .e-item.selected{background-color:#eee;border:2px solid #000}.b-themes-list .e-item .e-image{width:100px;height:100px;border:1px solid #ddd}@keyframes highlight-folder-row{0%{transform:scale(1)}50%{transform:scale(1.1)}100%{transform:scale(1)}}@-moz-keyframes highlight-folder-row{0%{-moz-transform:scale(1)}50%{-moz-transform:scale(1.1)}100%{-moz-transform:scale(1)}}@-webkit-keyframes highlight-folder-row{0%{-webkit-transform:scale(1)}50%{-webkit-transform:scale(1.1)}100%{-webkit-transform:scale(1)}}@-webkit-keyframes textLoadingAnimationKeyFrame{0%{opacity:1}33%{opacity:0}100%{opacity:1}}@-moz-keyframes textLoadingAnimationKeyFrame{0%{opacity:1}33%{opacity:0}100%{opacity:1}}@keyframes textLoadingAnimationKeyFrame{0%{opacity:1}33%{opacity:0}100%{opacity:1}}@-webkit-keyframes animate-stripes{0%{background-position:0 0}100%{background-position:60px 0}}@-moz-keyframes animate-stripes{0%{background-position:0 0}100%{background-position:60px 0}}@keyframes animate-stripes{0%{background-position:0 0}100%{background-position:60px 0}}html.rl-started-trigger.no-mobile .b-login-content .loginFormWrapper{-webkit-transform:translateY(-30px);-moz-transform:translateY(-30px);transform:translateY(-30px)}html.rl-started-trigger.no-mobile #rl-content{opacity:.7;filter:alpha(opacity=70)}#rl-loading{-webkit-transition:opacity .5s linear;-moz-transition:opacity .5s linear;-o-transition:opacity .5s linear;transition:opacity .5s linear}.rl-anim.csstransitions.no-mobile #rl-left{-webkit-transition:width .3s ease-out;-moz-transition:width .3s ease-out;-o-transition:width .3s ease-out;transition:width .3s ease-out}.rl-anim.csstransitions.no-mobile #rl-right{-webkit-transition:left .3s ease-out;-moz-transition:left .3s ease-out;-o-transition:left .3s ease-out;transition:left .3s ease-out}.rl-anim.csstransitions.no-mobile #rl-sub-left,.rl-anim.csstransitions.no-mobile #rl-sub-left .messageList .inputSearch{-webkit-transition:width .3s ease-out;-moz-transition:width .3s ease-out;-o-transition:width .3s ease-out;transition:width .3s ease-out}.rl-anim.csstransitions.no-mobile #rl-sub-right{-webkit-transition:left .3s ease-out;-moz-transition:left .3s ease-out;-o-transition:left .3s ease-out;transition:left .3s ease-out}.rl-anim.csstransitions.no-mobile #rl-content{-webkit-transition:opacity .3s ease-out;-moz-transition:opacity .3s ease-out;-o-transition:opacity .3s ease-out;transition:opacity .3s ease-out}.rl-anim.csstransitions.no-mobile .b-login-content .loginFormWrapper{-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}.rl-anim.rgba.cssanimations.backgroundsize .e-strip-animation{-webkit-background-size:60px 60px;-moz-background-size:60px 60px;background-size:60px 60px;background-image:-webkit-linear-gradient(135deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.1) 50%,rgba(0,0,0,.1) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(135deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.1) 50%,rgba(0,0,0,.1) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(135deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.1) 50%,rgba(0,0,0,.1) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(135deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.1) 50%,rgba(0,0,0,.1) 75%,transparent 75%,transparent);background-image:linear-gradient(135deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.1) 50%,rgba(0,0,0,.1) 75%,transparent 75%,transparent);-webkit-animation:animate-stripes 2s linear infinite;-moz-animation:animate-stripes 2s linear infinite;animation:animate-stripes 2s linear infinite}.rl-anim.csstransitions .button-delete-transitions{-webkit-transition:all .2s linear;-moz-transition:all .2s linear;-o-transition:all .2s linear;transition:all .2s linear}.rl-anim.cssanimations .b-folders .e-item .anim-action-class{-webkit-animation:highlight-folder-row .5s linear;-moz-animation:highlight-folder-row .5s linear;animation:highlight-folder-row .5s linear}.rl-anim.csstransitions .b-folders .btn.buttonContacts{-webkit-transition:margin .3s linear;-moz-transition:margin .3s linear;-o-transition:margin .3s linear;transition:margin .3s linear}.rl-anim.csstransitions .b-folders .b-content.opacity-on-panel-disabled{-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;-o-transition:opacity .3s linear;transition:opacity .3s linear}.rl-anim.csstransitions .messageList .messageListItem{-webkit-transition:max-height 400ms ease;-moz-transition:max-height 400ms ease;-o-transition:max-height 400ms ease;transition:max-height 400ms ease}.rl-anim.csstransitions .messageList .listDragOver{-webkit-transition:all 400ms ease;-moz-transition:all 400ms ease;-o-transition:all 400ms ease;transition:all 400ms ease}.rl-anim.csstransitions .b-list-content .e-contact-item{-webkit-transition:max-height 400ms ease;-moz-transition:max-height 400ms ease;-o-transition:max-height 400ms ease;transition:max-height 400ms ease}.rl-anim.csstransitions .modal.b-domain-content .modal-body{-webkit-transition:left 500ms ease;-moz-transition:left 500ms ease;-o-transition:left 500ms ease;transition:left 500ms ease}.rl-anim.csstransitions .modal.fade{-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out;-webkit-transform:translateY(-20px);-moz-transform:translateY(-20px);transform:translateY(-20px)}.rl-anim.csstransitions .modal.fade.in{-webkit-transform:none;-moz-transform:none;transform:none}.rl-anim.cssanimations .b-compose.loading .b-header-toolbar{-webkit-background-size:60px 60px;-moz-background-size:60px 60px;background-size:60px 60px;background-image:-webkit-linear-gradient(135deg,rgba(255,255,255,.2) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.2) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(135deg,rgba(255,255,255,.2) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.2) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(135deg,rgba(255,255,255,.2) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.2) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(135deg,rgba(255,255,255,.2) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.2) 75%,transparent 75%,transparent);background-image:linear-gradient(135deg,rgba(255,255,255,.2) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.2) 75%,transparent 75%,transparent);-webkit-animation:animate-stripes 2s linear infinite;-moz-animation:animate-stripes 2s linear infinite;animation:animate-stripes 2s linear infinite}.textLoadingAnimationD1,.textLoadingAnimationD2,.textLoadingAnimationD3{-webkit-animation:textLoadingAnimationKeyFrame 1s linear infinite 0s;-moz-animation:textLoadingAnimationKeyFrame 1s linear infinite 0s;animation:textLoadingAnimationKeyFrame 1s linear infinite 0s}.textLoadingAnimationD2{-webkit-animation-delay:.3s;-moz-animation-delay:.3s;animation-delay:.3s}.textLoadingAnimationD3{-webkit-animation-delay:.6s;-moz-animation-delay:.6s;animation-delay:.6s}.rl-view-model.RL-About,.rl-view-model.RL-AdminLogin,.rl-view-model.RL-Login,.rl-view-model.RL-LoginNew{position:relative;height:100%;z-index:5}
\ No newline at end of file
diff --git a/rainloop/v/0.0.0/static/js/admin.js b/rainloop/v/0.0.0/static/js/admin.js
index 845491358..772877772 100644
--- a/rainloop/v/0.0.0/static/js/admin.js
+++ b/rainloop/v/0.0.0/static/js/admin.js
@@ -3,9 +3,9 @@
(function (require) {
'use strict';
- require('./Boot.js')(require('./Apps/AdminApp.js'));
+ require('App:Boot')(require('App:Admin'));
}(require));
-},{"./Apps/AdminApp.js":3,"./Boot.js":4}],2:[function(require,module,exports){
+},{"App:Admin":3,"App:Boot":4}],2:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -17,7 +17,7 @@
_ = require('_'),
window = require('window'),
$html = require('$html'),
- $window = require('$window'),
+ $win = require('$win'),
$doc = require('$doc'),
Globals = require('Globals'),
@@ -25,9 +25,9 @@
LinkBuilder = require('LinkBuilder'),
Events = require('Events'),
- AppSettings = require('../Storages/AppSettings.js'),
+ Settings = require('Storage:Settings'),
- KnoinAbstractBoot = require('KnoinAbstractBoot')
+ KnoinAbstractBoot = require('Knoin:AbstractBoot')
;
/**
@@ -43,7 +43,7 @@
this.iframe = $('').appendTo('body');
- $window.on('error', function (oEvent) {
+ $win.on('error', function (oEvent) {
if (oEvent && oEvent.originalEvent && oEvent.originalEvent.message &&
-1 === Utils.inArray(oEvent.originalEvent.message, [
'Script error.', 'Uncaught Error: Error calling method on NPObject.'
@@ -137,7 +137,7 @@
AbstractApp.prototype.setTitle = function (sTitle)
{
sTitle = ((Utils.isNormal(sTitle) && 0 < sTitle.length) ? sTitle + ' - ' : '') +
- AppSettings.settingsGet('Title') || '';
+ Settings.settingsGet('Title') || '';
window.document.title = '_';
window.document.title = sTitle;
@@ -150,9 +150,9 @@
AbstractApp.prototype.loginAndLogoutReload = function (bLogout, bClose)
{
var
- kn = require('kn'),
- sCustomLogoutLink = Utils.pString(AppSettings.settingsGet('CustomLogoutLink')),
- bInIframe = !!AppSettings.settingsGet('InIframe')
+ kn = require('App:Knoin'),
+ sCustomLogoutLink = Utils.pString(Settings.settingsGet('CustomLogoutLink')),
+ bInIframe = !!Settings.settingsGet('InIframe')
;
bLogout = Utils.isUnd(bLogout) ? false : !!bLogout;
@@ -204,7 +204,7 @@
{
Events.pub('rl.bootstart');
- var ssm = require('../External/ssm.js');
+ var ssm = require('ssm');
Utils.initOnStartOrLangChange(function () {
Utils.initNotificationLanguage();
@@ -280,7 +280,7 @@
module.exports = AbstractApp;
}(module, require));
-},{"$":21,"$doc":13,"$html":14,"$window":15,"../External/ssm.js":25,"../Storages/AppSettings.js":54,"Events":7,"Globals":8,"KnoinAbstractBoot":29,"LinkBuilder":9,"Utils":11,"_":26,"kn":28,"window":27}],3:[function(require,module,exports){
+},{"$":21,"$doc":13,"$html":14,"$win":15,"App:Knoin":28,"Events":7,"Globals":8,"Knoin:AbstractBoot":29,"LinkBuilder":9,"Storage:Settings":59,"Utils":11,"_":26,"ssm":25,"window":27}],3:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -296,16 +296,16 @@
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- kn = require('kn'),
+ kn = require('App:Knoin'),
- AppSettings = require('../Storages/AppSettings.js'),
- Data = require('../Storages/AdminDataStorage.js'),
- Remote = require('../Storages/AdminAjaxRemoteStorage.js'),
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:Admin:Data'),
+ Remote = require('Storage:Admin:Remote'),
- AdminSettingsScreen = require('../Screens/AdminSettingsScreen.js'),
- AdminLoginScreen = require('../Screens/AdminLoginScreen.js'),
+ AdminSettingsScreen = require('Screen:Admin:Settings'),
+ AdminLoginScreen = require('Screen:Admin:Login'),
- AbstractApp = require('./AbstractApp.js')
+ AbstractApp = require('App:Abstract')
;
/**
@@ -331,40 +331,40 @@
AdminApp.prototype.setupSettings = function ()
{
- kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsGeneral.js'),
+ kn.addSettingsViewModel(require('Settings:Admin:General'),
'AdminSettingsGeneral', 'General', 'general', true);
- kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsLogin.js'),
+ kn.addSettingsViewModel(require('Settings:Admin:Login'),
'AdminSettingsLogin', 'Login', 'login');
- if (AppSettings.capa(Enums.Capa.Prem))
+ if (Settings.capa(Enums.Capa.Prem))
{
- kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsBranding.js'),
+ kn.addSettingsViewModel(require('Settings:Admin:Branding'),
'AdminSettingsBranding', 'Branding', 'branding');
}
- kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsContacts.js'),
+ kn.addSettingsViewModel(require('Settings:Admin:Contacts'),
'AdminSettingsContacts', 'Contacts', 'contacts');
- kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsDomains.js'),
+ kn.addSettingsViewModel(require('Settings:Admin:Domains'),
'AdminSettingsDomains', 'Domains', 'domains');
- kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsSecurity.js'),
+ kn.addSettingsViewModel(require('Settings:Admin:Security'),
'AdminSettingsSecurity', 'Security', 'security');
- kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsSocial.js'),
+ kn.addSettingsViewModel(require('Settings:Admin:Social'),
'AdminSettingsSocial', 'Social', 'social');
- kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsPlugins.js'),
+ kn.addSettingsViewModel(require('Settings:Admin:Plugins'),
'AdminSettingsPlugins', 'Plugins', 'plugins');
- kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsPackages.js'),
+ kn.addSettingsViewModel(require('Settings:Admin:Packages'),
'AdminSettingsPackages', 'Packages', 'packages');
- kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsLicensing.js'),
+ kn.addSettingsViewModel(require('Settings:Admin:Licensing'),
'AdminSettingsLicensing', 'Licensing', 'licensing');
- kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsAbout.js'),
+ kn.addSettingsViewModel(require('Settings:Admin:About'),
'AdminSettingsAbout', 'About', 'about');
return true;
@@ -566,7 +566,7 @@
kn.hideLoading();
- if (!AppSettings.settingsGet('AllowAdminPanel'))
+ if (!Settings.settingsGet('AllowAdminPanel'))
{
kn.routeOff();
kn.setHash(LinkBuilder.root(), true);
@@ -578,7 +578,7 @@
}
else
{
- if (!!AppSettings.settingsGet('Auth'))
+ if (!!Settings.settingsGet('Auth'))
{
kn.startScreens([AdminSettingsScreen]);
}
@@ -597,7 +597,7 @@
module.exports = new AdminApp();
}(module, require));
-},{"../Screens/AdminLoginScreen.js":37,"../Screens/AdminSettingsScreen.js":38,"../Settings/Admin/AdminSettingsAbout.js":39,"../Settings/Admin/AdminSettingsBranding.js":40,"../Settings/Admin/AdminSettingsContacts.js":41,"../Settings/Admin/AdminSettingsDomains.js":42,"../Settings/Admin/AdminSettingsGeneral.js":43,"../Settings/Admin/AdminSettingsLicensing.js":44,"../Settings/Admin/AdminSettingsLogin.js":45,"../Settings/Admin/AdminSettingsPackages.js":46,"../Settings/Admin/AdminSettingsPlugins.js":47,"../Settings/Admin/AdminSettingsSecurity.js":48,"../Settings/Admin/AdminSettingsSocial.js":49,"../Storages/AdminAjaxRemoteStorage.js":52,"../Storages/AdminDataStorage.js":53,"../Storages/AppSettings.js":54,"./AbstractApp.js":2,"Enums":6,"LinkBuilder":9,"Utils":11,"_":26,"kn":28,"ko":23,"window":27}],4:[function(require,module,exports){
+},{"App:Abstract":2,"App:Knoin":28,"Enums":6,"LinkBuilder":9,"Screen:Admin:Login":37,"Screen:Admin:Settings":38,"Settings:Admin:About":39,"Settings:Admin:Branding":40,"Settings:Admin:Contacts":41,"Settings:Admin:Domains":42,"Settings:Admin:General":43,"Settings:Admin:Licensing":44,"Settings:Admin:Login":45,"Settings:Admin:Packages":46,"Settings:Admin:Plugins":47,"Settings:Admin:Security":48,"Settings:Admin:Social":49,"Storage:Admin:Data":52,"Storage:Admin:Remote":53,"Storage:Settings":59,"Utils":11,"_":26,"ko":23,"window":27}],4:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -610,7 +610,7 @@
window = require('window'),
_ = require('_'),
$ = require('$'),
- $window = require('$window'),
+ $win = require('$win'),
$html = require('$html'),
Globals = require('Globals'),
@@ -618,7 +618,7 @@
Utils = require('Utils'),
Enums = require('Enums'),
- EmailModel = require('./Models/EmailModel.js')
+ EmailModel = require('Model:Email')
;
Globals.__APP = App;
@@ -631,8 +631,9 @@
$html.addClass(Globals.bMobileDevice ? 'mobile' : 'no-mobile');
- $window.keydown(Utils.killCtrlAandS).keyup(Utils.killCtrlAandS);
- $window.unload(function () {
+ $win.keydown(Utils.killCtrlAandS).keyup(Utils.killCtrlAandS);
+
+ $win.unload(function () {
Globals.bUnload = true;
});
@@ -665,7 +666,7 @@
App.bootstart();
$html.removeClass('no-js rl-booted-trigger').addClass('rl-booted');
- }, 50);
+ }, 10);
}
else
{
@@ -679,7 +680,7 @@
};
}(module, require));
-},{"$":21,"$html":14,"$window":15,"./Models/EmailModel.js":34,"Enums":6,"Globals":8,"Plugins":10,"Utils":11,"_":26,"window":27}],5:[function(require,module,exports){
+},{"$":21,"$html":14,"$win":15,"Enums":6,"Globals":8,"Model:Email":34,"Plugins":10,"Utils":11,"_":26,"window":27}],5:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module) {
@@ -1611,13 +1612,13 @@
*/
function LinkBuilder()
{
- var AppSettings = require('../Storages/AppSettings.js');
+ var Settings = require('Storage:Settings');
this.sBase = '#/';
this.sServer = './?';
- this.sVersion = AppSettings.settingsGet('Version');
- this.sSpecSuffix = AppSettings.settingsGet('AuthAccountHash') || '0';
- this.sStaticPrefix = AppSettings.settingsGet('StaticPrefix') || 'rainloop/v/' + this.sVersion + '/static/';
+ this.sVersion = Settings.settingsGet('Version');
+ this.sSpecSuffix = Settings.settingsGet('AuthAccountHash') || '0';
+ this.sStaticPrefix = Settings.settingsGet('StaticPrefix') || 'rainloop/v/' + this.sVersion + '/static/';
}
/**
@@ -1764,6 +1765,14 @@
return sResult;
};
+ /**
+ * @return {string}
+ */
+ LinkBuilder.prototype.about = function ()
+ {
+ return this.sBase + 'about';
+ };
+
/**
* @param {string} sScreenName
* @return {string}
@@ -1925,7 +1934,7 @@
module.exports = new LinkBuilder();
}(module, require));
-},{"../Storages/AppSettings.js":54,"Utils":11,"window":27}],10:[function(require,module,exports){
+},{"Storage:Settings":59,"Utils":11,"window":27}],10:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -1940,7 +1949,7 @@
},
_ = require('_'),
Utils = require('Utils'),
- AppSettings = require('../Storages/AppSettings.js')
+ Settings = require('Storage:Settings')
;
/**
@@ -2004,7 +2013,7 @@
*/
Plugins.mainSettingsGet = function (sName)
{
- return AppSettings.settingsGet(sName);
+ return Settings.settingsGet(sName);
};
/**
@@ -2030,7 +2039,7 @@
*/
Plugins.settingsGet = function (sPluginSection, sName)
{
- var oPlugin = AppSettings.settingsGet('Plugins');
+ var oPlugin = Settings.settingsGet('Plugins');
oPlugin = oPlugin && !Utils.isUnd(oPlugin[sPluginSection]) ? oPlugin[sPluginSection] : null;
return oPlugin ? (Utils.isUnd(oPlugin[sName]) ? null : oPlugin[sName]) : null;
};
@@ -2038,7 +2047,7 @@
module.exports = Plugins;
}(module, require));
-},{"../Storages/AppSettings.js":54,"Utils":11,"_":26}],11:[function(require,module,exports){
+},{"Storage:Settings":59,"Utils":11,"_":26}],11:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -2052,7 +2061,7 @@
_ = require('_'),
ko = require('ko'),
window = require('window'),
- $window = require('$window'),
+ $win = require('$win'),
$html = require('$html'),
$div = require('$div'),
$doc = require('$doc'),
@@ -2083,12 +2092,12 @@
Utils.windowResize = _.debounce(function (iTimeout) {
if (Utils.isUnd(iTimeout))
{
- $window.resize();
+ $win.resize();
}
else
{
window.setTimeout(function () {
- $window.resize();
+ $win.resize();
}, iTimeout);
}
}, 50);
@@ -4087,7 +4096,7 @@
module.exports = Utils;
}(module, require));
-},{"$":21,"$div":12,"$doc":13,"$html":14,"$window":15,"Consts":5,"Enums":6,"Globals":8,"NotificationClass":18,"_":26,"ko":23,"window":27}],12:[function(require,module,exports){
+},{"$":21,"$div":12,"$doc":13,"$html":14,"$win":15,"Consts":5,"Enums":6,"Globals":8,"NotificationClass":18,"_":26,"ko":23,"window":27}],12:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
module.exports = require('$')('');
@@ -4143,7 +4152,7 @@ module.exports = key;
window = require('window'),
_ = require('_'),
$ = require('$'),
- $window = require('$window'),
+ $win = require('$win'),
$doc = require('$doc')
;
@@ -4458,7 +4467,7 @@ module.exports = key;
if (0 < iOffset)
{
iOffset += Utils.pInt(aValues[2]);
- iSize = $window.height() - iOffset;
+ iSize = $win.height() - iOffset;
if (iValue < iSize)
{
@@ -4705,7 +4714,7 @@ module.exports = key;
var
Utils = require('Utils'),
- EmailModel = require('../Models/EmailModel.js'),
+ EmailModel = require('Model:Email'),
$oEl = $(oElement),
fValue = fValueAccessor(),
@@ -4779,7 +4788,7 @@ module.exports = key;
var
Utils = require('Utils'),
- ContactTagModel = require('../Models/ContactTagModel.js'),
+ ContactTagModel = require('Model:ContactTag'),
$oEl = $(oElement),
fValue = fValueAccessor(),
@@ -5041,7 +5050,7 @@ module.exports = key;
}(module, ko));
-},{"$":21,"$doc":13,"$window":15,"../Models/ContactTagModel.js":33,"../Models/EmailModel.js":34,"Globals":8,"Utils":11,"_":26,"window":27}],24:[function(require,module,exports){
+},{"$":21,"$doc":13,"$win":15,"Globals":8,"Model:ContactTag":33,"Model:Email":34,"Utils":11,"_":26,"window":27}],24:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
module.exports = moment;
@@ -5076,7 +5085,7 @@ module.exports = window;
Plugins = require('Plugins'),
Utils = require('Utils'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -5084,13 +5093,13 @@ module.exports = window;
*/
function Knoin()
{
- this.sDefaultScreenName = '';
this.oScreens = {};
+ this.sDefaultScreenName = '';
this.oCurrentScreen = null;
}
- Knoin.prototype.sDefaultScreenName = '';
Knoin.prototype.oScreens = {};
+ Knoin.prototype.sDefaultScreenName = '';
Knoin.prototype.oCurrentScreen = null;
Knoin.prototype.hideLoading = function ()
@@ -5269,7 +5278,7 @@ module.exports = window;
Utils.log('Cannot find view model position: ' + sPosition);
}
}
-
+
return ViewModelClass ? ViewModelClass.__vm : null;
};
@@ -5412,7 +5421,7 @@ module.exports = window;
}
// --
- oCross = oScreen.__cross();
+ oCross = oScreen.__cross ? oScreen.__cross() : null;
if (oCross)
{
oCross.parse(sSubPart);
@@ -5508,7 +5517,7 @@ module.exports = window;
module.exports = new Knoin();
}(module, require));
-},{"$":21,"$html":14,"Globals":8,"KnoinAbstractViewModel":31,"Plugins":10,"Utils":11,"_":26,"crossroads":19,"hasher":20,"ko":23}],29:[function(require,module,exports){
+},{"$":21,"$html":14,"Globals":8,"Knoin:AbstractViewModel":31,"Plugins":10,"Utils":11,"_":26,"crossroads":19,"hasher":20,"ko":23}],29:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module) {
@@ -5631,7 +5640,7 @@ module.exports = window;
var
ko = require('ko'),
- $window = require('$window'),
+ $win = require('$win'),
Enums = require('Enums'),
Globals = require('Globals'),
@@ -5713,7 +5722,7 @@ module.exports = window;
{
var self = this;
- $window.on('keydown', function (oEvent) {
+ $win.on('keydown', function (oEvent) {
if (oEvent && self.modalVisibility && self.modalVisibility())
{
if (!this.bDisabeCloseOnEsc && Enums.EventKeyCode.Esc === oEvent.keyCode)
@@ -5734,7 +5743,7 @@ module.exports = window;
module.exports = KnoinAbstractViewModel;
}(module, require));
-},{"$window":15,"Enums":6,"Globals":8,"Utils":11,"ko":23}],32:[function(require,module,exports){
+},{"$win":15,"Enums":6,"Globals":8,"Utils":11,"ko":23}],32:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -6438,15 +6447,15 @@ module.exports = window;
_ = require('_'),
ko = require('ko'),
moment = require('moment'),
- $window = require('$window'),
+ $win = require('$win'),
$div = require('$div'),
Enums = require('Enums'),
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- EmailModel = require('./EmailModel.js'),
- AttachmentModel = require('./AttachmentModel.js')
+ EmailModel = require('Model:Email'),
+ AttachmentModel = require('Model:Attachment')
;
/**
@@ -6775,7 +6784,7 @@ module.exports = window;
MessageModel.prototype.computeSenderEmail = function ()
{
var
- Data = require('../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
sSent = Data.sentFolder(),
sDraft = Data.draftFolder()
;
@@ -6853,7 +6862,7 @@ module.exports = window;
MessageModel.prototype.initUpdateByMessageJson = function (oJsonMessage)
{
var
- Data = require('../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
bResult = false,
iPriority = Enums.MessagePriority.Normal
;
@@ -7404,7 +7413,7 @@ module.exports = window;
'container': $('.RL-MailMessageView .messageView .messageItem .content')[0]
});
- $window.resize();
+ $win.resize();
}
Utils.windowResize(500);
@@ -7509,7 +7518,7 @@ module.exports = window;
this.body.data('rl-plain-raw', this.plainRaw);
- var Data = require('../Storages/WebMailDataStorage.js');
+ var Data = require('Storage:RainLoop:Data');
if (Data.capaOpenPGP())
{
this.body.data('rl-plain-pgp-signed', !!this.isPgpSigned());
@@ -7522,7 +7531,7 @@ module.exports = window;
MessageModel.prototype.storePgpVerifyDataToDom = function ()
{
- var Data = require('../Storages/WebMailDataStorage.js');
+ var Data = require('Storage:RainLoop:Data');
if (this.body && Data.capaOpenPGP())
{
this.body.data('rl-pgp-verify-status', this.pgpSignedVerifyStatus());
@@ -7539,7 +7548,7 @@ module.exports = window;
this.plainRaw = Utils.pString(this.body.data('rl-plain-raw'));
- var Data = require('../Storages/WebMailDataStorage.js');
+ var Data = require('Storage:RainLoop:Data');
if (Data.capaOpenPGP())
{
this.isPgpSigned(!!this.body.data('rl-plain-pgp-signed'));
@@ -7564,7 +7573,7 @@ module.exports = window;
var
aRes = [],
mPgpMessage = null,
- Data = require('../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
sFrom = this.from && this.from[0] && this.from[0].email ? this.from[0].email : '',
aPublicKeys = Data.findPublicKeysByEmail(sFrom),
oValidKey = null,
@@ -7628,7 +7637,7 @@ module.exports = window;
aRes = [],
mPgpMessage = null,
mPgpMessageDecrypted = null,
- Data = require('../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
sFrom = this.from && this.from[0] && this.from[0].email ? this.from[0].email : '',
aPublicKey = Data.findPublicKeysByEmail(sFrom),
oPrivateKey = Data.findSelfPrivateKey(sPassword),
@@ -7713,7 +7722,7 @@ module.exports = window;
module.exports = MessageModel;
}(module, require));
-},{"$":21,"$div":12,"$window":15,"../Storages/WebMailDataStorage.js":59,"./AttachmentModel.js":32,"./EmailModel.js":34,"Enums":6,"LinkBuilder":9,"Utils":11,"_":26,"ko":23,"moment":24,"window":27}],36:[function(require,module,exports){
+},{"$":21,"$div":12,"$win":15,"Enums":6,"LinkBuilder":9,"Model:Attachment":32,"Model:Email":34,"Storage:RainLoop:Data":55,"Utils":11,"_":26,"ko":23,"moment":24,"window":27}],36:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -7729,8 +7738,8 @@ module.exports = window;
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- kn = require('kn'),
- KnoinAbstractScreen = require('KnoinAbstractScreen')
+ kn = require('App:Knoin'),
+ KnoinAbstractScreen = require('Knoin:AbstractScreen')
;
/**
@@ -7914,7 +7923,7 @@ module.exports = window;
module.exports = AbstractSettings;
}(module, require));
-},{"$":21,"Globals":8,"KnoinAbstractScreen":30,"LinkBuilder":9,"Utils":11,"_":26,"kn":28,"ko":23}],37:[function(require,module,exports){
+},{"$":21,"App:Knoin":28,"Globals":8,"Knoin:AbstractScreen":30,"LinkBuilder":9,"Utils":11,"_":26,"ko":23}],37:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -7923,7 +7932,7 @@ module.exports = window;
var
_ = require('_'),
- KnoinAbstractScreen = require('KnoinAbstractScreen')
+ KnoinAbstractScreen = require('Knoin:AbstractScreen')
;
/**
@@ -7932,22 +7941,22 @@ module.exports = window;
*/
function AdminLoginScreen()
{
- var AdminLoginViewModel = require('../ViewModels/AdminLoginViewModel.js');
- KnoinAbstractScreen.call(this, 'login', [AdminLoginViewModel]);
+ KnoinAbstractScreen.call(this, 'login', [
+ require('View:Admin:Login')
+ ]);
}
_.extend(AdminLoginScreen.prototype, KnoinAbstractScreen.prototype);
AdminLoginScreen.prototype.onShow = function ()
{
- var App = require('../Apps/AdminApp.js');
- App.setTitle('');
+ require('App:Admin').setTitle('');
};
module.exports = AdminLoginScreen;
}(module, require));
-},{"../Apps/AdminApp.js":3,"../ViewModels/AdminLoginViewModel.js":60,"KnoinAbstractScreen":30,"_":26}],38:[function(require,module,exports){
+},{"App:Admin":3,"Knoin:AbstractScreen":30,"View:Admin:Login":60,"_":26}],38:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -7956,7 +7965,7 @@ module.exports = window;
var
_ = require('_'),
- AbstractSettings = require('./AbstractSettings.js')
+ AbstractSettings = require('Screen:AbstractSettings')
;
/**
@@ -7965,14 +7974,9 @@ module.exports = window;
*/
function AdminSettingsScreen()
{
- var
- AdminMenuViewModel = require('../ViewModels/AdminMenuViewModel.js'),
- AdminPaneViewModel = require('../ViewModels/AdminPaneViewModel.js')
- ;
-
AbstractSettings.call(this, [
- AdminMenuViewModel,
- AdminPaneViewModel
+ require('View:Admin:SettingsMenu'),
+ require('View:Admin:SettingsPane')
]);
}
@@ -7980,14 +7984,13 @@ module.exports = window;
AdminSettingsScreen.prototype.onShow = function ()
{
- var App = require('../Apps/AdminApp.js');
- App.setTitle('');
+ require('App:Admin').setTitle('');
};
module.exports = AdminSettingsScreen;
}(module, require));
-},{"../Apps/AdminApp.js":3,"../ViewModels/AdminMenuViewModel.js":61,"../ViewModels/AdminPaneViewModel.js":62,"./AbstractSettings.js":36,"_":26}],39:[function(require,module,exports){
+},{"App:Admin":3,"Screen:AbstractSettings":36,"View:Admin:SettingsMenu":61,"View:Admin:SettingsPane":62,"_":26}],39:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -8004,12 +8007,12 @@ module.exports = window;
function AdminSettingsAbout()
{
var
- AppSettings = require('../../Storages/AppSettings.js'),
- Data = require('../../Storages/AdminDataStorage.js')
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:Admin:Data')
;
- this.version = ko.observable(AppSettings.settingsGet('Version'));
- this.access = ko.observable(!!AppSettings.settingsGet('CoreAccess'));
+ this.version = ko.observable(Settings.settingsGet('Version'));
+ this.access = ko.observable(!!Settings.settingsGet('CoreAccess'));
this.errorDesc = ko.observable('');
this.coreReal = Data.coreReal;
@@ -8062,7 +8065,7 @@ module.exports = window;
{
if (this.access())
{
- require('../../Apps/AdminApp.js').reloadCoreData();
+ require('App:Admin').reloadCoreData();
}
};
@@ -8070,14 +8073,14 @@ module.exports = window;
{
if (!this.coreUpdating())
{
- require('../../Apps/AdminApp.js').updateCoreData();
+ require('App:Admin').updateCoreData();
}
};
module.exports = AdminSettingsAbout;
}(module, require));
-},{"../../Apps/AdminApp.js":3,"../../Storages/AdminDataStorage.js":53,"../../Storages/AppSettings.js":54,"ko":23}],40:[function(require,module,exports){
+},{"App:Admin":3,"Storage:Admin:Data":52,"Storage:Settings":59,"ko":23}],40:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -8098,22 +8101,22 @@ module.exports = window;
{
var
Enums = require('Enums'),
- AppSettings = require('../../Storages/AppSettings.js')
+ Settings = require('Storage:Settings')
;
- this.title = ko.observable(AppSettings.settingsGet('Title'));
+ this.title = ko.observable(Settings.settingsGet('Title'));
this.title.trigger = ko.observable(Enums.SaveSettingsStep.Idle);
- this.loadingDesc = ko.observable(AppSettings.settingsGet('LoadingDescription'));
+ this.loadingDesc = ko.observable(Settings.settingsGet('LoadingDescription'));
this.loadingDesc.trigger = ko.observable(Enums.SaveSettingsStep.Idle);
- this.loginLogo = ko.observable(AppSettings.settingsGet('LoginLogo'));
+ this.loginLogo = ko.observable(Settings.settingsGet('LoginLogo'));
this.loginLogo.trigger = ko.observable(Enums.SaveSettingsStep.Idle);
- this.loginDescription = ko.observable(AppSettings.settingsGet('LoginDescription'));
+ this.loginDescription = ko.observable(Settings.settingsGet('LoginDescription'));
this.loginDescription.trigger = ko.observable(Enums.SaveSettingsStep.Idle);
- this.loginCss = ko.observable(AppSettings.settingsGet('LoginCss'));
+ this.loginCss = ko.observable(Settings.settingsGet('LoginCss'));
this.loginCss.trigger = ko.observable(Enums.SaveSettingsStep.Idle);
}
@@ -8121,7 +8124,7 @@ module.exports = window;
{
var
self = this,
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
+ Remote = require('Storage:Admin:Remote')
;
_.delay(function () {
@@ -8170,7 +8173,7 @@ module.exports = window;
module.exports = AdminSettingsBranding;
}(module, require));
-},{"../../Storages/AdminAjaxRemoteStorage.js":52,"../../Storages/AppSettings.js":54,"Enums":6,"Utils":11,"_":26,"ko":23}],41:[function(require,module,exports){
+},{"Enums":6,"Storage:Admin:Remote":53,"Storage:Settings":59,"Utils":11,"_":26,"ko":23}],41:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -8184,7 +8187,7 @@ module.exports = window;
Enums = require('Enums'),
Utils = require('Utils'),
- AppSettings = require('../../Storages/AppSettings.js')
+ Settings = require('Storage:Settings')
;
/**
@@ -8193,13 +8196,13 @@ module.exports = window;
function AdminSettingsContacts()
{
var
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
+ Remote = require('Storage:Admin:Remote')
;
this.defautOptionsAfterRender = Utils.defautOptionsAfterRender;
- this.enableContacts = ko.observable(!!AppSettings.settingsGet('ContactsEnable'));
- this.contactsSharing = ko.observable(!!AppSettings.settingsGet('ContactsSharing'));
- this.contactsSync = ko.observable(!!AppSettings.settingsGet('ContactsSync'));
+ this.enableContacts = ko.observable(!!Settings.settingsGet('ContactsEnable'));
+ this.contactsSharing = ko.observable(!!Settings.settingsGet('ContactsSharing'));
+ this.contactsSync = ko.observable(!!Settings.settingsGet('ContactsSync'));
var
aTypes = ['sqlite', 'mysql', 'pgsql'],
@@ -8222,15 +8225,15 @@ module.exports = window;
}
;
- if (!!AppSettings.settingsGet('SQLiteIsSupported'))
+ if (!!Settings.settingsGet('SQLiteIsSupported'))
{
aSupportedTypes.push('sqlite');
}
- if (!!AppSettings.settingsGet('MySqlIsSupported'))
+ if (!!Settings.settingsGet('MySqlIsSupported'))
{
aSupportedTypes.push('mysql');
}
- if (!!AppSettings.settingsGet('PostgreSqlIsSupported'))
+ if (!!Settings.settingsGet('PostgreSqlIsSupported'))
{
aSupportedTypes.push('pgsql');
}
@@ -8278,9 +8281,9 @@ module.exports = window;
this.testContactsErrorMessage('');
}, this);
- this.pdoDsn = ko.observable(AppSettings.settingsGet('ContactsPdoDsn'));
- this.pdoUser = ko.observable(AppSettings.settingsGet('ContactsPdoUser'));
- this.pdoPassword = ko.observable(AppSettings.settingsGet('ContactsPdoPassword'));
+ this.pdoDsn = ko.observable(Settings.settingsGet('ContactsPdoDsn'));
+ this.pdoUser = ko.observable(Settings.settingsGet('ContactsPdoUser'));
+ this.pdoPassword = ko.observable(Settings.settingsGet('ContactsPdoPassword'));
this.pdoDsnTrigger = ko.observable(Enums.SaveSettingsStep.Idle);
this.pdoUserTrigger = ko.observable(Enums.SaveSettingsStep.Idle);
@@ -8310,7 +8313,7 @@ module.exports = window;
return '' !== this.pdoDsn() && '' !== this.pdoUser();
});
- this.contactsType(AppSettings.settingsGet('ContactsPdoType'));
+ this.contactsType(Settings.settingsGet('ContactsPdoType'));
this.onTestContactsResponse = _.bind(this.onTestContactsResponse, this);
}
@@ -8352,7 +8355,7 @@ module.exports = window;
{
var
self = this,
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
+ Remote = require('Storage:Admin:Remote')
;
_.delay(function () {
@@ -8406,7 +8409,7 @@ module.exports = window;
});
});
- self.contactsType(AppSettings.settingsGet('ContactsPdoType'));
+ self.contactsType(Settings.settingsGet('ContactsPdoType'));
}, 50);
};
@@ -8414,7 +8417,7 @@ module.exports = window;
module.exports = AdminSettingsContacts;
}(module, require));
-},{"../../Storages/AdminAjaxRemoteStorage.js":52,"../../Storages/AppSettings.js":54,"Enums":6,"Utils":11,"_":26,"ko":23}],42:[function(require,module,exports){
+},{"Enums":6,"Storage:Admin:Remote":53,"Storage:Settings":59,"Utils":11,"_":26,"ko":23}],42:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -8428,10 +8431,10 @@ module.exports = window;
Enums = require('Enums'),
- PopupsDomainViewModel = require('../../ViewModels/Popups/PopupsDomainViewModel.js'),
+ PopupsDomainViewModel = require('View:Popup:Domain'),
- Data = require('../../Storages/AdminDataStorage.js'),
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
+ Data = require('Storage:Admin:Data'),
+ Remote = require('Storage:Admin:Remote')
;
/**
@@ -8475,7 +8478,7 @@ module.exports = window;
AdminSettingsDomains.prototype.createDomain = function ()
{
- require('kn').showScreenPopup(PopupsDomainViewModel);
+ require('App:Knoin').showScreenPopup(PopupsDomainViewModel);
};
AdminSettingsDomains.prototype.deleteDomain = function (oDomain)
@@ -8503,26 +8506,26 @@ module.exports = window;
})
;
- require('../../Apps/AdminApp.js').reloadDomainList();
+ require('App:Admin').reloadDomainList();
};
AdminSettingsDomains.prototype.onDomainLoadRequest = function (sResult, oData)
{
if (Enums.StorageResultType.Success === sResult && oData && oData.Result)
{
- require('kn').showScreenPopup(PopupsDomainViewModel, [oData.Result]);
+ require('App:Knoin').showScreenPopup(PopupsDomainViewModel, [oData.Result]);
}
};
AdminSettingsDomains.prototype.onDomainListChangeRequest = function ()
{
- require('../../Apps/AdminApp.js').reloadDomainList();
+ require('App:Admin').reloadDomainList();
};
module.exports = AdminSettingsDomains;
}(module, require));
-},{"../../Apps/AdminApp.js":3,"../../Storages/AdminAjaxRemoteStorage.js":52,"../../Storages/AdminDataStorage.js":53,"../../ViewModels/Popups/PopupsDomainViewModel.js":65,"Enums":6,"_":26,"kn":28,"ko":23,"window":27}],43:[function(require,module,exports){
+},{"App:Admin":3,"App:Knoin":28,"Enums":6,"Storage:Admin:Data":52,"Storage:Admin:Remote":53,"View:Popup:Domain":65,"_":26,"ko":23,"window":27}],43:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -8537,10 +8540,8 @@ module.exports = window;
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- AppSettings = require('../../Storages/AppSettings.js'),
- Data = require('../../Storages/AdminDataStorage.js'),
-
- PopupsLanguagesViewModel = require('../../ViewModels/Popups/PopupsLanguagesViewModel.js')
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:Admin:Data')
;
/**
@@ -8560,8 +8561,8 @@ module.exports = window;
this.capaAdditionalAccounts = Data.capaAdditionalAccounts;
this.capaAdditionalIdentities = Data.capaAdditionalIdentities;
- this.mainAttachmentLimit = ko.observable(Utils.pInt(AppSettings.settingsGet('AttachmentLimit')) / (1024 * 1024)).extend({'posInterer': 25});
- this.uploadData = AppSettings.settingsGet('PhpUploadSizes');
+ this.mainAttachmentLimit = ko.observable(Utils.pInt(Settings.settingsGet('AttachmentLimit')) / (1024 * 1024)).extend({'posInterer': 25});
+ this.uploadData = Settings.settingsGet('PhpUploadSizes');
this.uploadDataDesc = this.uploadData && (this.uploadData['upload_max_filesize'] || this.uploadData['post_max_size']) ?
[
this.uploadData['upload_max_filesize'] ? 'upload_max_filesize = ' + this.uploadData['upload_max_filesize'] + '; ' : '',
@@ -8582,7 +8583,7 @@ module.exports = window;
return Utils.convertLangName(this.mainLanguage());
}, this);
- this.weakPassword = !!AppSettings.settingsGet('WeakPassword');
+ this.weakPassword = !!Settings.settingsGet('WeakPassword');
this.attachmentLimitTrigger = ko.observable(Enums.SaveSettingsStep.Idle);
this.languageTrigger = ko.observable(Enums.SaveSettingsStep.Idle);
@@ -8593,7 +8594,7 @@ module.exports = window;
{
var
self = this,
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
+ Remote = require('Storage:Admin:Remote')
;
_.delay(function () {
@@ -8657,7 +8658,7 @@ module.exports = window;
AdminSettingsGeneral.prototype.selectLanguage = function ()
{
- require('kn').showScreenPopup(PopupsLanguagesViewModel);
+ require('App:Knoin').showScreenPopup(require('View:Popup:Languages'));
};
/**
@@ -8671,7 +8672,7 @@ module.exports = window;
module.exports = AdminSettingsGeneral;
}(module, require));
-},{"../../Storages/AdminAjaxRemoteStorage.js":52,"../../Storages/AdminDataStorage.js":53,"../../Storages/AppSettings.js":54,"../../ViewModels/Popups/PopupsLanguagesViewModel.js":66,"Enums":6,"LinkBuilder":9,"Utils":11,"_":26,"kn":28,"ko":23}],44:[function(require,module,exports){
+},{"App:Knoin":28,"Enums":6,"LinkBuilder":9,"Storage:Admin:Data":52,"Storage:Admin:Remote":53,"Storage:Settings":59,"Utils":11,"View:Popup:Languages":66,"_":26,"ko":23}],44:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -8682,10 +8683,8 @@ module.exports = window;
ko = require('ko'),
moment = require('moment'),
- AppSettings = require('../../Storages/AppSettings.js'),
- Data = require('../../Storages/AdminDataStorage.js'),
-
- PopupsActivateViewModel = require('../../ViewModels/Popups/PopupsActivateViewModel.js')
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:Admin:Data')
;
/**
@@ -8701,12 +8700,12 @@ module.exports = window;
this.licenseTrigger = Data.licenseTrigger;
this.adminDomain = ko.observable('');
- this.subscriptionEnabled = ko.observable(!!AppSettings.settingsGet('SubscriptionEnabled'));
+ this.subscriptionEnabled = ko.observable(!!Settings.settingsGet('SubscriptionEnabled'));
this.licenseTrigger.subscribe(function () {
if (this.subscriptionEnabled())
{
- require('../../Apps/AdminApp.js').reloadLicensing(true);
+ require('App:Admin').reloadLicensing(true);
}
}, this);
}
@@ -8715,18 +8714,18 @@ module.exports = window;
{
if (this.subscriptionEnabled())
{
- require('../../Apps/AdminApp.js').reloadLicensing(false);
+ require('App:Admin').reloadLicensing(false);
}
};
AdminSettingsLicensing.prototype.onShow = function ()
{
- this.adminDomain(AppSettings.settingsGet('AdminDomain'));
+ this.adminDomain(Settings.settingsGet('AdminDomain'));
};
AdminSettingsLicensing.prototype.showActivationForm = function ()
{
- require('kn').showScreenPopup(PopupsActivateViewModel);
+ require('App:Knoin').showScreenPopup(require('View:Popup:Activate'));
};
/**
@@ -8745,7 +8744,7 @@ module.exports = window;
module.exports = AdminSettingsLicensing;
}(module, require));
-},{"../../Apps/AdminApp.js":3,"../../Storages/AdminDataStorage.js":53,"../../Storages/AppSettings.js":54,"../../ViewModels/Popups/PopupsActivateViewModel.js":63,"kn":28,"ko":23,"moment":24}],45:[function(require,module,exports){
+},{"App:Admin":3,"App:Knoin":28,"Storage:Admin:Data":52,"Storage:Settings":59,"View:Popup:Activate":63,"ko":23,"moment":24}],45:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -8759,8 +8758,8 @@ module.exports = window;
Enums = require('Enums'),
Utils = require('Utils'),
- AppSettings = require('../../Storages/AppSettings.js'),
- Data = require('../../Storages/AdminDataStorage.js')
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:Admin:Data')
;
/**
@@ -8771,7 +8770,7 @@ module.exports = window;
this.determineUserLanguage = Data.determineUserLanguage;
this.determineUserDomain = Data.determineUserDomain;
- this.defaultDomain = ko.observable(AppSettings.settingsGet('LoginDefaultDomain'));
+ this.defaultDomain = ko.observable(Settings.settingsGet('LoginDefaultDomain'));
this.allowLanguagesOnLogin = Data.allowLanguagesOnLogin;
this.defaultDomainTrigger = ko.observable(Enums.SaveSettingsStep.Idle);
@@ -8781,7 +8780,7 @@ module.exports = window;
{
var
self = this,
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
+ Remote = require('Storage:Admin:Remote')
;
_.delay(function () {
@@ -8818,7 +8817,7 @@ module.exports = window;
module.exports = AdminSettingsLogin;
}(module, require));
-},{"../../Storages/AdminAjaxRemoteStorage.js":52,"../../Storages/AdminDataStorage.js":53,"../../Storages/AppSettings.js":54,"Enums":6,"Utils":11,"_":26,"ko":23}],46:[function(require,module,exports){
+},{"Enums":6,"Storage:Admin:Data":52,"Storage:Admin:Remote":53,"Storage:Settings":59,"Utils":11,"_":26,"ko":23}],46:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -8832,8 +8831,8 @@ module.exports = window;
Enums = require('Enums'),
Utils = require('Utils'),
- Data = require('../../Storages/AdminDataStorage.js'),
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
+ Data = require('Storage:Admin:Data'),
+ Remote = require('Storage:Admin:Remote')
;
/**
@@ -8872,7 +8871,7 @@ module.exports = window;
AdminSettingsPackages.prototype.onBuild = function ()
{
- require('../../Apps/AdminApp.js').reloadPackagesList();
+ require('App:Admin').reloadPackagesList();
};
AdminSettingsPackages.prototype.requestHelper = function (oPackage, bInstall)
@@ -8907,7 +8906,7 @@ module.exports = window;
}
else
{
- require('../../Apps/AdminApp.js').reloadPackagesList();
+ require('App:Admin').reloadPackagesList();
}
};
};
@@ -8933,7 +8932,7 @@ module.exports = window;
module.exports = AdminSettingsPackages;
}(module, require));
-},{"../../Apps/AdminApp.js":3,"../../Storages/AdminAjaxRemoteStorage.js":52,"../../Storages/AdminDataStorage.js":53,"Enums":6,"Utils":11,"ko":23,"window":27}],47:[function(require,module,exports){
+},{"App:Admin":3,"Enums":6,"Storage:Admin:Data":52,"Storage:Admin:Remote":53,"Utils":11,"ko":23,"window":27}],47:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -8947,11 +8946,9 @@ module.exports = window;
Enums = require('Enums'),
Utils = require('Utils'),
- AppSettings = require('../../Storages/AppSettings.js'),
- Data = require('../../Storages/AdminDataStorage.js'),
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js'),
-
- PopupsPluginViewModel = require('../../ViewModels/Popups/PopupsPluginViewModel.js')
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:Admin:Data'),
+ Remote = require('Storage:Admin:Remote')
;
/**
@@ -8959,7 +8956,7 @@ module.exports = window;
*/
function AdminSettingsPlugins()
{
- this.enabledPlugins = ko.observable(!!AppSettings.settingsGet('EnabledPlugins'));
+ this.enabledPlugins = ko.observable(!!Settings.settingsGet('EnabledPlugins'));
this.pluginsError = ko.observable('');
@@ -9016,14 +9013,14 @@ module.exports = window;
AdminSettingsPlugins.prototype.onShow = function ()
{
this.pluginsError('');
- require('../../Apps/AdminApp.js').reloadPluginList();
+ require('App:Admin').reloadPluginList();
};
AdminSettingsPlugins.prototype.onPluginLoadRequest = function (sResult, oData)
{
if (Enums.StorageResultType.Success === sResult && oData && oData.Result)
{
- require('kn').showScreenPopup(PopupsPluginViewModel, [oData.Result]);
+ require('App:Knoin').showScreenPopup(require('View:Popup:Plugin'), [oData.Result]);
}
};
@@ -9044,13 +9041,13 @@ module.exports = window;
}
}
- require('../../Apps/AdminApp.js').reloadPluginList();
+ require('App:Admin').reloadPluginList();
};
module.exports = AdminSettingsPlugins;
}(module, require));
-},{"../../Apps/AdminApp.js":3,"../../Storages/AdminAjaxRemoteStorage.js":52,"../../Storages/AdminDataStorage.js":53,"../../Storages/AppSettings.js":54,"../../ViewModels/Popups/PopupsPluginViewModel.js":67,"Enums":6,"Utils":11,"_":26,"kn":28,"ko":23}],48:[function(require,module,exports){
+},{"App:Admin":3,"App:Knoin":28,"Enums":6,"Storage:Admin:Data":52,"Storage:Admin:Remote":53,"Storage:Settings":59,"Utils":11,"View:Popup:Plugin":67,"_":26,"ko":23}],48:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -9065,9 +9062,9 @@ module.exports = window;
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- AppSettings = require('../../Storages/AppSettings.js'),
- Data = require('../../Storages/AdminDataStorage.js'),
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:Admin:Data'),
+ Remote = require('Storage:Admin:Remote')
;
/**
@@ -9077,10 +9074,10 @@ module.exports = window;
{
this.useLocalProxyForExternalImages = Data.useLocalProxyForExternalImages;
- this.capaOpenPGP = ko.observable(AppSettings.capa(Enums.Capa.OpenPGP));
- this.capaTwoFactorAuth = ko.observable(AppSettings.capa(Enums.Capa.TwoFactor));
+ this.capaOpenPGP = ko.observable(Settings.capa(Enums.Capa.OpenPGP));
+ this.capaTwoFactorAuth = ko.observable(Settings.capa(Enums.Capa.TwoFactor));
- this.adminLogin = ko.observable(AppSettings.settingsGet('AdminLogin'));
+ this.adminLogin = ko.observable(Settings.settingsGet('AdminLogin'));
this.adminPassword = ko.observable('');
this.adminPasswordNew = ko.observable('');
this.adminPasswordNew2 = ko.observable('');
@@ -9148,7 +9145,7 @@ module.exports = window;
AdminSettingsSecurity.prototype.onBuild = function ()
{
var
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
+ Remote = require('Storage:Admin:Remote')
;
this.capaOpenPGP.subscribe(function (bValue) {
@@ -9189,7 +9186,7 @@ module.exports = window;
}(module, require));
-},{"../../Storages/AdminAjaxRemoteStorage.js":52,"../../Storages/AdminDataStorage.js":53,"../../Storages/AppSettings.js":54,"Enums":6,"LinkBuilder":9,"Utils":11,"_":26,"ko":23}],49:[function(require,module,exports){
+},{"Enums":6,"LinkBuilder":9,"Storage:Admin:Data":52,"Storage:Admin:Remote":53,"Storage:Settings":59,"Utils":11,"_":26,"ko":23}],49:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -9209,7 +9206,7 @@ module.exports = window;
*/
function AdminSettingsSocial()
{
- var Data = require('../../Storages/AdminDataStorage.js');
+ var Data = require('Storage:Admin:Data');
this.googleEnable = Data.googleEnable;
this.googleClientID = Data.googleClientID;
@@ -9241,7 +9238,7 @@ module.exports = window;
{
var
self = this,
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
+ Remote = require('Storage:Admin:Remote')
;
_.delay(function () {
@@ -9344,7 +9341,101 @@ module.exports = window;
module.exports = AdminSettingsSocial;
}(module, require));
-},{"../../Storages/AdminAjaxRemoteStorage.js":52,"../../Storages/AdminDataStorage.js":53,"Enums":6,"Utils":11,"_":26,"ko":23}],50:[function(require,module,exports){
+},{"Enums":6,"Storage:Admin:Data":52,"Storage:Admin:Remote":53,"Utils":11,"_":26,"ko":23}],50:[function(require,module,exports){
+/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
+
+(function (module, require) {
+
+ 'use strict';
+
+ var
+ Enums = require('Enums'),
+ Utils = require('Utils'),
+
+ Settings = require('Storage:Settings')
+ ;
+
+ /**
+ * @constructor
+ */
+ function AbstractData()
+ {
+ Utils.initDataConstructorBySettings(this);
+ }
+
+ AbstractData.prototype.populateDataOnStart = function()
+ {
+ var
+ mLayout = Utils.pInt(Settings.settingsGet('Layout')),
+ aLanguages = Settings.settingsGet('Languages'),
+ aThemes = Settings.settingsGet('Themes')
+ ;
+
+ if (Utils.isArray(aLanguages))
+ {
+ this.languages(aLanguages);
+ }
+
+ if (Utils.isArray(aThemes))
+ {
+ this.themes(aThemes);
+ }
+
+ this.mainLanguage(Settings.settingsGet('Language'));
+ this.mainTheme(Settings.settingsGet('Theme'));
+
+ this.capaAdditionalAccounts(Settings.capa(Enums.Capa.AdditionalAccounts));
+ this.capaAdditionalIdentities(Settings.capa(Enums.Capa.AdditionalIdentities));
+ this.capaGravatar(Settings.capa(Enums.Capa.Gravatar));
+ this.determineUserLanguage(!!Settings.settingsGet('DetermineUserLanguage'));
+ this.determineUserDomain(!!Settings.settingsGet('DetermineUserDomain'));
+
+ this.capaThemes(Settings.capa(Enums.Capa.Themes));
+ this.allowLanguagesOnLogin(!!Settings.settingsGet('AllowLanguagesOnLogin'));
+ this.allowLanguagesOnSettings(!!Settings.settingsGet('AllowLanguagesOnSettings'));
+ this.useLocalProxyForExternalImages(!!Settings.settingsGet('UseLocalProxyForExternalImages'));
+
+ this.editorDefaultType(Settings.settingsGet('EditorDefaultType'));
+ this.showImages(!!Settings.settingsGet('ShowImages'));
+ this.contactsAutosave(!!Settings.settingsGet('ContactsAutosave'));
+ this.interfaceAnimation(Settings.settingsGet('InterfaceAnimation'));
+
+ this.mainMessagesPerPage(Settings.settingsGet('MPP'));
+
+ this.desktopNotifications(!!Settings.settingsGet('DesktopNotifications'));
+ this.useThreads(!!Settings.settingsGet('UseThreads'));
+ this.replySameFolder(!!Settings.settingsGet('ReplySameFolder'));
+ this.useCheckboxesInList(!!Settings.settingsGet('UseCheckboxesInList'));
+
+ this.layout(Enums.Layout.SidePreview);
+ if (-1 < Utils.inArray(mLayout, [Enums.Layout.NoPreview, Enums.Layout.SidePreview, Enums.Layout.BottomPreview]))
+ {
+ this.layout(mLayout);
+ }
+ this.facebookSupported(!!Settings.settingsGet('SupportedFacebookSocial'));
+ this.facebookEnable(!!Settings.settingsGet('AllowFacebookSocial'));
+ this.facebookAppID(Settings.settingsGet('FacebookAppID'));
+ this.facebookAppSecret(Settings.settingsGet('FacebookAppSecret'));
+
+ this.twitterEnable(!!Settings.settingsGet('AllowTwitterSocial'));
+ this.twitterConsumerKey(Settings.settingsGet('TwitterConsumerKey'));
+ this.twitterConsumerSecret(Settings.settingsGet('TwitterConsumerSecret'));
+
+ this.googleEnable(!!Settings.settingsGet('AllowGoogleSocial'));
+ this.googleClientID(Settings.settingsGet('GoogleClientID'));
+ this.googleClientSecret(Settings.settingsGet('GoogleClientSecret'));
+ this.googleApiKey(Settings.settingsGet('GoogleApiKey'));
+
+ this.dropboxEnable(!!Settings.settingsGet('AllowDropboxSocial'));
+ this.dropboxApiKey(Settings.settingsGet('DropboxApiKey'));
+
+ this.contactsIsAllowed(!!Settings.settingsGet('ContactsIsAllowed'));
+ };
+
+ module.exports = AbstractData;
+
+}(module, require));
+},{"Enums":6,"Storage:Settings":59,"Utils":11}],51:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -9354,6 +9445,7 @@ module.exports = window;
var
window = require('window'),
$ = require('$'),
+ _ = require('_'),
Consts = require('Consts'),
Enums = require('Enums'),
@@ -9362,18 +9454,18 @@ module.exports = window;
Plugins = require('Plugins'),
LinkBuilder = require('LinkBuilder'),
- AppSettings = require('./AppSettings.js')
+ Settings = require('Storage:Settings')
;
/**
* @constructor
*/
- function AbstractAjaxRemoteStorage()
+ function AbstractRemoteStorage()
{
this.oRequests = {};
}
- AbstractAjaxRemoteStorage.prototype.oRequests = {};
+ AbstractRemoteStorage.prototype.oRequests = {};
/**
* @param {?Function} fCallback
@@ -9383,7 +9475,7 @@ module.exports = window;
* @param {boolean} bCached
* @param {*=} oRequestParameters
*/
- AbstractAjaxRemoteStorage.prototype.defaultResponse = function (fCallback, sRequestAction, sType, oData, bCached, oRequestParameters)
+ AbstractRemoteStorage.prototype.defaultResponse = function (fCallback, sRequestAction, sType, oData, bCached, oRequestParameters)
{
var
fCall = function () {
@@ -9481,7 +9573,7 @@ module.exports = window;
* @param {Array=} aAbortActions = []
* @return {jQuery.jqXHR}
*/
- AbstractAjaxRemoteStorage.prototype.ajaxRequest = function (fResultCallback, oParameters, iTimeOut, sGetAdd, aAbortActions)
+ AbstractRemoteStorage.prototype.ajaxRequest = function (fResultCallback, oParameters, iTimeOut, sGetAdd, aAbortActions)
{
var
self = this,
@@ -9516,7 +9608,7 @@ module.exports = window;
if (bPost)
{
- oParameters['XToken'] = AppSettings.settingsGet('Token');
+ oParameters['XToken'] = Settings.settingsGet('Token');
}
oDefAjax = $.ajax({
@@ -9577,7 +9669,7 @@ module.exports = window;
* @param {string=} sGetAdd = ''
* @param {Array=} aAbortActions = []
*/
- AbstractAjaxRemoteStorage.prototype.defaultRequest = function (fCallback, sAction, oParameters, iTimeout, sGetAdd, aAbortActions)
+ AbstractRemoteStorage.prototype.defaultRequest = function (fCallback, sAction, oParameters, iTimeout, sGetAdd, aAbortActions)
{
oParameters = oParameters || {};
oParameters.Action = sAction;
@@ -9593,7 +9685,7 @@ module.exports = window;
/**
* @param {?Function} fCallback
*/
- AbstractAjaxRemoteStorage.prototype.noop = function (fCallback)
+ AbstractRemoteStorage.prototype.noop = function (fCallback)
{
this.defaultRequest(fCallback, 'Noop');
};
@@ -9607,7 +9699,7 @@ module.exports = window;
* @param {string} sHtmlCapa
* @param {number} iTime
*/
- AbstractAjaxRemoteStorage.prototype.jsError = function (fCallback, sMessage, sFileName, iLineNo, sLocation, sHtmlCapa, iTime)
+ AbstractRemoteStorage.prototype.jsError = function (fCallback, sMessage, sFileName, iLineNo, sLocation, sHtmlCapa, iTime)
{
this.defaultRequest(fCallback, 'JsError', {
'Message': sMessage,
@@ -9625,7 +9717,7 @@ module.exports = window;
* @param {Array=} mData = null
* @param {boolean=} bIsError = false
*/
- AbstractAjaxRemoteStorage.prototype.jsInfo = function (fCallback, sType, mData, bIsError)
+ AbstractRemoteStorage.prototype.jsInfo = function (fCallback, sType, mData, bIsError)
{
this.defaultRequest(fCallback, 'JsInfo', {
'Type': sType,
@@ -9637,7 +9729,7 @@ module.exports = window;
/**
* @param {?Function} fCallback
*/
- AbstractAjaxRemoteStorage.prototype.getPublicKey = function (fCallback)
+ AbstractRemoteStorage.prototype.getPublicKey = function (fCallback)
{
this.defaultRequest(fCallback, 'GetPublicKey');
};
@@ -9646,388 +9738,17 @@ module.exports = window;
* @param {?Function} fCallback
* @param {string} sVersion
*/
- AbstractAjaxRemoteStorage.prototype.jsVersion = function (fCallback, sVersion)
+ AbstractRemoteStorage.prototype.jsVersion = function (fCallback, sVersion)
{
this.defaultRequest(fCallback, 'Version', {
'Version': sVersion
});
};
- module.exports = AbstractAjaxRemoteStorage;
+ module.exports = AbstractRemoteStorage;
}(module, require));
-},{"$":21,"./AppSettings.js":54,"Consts":5,"Enums":6,"Globals":8,"LinkBuilder":9,"Plugins":10,"Utils":11,"window":27}],51:[function(require,module,exports){
-/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
-
-(function (module, require) {
-
- 'use strict';
-
- var
- Enums = require('Enums'),
- Utils = require('Utils'),
-
- AppSettings = require('./AppSettings.js')
- ;
-
- /**
- * @constructor
- */
- function AbstractData()
- {
- Utils.initDataConstructorBySettings(this);
- }
-
- AbstractData.prototype.populateDataOnStart = function()
- {
- var
- mLayout = Utils.pInt(AppSettings.settingsGet('Layout')),
- aLanguages = AppSettings.settingsGet('Languages'),
- aThemes = AppSettings.settingsGet('Themes')
- ;
-
- if (Utils.isArray(aLanguages))
- {
- this.languages(aLanguages);
- }
-
- if (Utils.isArray(aThemes))
- {
- this.themes(aThemes);
- }
-
- this.mainLanguage(AppSettings.settingsGet('Language'));
- this.mainTheme(AppSettings.settingsGet('Theme'));
-
- this.capaAdditionalAccounts(AppSettings.capa(Enums.Capa.AdditionalAccounts));
- this.capaAdditionalIdentities(AppSettings.capa(Enums.Capa.AdditionalIdentities));
- this.capaGravatar(AppSettings.capa(Enums.Capa.Gravatar));
- this.determineUserLanguage(!!AppSettings.settingsGet('DetermineUserLanguage'));
- this.determineUserDomain(!!AppSettings.settingsGet('DetermineUserDomain'));
-
- this.capaThemes(AppSettings.capa(Enums.Capa.Themes));
- this.allowLanguagesOnLogin(!!AppSettings.settingsGet('AllowLanguagesOnLogin'));
- this.allowLanguagesOnSettings(!!AppSettings.settingsGet('AllowLanguagesOnSettings'));
- this.useLocalProxyForExternalImages(!!AppSettings.settingsGet('UseLocalProxyForExternalImages'));
-
- this.editorDefaultType(AppSettings.settingsGet('EditorDefaultType'));
- this.showImages(!!AppSettings.settingsGet('ShowImages'));
- this.contactsAutosave(!!AppSettings.settingsGet('ContactsAutosave'));
- this.interfaceAnimation(AppSettings.settingsGet('InterfaceAnimation'));
-
- this.mainMessagesPerPage(AppSettings.settingsGet('MPP'));
-
- this.desktopNotifications(!!AppSettings.settingsGet('DesktopNotifications'));
- this.useThreads(!!AppSettings.settingsGet('UseThreads'));
- this.replySameFolder(!!AppSettings.settingsGet('ReplySameFolder'));
- this.useCheckboxesInList(!!AppSettings.settingsGet('UseCheckboxesInList'));
-
- this.layout(Enums.Layout.SidePreview);
- if (-1 < Utils.inArray(mLayout, [Enums.Layout.NoPreview, Enums.Layout.SidePreview, Enums.Layout.BottomPreview]))
- {
- this.layout(mLayout);
- }
- this.facebookSupported(!!AppSettings.settingsGet('SupportedFacebookSocial'));
- this.facebookEnable(!!AppSettings.settingsGet('AllowFacebookSocial'));
- this.facebookAppID(AppSettings.settingsGet('FacebookAppID'));
- this.facebookAppSecret(AppSettings.settingsGet('FacebookAppSecret'));
-
- this.twitterEnable(!!AppSettings.settingsGet('AllowTwitterSocial'));
- this.twitterConsumerKey(AppSettings.settingsGet('TwitterConsumerKey'));
- this.twitterConsumerSecret(AppSettings.settingsGet('TwitterConsumerSecret'));
-
- this.googleEnable(!!AppSettings.settingsGet('AllowGoogleSocial'));
- this.googleClientID(AppSettings.settingsGet('GoogleClientID'));
- this.googleClientSecret(AppSettings.settingsGet('GoogleClientSecret'));
- this.googleApiKey(AppSettings.settingsGet('GoogleApiKey'));
-
- this.dropboxEnable(!!AppSettings.settingsGet('AllowDropboxSocial'));
- this.dropboxApiKey(AppSettings.settingsGet('DropboxApiKey'));
-
- this.contactsIsAllowed(!!AppSettings.settingsGet('ContactsIsAllowed'));
- };
-
- module.exports = AbstractData;
-
-}(module, require));
-},{"./AppSettings.js":54,"Enums":6,"Utils":11}],52:[function(require,module,exports){
-/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
-
-(function (module, require) {
-
- 'use strict';
-
- var
- _ = require('_'),
-
- AbstractAjaxRemoteStorage = require('./AbstractAjaxRemoteStorage.js')
- ;
-
- /**
- * @constructor
- * @extends AbstractAjaxRemoteStorage
- */
- function AdminAjaxRemoteStorage()
- {
- AbstractAjaxRemoteStorage.call(this);
-
- this.oRequests = {};
- }
-
- _.extend(AdminAjaxRemoteStorage.prototype, AbstractAjaxRemoteStorage.prototype);
-
- /**
- * @param {?Function} fCallback
- * @param {string} sLogin
- * @param {string} sPassword
- */
- AdminAjaxRemoteStorage.prototype.adminLogin = function (fCallback, sLogin, sPassword)
- {
- this.defaultRequest(fCallback, 'AdminLogin', {
- 'Login': sLogin,
- 'Password': sPassword
- });
- };
-
- /**
- * @param {?Function} fCallback
- */
- AdminAjaxRemoteStorage.prototype.adminLogout = function (fCallback)
- {
- this.defaultRequest(fCallback, 'AdminLogout');
- };
-
- /**
- * @param {?Function} fCallback
- * @param {?} oData
- */
- AdminAjaxRemoteStorage.prototype.saveAdminConfig = function (fCallback, oData)
- {
- this.defaultRequest(fCallback, 'AdminSettingsUpdate', oData);
- };
-
- /**
- * @param {?Function} fCallback
- */
- AdminAjaxRemoteStorage.prototype.domainList = function (fCallback)
- {
- this.defaultRequest(fCallback, 'AdminDomainList');
- };
-
- /**
- * @param {?Function} fCallback
- */
- AdminAjaxRemoteStorage.prototype.pluginList = function (fCallback)
- {
- this.defaultRequest(fCallback, 'AdminPluginList');
- };
-
- /**
- * @param {?Function} fCallback
- */
- AdminAjaxRemoteStorage.prototype.packagesList = function (fCallback)
- {
- this.defaultRequest(fCallback, 'AdminPackagesList');
- };
-
- /**
- * @param {?Function} fCallback
- */
- AdminAjaxRemoteStorage.prototype.coreData = function (fCallback)
- {
- this.defaultRequest(fCallback, 'AdminCoreData');
- };
-
- /**
- * @param {?Function} fCallback
- */
- AdminAjaxRemoteStorage.prototype.updateCoreData = function (fCallback)
- {
- this.defaultRequest(fCallback, 'AdminUpdateCoreData', {}, 90000);
- };
-
- /**
- * @param {?Function} fCallback
- * @param {Object} oPackage
- */
- AdminAjaxRemoteStorage.prototype.packageInstall = function (fCallback, oPackage)
- {
- this.defaultRequest(fCallback, 'AdminPackageInstall', {
- 'Id': oPackage.id,
- 'Type': oPackage.type,
- 'File': oPackage.file
- }, 60000);
- };
-
- /**
- * @param {?Function} fCallback
- * @param {Object} oPackage
- */
- AdminAjaxRemoteStorage.prototype.packageDelete = function (fCallback, oPackage)
- {
- this.defaultRequest(fCallback, 'AdminPackageDelete', {
- 'Id': oPackage.id
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sName
- */
- AdminAjaxRemoteStorage.prototype.domain = function (fCallback, sName)
- {
- this.defaultRequest(fCallback, 'AdminDomainLoad', {
- 'Name': sName
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sName
- */
- AdminAjaxRemoteStorage.prototype.plugin = function (fCallback, sName)
- {
- this.defaultRequest(fCallback, 'AdminPluginLoad', {
- 'Name': sName
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sName
- */
- AdminAjaxRemoteStorage.prototype.domainDelete = function (fCallback, sName)
- {
- this.defaultRequest(fCallback, 'AdminDomainDelete', {
- 'Name': sName
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sName
- * @param {boolean} bDisabled
- */
- AdminAjaxRemoteStorage.prototype.domainDisable = function (fCallback, sName, bDisabled)
- {
- return this.defaultRequest(fCallback, 'AdminDomainDisable', {
- 'Name': sName,
- 'Disabled': !!bDisabled ? '1' : '0'
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {Object} oConfig
- */
- AdminAjaxRemoteStorage.prototype.pluginSettingsUpdate = function (fCallback, oConfig)
- {
- return this.defaultRequest(fCallback, 'AdminPluginSettingsUpdate', oConfig);
- };
-
- /**
- * @param {?Function} fCallback
- * @param {boolean} bForce
- */
- AdminAjaxRemoteStorage.prototype.licensing = function (fCallback, bForce)
- {
- return this.defaultRequest(fCallback, 'AdminLicensing', {
- 'Force' : bForce ? '1' : '0'
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sDomain
- * @param {string} sKey
- */
- AdminAjaxRemoteStorage.prototype.licensingActivate = function (fCallback, sDomain, sKey)
- {
- return this.defaultRequest(fCallback, 'AdminLicensingActivate', {
- 'Domain' : sDomain,
- 'Key' : sKey
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sName
- * @param {boolean} bDisabled
- */
- AdminAjaxRemoteStorage.prototype.pluginDisable = function (fCallback, sName, bDisabled)
- {
- return this.defaultRequest(fCallback, 'AdminPluginDisable', {
- 'Name': sName,
- 'Disabled': !!bDisabled ? '1' : '0'
- });
- };
-
- AdminAjaxRemoteStorage.prototype.createOrUpdateDomain = function (fCallback,
- bCreate, sName, sIncHost, iIncPort, sIncSecure, bIncShortLogin,
- sOutHost, iOutPort, sOutSecure, bOutShortLogin, bOutAuth, sWhiteList)
- {
- this.defaultRequest(fCallback, 'AdminDomainSave', {
- 'Create': bCreate ? '1' : '0',
- 'Name': sName,
- 'IncHost': sIncHost,
- 'IncPort': iIncPort,
- 'IncSecure': sIncSecure,
- 'IncShortLogin': bIncShortLogin ? '1' : '0',
- 'OutHost': sOutHost,
- 'OutPort': iOutPort,
- 'OutSecure': sOutSecure,
- 'OutShortLogin': bOutShortLogin ? '1' : '0',
- 'OutAuth': bOutAuth ? '1' : '0',
- 'WhiteList': sWhiteList
- });
- };
-
- AdminAjaxRemoteStorage.prototype.testConnectionForDomain = function (fCallback, sName,
- sIncHost, iIncPort, sIncSecure,
- sOutHost, iOutPort, sOutSecure, bOutAuth)
- {
- this.defaultRequest(fCallback, 'AdminDomainTest', {
- 'Name': sName,
- 'IncHost': sIncHost,
- 'IncPort': iIncPort,
- 'IncSecure': sIncSecure,
- 'OutHost': sOutHost,
- 'OutPort': iOutPort,
- 'OutSecure': sOutSecure,
- 'OutAuth': bOutAuth ? '1' : '0'
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {?} oData
- */
- AdminAjaxRemoteStorage.prototype.testContacts = function (fCallback, oData)
- {
- this.defaultRequest(fCallback, 'AdminContactsTest', oData);
- };
-
- /**
- * @param {?Function} fCallback
- * @param {?} oData
- */
- AdminAjaxRemoteStorage.prototype.saveNewAdminPassword = function (fCallback, oData)
- {
- this.defaultRequest(fCallback, 'AdminPasswordUpdate', oData);
- };
-
- /**
- * @param {?Function} fCallback
- */
- AdminAjaxRemoteStorage.prototype.adminPing = function (fCallback)
- {
- this.defaultRequest(fCallback, 'AdminPing');
- };
-
- module.exports = new AdminAjaxRemoteStorage();
-
-}(module, require));
-},{"./AbstractAjaxRemoteStorage.js":50,"_":26}],53:[function(require,module,exports){
+},{"$":21,"Consts":5,"Enums":6,"Globals":8,"LinkBuilder":9,"Plugins":10,"Storage:Settings":59,"Utils":11,"_":26,"window":27}],52:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -10038,7 +9759,7 @@ module.exports = window;
_ = require('_'),
ko = require('ko'),
- AbstractData = require('./AbstractData.js')
+ AbstractData = require('Storage:Abstract:Data')
;
/**
@@ -10096,310 +9817,284 @@ module.exports = window;
module.exports = new AdminDataStorage();
}(module, require));
-},{"./AbstractData.js":51,"_":26,"ko":23}],54:[function(require,module,exports){
+},{"Storage:Abstract:Data":50,"_":26,"ko":23}],53:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
'use strict';
- var
- AppData = require('AppData'),
- Utils = require('Utils')
- ;
-
- /**
- * @constructor
- */
- function AppSettings()
- {
- this.oSettings = null;
- }
-
- AppSettings.prototype.oSettings = null;
-
- /**
- * @param {string} sName
- * @return {?}
- */
- AppSettings.prototype.settingsGet = function (sName)
- {
- if (null === this.oSettings)
- {
- this.oSettings = Utils.isNormal(AppData) ? AppData : {};
- }
-
- return Utils.isUnd(this.oSettings[sName]) ? null : this.oSettings[sName];
- };
-
- /**
- * @param {string} sName
- * @param {?} mValue
- */
- AppSettings.prototype.settingsSet = function (sName, mValue)
- {
- if (null === this.oSettings)
- {
- this.oSettings = Utils.isNormal(AppData) ? AppData : {};
- }
-
- this.oSettings[sName] = mValue;
- };
-
- /**
- * @param {string} sName
- * @return {boolean}
- */
- AppSettings.prototype.capa = function (sName)
- {
- var mCapa = this.settingsGet('Capa');
- return Utils.isArray(mCapa) && Utils.isNormal(sName) && -1 < Utils.inArray(sName, mCapa);
- };
-
-
- module.exports = new AppSettings();
-
-}(module, require));
-},{"AppData":16,"Utils":11}],55:[function(require,module,exports){
-/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
-
-(function (module, require) {
-
- 'use strict';
-
var
_ = require('_'),
- CookieDriver = require('./LocalStorages/CookieDriver.js'),
- LocalStorageDriver = require('./LocalStorages/LocalStorageDriver.js')
+ AbstractRemoteStorage = require('Storage:Abstract:Remote')
;
/**
* @constructor
+ * @extends AbstractRemoteStorage
*/
- function LocalStorage()
+ function AdminRemoteStorage()
{
- var
- NextStorageDriver = _.find([LocalStorageDriver, CookieDriver], function (NextStorageDriver) {
- return NextStorageDriver.supported();
- })
- ;
+ AbstractRemoteStorage.call(this);
- this.oDriver = null;
-
- if (NextStorageDriver)
- {
- NextStorageDriver = /** @type {?Function} */ NextStorageDriver;
- this.oDriver = new NextStorageDriver();
- }
+ this.oRequests = {};
}
- LocalStorage.prototype.oDriver = null;
+ _.extend(AdminRemoteStorage.prototype, AbstractRemoteStorage.prototype);
/**
- * @param {number} iKey
- * @param {*} mData
- * @return {boolean}
+ * @param {?Function} fCallback
+ * @param {string} sLogin
+ * @param {string} sPassword
*/
- LocalStorage.prototype.set = function (iKey, mData)
+ AdminRemoteStorage.prototype.adminLogin = function (fCallback, sLogin, sPassword)
{
- return this.oDriver ? this.oDriver.set('p' + iKey, mData) : false;
+ this.defaultRequest(fCallback, 'AdminLogin', {
+ 'Login': sLogin,
+ 'Password': sPassword
+ });
};
/**
- * @param {number} iKey
- * @return {*}
+ * @param {?Function} fCallback
*/
- LocalStorage.prototype.get = function (iKey)
+ AdminRemoteStorage.prototype.adminLogout = function (fCallback)
{
- return this.oDriver ? this.oDriver.get('p' + iKey) : null;
+ this.defaultRequest(fCallback, 'AdminLogout');
};
- module.exports = new LocalStorage();
+ /**
+ * @param {?Function} fCallback
+ * @param {?} oData
+ */
+ AdminRemoteStorage.prototype.saveAdminConfig = function (fCallback, oData)
+ {
+ this.defaultRequest(fCallback, 'AdminSettingsUpdate', oData);
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ AdminRemoteStorage.prototype.domainList = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'AdminDomainList');
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ AdminRemoteStorage.prototype.pluginList = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'AdminPluginList');
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ AdminRemoteStorage.prototype.packagesList = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'AdminPackagesList');
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ AdminRemoteStorage.prototype.coreData = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'AdminCoreData');
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ AdminRemoteStorage.prototype.updateCoreData = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'AdminUpdateCoreData', {}, 90000);
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {Object} oPackage
+ */
+ AdminRemoteStorage.prototype.packageInstall = function (fCallback, oPackage)
+ {
+ this.defaultRequest(fCallback, 'AdminPackageInstall', {
+ 'Id': oPackage.id,
+ 'Type': oPackage.type,
+ 'File': oPackage.file
+ }, 60000);
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {Object} oPackage
+ */
+ AdminRemoteStorage.prototype.packageDelete = function (fCallback, oPackage)
+ {
+ this.defaultRequest(fCallback, 'AdminPackageDelete', {
+ 'Id': oPackage.id
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sName
+ */
+ AdminRemoteStorage.prototype.domain = function (fCallback, sName)
+ {
+ this.defaultRequest(fCallback, 'AdminDomainLoad', {
+ 'Name': sName
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sName
+ */
+ AdminRemoteStorage.prototype.plugin = function (fCallback, sName)
+ {
+ this.defaultRequest(fCallback, 'AdminPluginLoad', {
+ 'Name': sName
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sName
+ */
+ AdminRemoteStorage.prototype.domainDelete = function (fCallback, sName)
+ {
+ this.defaultRequest(fCallback, 'AdminDomainDelete', {
+ 'Name': sName
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sName
+ * @param {boolean} bDisabled
+ */
+ AdminRemoteStorage.prototype.domainDisable = function (fCallback, sName, bDisabled)
+ {
+ return this.defaultRequest(fCallback, 'AdminDomainDisable', {
+ 'Name': sName,
+ 'Disabled': !!bDisabled ? '1' : '0'
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {Object} oConfig
+ */
+ AdminRemoteStorage.prototype.pluginSettingsUpdate = function (fCallback, oConfig)
+ {
+ return this.defaultRequest(fCallback, 'AdminPluginSettingsUpdate', oConfig);
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {boolean} bForce
+ */
+ AdminRemoteStorage.prototype.licensing = function (fCallback, bForce)
+ {
+ return this.defaultRequest(fCallback, 'AdminLicensing', {
+ 'Force' : bForce ? '1' : '0'
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sDomain
+ * @param {string} sKey
+ */
+ AdminRemoteStorage.prototype.licensingActivate = function (fCallback, sDomain, sKey)
+ {
+ return this.defaultRequest(fCallback, 'AdminLicensingActivate', {
+ 'Domain' : sDomain,
+ 'Key' : sKey
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sName
+ * @param {boolean} bDisabled
+ */
+ AdminRemoteStorage.prototype.pluginDisable = function (fCallback, sName, bDisabled)
+ {
+ return this.defaultRequest(fCallback, 'AdminPluginDisable', {
+ 'Name': sName,
+ 'Disabled': !!bDisabled ? '1' : '0'
+ });
+ };
+
+ AdminRemoteStorage.prototype.createOrUpdateDomain = function (fCallback,
+ bCreate, sName, sIncHost, iIncPort, sIncSecure, bIncShortLogin,
+ sOutHost, iOutPort, sOutSecure, bOutShortLogin, bOutAuth, sWhiteList)
+ {
+ this.defaultRequest(fCallback, 'AdminDomainSave', {
+ 'Create': bCreate ? '1' : '0',
+ 'Name': sName,
+ 'IncHost': sIncHost,
+ 'IncPort': iIncPort,
+ 'IncSecure': sIncSecure,
+ 'IncShortLogin': bIncShortLogin ? '1' : '0',
+ 'OutHost': sOutHost,
+ 'OutPort': iOutPort,
+ 'OutSecure': sOutSecure,
+ 'OutShortLogin': bOutShortLogin ? '1' : '0',
+ 'OutAuth': bOutAuth ? '1' : '0',
+ 'WhiteList': sWhiteList
+ });
+ };
+
+ AdminRemoteStorage.prototype.testConnectionForDomain = function (fCallback, sName,
+ sIncHost, iIncPort, sIncSecure,
+ sOutHost, iOutPort, sOutSecure, bOutAuth)
+ {
+ this.defaultRequest(fCallback, 'AdminDomainTest', {
+ 'Name': sName,
+ 'IncHost': sIncHost,
+ 'IncPort': iIncPort,
+ 'IncSecure': sIncSecure,
+ 'OutHost': sOutHost,
+ 'OutPort': iOutPort,
+ 'OutSecure': sOutSecure,
+ 'OutAuth': bOutAuth ? '1' : '0'
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {?} oData
+ */
+ AdminRemoteStorage.prototype.testContacts = function (fCallback, oData)
+ {
+ this.defaultRequest(fCallback, 'AdminContactsTest', oData);
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {?} oData
+ */
+ AdminRemoteStorage.prototype.saveNewAdminPassword = function (fCallback, oData)
+ {
+ this.defaultRequest(fCallback, 'AdminPasswordUpdate', oData);
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ AdminRemoteStorage.prototype.adminPing = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'AdminPing');
+ };
+
+ module.exports = new AdminRemoteStorage();
}(module, require));
-},{"./LocalStorages/CookieDriver.js":56,"./LocalStorages/LocalStorageDriver.js":57,"_":26}],56:[function(require,module,exports){
-/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
-
-(function (module, require) {
-
- 'use strict';
-
- var
- $ = require('$'),
- JSON = require('JSON'),
-
- Consts = require('Consts'),
- Utils = require('Utils')
- ;
-
- /**
- * @constructor
- */
- function CookieDriver()
- {
-
- }
-
- CookieDriver.supported = function ()
- {
- return true;
- };
-
- /**
- * @param {string} sKey
- * @param {*} mData
- * @returns {boolean}
- */
- CookieDriver.prototype.set = function (sKey, mData)
- {
- var
- mCokieValue = $.cookie(Consts.Values.ClientSideCookieIndexName),
- bResult = false,
- mResult = null
- ;
-
- try
- {
- mResult = null === mCokieValue ? null : JSON.parse(mCokieValue);
- if (!mResult)
- {
- mResult = {};
- }
-
- mResult[sKey] = mData;
- $.cookie(Consts.Values.ClientSideCookieIndexName, JSON.stringify(mResult), {
- 'expires': 30
- });
-
- bResult = true;
- }
- catch (oException) {}
-
- return bResult;
- };
-
- /**
- * @param {string} sKey
- * @returns {*}
- */
- CookieDriver.prototype.get = function (sKey)
- {
- var
- mCokieValue = $.cookie(Consts.Values.ClientSideCookieIndexName),
- mResult = null
- ;
-
- try
- {
- mResult = null === mCokieValue ? null : JSON.parse(mCokieValue);
- if (mResult && !Utils.isUnd(mResult[sKey]))
- {
- mResult = mResult[sKey];
- }
- else
- {
- mResult = null;
- }
- }
- catch (oException) {}
-
- return mResult;
- };
-
- module.exports = CookieDriver;
-
-}(module, require));
-},{"$":21,"Consts":5,"JSON":17,"Utils":11}],57:[function(require,module,exports){
-/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
-
-(function (module, require) {
-
- 'use strict';
-
- var
- window = require('window'),
- JSON = require('JSON'),
-
- Consts = require('Consts'),
- Utils = require('Utils')
- ;
-
- /**
- * @constructor
- */
- function LocalStorageDriver()
- {
- }
-
- LocalStorageDriver.supported = function ()
- {
- return !!window.localStorage;
- };
-
- /**
- * @param {string} sKey
- * @param {*} mData
- * @returns {boolean}
- */
- LocalStorageDriver.prototype.set = function (sKey, mData)
- {
- var
- mCookieValue = window.localStorage[Consts.Values.ClientSideCookieIndexName] || null,
- bResult = false,
- mResult = null
- ;
-
- try
- {
- mResult = null === mCookieValue ? null : JSON.parse(mCookieValue);
- if (!mResult)
- {
- mResult = {};
- }
-
- mResult[sKey] = mData;
- window.localStorage[Consts.Values.ClientSideCookieIndexName] = JSON.stringify(mResult);
-
- bResult = true;
- }
- catch (oException) {}
-
- return bResult;
- };
-
- /**
- * @param {string} sKey
- * @returns {*}
- */
- LocalStorageDriver.prototype.get = function (sKey)
- {
- var
- mCokieValue = window.localStorage[Consts.Values.ClientSideCookieIndexName] || null,
- mResult = null
- ;
-
- try
- {
- mResult = null === mCokieValue ? null : JSON.parse(mCokieValue);
- if (mResult && !Utils.isUnd(mResult[sKey]))
- {
- mResult = mResult[sKey];
- }
- else
- {
- mResult = null;
- }
- }
- catch (oException) {}
-
- return mResult;
- };
-
- module.exports = LocalStorageDriver;
-
-}(module, require));
-},{"Consts":5,"JSON":17,"Utils":11,"window":27}],58:[function(require,module,exports){
+},{"Storage:Abstract:Remote":51,"_":26}],54:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -10413,13 +10108,13 @@ module.exports = window;
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- AppSettings = require('./AppSettings.js')
+ Settings = require('Storage:Settings')
;
/**
* @constructor
*/
- function WebMailCacheStorage()
+ function CacheStorage()
{
this.oFoldersCache = {};
this.oFoldersNamesCache = {};
@@ -10430,60 +10125,60 @@ module.exports = window;
this.oNewMessage = {};
this.oRequestedMessage = {};
- this.bCapaGravatar = AppSettings.capa(Enums.Capa.Gravatar);
+ this.bCapaGravatar = Settings.capa(Enums.Capa.Gravatar);
}
/**
* @type {boolean}
*/
- WebMailCacheStorage.prototype.bCapaGravatar = false;
+ CacheStorage.prototype.bCapaGravatar = false;
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oFoldersCache = {};
+ CacheStorage.prototype.oFoldersCache = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oFoldersNamesCache = {};
+ CacheStorage.prototype.oFoldersNamesCache = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oFolderHashCache = {};
+ CacheStorage.prototype.oFolderHashCache = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oFolderUidNextCache = {};
+ CacheStorage.prototype.oFolderUidNextCache = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oMessageListHashCache = {};
+ CacheStorage.prototype.oMessageListHashCache = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oMessageFlagsCache = {};
+ CacheStorage.prototype.oMessageFlagsCache = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oBodies = {};
+ CacheStorage.prototype.oBodies = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oNewMessage = {};
+ CacheStorage.prototype.oNewMessage = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oRequestedMessage = {};
+ CacheStorage.prototype.oRequestedMessage = {};
- WebMailCacheStorage.prototype.clear = function ()
+ CacheStorage.prototype.clear = function ()
{
this.oFoldersCache = {};
this.oFoldersNamesCache = {};
@@ -10500,7 +10195,7 @@ module.exports = window;
* @param {Function} fCallback
* @return {string}
*/
- WebMailCacheStorage.prototype.getUserPic = function (sEmail, fCallback)
+ CacheStorage.prototype.getUserPic = function (sEmail, fCallback)
{
sEmail = Utils.trim(sEmail);
fCallback(this.bCapaGravatar && '' !== sEmail ? LinkBuilder.avatarLink(sEmail) : '', sEmail);
@@ -10511,7 +10206,7 @@ module.exports = window;
* @param {string} sUid
* @return {string}
*/
- WebMailCacheStorage.prototype.getMessageKey = function (sFolderFullNameRaw, sUid)
+ CacheStorage.prototype.getMessageKey = function (sFolderFullNameRaw, sUid)
{
return sFolderFullNameRaw + '#' + sUid;
};
@@ -10520,7 +10215,7 @@ module.exports = window;
* @param {string} sFolder
* @param {string} sUid
*/
- WebMailCacheStorage.prototype.addRequestedMessage = function (sFolder, sUid)
+ CacheStorage.prototype.addRequestedMessage = function (sFolder, sUid)
{
this.oRequestedMessage[this.getMessageKey(sFolder, sUid)] = true;
};
@@ -10530,7 +10225,7 @@ module.exports = window;
* @param {string} sUid
* @return {boolean}
*/
- WebMailCacheStorage.prototype.hasRequestedMessage = function (sFolder, sUid)
+ CacheStorage.prototype.hasRequestedMessage = function (sFolder, sUid)
{
return true === this.oRequestedMessage[this.getMessageKey(sFolder, sUid)];
};
@@ -10539,7 +10234,7 @@ module.exports = window;
* @param {string} sFolderFullNameRaw
* @param {string} sUid
*/
- WebMailCacheStorage.prototype.addNewMessageCache = function (sFolderFullNameRaw, sUid)
+ CacheStorage.prototype.addNewMessageCache = function (sFolderFullNameRaw, sUid)
{
this.oNewMessage[this.getMessageKey(sFolderFullNameRaw, sUid)] = true;
};
@@ -10548,7 +10243,7 @@ module.exports = window;
* @param {string} sFolderFullNameRaw
* @param {string} sUid
*/
- WebMailCacheStorage.prototype.hasNewMessageAndRemoveFromCache = function (sFolderFullNameRaw, sUid)
+ CacheStorage.prototype.hasNewMessageAndRemoveFromCache = function (sFolderFullNameRaw, sUid)
{
if (this.oNewMessage[this.getMessageKey(sFolderFullNameRaw, sUid)])
{
@@ -10559,7 +10254,7 @@ module.exports = window;
return false;
};
- WebMailCacheStorage.prototype.clearNewMessageCache = function ()
+ CacheStorage.prototype.clearNewMessageCache = function ()
{
this.oNewMessage = {};
};
@@ -10568,7 +10263,7 @@ module.exports = window;
* @param {string} sFolderHash
* @return {string}
*/
- WebMailCacheStorage.prototype.getFolderFullNameRaw = function (sFolderHash)
+ CacheStorage.prototype.getFolderFullNameRaw = function (sFolderHash)
{
return '' !== sFolderHash && this.oFoldersNamesCache[sFolderHash] ? this.oFoldersNamesCache[sFolderHash] : '';
};
@@ -10577,7 +10272,7 @@ module.exports = window;
* @param {string} sFolderHash
* @param {string} sFolderFullNameRaw
*/
- WebMailCacheStorage.prototype.setFolderFullNameRaw = function (sFolderHash, sFolderFullNameRaw)
+ CacheStorage.prototype.setFolderFullNameRaw = function (sFolderHash, sFolderFullNameRaw)
{
this.oFoldersNamesCache[sFolderHash] = sFolderFullNameRaw;
};
@@ -10586,7 +10281,7 @@ module.exports = window;
* @param {string} sFolderFullNameRaw
* @return {string}
*/
- WebMailCacheStorage.prototype.getFolderHash = function (sFolderFullNameRaw)
+ CacheStorage.prototype.getFolderHash = function (sFolderFullNameRaw)
{
return '' !== sFolderFullNameRaw && this.oFolderHashCache[sFolderFullNameRaw] ? this.oFolderHashCache[sFolderFullNameRaw] : '';
};
@@ -10595,7 +10290,7 @@ module.exports = window;
* @param {string} sFolderFullNameRaw
* @param {string} sFolderHash
*/
- WebMailCacheStorage.prototype.setFolderHash = function (sFolderFullNameRaw, sFolderHash)
+ CacheStorage.prototype.setFolderHash = function (sFolderFullNameRaw, sFolderHash)
{
this.oFolderHashCache[sFolderFullNameRaw] = sFolderHash;
};
@@ -10604,7 +10299,7 @@ module.exports = window;
* @param {string} sFolderFullNameRaw
* @return {string}
*/
- WebMailCacheStorage.prototype.getFolderUidNext = function (sFolderFullNameRaw)
+ CacheStorage.prototype.getFolderUidNext = function (sFolderFullNameRaw)
{
return '' !== sFolderFullNameRaw && this.oFolderUidNextCache[sFolderFullNameRaw] ? this.oFolderUidNextCache[sFolderFullNameRaw] : '';
};
@@ -10613,7 +10308,7 @@ module.exports = window;
* @param {string} sFolderFullNameRaw
* @param {string} sUidNext
*/
- WebMailCacheStorage.prototype.setFolderUidNext = function (sFolderFullNameRaw, sUidNext)
+ CacheStorage.prototype.setFolderUidNext = function (sFolderFullNameRaw, sUidNext)
{
this.oFolderUidNextCache[sFolderFullNameRaw] = sUidNext;
};
@@ -10622,7 +10317,7 @@ module.exports = window;
* @param {string} sFolderFullNameRaw
* @return {?FolderModel}
*/
- WebMailCacheStorage.prototype.getFolderFromCacheList = function (sFolderFullNameRaw)
+ CacheStorage.prototype.getFolderFromCacheList = function (sFolderFullNameRaw)
{
return '' !== sFolderFullNameRaw && this.oFoldersCache[sFolderFullNameRaw] ? this.oFoldersCache[sFolderFullNameRaw] : null;
};
@@ -10631,7 +10326,7 @@ module.exports = window;
* @param {string} sFolderFullNameRaw
* @param {?FolderModel} oFolder
*/
- WebMailCacheStorage.prototype.setFolderToCacheList = function (sFolderFullNameRaw, oFolder)
+ CacheStorage.prototype.setFolderToCacheList = function (sFolderFullNameRaw, oFolder)
{
this.oFoldersCache[sFolderFullNameRaw] = oFolder;
};
@@ -10639,7 +10334,7 @@ module.exports = window;
/**
* @param {string} sFolderFullNameRaw
*/
- WebMailCacheStorage.prototype.removeFolderFromCacheList = function (sFolderFullNameRaw)
+ CacheStorage.prototype.removeFolderFromCacheList = function (sFolderFullNameRaw)
{
this.setFolderToCacheList(sFolderFullNameRaw, null);
};
@@ -10649,7 +10344,7 @@ module.exports = window;
* @param {string} sUid
* @return {?Array}
*/
- WebMailCacheStorage.prototype.getMessageFlagsFromCache = function (sFolderFullName, sUid)
+ CacheStorage.prototype.getMessageFlagsFromCache = function (sFolderFullName, sUid)
{
return this.oMessageFlagsCache[sFolderFullName] && this.oMessageFlagsCache[sFolderFullName][sUid] ?
this.oMessageFlagsCache[sFolderFullName][sUid] : null;
@@ -10660,7 +10355,7 @@ module.exports = window;
* @param {string} sUid
* @param {Array} aFlagsCache
*/
- WebMailCacheStorage.prototype.setMessageFlagsToCache = function (sFolderFullName, sUid, aFlagsCache)
+ CacheStorage.prototype.setMessageFlagsToCache = function (sFolderFullName, sUid, aFlagsCache)
{
if (!this.oMessageFlagsCache[sFolderFullName])
{
@@ -10673,7 +10368,7 @@ module.exports = window;
/**
* @param {string} sFolderFullName
*/
- WebMailCacheStorage.prototype.clearMessageFlagsFromCacheByFolder = function (sFolderFullName)
+ CacheStorage.prototype.clearMessageFlagsFromCacheByFolder = function (sFolderFullName)
{
this.oMessageFlagsCache[sFolderFullName] = {};
};
@@ -10681,7 +10376,7 @@ module.exports = window;
/**
* @param {(MessageModel|null)} oMessage
*/
- WebMailCacheStorage.prototype.initMessageFlagsFromCache = function (oMessage)
+ CacheStorage.prototype.initMessageFlagsFromCache = function (oMessage)
{
if (oMessage)
{
@@ -10722,7 +10417,7 @@ module.exports = window;
/**
* @param {(MessageModel|null)} oMessage
*/
- WebMailCacheStorage.prototype.storeMessageFlagsToCache = function (oMessage)
+ CacheStorage.prototype.storeMessageFlagsToCache = function (oMessage)
{
if (oMessage)
{
@@ -10738,7 +10433,7 @@ module.exports = window;
* @param {string} sUid
* @param {Array} aFlags
*/
- WebMailCacheStorage.prototype.storeMessageFlagsToCacheByFolderAndUid = function (sFolder, sUid, aFlags)
+ CacheStorage.prototype.storeMessageFlagsToCacheByFolderAndUid = function (sFolder, sUid, aFlags)
{
if (Utils.isArray(aFlags) && 0 < aFlags.length)
{
@@ -10746,10 +10441,10 @@ module.exports = window;
}
};
- module.exports = new WebMailCacheStorage();
+ module.exports = new CacheStorage();
}(module, require));
-},{"./AppSettings.js":54,"Enums":6,"LinkBuilder":9,"Utils":11,"_":26}],59:[function(require,module,exports){
+},{"Enums":6,"LinkBuilder":9,"Storage:Settings":59,"Utils":11,"_":26}],55:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -10771,22 +10466,22 @@ module.exports = window;
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- AppSettings = require('./AppSettings.js'),
- Cache = require('./WebMailCacheStorage.js'),
+ Settings = require('Storage:Settings'),
+ Cache = require('Storage:RainLoop:Cache'),
- kn = require('kn'),
+ kn = require('App:Knoin'),
- MessageModel = require('../Models/MessageModel.js'),
+ MessageModel = require('Model:Message'),
- LocalStorage = require('./LocalStorage.js'),
- AbstractData = require('./AbstractData.js')
+ LocalStorage = require('Storage:LocalStorage'),
+ AbstractData = require('Storage:Abstract:Data')
;
/**
* @constructor
* @extends AbstractData
*/
- function WebMailDataStorage()
+ function DataStorage()
{
AbstractData.call(this);
@@ -10879,11 +10574,11 @@ module.exports = window;
this.contactsSyncUser = ko.observable('');
this.contactsSyncPass = ko.observable('');
- this.allowContactsSync = ko.observable(!!AppSettings.settingsGet('ContactsSyncIsAllowed'));
- this.enableContactsSync = ko.observable(!!AppSettings.settingsGet('EnableContactsSync'));
- this.contactsSyncUrl = ko.observable(AppSettings.settingsGet('ContactsSyncUrl'));
- this.contactsSyncUser = ko.observable(AppSettings.settingsGet('ContactsSyncUser'));
- this.contactsSyncPass = ko.observable(AppSettings.settingsGet('ContactsSyncPassword'));
+ this.allowContactsSync = ko.observable(!!Settings.settingsGet('ContactsSyncIsAllowed'));
+ this.enableContactsSync = ko.observable(!!Settings.settingsGet('EnableContactsSync'));
+ this.contactsSyncUrl = ko.observable(Settings.settingsGet('ContactsSyncUrl'));
+ this.contactsSyncUser = ko.observable(Settings.settingsGet('ContactsSyncUser'));
+ this.contactsSyncPass = ko.observable(Settings.settingsGet('ContactsSyncPassword'));
// folders
this.namespace = '';
@@ -11227,9 +10922,9 @@ module.exports = window;
this.purgeMessageBodyCacheThrottle = _.throttle(this.purgeMessageBodyCache, 1000 * 30);
}
- _.extend(WebMailDataStorage.prototype, AbstractData.prototype);
+ _.extend(DataStorage.prototype, AbstractData.prototype);
- WebMailDataStorage.prototype.purgeMessageBodyCache = function()
+ DataStorage.prototype.purgeMessageBodyCache = function()
{
var
iCount = 0,
@@ -11261,32 +10956,32 @@ module.exports = window;
}
};
- WebMailDataStorage.prototype.populateDataOnStart = function()
+ DataStorage.prototype.populateDataOnStart = function()
{
AbstractData.prototype.populateDataOnStart.call(this);
- this.accountEmail(AppSettings.settingsGet('Email'));
- this.accountIncLogin(AppSettings.settingsGet('IncLogin'));
- this.accountOutLogin(AppSettings.settingsGet('OutLogin'));
- this.projectHash(AppSettings.settingsGet('ProjectHash'));
+ this.accountEmail(Settings.settingsGet('Email'));
+ this.accountIncLogin(Settings.settingsGet('IncLogin'));
+ this.accountOutLogin(Settings.settingsGet('OutLogin'));
+ this.projectHash(Settings.settingsGet('ProjectHash'));
- this.defaultIdentityID(AppSettings.settingsGet('DefaultIdentityID'));
+ this.defaultIdentityID(Settings.settingsGet('DefaultIdentityID'));
- this.displayName(AppSettings.settingsGet('DisplayName'));
- this.replyTo(AppSettings.settingsGet('ReplyTo'));
- this.signature(AppSettings.settingsGet('Signature'));
- this.signatureToAll(!!AppSettings.settingsGet('SignatureToAll'));
- this.enableTwoFactor(!!AppSettings.settingsGet('EnableTwoFactor'));
+ this.displayName(Settings.settingsGet('DisplayName'));
+ this.replyTo(Settings.settingsGet('ReplyTo'));
+ this.signature(Settings.settingsGet('Signature'));
+ this.signatureToAll(!!Settings.settingsGet('SignatureToAll'));
+ this.enableTwoFactor(!!Settings.settingsGet('EnableTwoFactor'));
this.lastFoldersHash = LocalStorage.get(Enums.ClientSideKeyName.FoldersLashHash) || '';
- this.remoteSuggestions = !!AppSettings.settingsGet('RemoteSuggestions');
+ this.remoteSuggestions = !!Settings.settingsGet('RemoteSuggestions');
- this.devEmail = AppSettings.settingsGet('DevEmail');
- this.devPassword = AppSettings.settingsGet('DevPassword');
+ this.devEmail = Settings.settingsGet('DevEmail');
+ this.devPassword = Settings.settingsGet('DevPassword');
};
- WebMailDataStorage.prototype.initUidNextAndNewMessages = function (sFolder, sUidNext, aNewMessages)
+ DataStorage.prototype.initUidNextAndNewMessages = function (sFolder, sUidNext, aNewMessages)
{
if ('INBOX' === sFolder && Utils.isNormal(sUidNext) && sUidNext !== '')
{
@@ -11361,7 +11056,7 @@ module.exports = window;
}
};
- WebMailDataStorage.prototype.hideMessageBodies = function ()
+ DataStorage.prototype.hideMessageBodies = function ()
{
var oMessagesBodiesDom = this.messagesBodiesDom();
if (oMessagesBodiesDom)
@@ -11374,7 +11069,7 @@ module.exports = window;
* @param {boolean=} bBoot = false
* @returns {Array}
*/
- WebMailDataStorage.prototype.getNextFolderNames = function (bBoot)
+ DataStorage.prototype.getNextFolderNames = function (bBoot)
{
bBoot = Utils.isUnd(bBoot) ? false : !!bBoot;
@@ -11437,7 +11132,7 @@ module.exports = window;
* @param {string=} sToFolderFullNameRaw = ''
* @param {bCopy=} bCopy = false
*/
- WebMailDataStorage.prototype.removeMessagesFromList = function (
+ DataStorage.prototype.removeMessagesFromList = function (
sFromFolderFullNameRaw, aUidForRemove, sToFolderFullNameRaw, bCopy)
{
sToFolderFullNameRaw = Utils.isNormal(sToFolderFullNameRaw) ? sToFolderFullNameRaw : '';
@@ -11531,7 +11226,7 @@ module.exports = window;
}
};
- WebMailDataStorage.prototype.setMessage = function (oData, bCached)
+ DataStorage.prototype.setMessage = function (oData, bCached)
{
var
bIsHtml = false,
@@ -11691,21 +11386,21 @@ module.exports = window;
* @param {Array} aList
* @returns {string}
*/
- WebMailDataStorage.prototype.calculateMessageListHash = function (aList)
+ DataStorage.prototype.calculateMessageListHash = function (aList)
{
return _.map(aList, function (oMessage) {
return '' + oMessage.hash + '_' + oMessage.threadsLen() + '_' + oMessage.flagHash();
}).join('|');
};
- WebMailDataStorage.prototype.findPublicKeyByHex = function (sHash)
+ DataStorage.prototype.findPublicKeyByHex = function (sHash)
{
return _.find(this.openpgpkeysPublic(), function (oItem) {
return oItem && sHash === oItem.id;
});
};
- WebMailDataStorage.prototype.findPublicKeysByEmail = function (sEmail)
+ DataStorage.prototype.findPublicKeysByEmail = function (sEmail)
{
return _.compact(_.map(this.openpgpkeysPublic(), function (oItem) {
@@ -11733,7 +11428,7 @@ module.exports = window;
* @param {string=} sPassword
* @returns {?}
*/
- WebMailDataStorage.prototype.findPrivateKeyByEmail = function (sEmail, sPassword)
+ DataStorage.prototype.findPrivateKeyByEmail = function (sEmail, sPassword)
{
var
oPrivateKey = null,
@@ -11770,16 +11465,305 @@ module.exports = window;
* @param {string=} sPassword
* @returns {?}
*/
- WebMailDataStorage.prototype.findSelfPrivateKey = function (sPassword)
+ DataStorage.prototype.findSelfPrivateKey = function (sPassword)
{
return this.findPrivateKeyByEmail(this.accountEmail(), sPassword);
};
- module.exports = new WebMailDataStorage();
+ module.exports = new DataStorage();
}(module, require));
-},{"$":21,"$div":12,"../Models/MessageModel.js":35,"./AbstractData.js":51,"./AppSettings.js":54,"./LocalStorage.js":55,"./WebMailCacheStorage.js":58,"Consts":5,"Enums":6,"Globals":8,"LinkBuilder":9,"NotificationClass":18,"Utils":11,"_":26,"kn":28,"ko":23,"moment":24,"window":27}],60:[function(require,module,exports){
+},{"$":21,"$div":12,"App:Knoin":28,"Consts":5,"Enums":6,"Globals":8,"LinkBuilder":9,"Model:Message":35,"NotificationClass":18,"Storage:Abstract:Data":50,"Storage:LocalStorage":56,"Storage:RainLoop:Cache":54,"Storage:Settings":59,"Utils":11,"_":26,"ko":23,"moment":24,"window":27}],56:[function(require,module,exports){
+/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
+
+(function (module, require) {
+
+ 'use strict';
+
+ /**
+ * @constructor
+ */
+ function LocalStorage()
+ {
+ var
+ _ = require('_'),
+ NextStorageDriver = _.find([
+ require('Storage:LocalStorage:Cookie'),
+ require('Storage:LocalStorage:LocalStorage')
+ ], function (NextStorageDriver) {
+ return NextStorageDriver.supported();
+ })
+ ;
+
+ this.oDriver = null;
+
+ if (NextStorageDriver)
+ {
+ this.oDriver = new NextStorageDriver();
+ }
+ }
+
+ LocalStorage.prototype.oDriver = null;
+
+ /**
+ * @param {number} iKey
+ * @param {*} mData
+ * @return {boolean}
+ */
+ LocalStorage.prototype.set = function (iKey, mData)
+ {
+ return this.oDriver ? this.oDriver.set('p' + iKey, mData) : false;
+ };
+
+ /**
+ * @param {number} iKey
+ * @return {*}
+ */
+ LocalStorage.prototype.get = function (iKey)
+ {
+ return this.oDriver ? this.oDriver.get('p' + iKey) : null;
+ };
+
+ module.exports = new LocalStorage();
+
+}(module, require));
+},{"Storage:LocalStorage:Cookie":57,"Storage:LocalStorage:LocalStorage":58,"_":26}],57:[function(require,module,exports){
+/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
+
+(function (module, require) {
+
+ 'use strict';
+
+ var
+ $ = require('$'),
+ JSON = require('JSON'),
+
+ Consts = require('Consts'),
+ Utils = require('Utils')
+ ;
+
+ /**
+ * @constructor
+ */
+ function CookieDriver()
+ {
+
+ }
+
+ CookieDriver.supported = function ()
+ {
+ return true;
+ };
+
+ /**
+ * @param {string} sKey
+ * @param {*} mData
+ * @returns {boolean}
+ */
+ CookieDriver.prototype.set = function (sKey, mData)
+ {
+ var
+ mCokieValue = $.cookie(Consts.Values.ClientSideCookieIndexName),
+ bResult = false,
+ mResult = null
+ ;
+
+ try
+ {
+ mResult = null === mCokieValue ? null : JSON.parse(mCokieValue);
+ if (!mResult)
+ {
+ mResult = {};
+ }
+
+ mResult[sKey] = mData;
+ $.cookie(Consts.Values.ClientSideCookieIndexName, JSON.stringify(mResult), {
+ 'expires': 30
+ });
+
+ bResult = true;
+ }
+ catch (oException) {}
+
+ return bResult;
+ };
+
+ /**
+ * @param {string} sKey
+ * @returns {*}
+ */
+ CookieDriver.prototype.get = function (sKey)
+ {
+ var
+ mCokieValue = $.cookie(Consts.Values.ClientSideCookieIndexName),
+ mResult = null
+ ;
+
+ try
+ {
+ mResult = null === mCokieValue ? null : JSON.parse(mCokieValue);
+ if (mResult && !Utils.isUnd(mResult[sKey]))
+ {
+ mResult = mResult[sKey];
+ }
+ else
+ {
+ mResult = null;
+ }
+ }
+ catch (oException) {}
+
+ return mResult;
+ };
+
+ module.exports = CookieDriver;
+
+}(module, require));
+},{"$":21,"Consts":5,"JSON":17,"Utils":11}],58:[function(require,module,exports){
+/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
+
+(function (module, require) {
+
+ 'use strict';
+
+ var
+ window = require('window'),
+ JSON = require('JSON'),
+
+ Consts = require('Consts'),
+ Utils = require('Utils')
+ ;
+
+ /**
+ * @constructor
+ */
+ function LocalStorageDriver()
+ {
+ }
+
+ LocalStorageDriver.supported = function ()
+ {
+ return !!window.localStorage;
+ };
+
+ /**
+ * @param {string} sKey
+ * @param {*} mData
+ * @returns {boolean}
+ */
+ LocalStorageDriver.prototype.set = function (sKey, mData)
+ {
+ var
+ mCookieValue = window.localStorage[Consts.Values.ClientSideCookieIndexName] || null,
+ bResult = false,
+ mResult = null
+ ;
+
+ try
+ {
+ mResult = null === mCookieValue ? null : JSON.parse(mCookieValue);
+ if (!mResult)
+ {
+ mResult = {};
+ }
+
+ mResult[sKey] = mData;
+ window.localStorage[Consts.Values.ClientSideCookieIndexName] = JSON.stringify(mResult);
+
+ bResult = true;
+ }
+ catch (oException) {}
+
+ return bResult;
+ };
+
+ /**
+ * @param {string} sKey
+ * @returns {*}
+ */
+ LocalStorageDriver.prototype.get = function (sKey)
+ {
+ var
+ mCokieValue = window.localStorage[Consts.Values.ClientSideCookieIndexName] || null,
+ mResult = null
+ ;
+
+ try
+ {
+ mResult = null === mCokieValue ? null : JSON.parse(mCokieValue);
+ if (mResult && !Utils.isUnd(mResult[sKey]))
+ {
+ mResult = mResult[sKey];
+ }
+ else
+ {
+ mResult = null;
+ }
+ }
+ catch (oException) {}
+
+ return mResult;
+ };
+
+ module.exports = LocalStorageDriver;
+
+}(module, require));
+},{"Consts":5,"JSON":17,"Utils":11,"window":27}],59:[function(require,module,exports){
+/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
+
+(function (module, require) {
+
+ 'use strict';
+
+ var
+ Utils = require('Utils')
+ ;
+
+ /**
+ * @constructor
+ */
+ function SettingsStorage()
+ {
+ this.oSettings = require('AppData');
+ this.oSettings = Utils.isNormal(this.oSettings) ? this.oSettings : {};
+ }
+
+ SettingsStorage.prototype.oSettings = null;
+
+ /**
+ * @param {string} sName
+ * @return {?}
+ */
+ SettingsStorage.prototype.settingsGet = function (sName)
+ {
+ return Utils.isUnd(this.oSettings[sName]) ? null : this.oSettings[sName];
+ };
+
+ /**
+ * @param {string} sName
+ * @param {?} mValue
+ */
+ SettingsStorage.prototype.settingsSet = function (sName, mValue)
+ {
+ this.oSettings[sName] = mValue;
+ };
+
+ /**
+ * @param {string} sName
+ * @return {boolean}
+ */
+ SettingsStorage.prototype.capa = function (sName)
+ {
+ var mCapa = this.settingsGet('Capa');
+ return Utils.isArray(mCapa) && Utils.isNormal(sName) && -1 < Utils.inArray(sName, mCapa);
+ };
+
+
+ module.exports = new SettingsStorage();
+
+}(module, require));
+},{"AppData":16,"Utils":11}],60:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -11793,10 +11777,10 @@ module.exports = window;
Enums = require('Enums'),
Utils = require('Utils'),
- Remote = require('../Storages/AdminAjaxRemoteStorage.js'),
+ Remote = require('Storage:Admin:Remote'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -11846,8 +11830,7 @@ module.exports = window;
{
if (oData.Result)
{
- var App = require('../Apps/AdminApp.js');
- App.loginAndLogoutReload();
+ require('App:Admin').loginAndLogoutReload();
}
else if (oData.ErrorCode)
{
@@ -11902,7 +11885,7 @@ module.exports = window;
module.exports = AdminLoginViewModel;
}(module, require));
-},{"../Apps/AdminApp.js":3,"../Storages/AdminAjaxRemoteStorage.js":52,"Enums":6,"KnoinAbstractViewModel":31,"Utils":11,"_":26,"kn":28,"ko":23}],61:[function(require,module,exports){
+},{"App:Admin":3,"App:Knoin":28,"Enums":6,"Knoin:AbstractViewModel":31,"Storage:Admin:Remote":53,"Utils":11,"_":26,"ko":23}],61:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -11910,9 +11893,9 @@ module.exports = window;
'use strict';
var
- kn = require('kn'),
+ kn = require('App:Knoin'),
Globals = require('Globals'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -11943,7 +11926,7 @@ module.exports = window;
}(module, require));
-},{"Globals":8,"KnoinAbstractViewModel":31,"kn":28}],62:[function(require,module,exports){
+},{"App:Knoin":28,"Globals":8,"Knoin:AbstractViewModel":31}],62:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -11953,12 +11936,12 @@ module.exports = window;
var
ko = require('ko'),
- AppSettings = require('../Storages/AppSettings.js'),
- Data = require('../Storages/AdminDataStorage.js'),
- Remote = require('../Storages/AdminAjaxRemoteStorage.js'),
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:Admin:Data'),
+ Remote = require('Storage:Admin:Remote'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -11969,8 +11952,8 @@ module.exports = window;
{
KnoinAbstractViewModel.call(this, 'Right', 'AdminPane');
- this.adminDomain = ko.observable(AppSettings.settingsGet('AdminDomain'));
- this.version = ko.observable(AppSettings.settingsGet('Version'));
+ this.adminDomain = ko.observable(Settings.settingsGet('AdminDomain'));
+ this.version = ko.observable(Settings.settingsGet('Version'));
this.adminManLoadingVisibility = Data.adminManLoadingVisibility;
@@ -11982,15 +11965,14 @@ module.exports = window;
AdminPaneViewModel.prototype.logoutClick = function ()
{
Remote.adminLogout(function () {
- var App = require('../Apps/AdminApp.js');
- App.loginAndLogoutReload();
+ require('App:Admin').loginAndLogoutReload();
});
};
module.exports = AdminPaneViewModel;
}(module, require));
-},{"../Apps/AdminApp.js":3,"../Storages/AdminAjaxRemoteStorage.js":52,"../Storages/AdminDataStorage.js":53,"../Storages/AppSettings.js":54,"KnoinAbstractViewModel":31,"kn":28,"ko":23}],63:[function(require,module,exports){
+},{"App:Admin":3,"App:Knoin":28,"Knoin:AbstractViewModel":31,"Storage:Admin:Data":52,"Storage:Admin:Remote":53,"Storage:Settings":59,"ko":23}],63:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -12003,12 +11985,12 @@ module.exports = window;
Enums = require('Enums'),
Utils = require('Utils'),
- AppSettings = require('../../Storages/AppSettings.js'),
- Data = require('../../Storages/AdminDataStorage.js'),
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js'),
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:Admin:Data'),
+ Remote = require('Storage:Admin:Remote'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -12101,7 +12083,7 @@ module.exports = window;
PopupsActivateViewModel.prototype.onShow = function ()
{
- this.domain(AppSettings.settingsGet('AdminDomain'));
+ this.domain(Settings.settingsGet('AdminDomain'));
if (!this.activateProcess())
{
this.key('');
@@ -12131,7 +12113,7 @@ module.exports = window;
module.exports = PopupsActivateViewModel;
}(module, require));
-},{"../../Storages/AdminAjaxRemoteStorage.js":52,"../../Storages/AdminDataStorage.js":53,"../../Storages/AppSettings.js":54,"Enums":6,"KnoinAbstractViewModel":31,"Utils":11,"kn":28,"ko":23}],64:[function(require,module,exports){
+},{"App:Knoin":28,"Enums":6,"Knoin:AbstractViewModel":31,"Storage:Admin:Data":52,"Storage:Admin:Remote":53,"Storage:Settings":59,"Utils":11,"ko":23}],64:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -12145,8 +12127,8 @@ module.exports = window;
Enums = require('Enums'),
Utils = require('Utils'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -12262,7 +12244,7 @@ module.exports = window;
module.exports = PopupsAskViewModel;
}(module, require));
-},{"Enums":6,"KnoinAbstractViewModel":31,"Utils":11,"key":22,"kn":28,"ko":23}],65:[function(require,module,exports){
+},{"App:Knoin":28,"Enums":6,"Knoin:AbstractViewModel":31,"Utils":11,"key":22,"ko":23}],65:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -12277,10 +12259,10 @@ module.exports = window;
Consts = require('Consts'),
Utils = require('Utils'),
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js'),
+ Remote = require('Storage:Admin:Remote'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -12500,9 +12482,7 @@ module.exports = window;
{
if (oData.Result)
{
- var App = require('../../Apps/AdminApp.js');
- App.reloadDomainList();
-
+ require('App:Admin').reloadDomainList();
this.closeCommand();
}
else if (Enums.Notification.DomainAlreadyExists === oData.ErrorCode)
@@ -12583,7 +12563,7 @@ module.exports = window;
module.exports = PopupsDomainViewModel;
}(module, require));
-},{"../../Apps/AdminApp.js":3,"../../Storages/AdminAjaxRemoteStorage.js":52,"Consts":5,"Enums":6,"KnoinAbstractViewModel":31,"Utils":11,"_":26,"kn":28,"ko":23}],66:[function(require,module,exports){
+},{"App:Admin":3,"App:Knoin":28,"Consts":5,"Enums":6,"Knoin:AbstractViewModel":31,"Storage:Admin:Remote":53,"Utils":11,"_":26,"ko":23}],66:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -12596,10 +12576,10 @@ module.exports = window;
Utils = require('Utils'),
- Data = require('../../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -12665,7 +12645,7 @@ module.exports = window;
module.exports = PopupsLanguagesViewModel;
}(module, require));
-},{"../../Storages/WebMailDataStorage.js":59,"KnoinAbstractViewModel":31,"Utils":11,"_":26,"kn":28,"ko":23}],67:[function(require,module,exports){
+},{"App:Knoin":28,"Knoin:AbstractViewModel":31,"Storage:RainLoop:Data":55,"Utils":11,"_":26,"ko":23}],67:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -12680,12 +12660,10 @@ module.exports = window;
Enums = require('Enums'),
Utils = require('Utils'),
- Remote = require('../../Storages/AdminAjaxRemoteStorage.js'),
+ Remote = require('Storage:Admin:Remote'),
- PopupsAskViewModel = require('./PopupsAskViewModel.js'),
-
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -12807,7 +12785,11 @@ module.exports = window;
PopupsPluginViewModel.prototype.tryToClosePopup = function ()
{
- var self = this;
+ var
+ self = this,
+ PopupsAskViewModel = require('View:Popup:Ask')
+ ;
+
if (!kn.isPopupVisible(PopupsAskViewModel))
{
kn.showScreenPopup(PopupsAskViewModel, [Utils.i18n('POPUPS_ASK/DESC_WANT_CLOSE_THIS_WINDOW'), function () {
@@ -12833,4 +12815,4 @@ module.exports = window;
module.exports = PopupsPluginViewModel;
}(module, require));
-},{"../../Storages/AdminAjaxRemoteStorage.js":52,"./PopupsAskViewModel.js":64,"Enums":6,"KnoinAbstractViewModel":31,"Utils":11,"_":26,"key":22,"kn":28,"ko":23}]},{},[1]);
+},{"App:Knoin":28,"Enums":6,"Knoin:AbstractViewModel":31,"Storage:Admin:Remote":53,"Utils":11,"View:Popup:Ask":64,"_":26,"key":22,"ko":23}]},{},[1]);
diff --git a/rainloop/v/0.0.0/static/js/admin.min.js b/rainloop/v/0.0.0/static/js/admin.min.js
index 432a41e9f..c97668637 100644
--- a/rainloop/v/0.0.0/static/js/admin.min.js
+++ b/rainloop/v/0.0.0/static/js/admin.min.js
@@ -1,6 +1,6 @@
-!function e(t,i,s){function n(a,r){if(!i[a]){if(!t[a]){var l="function"==typeof require&&require;if(!r&&l)return l(a,!0);if(o)return o(a,!0);var c=new Error("Cannot find module '"+a+"'");throw c.code="MODULE_NOT_FOUND",c}var u=i[a]={exports:{}};t[a][0].call(u.exports,function(e){var i=t[a][1][e];return n(i?i:e)},u,u.exports,e,t,i,s)}return i[a].exports}for(var o="function"==typeof require&&require,a=0;a').appendTo("body"),r.on("error",function(t){t&&t.originalEvent&&t.originalEvent.message&&-1===u.inArray(t.originalEvent.message,["Script error.","Uncaught Error: Error calling method on NPObject."])&&e.jsError(u.emptyFunction,t.originalEvent.message,t.originalEvent.filename,t.originalEvent.lineno,o.location&&o.location.toString?o.location.toString():"",a.attr("class"),u.microtime()-c.now)}),l.on("keydown",function(e){e&&e.ctrlKey&&a.addClass("rl-ctrl-key-pressed")}).on("keyup",function(e){e&&!e.ctrlKey&&a.removeClass("rl-ctrl-key-pressed")})}var s=t("$"),n=t("_"),o=t("window"),a=t("$html"),r=t("$window"),l=t("$doc"),c=t("Globals"),u=t("Utils"),d=t("LinkBuilder"),p=t("Events"),h=t("../Storages/AppSettings.js"),g=t("KnoinAbstractBoot");n.extend(i.prototype,g.prototype),i.prototype.remote=function(){return null},i.prototype.data=function(){return null},i.prototype.setupSettings=function(){return!0},i.prototype.download=function(e){var t=null,i=null,s=o.navigator.userAgent.toLowerCase();return s&&(s.indexOf("chrome")>-1||s.indexOf("chrome")>-1)&&(i=o.document.createElement("a"),i.href=e,o.document.createEvent&&(t=o.document.createEvent("MouseEvents"),t&&t.initEvent&&i.dispatchEvent))?(t.initEvent("click",!0,!0),i.dispatchEvent(t),!0):(c.bMobileDevice?(o.open(e,"_self"),o.focus()):this.iframe.attr("src",e),!0)},i.prototype.setTitle=function(e){e=(u.isNormal(e)&&01&&(s=s.replace(/[\/]+$/,""),s+="/p"+t),""!==i&&(s=s.replace(/[\/]+$/,""),s+="/"+encodeURI(i)),s},i.prototype.phpInfo=function(){return this.sServer+"Info"},i.prototype.langLink=function(e){return this.sServer+"/Lang/0/"+encodeURI(e)+"/"+this.sVersion+"/"},i.prototype.exportContactsVcf=function(){return this.sServer+"/Raw/"+this.sSpecSuffix+"/ContactsVcf/"},i.prototype.exportContactsCsv=function(){return this.sServer+"/Raw/"+this.sSpecSuffix+"/ContactsCsv/"},i.prototype.emptyContactPic=function(){return this.sStaticPrefix+"css/images/empty-contact.png"},i.prototype.sound=function(e){return this.sStaticPrefix+"sounds/"+e},i.prototype.themePreviewLink=function(e){var t="rainloop/v/"+this.sVersion+"/";return"@custom"===e.substr(-7)&&(e=n.trim(e.substring(0,e.length-7)),t=""),t+"themes/"+encodeURI(e)+"/images/preview.png"},i.prototype.notificationMailIcon=function(){return this.sStaticPrefix+"css/images/icom-message-notification.png"},i.prototype.openPgpJs=function(){return this.sStaticPrefix+"js/openpgp.min.js"},i.prototype.socialGoogle=function(){return this.sServer+"SocialGoogle"+(""!==this.sSpecSuffix?"/"+this.sSpecSuffix+"/":"")},i.prototype.socialTwitter=function(){return this.sServer+"SocialTwitter"+(""!==this.sSpecSuffix?"/"+this.sSpecSuffix+"/":"")},i.prototype.socialFacebook=function(){return this.sServer+"SocialFacebook"+(""!==this.sSpecSuffix?"/"+this.sSpecSuffix+"/":"")},e.exports=new i}(t,e)},{"../Storages/AppSettings.js":54,Utils:11,window:27}],10:[function(e,t){!function(e,t){"use strict";var i={__boot:null,__remote:null,__data:null},s=t("_"),n=t("Utils"),o=t("../Storages/AppSettings.js");i.oViewModelsHooks={},i.oSimpleHooks={},i.regViewModelHook=function(e,t){t&&(t.__hookName=e)},i.addHook=function(e,t){n.isFunc(t)&&(n.isArray(i.oSimpleHooks[e])||(i.oSimpleHooks[e]=[]),i.oSimpleHooks[e].push(t))},i.runHook=function(e,t){n.isArray(i.oSimpleHooks[e])&&(t=t||[],s.each(i.oSimpleHooks[e],function(e){e.apply(null,t)}))},i.mainSettingsGet=function(e){return o.settingsGet(e)},i.remoteRequest=function(e,t,s,n,o,a){i.__remote&&i.__remote.defaultRequest(e,t,s,n,o,a)},i.settingsGet=function(e,t){var i=o.settingsGet("Plugins");return i=i&&!n.isUnd(i[e])?i[e]:null,i?n.isUnd(i[t])?null:i[t]:null},e.exports=i}(t,e)},{"../Storages/AppSettings.js":54,Utils:11,_:26}],11:[function(e,t){!function(e,t){"use strict";var i={},s=t("$"),n=t("_"),o=t("ko"),a=t("window"),r=t("$window"),l=t("$html"),c=t("$div"),u=t("$doc"),d=t("NotificationClass"),p=t("Enums"),h=t("Consts"),g=t("Globals");i.trim=s.trim,i.inArray=s.inArray,i.isArray=n.isArray,i.isFunc=n.isFunction,i.isUnd=n.isUndefined,i.isNull=n.isNull,i.emptyFunction=function(){},i.isNormal=function(e){return!i.isUnd(e)&&!i.isNull(e)},i.windowResize=n.debounce(function(e){i.isUnd(e)?r.resize():a.setTimeout(function(){r.resize()},e)},50),i.isPosNumeric=function(e,t){return i.isNormal(e)?(i.isUnd(t)?0:!t)?/^[1-9]+[0-9]*$/.test(e.toString()):/^[0-9]*$/.test(e.toString()):!1},i.pInt=function(e,t){var s=i.isNormal(e)&&""!==e?a.parseInt(e,10):t||0;return a.isNaN(s)?t||0:s},i.pString=function(e){return i.isNormal(e)?""+e:""},i.isNonEmptyArray=function(e){return i.isArray(e)&&0n;n++)s=i[n].split("="),t[a.decodeURIComponent(s[0])]=a.decodeURIComponent(s[1]);return t},i.rsaEncode=function(e,t,s,n){if(a.crypto&&a.crypto.getRandomValues&&a.RSAKey&&t&&s&&n){var o=new a.RSAKey;if(o.setPublic(n,s),e=o.encrypt(i.fakeMd5()+":"+e+":"+i.fakeMd5()),!1!==e)return"rsa:"+t+":"+e}return!1},i.rsaEncode.supported=!!(a.crypto&&a.crypto.getRandomValues&&a.RSAKey),i.exportPath=function(e,t,s){for(var n=null,o=e.split("."),r=s||a;o.length&&(n=o.shift());)o.length||i.isUnd(t)?r=r[n]?r[n]:r[n]={}:r[n]=t},i.pImport=function(e,t,i){e[t]=i},i.pExport=function(e,t,s){return i.isUnd(e[t])?s:e[t]},i.encodeHtml=function(e){return i.isNormal(e)?e.toString().replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'"):""},i.splitPlainText=function(e,t){var s="",n="",o=e,a=0,r=0;for(t=i.isUnd(t)?100:t;o.length>t;)n=o.substring(0,t),a=n.lastIndexOf(" "),r=n.lastIndexOf("\n"),-1!==r&&(a=r),-1===a&&(a=t),s+=n.substring(0,a)+"\n",o=o.substring(a+1);return s+o},i.timeOutAction=function(){var e={};return function(t,s,n){i.isUnd(e[t])&&(e[t]=0),a.clearTimeout(e[t]),e[t]=a.setTimeout(s,n)}}(),i.timeOutActionSecond=function(){var e={};return function(t,i,s){e[t]||(e[t]=a.setTimeout(function(){i(),e[t]=0},s))}}(),i.audio=function(){var e=!1;return function(t,i){if(!1===e)if(g.bIsiOSDevice)e=null;else{var s=!1,n=!1,o=a.Audio?new a.Audio:null;o&&o.canPlayType&&o.play?(s=""!==o.canPlayType('audio/mpeg; codecs="mp3"'),s||(n=""!==o.canPlayType('audio/ogg; codecs="vorbis"')),s||n?(e=o,e.preload="none",e.loop=!1,e.autoplay=!1,e.muted=!1,e.src=s?t:i):e=null):e=null}return e}}(),i.hos=function(e,t){return e&&a.Object&&a.Object.hasOwnProperty?a.Object.hasOwnProperty.call(e,t):!1},i.i18n=function(e,t,s){var n="",o=i.isUnd(g.oI18N[e])?i.isUnd(s)?e:s:g.oI18N[e];if(!i.isUnd(t)&&!i.isNull(t))for(n in t)i.hos(t,n)&&(o=o.replace("%"+n+"%",t[n]));return o},i.i18nToNode=function(e){n.defer(function(){s(".i18n",e).each(function(){var e=s(this),t="";t=e.data("i18n-text"),t?e.text(i.i18n(t)):(t=e.data("i18n-html"),t&&e.html(i.i18n(t)),t=e.data("i18n-placeholder"),t&&e.attr("placeholder",i.i18n(t)),t=e.data("i18n-title"),t&&e.attr("title",i.i18n(t)))})})},i.i18nReload=function(){a.rainloopI18N&&(g.oI18N=a.rainloopI18N||{},i.i18nToNode(u),g.langChangeTrigger(!g.langChangeTrigger())),a.rainloopI18N=null},i.initOnStartOrLangChange=function(e,t,i){e&&e.call(t),i?g.langChangeTrigger.subscribe(function(){e&&e.call(t),i.call(t)}):e&&g.langChangeTrigger.subscribe(e,t)},i.inFocus=function(){return a.document.activeElement?(i.isUnd(a.document.activeElement.__inFocusCache)&&(a.document.activeElement.__inFocusCache=s(a.document.activeElement).is("input,textarea,iframe,.cke_editable")),!!a.document.activeElement.__inFocusCache):!1},i.removeInFocus=function(){if(a.document&&a.document.activeElement&&a.document.activeElement.blur){var e=s(a.document.activeElement);e.is("input,textarea")&&a.document.activeElement.blur()}},i.removeSelection=function(){if(a&&a.getSelection){var e=a.getSelection();e&&e.removeAllRanges&&e.removeAllRanges()}else a.document&&a.document.selection&&a.document.selection.empty&&a.document.selection.empty()},i.replySubjectAdd=function(e,t){e=i.trim(e.toUpperCase()),t=i.trim(t.replace(/[\s]+/," "));var s=0,n="",o=!1,a="",r=[],l=[],c="RE"===e,u="FWD"===e,d=!u;if(""!==t){for(o=!1,l=t.split(":"),s=0;s0);return e.replace(/[\s]+/," ")},i._replySubjectAdd_=function(e,t,s){var n=null,o=i.trim(t);return o=null===(n=new a.RegExp("^"+e+"[\\s]?\\:(.*)$","gi").exec(t))||i.isUnd(n[1])?null===(n=new a.RegExp("^("+e+"[\\s]?[\\[\\(]?)([\\d]+)([\\]\\)]?[\\s]?\\:.*)$","gi").exec(t))||i.isUnd(n[1])||i.isUnd(n[2])||i.isUnd(n[3])?e+": "+t:n[1]+(i.pInt(n[2])+1)+n[3]:e+"[2]: "+n[1],o=o.replace(/[\s]+/g," "),o=(i.isUnd(s)?!0:s)?i.fixLongSubject(o):o},i._fixLongSubject_=function(e){var t=0,s=null;e=i.trim(e.replace(/[\s]+/," "));do s=/^Re(\[([\d]+)\]|):[\s]{0,3}Re(\[([\d]+)\]|):/gi.exec(e),(!s||i.isUnd(s[0]))&&(s=null),s&&(t=0,t+=i.isUnd(s[2])?1:0+i.pInt(s[2]),t+=i.isUnd(s[4])?1:0+i.pInt(s[4]),e=e.replace(/^Re(\[[\d]+\]|):[\s]{0,3}Re(\[[\d]+\]|):/gi,"Re"+(t>0?"["+t+"]":"")+":"));while(s);return e=e.replace(/[\s]+/," ")},i.roundNumber=function(e,t){return a.Math.round(e*a.Math.pow(10,t))/a.Math.pow(10,t)},i.friendlySize=function(e){return e=i.pInt(e),e>=1073741824?i.roundNumber(e/1073741824,1)+"GB":e>=1048576?i.roundNumber(e/1048576,1)+"MB":e>=1024?i.roundNumber(e/1024,0)+"KB":e+"B"},i.log=function(e){a.console&&a.console.log&&a.console.log(e)},i.getNotification=function(e,t){return e=i.pInt(e),p.Notification.ClientViewError===e&&t?t:i.isUnd(g.oNotificationI18N[e])?"":g.oNotificationI18N[e]},i.initNotificationLanguage=function(){var e=g.oNotificationI18N||{};e[p.Notification.InvalidToken]=i.i18n("NOTIFICATIONS/INVALID_TOKEN"),e[p.Notification.AuthError]=i.i18n("NOTIFICATIONS/AUTH_ERROR"),e[p.Notification.AccessError]=i.i18n("NOTIFICATIONS/ACCESS_ERROR"),e[p.Notification.ConnectionError]=i.i18n("NOTIFICATIONS/CONNECTION_ERROR"),e[p.Notification.CaptchaError]=i.i18n("NOTIFICATIONS/CAPTCHA_ERROR"),e[p.Notification.SocialFacebookLoginAccessDisable]=i.i18n("NOTIFICATIONS/SOCIAL_FACEBOOK_LOGIN_ACCESS_DISABLE"),e[p.Notification.SocialTwitterLoginAccessDisable]=i.i18n("NOTIFICATIONS/SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE"),e[p.Notification.SocialGoogleLoginAccessDisable]=i.i18n("NOTIFICATIONS/SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE"),e[p.Notification.DomainNotAllowed]=i.i18n("NOTIFICATIONS/DOMAIN_NOT_ALLOWED"),e[p.Notification.AccountNotAllowed]=i.i18n("NOTIFICATIONS/ACCOUNT_NOT_ALLOWED"),e[p.Notification.AccountTwoFactorAuthRequired]=i.i18n("NOTIFICATIONS/ACCOUNT_TWO_FACTOR_AUTH_REQUIRED"),e[p.Notification.AccountTwoFactorAuthError]=i.i18n("NOTIFICATIONS/ACCOUNT_TWO_FACTOR_AUTH_ERROR"),e[p.Notification.CouldNotSaveNewPassword]=i.i18n("NOTIFICATIONS/COULD_NOT_SAVE_NEW_PASSWORD"),e[p.Notification.CurrentPasswordIncorrect]=i.i18n("NOTIFICATIONS/CURRENT_PASSWORD_INCORRECT"),e[p.Notification.NewPasswordShort]=i.i18n("NOTIFICATIONS/NEW_PASSWORD_SHORT"),e[p.Notification.NewPasswordWeak]=i.i18n("NOTIFICATIONS/NEW_PASSWORD_WEAK"),e[p.Notification.NewPasswordForbidden]=i.i18n("NOTIFICATIONS/NEW_PASSWORD_FORBIDDENT"),e[p.Notification.ContactsSyncError]=i.i18n("NOTIFICATIONS/CONTACTS_SYNC_ERROR"),e[p.Notification.CantGetMessageList]=i.i18n("NOTIFICATIONS/CANT_GET_MESSAGE_LIST"),e[p.Notification.CantGetMessage]=i.i18n("NOTIFICATIONS/CANT_GET_MESSAGE"),e[p.Notification.CantDeleteMessage]=i.i18n("NOTIFICATIONS/CANT_DELETE_MESSAGE"),e[p.Notification.CantMoveMessage]=i.i18n("NOTIFICATIONS/CANT_MOVE_MESSAGE"),e[p.Notification.CantCopyMessage]=i.i18n("NOTIFICATIONS/CANT_MOVE_MESSAGE"),e[p.Notification.CantSaveMessage]=i.i18n("NOTIFICATIONS/CANT_SAVE_MESSAGE"),e[p.Notification.CantSendMessage]=i.i18n("NOTIFICATIONS/CANT_SEND_MESSAGE"),e[p.Notification.InvalidRecipients]=i.i18n("NOTIFICATIONS/INVALID_RECIPIENTS"),e[p.Notification.CantCreateFolder]=i.i18n("NOTIFICATIONS/CANT_CREATE_FOLDER"),e[p.Notification.CantRenameFolder]=i.i18n("NOTIFICATIONS/CANT_RENAME_FOLDER"),e[p.Notification.CantDeleteFolder]=i.i18n("NOTIFICATIONS/CANT_DELETE_FOLDER"),e[p.Notification.CantDeleteNonEmptyFolder]=i.i18n("NOTIFICATIONS/CANT_DELETE_NON_EMPTY_FOLDER"),e[p.Notification.CantSubscribeFolder]=i.i18n("NOTIFICATIONS/CANT_SUBSCRIBE_FOLDER"),e[p.Notification.CantUnsubscribeFolder]=i.i18n("NOTIFICATIONS/CANT_UNSUBSCRIBE_FOLDER"),e[p.Notification.CantSaveSettings]=i.i18n("NOTIFICATIONS/CANT_SAVE_SETTINGS"),e[p.Notification.CantSavePluginSettings]=i.i18n("NOTIFICATIONS/CANT_SAVE_PLUGIN_SETTINGS"),e[p.Notification.DomainAlreadyExists]=i.i18n("NOTIFICATIONS/DOMAIN_ALREADY_EXISTS"),e[p.Notification.CantInstallPackage]=i.i18n("NOTIFICATIONS/CANT_INSTALL_PACKAGE"),e[p.Notification.CantDeletePackage]=i.i18n("NOTIFICATIONS/CANT_DELETE_PACKAGE"),e[p.Notification.InvalidPluginPackage]=i.i18n("NOTIFICATIONS/INVALID_PLUGIN_PACKAGE"),e[p.Notification.UnsupportedPluginPackage]=i.i18n("NOTIFICATIONS/UNSUPPORTED_PLUGIN_PACKAGE"),e[p.Notification.LicensingServerIsUnavailable]=i.i18n("NOTIFICATIONS/LICENSING_SERVER_IS_UNAVAILABLE"),e[p.Notification.LicensingExpired]=i.i18n("NOTIFICATIONS/LICENSING_EXPIRED"),e[p.Notification.LicensingBanned]=i.i18n("NOTIFICATIONS/LICENSING_BANNED"),e[p.Notification.DemoSendMessageError]=i.i18n("NOTIFICATIONS/DEMO_SEND_MESSAGE_ERROR"),e[p.Notification.AccountAlreadyExists]=i.i18n("NOTIFICATIONS/ACCOUNT_ALREADY_EXISTS"),e[p.Notification.MailServerError]=i.i18n("NOTIFICATIONS/MAIL_SERVER_ERROR"),e[p.Notification.InvalidInputArgument]=i.i18n("NOTIFICATIONS/INVALID_INPUT_ARGUMENT"),e[p.Notification.UnknownNotification]=i.i18n("NOTIFICATIONS/UNKNOWN_ERROR"),e[p.Notification.UnknownError]=i.i18n("NOTIFICATIONS/UNKNOWN_ERROR")
-},i.getUploadErrorDescByCode=function(e){var t="";switch(i.pInt(e)){case p.UploadErrorCode.FileIsTooBig:t=i.i18n("UPLOAD/ERROR_FILE_IS_TOO_BIG");break;case p.UploadErrorCode.FilePartiallyUploaded:t=i.i18n("UPLOAD/ERROR_FILE_PARTIALLY_UPLOADED");break;case p.UploadErrorCode.FileNoUploaded:t=i.i18n("UPLOAD/ERROR_NO_FILE_UPLOADED");break;case p.UploadErrorCode.MissingTempFolder:t=i.i18n("UPLOAD/ERROR_MISSING_TEMP_FOLDER");break;case p.UploadErrorCode.FileOnSaveingError:t=i.i18n("UPLOAD/ERROR_ON_SAVING_FILE");break;case p.UploadErrorCode.FileType:t=i.i18n("UPLOAD/ERROR_FILE_TYPE");break;default:t=i.i18n("UPLOAD/ERROR_UNKNOWN")}return t},i.delegateRun=function(e,t,s,o){e&&e[t]&&(o=i.pInt(o),0>=o?e[t].apply(e,i.isArray(s)?s:[]):n.delay(function(){e[t].apply(e,i.isArray(s)?s:[])},o))},i.killCtrlAandS=function(e){if(e=e||a.event,e&&e.ctrlKey&&!e.shiftKey&&!e.altKey){var t=e.target||e.srcElement,i=e.keyCode||e.which;if(i===p.EventKeyCode.S)return void e.preventDefault();if(t&&t.tagName&&t.tagName.match(/INPUT|TEXTAREA/i))return;i===p.EventKeyCode.A&&(a.getSelection?a.getSelection().removeAllRanges():a.document.selection&&a.document.selection.clear&&a.document.selection.clear(),e.preventDefault())}},i.createCommand=function(e,t,s){var n=t?function(){return n&&n.canExecute&&n.canExecute()&&t.apply(e,Array.prototype.slice.call(arguments)),!1}:function(){};return n.enabled=o.observable(!0),s=i.isUnd(s)?!0:s,n.canExecute=o.computed(i.isFunc(s)?function(){return n.enabled()&&s.call(e)}:function(){return n.enabled()&&!!s}),n},i.initDataConstructorBySettings=function(e){e.editorDefaultType=o.observable(p.EditorDefaultType.Html),e.showImages=o.observable(!1),e.interfaceAnimation=o.observable(p.InterfaceAnimation.Full),e.contactsAutosave=o.observable(!1),g.sAnimationType=p.InterfaceAnimation.Full,e.capaThemes=o.observable(!1),e.allowLanguagesOnSettings=o.observable(!0),e.allowLanguagesOnLogin=o.observable(!0),e.useLocalProxyForExternalImages=o.observable(!1),e.desktopNotifications=o.observable(!1),e.useThreads=o.observable(!0),e.replySameFolder=o.observable(!0),e.useCheckboxesInList=o.observable(!0),e.layout=o.observable(p.Layout.SidePreview),e.usePreviewPane=o.computed(function(){return p.Layout.NoPreview!==e.layout()}),e.interfaceAnimation.subscribe(function(e){if(g.bMobileDevice||e===p.InterfaceAnimation.None)l.removeClass("rl-anim rl-anim-full").addClass("no-rl-anim"),g.sAnimationType=p.InterfaceAnimation.None;else switch(e){case p.InterfaceAnimation.Full:l.removeClass("no-rl-anim").addClass("rl-anim rl-anim-full"),g.sAnimationType=e;break;case p.InterfaceAnimation.Normal:l.removeClass("no-rl-anim rl-anim-full").addClass("rl-anim"),g.sAnimationType=e}}),e.interfaceAnimation.valueHasMutated(),e.desktopNotificationsPermisions=o.computed(function(){e.desktopNotifications();var t=p.DesktopNotifications.NotSupported;if(d&&d.permission)switch(d.permission.toLowerCase()){case"granted":t=p.DesktopNotifications.Allowed;break;case"denied":t=p.DesktopNotifications.Denied;break;case"default":t=p.DesktopNotifications.NotAllowed}else a.webkitNotifications&&a.webkitNotifications.checkPermission&&(t=a.webkitNotifications.checkPermission());return t}),e.useDesktopNotifications=o.computed({read:function(){return e.desktopNotifications()&&p.DesktopNotifications.Allowed===e.desktopNotificationsPermisions()},write:function(t){if(t){var i=e.desktopNotificationsPermisions();p.DesktopNotifications.Allowed===i?e.desktopNotifications(!0):p.DesktopNotifications.NotAllowed===i?d.requestPermission(function(){e.desktopNotifications.valueHasMutated(),p.DesktopNotifications.Allowed===e.desktopNotificationsPermisions()?e.desktopNotifications()?e.desktopNotifications.valueHasMutated():e.desktopNotifications(!0):e.desktopNotifications()?e.desktopNotifications(!1):e.desktopNotifications.valueHasMutated()}):e.desktopNotifications(!1)}else e.desktopNotifications(!1)}}),e.language=o.observable(""),e.languages=o.observableArray([]),e.mainLanguage=o.computed({read:e.language,write:function(t){t!==e.language()?-1=t.diff(s,"hours")?n:t.format("L")===s.format("L")?i.i18n("MESSAGE_LIST/TODAY_AT",{TIME:s.format("LT")}):t.clone().subtract("days",1).format("L")===s.format("L")?i.i18n("MESSAGE_LIST/YESTERDAY_AT",{TIME:s.format("LT")}):s.format(t.year()===s.year()?"D MMM.":"LL")},e)},i.initBlockquoteSwitcher=function(e){if(e){var t=s("blockquote:not(.rl-bq-switcher)",e).filter(function(){return 0===s(this).parent().closest("blockquote",e).length});t&&0100)&&(e.addClass("rl-bq-switcher hidden-bq"),s('').insertBefore(e).click(function(){e.toggleClass("hidden-bq"),i.windowResize()}).after("
").before("
"))})}},i.removeBlockquoteSwitcher=function(e){e&&(s(e).find("blockquote.rl-bq-switcher").each(function(){s(this).removeClass("rl-bq-switcher hidden-bq")}),s(e).find(".rlBlockquoteSwitcher").each(function(){s(this).remove()}))},i.toggleMessageBlockquote=function(e){e&&e.find(".rlBlockquoteSwitcher").click()},i.convertThemeName=function(e){return"@custom"===e.substr(-7)&&(e=i.trim(e.substring(0,e.length-7))),i.trim(e.replace(/[^a-zA-Z]+/g," ").replace(/([A-Z])/g," $1").replace(/[\s]+/g," "))},i.quoteName=function(e){return e.replace(/["]/g,'\\"')},i.microtime=function(){return(new Date).getTime()},i.convertLangName=function(e,t){return i.i18n("LANGS_NAMES"+(!0===t?"_EN":"")+"/LANG_"+e.toUpperCase().replace(/[^a-zA-Z0-9]+/,"_"),null,e)},i.fakeMd5=function(e){var t="",s="0123456789abcdefghijklmnopqrstuvwxyz";for(e=i.isUnd(e)?32:i.pInt(e);t.length>>32-t}function i(e,t){var i,s,n,o,a;return n=2147483648&e,o=2147483648&t,i=1073741824&e,s=1073741824&t,a=(1073741823&e)+(1073741823&t),i&s?2147483648^a^n^o:i|s?1073741824&a?3221225472^a^n^o:1073741824^a^n^o:a^n^o}function s(e,t,i){return e&t|~e&i}function n(e,t,i){return e&i|t&~i}function o(e,t,i){return e^t^i}function a(e,t,i){return t^(e|~i)}function r(e,n,o,a,r,l,c){return e=i(e,i(i(s(n,o,a),r),c)),i(t(e,l),n)}function l(e,s,o,a,r,l,c){return e=i(e,i(i(n(s,o,a),r),c)),i(t(e,l),s)}function c(e,s,n,a,r,l,c){return e=i(e,i(i(o(s,n,a),r),c)),i(t(e,l),s)}function u(e,s,n,o,r,l,c){return e=i(e,i(i(a(s,n,o),r),c)),i(t(e,l),s)}function d(e){for(var t,i=e.length,s=i+8,n=(s-s%64)/64,o=16*(n+1),a=Array(o-1),r=0,l=0;i>l;)t=(l-l%4)/4,r=l%4*8,a[t]=a[t]|e.charCodeAt(l)<>>29,a}function p(e){var t,i,s="",n="";for(i=0;3>=i;i++)t=e>>>8*i&255,n="0"+t.toString(16),s+=n.substr(n.length-2,2);return s}function h(e){e=e.replace(/rn/g,"n");for(var t="",i=0;is?t+=String.fromCharCode(s):s>127&&2048>s?(t+=String.fromCharCode(s>>6|192),t+=String.fromCharCode(63&s|128)):(t+=String.fromCharCode(s>>12|224),t+=String.fromCharCode(s>>6&63|128),t+=String.fromCharCode(63&s|128))}return t}var g,m,f,b,S,v,y,A,w,C=Array(),T=7,E=12,N=17,P=22,k=5,I=9,L=14,R=20,D=4,_=11,x=16,F=23,M=6,U=10,O=15,j=21;for(e=h(e),C=d(e),v=1732584193,y=4023233417,A=2562383102,w=271733878,g=0;g/g,">").replace(/")},i.draggeblePlace=function(){return s('
').appendTo("#rl-hidden")},i.defautOptionsAfterRender=function(e,t){t&&!i.isUnd(t.disabled)&&e&&s(e).toggleClass("disabled",t.disabled).prop("disabled",t.disabled)},i.windowPopupKnockout=function(e,t,n,r){var l=null,c=a.open(""),u="__OpenerApplyBindingsUid"+i.fakeMd5()+"__",d=s("#"+t);a[u]=function(){if(c&&c.document.body&&d&&d[0]){var t=s(c.document.body);s("#rl-content",t).html(d.html()),s("html",c.document).addClass("external "+s("html").attr("class")),i.i18nToNode(t),e&&s("#rl-content",t)[0]&&o.applyBindings(e,s("#rl-content",t)[0]),a[u]=null,r(c)}},c.document.open(),c.document.write(''+i.encodeHtml(n)+''),c.document.close(),l=c.document.createElement("script"),l.type="text/javascript",l.innerHTML="if(window&&window.opener&&window.opener['"+u+"']){window.opener['"+u+"']();window.opener['"+u+"']=null}",c.document.getElementsByTagName("head")[0].appendChild(l)},i.settingsSaveHelperFunction=function(e,t,s,o){return s=s||null,o=i.isUnd(o)?1e3:i.pInt(o),function(i,a,r,l,c){t.call(s,a&&a.Result?p.SaveSettingsStep.TrueResult:p.SaveSettingsStep.FalseResult),e&&e.call(s,i,a,r,l,c),n.delay(function(){t.call(s,p.SaveSettingsStep.Idle)},o)}},i.settingsSaveHelperSimpleFunction=function(e,t){return i.settingsSaveHelperFunction(null,e,t,1e3)},i.htmlToPlain=function(e){var t=0,i=0,n=0,o=0,a=0,r="",l=function(e){for(var t=100,i="",s="",n=e,o=0,a=0;n.length>t;)s=n.substring(0,t),o=s.lastIndexOf(" "),a=s.lastIndexOf("\n"),-1!==a&&(o=a),-1===o&&(o=t),i+=s.substring(0,o)+"\n",n=n.substring(o+1);return i+n},u=function(e){return e=l(s.trim(e)),e="> "+e.replace(/\n/gm,"\n> "),e.replace(/(^|\n)([> ]+)/gm,function(){return arguments&&2]*>([\s\S\r\n]*)<\/div>/gim,d),e="\n"+s.trim(e)+"\n"),e}return""},p=function(){return arguments&&1"):""},h=function(){return arguments&&1/g,">"):""},g=function(){return arguments&&1]*>([\s\S\r\n]*)<\/pre>/gim,p).replace(/[\s]+/gm," ").replace(/((?:href|data)\s?=\s?)("[^"]+?"|'[^']+?')/gim,h).replace(/
]*>/gim,"\n").replace(/<\/h[\d]>/gi,"\n").replace(/<\/p>/gi,"\n\n").replace(/<\/li>/gi,"\n").replace(/<\/td>/gi,"\n").replace(/<\/tr>/gi,"\n").replace(/
]*>/gim,"\n_______________________________\n\n").replace(/]*>([\s\S\r\n]*)<\/div>/gim,d).replace(/
]*>/gim,"\n__bq__start__\n").replace(/<\/blockquote>/gim,"\n__bq__end__\n").replace(/]*>([\s\S\r\n]*?)<\/a>/gim,g).replace(/<\/div>/gi,"\n").replace(/ /gi," ").replace(/"/gi,'"').replace(/<[^>]*>/gm,""),r=c.html(r).text(),r=r.replace(/\n[ \t]+/gm,"\n").replace(/[\n]{3,}/gm,"\n\n").replace(/>/gi,">").replace(/</gi,"<").replace(/&/gi,"&"),t=0,a=100;a>0&&(a--,i=r.indexOf("__bq__start__",t),i>-1);)n=r.indexOf("__bq__start__",i+5),o=r.indexOf("__bq__end__",i+5),(-1===n||n>o)&&o>i?(r=r.substring(0,i)+u(r.substring(i+13,o))+r.substring(o+11),t=0):t=n>-1&&o>n?n-1:0;return r=r.replace(/__bq__start__/gm,"").replace(/__bq__end__/gm,"")},i.plainToHtml=function(e,t){e=e.toString().replace(/\r/g,"");var s=!1,n=!0,o=!0,a=[],r="",l=0,c=e.split("\n");do{for(n=!1,a=[],l=0;l"===r.substr(0,1),o&&!s?(n=!0,s=!0,a.push("~~~blockquote~~~"),a.push(r.substr(1))):!o&&s?(s=!1,a.push("~~~/blockquote~~~"),a.push(r)):a.push(o&&s?r.substr(1):r);s&&(s=!1,a.push("~~~/blockquote~~~")),c=a}while(n);return e=c.join("\n"),e=e.replace(/&/g,"&").replace(/>/g,">").replace(/").replace(/[\s]*~~~\/blockquote~~~/g,"
").replace(/[\-_~]{10,}/g,"
").replace(/\n/g,"
"),t?i.linkify(e):e},a.rainloop_Utils_htmlToPlain=i.htmlToPlain,a.rainloop_Utils_plainToHtml=i.plainToHtml,i.linkify=function(e){return s.fn&&s.fn.linkify&&(e=c.html(e.replace(/&/gi,"amp_amp_12345_amp_amp")).linkify().find(".linkified").removeClass("linkified").end().html().replace(/amp_amp_12345_amp_amp/g,"&")),e},i.resizeAndCrop=function(e,t,i){var s=new a.Image;s.onload=function(){var e=[0,0],s=a.document.createElement("canvas"),n=s.getContext("2d");s.width=t,s.height=t,e=this.width>this.height?[this.width-this.height,0]:[0,this.height-this.width],n.fillStyle="#fff",n.fillRect(0,0,t,t),n.drawImage(this,e[0]/2,e[1]/2,this.width-e[0],this.height-e[1],0,0,t,t),i(s.toDataURL("image/jpeg"))},s.src=e},i.folderListOptionsBuilder=function(e,t,s,n,o,r,l,c,u,d){var h=null,g=!1,m=0,f=0,b=" ",S=[];for(u=i.isNormal(u)?u:0
m;m++)S.push({id:n[m][0],name:n[m][1],system:!1,seporator:!1,disabled:!1});for(g=!0,m=0,f=e.length;f>m;m++)h=e[m],(l?l.call(null,h):!0)&&(g&&0m;m++)h=t[m],(h.subScribed()||!h.existen)&&(l?l.call(null,h):!0)&&(p.FolderType.User===h.type()||!u||01||c>0&&l>c){for(l>c?(u(c),s=c,n=c):((3>=l||l>=c-2)&&(o+=2),u(l),s=l,n=l);o>0;)if(s-=1,n+=1,s>0&&(u(s,!1),o--),c>=n)u(n,!0),o--;else if(0>=s)break;3===s?u(2,!1):s>3&&u(a.Math.round((s-1)/2),!1,"..."),c-2===n?u(c-1,!0):c-2>n&&u(a.Math.round((c+n)/2),!0,"..."),s>1&&u(1,!1),c>n&&u(c,!0)}return r}},i.selectElement=function(e){if(a.getSelection){var t=a.getSelection();t.removeAllRanges();var i=a.document.createRange();i.selectNodeContents(e),t.addRange(i)}else if(a.document.selection){var s=a.document.body.createTextRange();s.moveToElementText(e),s.select()}},i.detectDropdownVisibility=n.debounce(function(){g.dropdownVisibility(!!n.find(g.aBootstrapDropdowns,function(e){return e.hasClass("open")}))},50),i.triggerAutocompleteInputChange=function(e){var t=function(){s(".checkAutocomplete").trigger("change")};e?n.delay(t,100):t()},e.exports=i}(t,e)},{$:21,$div:12,$doc:13,$html:14,$window:15,Consts:5,Enums:6,Globals:8,NotificationClass:18,_:26,ko:23,window:27}],12:[function(e,t){t.exports=e("$")("")},{$:21}],13:[function(e,t){t.exports=e("$")(window.document)},{$:21}],14:[function(e,t){t.exports=e("$")("html")},{$:21}],15:[function(e,t){t.exports=e("$")(window)},{$:21}],16:[function(e,t){t.exports=e("window").rainloopAppData||{}},{window:27}],17:[function(e,t){t.exports=JSON},{}],18:[function(e,t){var i=e("window");t.exports=i.Notification&&i.Notification.requestPermission?i.Notification:null},{window:27}],19:[function(e,t){t.exports=crossroads},{}],20:[function(e,t){t.exports=hasher},{}],21:[function(e,t){t.exports=$},{}],22:[function(e,t){t.exports=key},{}],23:[function(e,t){!function(t,i){"use strict";var s=e("window"),n=e("_"),o=e("$"),a=e("$window"),r=e("$doc");i.bindingHandlers.tooltip={init:function(t,s){var n=e("Globals"),a=e("Utils");if(!n.bMobileDevice){var r=o(t),l=r.data("tooltip-class")||"",c=r.data("tooltip-placement")||"top";r.tooltip({delay:{show:500,hide:100},html:!0,container:"body",placement:c,trigger:"hover",title:function(){return r.is(".disabled")||n.dropdownVisibility()?"":''+a.i18n(i.utils.unwrapObservable(s()))+""}}).click(function(){r.tooltip("hide")}),n.tooltipTrigger.subscribe(function(){r.tooltip("hide")})}}},i.bindingHandlers.tooltip2={init:function(t,i){var s=e("Globals"),n=o(t),a=n.data("tooltip-class")||"",r=n.data("tooltip-placement")||"top";n.tooltip({delay:{show:500,hide:100},html:!0,container:"body",placement:r,title:function(){return n.is(".disabled")||s.dropdownVisibility()?"":''+i()()+""}}).click(function(){n.tooltip("hide")}),s.tooltipTrigger.subscribe(function(){n.tooltip("hide")})}},i.bindingHandlers.tooltip3={init:function(t){var i=o(t),s=e("Globals");i.tooltip({container:"body",trigger:"hover manual",title:function(){return i.data("tooltip3-data")||""}}),r.click(function(){i.tooltip("hide")}),s.tooltipTrigger.subscribe(function(){i.tooltip("hide")})},update:function(e,t){var s=i.utils.unwrapObservable(t());""===s?o(e).data("tooltip3-data","").tooltip("hide"):o(e).data("tooltip3-data",s).tooltip("show")}},i.bindingHandlers.registrateBootstrapDropdown={init:function(t){var i=e("Globals");i.aBootstrapDropdowns.push(o(t))}},i.bindingHandlers.openDropdownTrigger={update:function(t,s){if(i.utils.unwrapObservable(s())){var n=o(t),a=e("Utils");n.hasClass("open")||(n.find(".dropdown-toggle").dropdown("toggle"),a.detectDropdownVisibility()),s()(!1)}}},i.bindingHandlers.dropdownCloser={init:function(e){o(e).closest(".dropdown").on("click",".e-item",function(){o(e).dropdown("toggle")})}},i.bindingHandlers.popover={init:function(e,t){o(e).popover(i.utils.unwrapObservable(t()))}},i.bindingHandlers.csstext={init:function(t,s){var n=e("Utils");t&&t.styleSheet&&!n.isUnd(t.styleSheet.cssText)?t.styleSheet.cssText=i.utils.unwrapObservable(s()):o(t).text(i.utils.unwrapObservable(s()))},update:function(t,s){var n=e("Utils");t&&t.styleSheet&&!n.isUnd(t.styleSheet.cssText)?t.styleSheet.cssText=i.utils.unwrapObservable(s()):o(t).text(i.utils.unwrapObservable(s()))}},i.bindingHandlers.resizecrop={init:function(e){o(e).addClass("resizecrop").resizecrop({width:"100",height:"100",wrapperCSS:{"border-radius":"10px"}})},update:function(e,t){t()(),o(e).resizecrop({width:"100",height:"100"})}},i.bindingHandlers.onEnter={init:function(e,t,i,n){o(e).on("keypress",function(i){i&&13===s.parseInt(i.keyCode,10)&&(o(e).trigger("change"),t().call(n))})}},i.bindingHandlers.onEsc={init:function(e,t,i,n){o(e).on("keypress",function(i){i&&27===s.parseInt(i.keyCode,10)&&(o(e).trigger("change"),t().call(n))})}},i.bindingHandlers.clickOnTrue={update:function(e,t){i.utils.unwrapObservable(t())&&o(e).click()}},i.bindingHandlers.modal={init:function(t,s){var n=e("Globals"),a=e("Utils");o(t).toggleClass("fade",!n.bMobileDevice).modal({keyboard:!1,show:i.utils.unwrapObservable(s())}).on("shown",function(){a.windowResize()}).find(".close").click(function(){s()(!1)})},update:function(e,t){o(e).modal(i.utils.unwrapObservable(t())?"show":"hide")}},i.bindingHandlers.i18nInit={init:function(t){var i=e("Utils");i.i18nToNode(t)}},i.bindingHandlers.i18nUpdate={update:function(t,s){var n=e("Utils");i.utils.unwrapObservable(s()),n.i18nToNode(t)}},i.bindingHandlers.link={update:function(e,t){o(e).attr("href",i.utils.unwrapObservable(t()))}},i.bindingHandlers.title={update:function(e,t){o(e).attr("title",i.utils.unwrapObservable(t()))}},i.bindingHandlers.textF={init:function(e,t){o(e).text(i.utils.unwrapObservable(t()))}},i.bindingHandlers.initDom={init:function(e,t){t()(e)}},i.bindingHandlers.initResizeTrigger={init:function(e,t){var s=i.utils.unwrapObservable(t());o(e).css({height:s[1],"min-height":s[1]})},update:function(t,s){var n=e("Utils"),r=i.utils.unwrapObservable(s()),l=n.pInt(r[1]),c=0,u=o(t).offset().top;u>0&&(u+=n.pInt(r[2]),c=a.height()-u,c>l&&(l=c),o(t).css({height:l,"min-height":l}))}},i.bindingHandlers.appendDom={update:function(e,t){o(e).hide().empty().append(i.utils.unwrapObservable(t())).show()}},i.bindingHandlers.draggable={init:function(t,n,a){var r=e("Globals"),l=e("Utils");if(!r.bMobileDevice){var c=100,u=3,d=a(),p=d&&d.droppableSelector?d.droppableSelector:"",h={distance:20,handle:".dragHandle",cursorAt:{top:22,left:3},refreshPositions:!0,scroll:!0};p&&(h.drag=function(e){o(p).each(function(){var t=null,i=null,n=o(this),a=n.offset(),r=a.top+n.height();s.clearInterval(n.data("timerScroll")),n.data("timerScroll",!1),e.pageX>=a.left&&e.pageX<=a.left+n.width()&&(e.pageY>=r-c&&e.pageY<=r&&(t=function(){n.scrollTop(n.scrollTop()+u),l.windowResize()},n.data("timerScroll",s.setInterval(t,10)),t()),e.pageY>=a.top&&e.pageY<=a.top+c&&(i=function(){n.scrollTop(n.scrollTop()-u),l.windowResize()},n.data("timerScroll",s.setInterval(i,10)),i()))})},h.stop=function(){o(p).each(function(){s.clearInterval(o(this).data("timerScroll")),o(this).data("timerScroll",!1)})}),h.helper=function(e){return n()(e&&e.target?i.dataFor(e.target):null)},o(t).draggable(h).on("mousedown",function(){l.removeInFocus()})}}},i.bindingHandlers.droppable={init:function(t,i,s){var n=e("Globals");if(!n.bMobileDevice){var a=i(),r=s(),l=r&&r.droppableOver?r.droppableOver:null,c=r&&r.droppableOut?r.droppableOut:null,u={tolerance:"pointer",hoverClass:"droppableHover"};a&&(u.drop=function(e,t){a(e,t)},l&&(u.over=function(e,t){l(e,t)}),c&&(u.out=function(e,t){c(e,t)}),o(t).droppable(u))}}},i.bindingHandlers.nano={init:function(t){var i=e("Globals");i.bDisableNanoScroll||o(t).addClass("nano").nanoScroller({iOSNativeScrolling:!1,preventPageScrolling:!0})}},i.bindingHandlers.saveTrigger={init:function(e){var t=o(e);t.data("save-trigger-type",t.is("input[type=text],input[type=email],input[type=password],select,textarea")?"input":"custom"),"custom"===t.data("save-trigger-type")?t.append(' ').addClass("settings-saved-trigger"):t.addClass("settings-saved-trigger-input")},update:function(e,t){var s=i.utils.unwrapObservable(t()),n=o(e);if("custom"===n.data("save-trigger-type"))switch(s.toString()){case"1":n.find(".animated,.error").hide().removeClass("visible").end().find(".success").show().addClass("visible");break;case"0":n.find(".animated,.success").hide().removeClass("visible").end().find(".error").show().addClass("visible");break;case"-2":n.find(".error,.success").hide().removeClass("visible").end().find(".animated").show().addClass("visible");break;default:n.find(".animated").hide().end().find(".error,.success").removeClass("visible")}else switch(s.toString()){case"1":n.addClass("success").removeClass("error");break;case"0":n.addClass("error").removeClass("success");break;case"-2":break;default:n.removeClass("error success")}}},i.bindingHandlers.emailsTags={init:function(t,i,s){var a=e("Utils"),r=e("../Models/EmailModel.js"),l=o(t),c=i(),u=s(),d=u.autoCompleteSource||null,p=function(e){c&&c.focusTrigger&&c.focusTrigger(e)};l.inputosaurus({parseOnBlur:!0,allowDragAndDrop:!0,focusCallback:p,inputDelimiters:[",",";"],autoCompleteSource:d,parseHook:function(e){return n.map(e,function(e){var t=a.trim(e),i=null;return""!==t?(i=new r,i.mailsoParse(t),i.clearDuplicateName(),[i.toLine(!1),i]):[t,null]})},change:n.bind(function(e){l.data("EmailsTagsValue",e.target.value),c(e.target.value)},this)})},update:function(e,t,s){var n=o(e),a=s(),r=a.emailsTagsFilter||null,l=i.utils.unwrapObservable(t());n.data("EmailsTagsValue")!==l&&(n.val(l),n.data("EmailsTagsValue",l),n.inputosaurus("refresh")),r&&i.utils.unwrapObservable(r)&&n.inputosaurus("focus")}},i.bindingHandlers.contactTags={init:function(t,i,s){var a=e("Utils"),r=e("../Models/ContactTagModel.js"),l=o(t),c=i(),u=s(),d=u.autoCompleteSource||null,p=function(e){c&&c.focusTrigger&&c.focusTrigger(e)};l.inputosaurus({parseOnBlur:!0,allowDragAndDrop:!1,focusCallback:p,inputDelimiters:[",",";"],outputDelimiter:",",autoCompleteSource:d,parseHook:function(e){return n.map(e,function(e){var t=a.trim(e),i=null;return""!==t?(i=new r,i.name(t),[i.toLine(!1),i]):[t,null]})},change:n.bind(function(e){l.data("ContactTagsValue",e.target.value),c(e.target.value)},this)})},update:function(e,t,s){var n=o(e),a=s(),r=a.contactTagsFilter||null,l=i.utils.unwrapObservable(t());n.data("ContactTagsValue")!==l&&(n.val(l),n.data("ContactTagsValue",l),n.inputosaurus("refresh")),r&&i.utils.unwrapObservable(r)&&n.inputosaurus("focus")}},i.bindingHandlers.command={init:function(e,t,s,n){var a=o(e),r=t();if(!r||!r.enabled||!r.canExecute)throw new Error("You are not using command function");a.addClass("command"),i.bindingHandlers[a.is("form")?"submit":"click"].init.apply(n,arguments)},update:function(e,t){var i=!0,s=o(e),n=t();i=n.enabled(),s.toggleClass("command-not-enabled",!i),i&&(i=n.canExecute(),s.toggleClass("command-can-not-be-execute",!i)),s.toggleClass("command-disabled disable disabled",!i).toggleClass("no-disabled",!!i),(s.is("input")||s.is("button"))&&s.prop("disabled",!i)}},i.extenders.trimmer=function(t){var s=e("Utils"),n=i.computed({read:t,write:function(e){t(s.trim(e.toString()))},owner:this});return n(t()),n},i.extenders.posInterer=function(t,s){var n=e("Utils"),o=i.computed({read:t,write:function(e){var i=n.pInt(e.toString(),s);0>=i&&(i=s),i===t()&&""+i!=""+e&&t(i+1),t(i)}});return o(t()),o},i.extenders.reversible=function(e){var t=e();return e.commit=function(){t=e()},e.reverse=function(){e(t)},e.commitedValue=function(){return t},e},i.extenders.toggleSubscribe=function(e,t){return e.subscribe(t[1],t[0],"beforeChange"),e.subscribe(t[2],t[0]),e},i.extenders.falseTimeout=function(t,i){var n=e("Utils");return t.iTimeout=0,t.subscribe(function(e){e&&(s.clearTimeout(t.iTimeout),t.iTimeout=s.setTimeout(function(){t(!1),t.iTimeout=0},n.pInt(i)))}),t},i.observable.fn.validateNone=function(){return this.hasError=i.observable(!1),this},i.observable.fn.validateEmail=function(){var t=e("Utils");return this.hasError=i.observable(!1),this.subscribe(function(e){e=t.trim(e),this.hasError(""!==e&&!/^[^@\s]+@[^@\s]+$/.test(e))},this),this.valueHasMutated(),this},i.observable.fn.validateSimpleEmail=function(){var t=e("Utils");return this.hasError=i.observable(!1),this.subscribe(function(e){e=t.trim(e),this.hasError(""!==e&&!/^.+@.+$/.test(e))},this),this.valueHasMutated(),this},i.observable.fn.validateFunc=function(t){var s=e("Utils");return this.hasFuncError=i.observable(!1),s.isFunc(t)&&(this.subscribe(function(e){this.hasFuncError(!t(e))},this),this.valueHasMutated()),this},t.exports=i}(t,ko)},{$:21,$doc:13,$window:15,"../Models/ContactTagModel.js":33,"../Models/EmailModel.js":34,Globals:8,Utils:11,_:26,window:27}],24:[function(e,t){t.exports=moment},{}],25:[function(e,t){t.exports=ssm},{}],26:[function(e,t){t.exports=_},{}],27:[function(e,t){t.exports=window},{}],28:[function(e,t){!function(e,t){"use strict";function i(){this.sDefaultScreenName="",this.oScreens={},this.oCurrentScreen=null}var s=t("$"),n=t("_"),o=t("ko"),a=t("hasher"),r=t("crossroads"),l=t("$html"),c=t("Globals"),u=t("Plugins"),d=t("Utils"),p=t("KnoinAbstractViewModel");i.prototype.sDefaultScreenName="",i.prototype.oScreens={},i.prototype.oCurrentScreen=null,i.prototype.hideLoading=function(){s("#rl-loading").hide()},i.prototype.constructorEnd=function(e){d.isFunc(e.__constructor_end)&&e.__constructor_end.call(e)},i.prototype.extendAsViewModel=function(e,t,i){t&&(i||(i=p),t.__name=e,u.regViewModelHook(e,t),n.extend(t.prototype,i.prototype))},i.prototype.addSettingsViewModel=function(e,t,i,s,n){e.__rlSettingsData={Label:i,Template:t,Route:s,IsDefault:!!n},c.aViewModels.settings.push(e)},i.prototype.removeSettingsViewModel=function(e){c.aViewModels["settings-removed"].push(e)},i.prototype.disableSettingsViewModel=function(e){c.aViewModels["settings-disabled"].push(e)},i.prototype.routeOff=function(){a.changed.active=!1},i.prototype.routeOn=function(){a.changed.active=!0},i.prototype.screen=function(e){return""===e||d.isUnd(this.oScreens[e])?null:this.oScreens[e]},i.prototype.buildViewModel=function(e,t){if(e&&!e.__builded){var i=this,a=new e(t),r=a.viewModelPosition(),l=s("#rl-content #rl-"+r.toLowerCase()),p=null;
-e.__builded=!0,e.__vm=a,a.viewModelName=e.__name,l&&1===l.length?(p=s("").addClass("rl-view-model").addClass("RL-"+a.viewModelTemplate()).hide(),p.appendTo(l),a.viewModelDom=p,e.__dom=p,"Popups"===r&&(a.cancelCommand=a.closeCommand=d.createCommand(a,function(){i.hideScreenPopup(e)}),a.modalVisibility.subscribe(function(e){var t=this;e?(this.viewModelDom.show(),this.storeAndSetKeyScope(),c.popupVisibilityNames.push(this.viewModelName),a.viewModelDom.css("z-index",3e3+c.popupVisibilityNames().length+10),d.delegateRun(this,"onFocus",[],500)):(d.delegateRun(this,"onHide"),this.restoreKeyScope(),c.popupVisibilityNames.remove(this.viewModelName),a.viewModelDom.css("z-index",2e3),c.tooltipTrigger(!c.tooltipTrigger()),n.delay(function(){t.viewModelDom.hide()},300))},a)),u.runHook("view-model-pre-build",[e.__name,a,p]),o.applyBindingAccessorsToNode(p[0],{i18nInit:!0,template:function(){return{name:a.viewModelTemplate()}}},a),d.delegateRun(a,"onBuild",[p]),a&&"Popups"===r&&a.registerPopupKeyDown(),u.runHook("view-model-post-build",[e.__name,a,p])):d.log("Cannot find view model position: "+r)}return e?e.__vm:null},i.prototype.hideScreenPopup=function(e){e&&e.__vm&&e.__dom&&(e.__vm.modalVisibility(!1),u.runHook("view-model-on-hide",[e.__name,e.__vm]))},i.prototype.showScreenPopup=function(e,t){e&&(this.buildViewModel(e),e.__vm&&e.__dom&&(e.__vm.modalVisibility(!0),d.delegateRun(e.__vm,"onShow",t||[]),u.runHook("view-model-on-show",[e.__name,e.__vm,t||[]])))},i.prototype.isPopupVisible=function(e){return e&&e.__vm?e.__vm.modalVisibility():!1},i.prototype.screenOnRoute=function(e,t){var i=this,s=null,o=null;""===d.pString(e)&&(e=this.sDefaultScreenName),""!==e&&(s=this.screen(e),s||(s=this.screen(this.sDefaultScreenName),s&&(t=e+"/"+t,e=this.sDefaultScreenName)),s&&s.__started&&(s.__builded||(s.__builded=!0,d.isNonEmptyArray(s.viewModels())&&n.each(s.viewModels(),function(e){this.buildViewModel(e,s)},this),d.delegateRun(s,"onBuild")),n.defer(function(){i.oCurrentScreen&&(d.delegateRun(i.oCurrentScreen,"onHide"),d.isNonEmptyArray(i.oCurrentScreen.viewModels())&&n.each(i.oCurrentScreen.viewModels(),function(e){e.__vm&&e.__dom&&"Popups"!==e.__vm.viewModelPosition()&&(e.__dom.hide(),e.__vm.viewModelVisibility(!1),d.delegateRun(e.__vm,"onHide"))})),i.oCurrentScreen=s,i.oCurrentScreen&&(d.delegateRun(i.oCurrentScreen,"onShow"),u.runHook("screen-on-show",[i.oCurrentScreen.screenName(),i.oCurrentScreen]),d.isNonEmptyArray(i.oCurrentScreen.viewModels())&&n.each(i.oCurrentScreen.viewModels(),function(e){e.__vm&&e.__dom&&"Popups"!==e.__vm.viewModelPosition()&&(e.__dom.show(),e.__vm.viewModelVisibility(!0),d.delegateRun(e.__vm,"onShow"),d.delegateRun(e.__vm,"onFocus",[],200),u.runHook("view-model-on-show",[e.__name,e.__vm]))},i)),o=s.__cross(),o&&o.parse(t)})))},i.prototype.startScreens=function(e){s("#rl-content").css({visibility:"hidden"}),n.each(e,function(e){var t=new e,i=t?t.screenName():"";t&&""!==i&&(""===this.sDefaultScreenName&&(this.sDefaultScreenName=i),this.oScreens[i]=t)},this),n.each(this.oScreens,function(e){e&&!e.__started&&e.__start&&(e.__started=!0,e.__start(),u.runHook("screen-pre-start",[e.screenName(),e]),d.delegateRun(e,"onStart"),u.runHook("screen-post-start",[e.screenName(),e]))},this);var t=r.create();t.addRoute(/^([a-zA-Z0-9\-]*)\/?(.*)$/,n.bind(this.screenOnRoute,this)),a.initialized.add(t.parse,t),a.changed.add(t.parse,t),a.init(),s("#rl-content").css({visibility:"visible"}),n.delay(function(){l.removeClass("rl-started-trigger").addClass("rl-started")},50)},i.prototype.setHash=function(e,t,i){e="#"===e.substr(0,1)?e.substr(1):e,e="/"===e.substr(0,1)?e.substr(1):e,i=d.isUnd(i)?!1:!!i,(d.isUnd(t)?1:!t)?(a.changed.active=!0,a[i?"replaceHash":"setHash"](e),a.setHash(e)):(a.changed.active=!1,a[i?"replaceHash":"setHash"](e),a.changed.active=!0)},e.exports=new i}(t,e)},{$:21,$html:14,Globals:8,KnoinAbstractViewModel:31,Plugins:10,Utils:11,_:26,crossroads:19,hasher:20,ko:23}],29:[function(e,t){!function(e){"use strict";function t(){}t.prototype.bootstart=function(){},e.exports=t}(t,e)},{}],30:[function(e,t){!function(e,t){"use strict";function i(e,t){this.sScreenName=e,this.aViewModels=n.isArray(t)?t:[]}var s=t("crossroads"),n=t("Utils");i.prototype.oCross=null,i.prototype.sScreenName="",i.prototype.aViewModels=[],i.prototype.viewModels=function(){return this.aViewModels},i.prototype.screenName=function(){return this.sScreenName},i.prototype.routes=function(){return null},i.prototype.__cross=function(){return this.oCross},i.prototype.__start=function(){var e=this.routes(),t=null,i=null;n.isNonEmptyArray(e)&&(i=_.bind(this.onRoute||n.emptyFunction,this),t=s.create(),_.each(e,function(e){t.addRoute(e[0],i).rules=e[1]}),this.oCross=t)},e.exports=i}(t,e)},{Utils:11,crossroads:19}],31:[function(e,t){!function(e,t){"use strict";function i(e,t){this.bDisabeCloseOnEsc=!1,this.sPosition=r.pString(e),this.sTemplate=r.pString(t),this.sDefaultKeyScope=o.KeyState.None,this.sCurrentKeyScope=this.sDefaultKeyScope,this.viewModelName="",this.viewModelVisibility=s.observable(!1),this.modalVisibility=s.observable(!1).extend({rateLimit:0}),this.viewModelDom=null}var s=t("ko"),n=t("$window"),o=t("Enums"),a=t("Globals"),r=t("Utils");i.prototype.sPosition="",i.prototype.sTemplate="",i.prototype.viewModelName="",i.prototype.viewModelDom=null,i.prototype.viewModelTemplate=function(){return this.sTemplate},i.prototype.viewModelPosition=function(){return this.sPosition},i.prototype.cancelCommand=function(){},i.prototype.closeCommand=function(){},i.prototype.storeAndSetKeyScope=function(){this.sCurrentKeyScope=a.keyScope(),a.keyScope(this.sDefaultKeyScope)},i.prototype.restoreKeyScope=function(){a.keyScope(this.sCurrentKeyScope)},i.prototype.registerPopupKeyDown=function(){var e=this;n.on("keydown",function(t){if(t&&e.modalVisibility&&e.modalVisibility()){if(!this.bDisabeCloseOnEsc&&o.EventKeyCode.Esc===t.keyCode)return r.delegateRun(e,"cancelCommand"),!1;if(o.EventKeyCode.Backspace===t.keyCode&&!r.inFocus())return!1}return!0})},e.exports=i}(t,e)},{$window:15,Enums:6,Globals:8,Utils:11,ko:23}],32:[function(e,t){!function(e,t){"use strict";function i(){this.mimeType="",this.fileName="",this.estimatedSize=0,this.friendlySize="",this.isInline=!1,this.isLinked=!1,this.cid="",this.cidWithOutTags="",this.contentLocation="",this.download="",this.folder="",this.uid="",this.mimeIndex=""}var s=t("window"),n=t("Globals"),o=t("Utils"),a=t("LinkBuilder");i.newInstanceFromJson=function(e){var t=new i;return t.initByJson(e)?t:null},i.prototype.mimeType="",i.prototype.fileName="",i.prototype.estimatedSize=0,i.prototype.friendlySize="",i.prototype.isInline=!1,i.prototype.isLinked=!1,i.prototype.cid="",i.prototype.cidWithOutTags="",i.prototype.contentLocation="",i.prototype.download="",i.prototype.folder="",i.prototype.uid="",i.prototype.mimeIndex="",i.prototype.initByJson=function(e){var t=!1;return e&&"Object/Attachment"===e["@Object"]&&(this.mimeType=(e.MimeType||"").toLowerCase(),this.fileName=e.FileName,this.estimatedSize=o.pInt(e.EstimatedSize),this.isInline=!!e.IsInline,this.isLinked=!!e.IsLinked,this.cid=e.CID,this.contentLocation=e.ContentLocation,this.download=e.Download,this.folder=e.Folder,this.uid=e.Uid,this.mimeIndex=e.MimeIndex,this.friendlySize=o.friendlySize(this.estimatedSize),this.cidWithOutTags=this.cid.replace(/^<+/,"").replace(/>+$/,""),t=!0),t},i.prototype.isImage=function(){return-1,]+)>?,? ?/g,i=t.exec(e);i?(this.name=i[1]||"",this.email=i[2]||"",this.clearDuplicateName()):/^[^@]+@[^@]+$/.test(e)&&(this.name="",this.email=e)},i.prototype.initByJson=function(e){var t=!1;return e&&"Object/Email"===e["@Object"]&&(this.name=n.trim(e.Name),this.email=n.trim(e.Email),t=""!==this.email,this.clearDuplicateName()),t},i.prototype.toLine=function(e,t,i){var s="";return""!==this.email&&(t=n.isUnd(t)?!1:!!t,i=n.isUnd(i)?!1:!!i,e&&""!==this.name?s=t?'")+'" target="_blank" tabindex="-1">'+n.encodeHtml(this.name)+"":i?n.encodeHtml(this.name):this.name:(s=this.email,""!==this.name?t?s=n.encodeHtml('"'+this.name+'" <')+'")+'" target="_blank" tabindex="-1">'+n.encodeHtml(s)+""+n.encodeHtml(">"):(s='"'+this.name+'" <'+s+">",i&&(s=n.encodeHtml(s))):t&&(s=''+n.encodeHtml(this.email)+""))),s},i.prototype.mailsoParse=function(e){if(e=n.trim(e),""===e)return!1;for(var t=function(e,t,i){e+="";var s=e.length;return 0>t&&(t+=s),s="undefined"==typeof i?s:0>i?i+s:i+t,t>=e.length||0>t||t>s?!1:e.slice(t,s)},i=function(e,t,i,s){return 0>i&&(i+=e.length),s=void 0!==s?s:e.length,0>s&&(s=s+e.length-i),e.slice(0,i)+t.substr(0,s)+t.slice(s)+e.slice(i+s)},s="",o="",a="",r=!1,l=!1,c=!1,u=null,d=0,p=0,h=0;h0&&0===s.length&&(s=t(e,0,h)),l=!0,d=h);break;case">":l&&(p=h,o=t(e,d+1,p-d-1),e=i(e,"",d,p-d+1),p=0,h=0,d=0,l=!1);break;case"(":r||l||c||(c=!0,d=h);break;case")":c&&(p=h,a=t(e,d+1,p-d-1),e=i(e,"",d,p-d+1),p=0,h=0,d=0,c=!1);break;case"\\":h++}h++}return 0===o.length&&(u=e.match(/[^@\s]+@\S+/i),u&&u[0]?o=u[0]:s=e),o.length>0&&0===s.length&&0===a.length&&(s=e.replace(o,"")),o=n.trim(o).replace(/^[<]+/,"").replace(/[>]+$/,""),s=n.trim(s).replace(/^["']+/,"").replace(/["']+$/,""),a=n.trim(a).replace(/^[(]+/,"").replace(/[)]+$/,""),s=s.replace(/\\\\(.)/,"$1"),a=a.replace(/\\\\(.)/,"$1"),this.name=s,this.email=o,this.clearDuplicateName(),!0},i.prototype.inputoTagLine=function(){return 0t?t:e))},this),this.body=null,this.plainRaw="",this.isHtml=a.observable(!1),this.hasImages=a.observable(!1),this.attachments=a.observableArray([]),this.isPgpSigned=a.observable(!1),this.isPgpEncrypted=a.observable(!1),this.pgpSignedVerifyStatus=a.observable(u.SignedVerifyStatus.None),this.pgpSignedVerifyUser=a.observable(""),this.priority=a.observable(u.MessagePriority.Normal),this.readReceipt=a.observable(""),this.aDraftInfo=[],this.sMessageId="",this.sInReplyTo="",this.sReferences="",this.parentUid=a.observable(0),this.threads=a.observableArray([]),this.threadsLen=a.observable(0),this.hasUnseenSubMessage=a.observable(!1),this.hasFlaggedSubMessage=a.observable(!1),this.lastInCollapsedThread=a.observable(!1),this.lastInCollapsedThreadLoading=a.observable(!1),this.threadsLenResult=a.computed(function(){var e=this.threadsLen();return 0===this.parentUid()&&e>0?e+1:""},this)}var s=t("window"),n=t("$"),o=t("_"),a=t("ko"),r=t("moment"),l=t("$window"),c=t("$div"),u=t("Enums"),d=t("Utils"),p=t("LinkBuilder"),h=t("./EmailModel.js"),g=t("./AttachmentModel.js");i.newInstanceFromJson=function(e){var t=new i;return t.initByJson(e)?t:null},i.calculateFullFromatDateValue=function(e){return e>0?r.unix(e).format("LLL"):""},i.emailsToLine=function(e,t,i){var s=[],n=0,o=0;if(d.isNonEmptyArray(e))for(n=0,o=e.length;o>n;n++)s.push(e[n].toLine(t,i));return s.join(", ")},i.emailsToLineClear=function(e){var t=[],i=0,s=0;if(d.isNonEmptyArray(e))for(i=0,s=e.length;s>i;i++)e[i]&&e[i].email&&""!==e[i].name&&t.push(e[i].email);return t.join(", ")},i.initEmailsFromJson=function(e){var t=0,i=0,s=null,n=[];if(d.isNonEmptyArray(e))for(t=0,i=e.length;i>t;t++)s=h.newInstanceFromJson(e[t]),s&&n.push(s);return n},i.replyHelper=function(e,t,i){if(e&&0s;s++)d.isUnd(t[e[s].email])&&(t[e[s].email]=!0,i.push(e[s]))},i.prototype.clear=function(){this.folderFullNameRaw="",this.uid="",this.hash="",this.requestHash="",this.subject(""),this.subjectPrefix(""),this.subjectSuffix(""),this.size(0),this.dateTimeStampInUTC(0),this.priority(u.MessagePriority.Normal),this.proxy=!1,this.fromEmailString(""),this.fromClearEmailString(""),this.toEmailsString(""),this.toClearEmailsString(""),this.senderEmailsString(""),this.senderClearEmailsString(""),this.emails=[],this.from=[],this.to=[],this.cc=[],this.bcc=[],this.replyTo=[],this.deliveredTo=[],this.newForAnimation(!1),this.deleted(!1),this.unseen(!1),this.flagged(!1),this.answered(!1),this.forwarded(!1),this.isReadReceipt(!1),this.selected(!1),this.checked(!1),this.hasAttachments(!1),this.attachmentsMainType(""),this.body=null,this.isHtml(!1),this.hasImages(!1),this.attachments([]),this.isPgpSigned(!1),this.isPgpEncrypted(!1),this.pgpSignedVerifyStatus(u.SignedVerifyStatus.None),this.pgpSignedVerifyUser(""),this.priority(u.MessagePriority.Normal),this.readReceipt(""),this.aDraftInfo=[],this.sMessageId="",this.sInReplyTo="",this.sReferences="",this.parentUid(0),this.threads([]),this.threadsLen(0),this.hasUnseenSubMessage(!1),this.hasFlaggedSubMessage(!1),this.lastInCollapsedThread(!1),this.lastInCollapsedThreadLoading(!1)},i.prototype.computeSenderEmail=function(){var e=t("../Storages/WebMailDataStorage.js"),i=e.sentFolder(),s=e.draftFolder();this.senderEmailsString(this.folderFullNameRaw===i||this.folderFullNameRaw===s?this.toEmailsString():this.fromEmailString()),this.senderClearEmailsString(this.folderFullNameRaw===i||this.folderFullNameRaw===s?this.toClearEmailsString():this.fromClearEmailString())},i.prototype.initByJson=function(e){var t=!1;return e&&"Object/Message"===e["@Object"]&&(this.folderFullNameRaw=e.Folder,this.uid=e.Uid,this.hash=e.Hash,this.requestHash=e.RequestHash,this.proxy=!!e.ExternalProxy,this.size(d.pInt(e.Size)),this.from=i.initEmailsFromJson(e.From),this.to=i.initEmailsFromJson(e.To),this.cc=i.initEmailsFromJson(e.Cc),this.bcc=i.initEmailsFromJson(e.Bcc),this.replyTo=i.initEmailsFromJson(e.ReplyTo),this.deliveredTo=i.initEmailsFromJson(e.DeliveredTo),this.subject(e.Subject),d.isArray(e.SubjectParts)?(this.subjectPrefix(e.SubjectParts[0]),this.subjectSuffix(e.SubjectParts[1])):(this.subjectPrefix(""),this.subjectSuffix(this.subject())),this.dateTimeStampInUTC(d.pInt(e.DateTimeStampInUTC)),this.hasAttachments(!!e.HasAttachments),this.attachmentsMainType(e.AttachmentsMainType),this.fromEmailString(i.emailsToLine(this.from,!0)),this.fromClearEmailString(i.emailsToLineClear(this.from)),this.toEmailsString(i.emailsToLine(this.to,!0)),this.toClearEmailsString(i.emailsToLineClear(this.to)),this.parentUid(d.pInt(e.ParentThread)),this.threads(d.isArray(e.Threads)?e.Threads:[]),this.threadsLen(d.pInt(e.ThreadsLen)),this.initFlagsByJson(e),this.computeSenderEmail(),t=!0),t},i.prototype.initUpdateByMessageJson=function(e){var i=t("../Storages/WebMailDataStorage.js"),s=!1,n=u.MessagePriority.Normal;return e&&"Object/Message"===e["@Object"]&&(n=d.pInt(e.Priority),this.priority(-1t;t++)s=g.newInstanceFromJson(e["@Collection"][t]),s&&(""!==s.cidWithOutTags&&0+$/,""),t=o.find(i,function(t){return e===t.cidWithOutTags})),t||null},i.prototype.findAttachmentByContentLocation=function(e){var t=null,i=this.attachments();return d.isNonEmptyArray(i)&&(t=o.find(i,function(t){return e===t.contentLocation})),t||null},i.prototype.messageId=function(){return this.sMessageId},i.prototype.inReplyTo=function(){return this.sInReplyTo},i.prototype.references=function(){return this.sReferences},i.prototype.fromAsSingleEmail=function(){return d.isArray(this.from)&&this.from[0]?this.from[0].email:""},i.prototype.viewLink=function(){return p.messageViewLink(this.requestHash)},i.prototype.downloadLink=function(){return p.messageDownloadLink(this.requestHash)},i.prototype.replyEmails=function(e){var t=[],s=d.isUnd(e)?{}:e;return i.replyHelper(this.replyTo,s,t),0===t.length&&i.replyHelper(this.from,s,t),t},i.prototype.replyAllEmails=function(e){var t=[],s=[],n=d.isUnd(e)?{}:e;return i.replyHelper(this.replyTo,n,t),0===t.length&&i.replyHelper(this.from,n,t),i.replyHelper(this.to,n,t),i.replyHelper(this.cc,n,s),[t,s]},i.prototype.textBodyToString=function(){return this.body?this.body.html():""},i.prototype.attachmentsToStringLine=function(){var e=o.map(this.attachments(),function(e){return e.fileName+" ("+e.friendlySize+")"});return e&&0=0&&s&&!o&&i.attr("src",s)}),e&&s.setTimeout(function(){t.print()},100))})},i.prototype.printMessage=function(){this.viewPopupMessage(!0)},i.prototype.generateUid=function(){return this.folderFullNameRaw+"/"+this.uid},i.prototype.populateByMessageListItem=function(e){return this.folderFullNameRaw=e.folderFullNameRaw,this.uid=e.uid,this.hash=e.hash,this.requestHash=e.requestHash,this.subject(e.subject()),this.subjectPrefix(this.subjectPrefix()),this.subjectSuffix(this.subjectSuffix()),this.size(e.size()),this.dateTimeStampInUTC(e.dateTimeStampInUTC()),this.priority(e.priority()),this.proxy=e.proxy,this.fromEmailString(e.fromEmailString()),this.fromClearEmailString(e.fromClearEmailString()),this.toEmailsString(e.toEmailsString()),this.toClearEmailsString(e.toClearEmailsString()),this.emails=e.emails,this.from=e.from,this.to=e.to,this.cc=e.cc,this.bcc=e.bcc,this.replyTo=e.replyTo,this.deliveredTo=e.deliveredTo,this.unseen(e.unseen()),this.flagged(e.flagged()),this.answered(e.answered()),this.forwarded(e.forwarded()),this.isReadReceipt(e.isReadReceipt()),this.selected(e.selected()),this.checked(e.checked()),this.hasAttachments(e.hasAttachments()),this.attachmentsMainType(e.attachmentsMainType()),this.moment(e.moment()),this.body=null,this.priority(u.MessagePriority.Normal),this.aDraftInfo=[],this.sMessageId="",this.sInReplyTo="",this.sReferences="",this.parentUid(e.parentUid()),this.threads(e.threads()),this.threadsLen(e.threadsLen()),this.computeSenderEmail(),this},i.prototype.showExternalImages=function(e){if(this.body&&this.body.data("rl-has-images")){var t="";e=d.isUnd(e)?!1:e,this.hasImages(!1),this.body.data("rl-has-images",!1),t=this.proxy?"data-x-additional-src":"data-x-src",n("["+t+"]",this.body).each(function(){e&&n(this).is("img")?n(this).addClass("lazy").attr("data-original",n(this).attr(t)).removeAttr(t):n(this).attr("src",n(this).attr(t)).removeAttr(t)}),t=this.proxy?"data-x-additional-style-url":"data-x-style-url",n("["+t+"]",this.body).each(function(){var e=d.trim(n(this).attr("style"));e=""===e?"":";"===e.substr(-1)?e+" ":e+"; ",n(this).attr("style",e+n(this).attr(t)).removeAttr(t)}),e&&(n("img.lazy",this.body).addClass("lazy-inited").lazyload({threshold:400,effect:"fadeIn",skip_invisible:!1,container:n(".RL-MailMessageView .messageView .messageItem .content")[0]}),l.resize()),d.windowResize(500)}},i.prototype.showInternalImages=function(e){if(this.body&&!this.body.data("rl-init-internal-images")){this.body.data("rl-init-internal-images",!0),e=d.isUnd(e)?!1:e;var t=this;n("[data-x-src-cid]",this.body).each(function(){var i=t.findAttachmentByCid(n(this).attr("data-x-src-cid"));i&&i.download&&(e&&n(this).is("img")?n(this).addClass("lazy").attr("data-original",i.linkPreview()):n(this).attr("src",i.linkPreview()))}),n("[data-x-src-location]",this.body).each(function(){var i=t.findAttachmentByContentLocation(n(this).attr("data-x-src-location"));i||(i=t.findAttachmentByCid(n(this).attr("data-x-src-location"))),i&&i.download&&(e&&n(this).is("img")?n(this).addClass("lazy").attr("data-original",i.linkPreview()):n(this).attr("src",i.linkPreview()))}),n("[data-x-style-cid]",this.body).each(function(){var e="",i="",s=t.findAttachmentByCid(n(this).attr("data-x-style-cid"));s&&s.linkPreview&&(i=n(this).attr("data-x-style-cid-name"),""!==i&&(e=d.trim(n(this).attr("style")),e=""===e?"":";"===e.substr(-1)?e+" ":e+"; ",n(this).attr("style",e+i+": url('"+s.linkPreview()+"')")))}),e&&!function(e,t){o.delay(function(){e.addClass("lazy-inited").lazyload({threshold:400,effect:"fadeIn",skip_invisible:!1,container:t})},300)}(n("img.lazy",t.body),n(".RL-MailMessageView .messageView .messageItem .content")[0]),d.windowResize(500)}},i.prototype.storeDataToDom=function(){if(this.body){this.body.data("rl-is-html",!!this.isHtml()),this.body.data("rl-has-images",!!this.hasImages()),this.body.data("rl-plain-raw",this.plainRaw);var e=t("../Storages/WebMailDataStorage.js");e.capaOpenPGP()&&(this.body.data("rl-plain-pgp-signed",!!this.isPgpSigned()),this.body.data("rl-plain-pgp-encrypted",!!this.isPgpEncrypted()),this.body.data("rl-pgp-verify-status",this.pgpSignedVerifyStatus()),this.body.data("rl-pgp-verify-user",this.pgpSignedVerifyUser()))}},i.prototype.storePgpVerifyDataToDom=function(){var e=t("../Storages/WebMailDataStorage.js");this.body&&e.capaOpenPGP()&&(this.body.data("rl-pgp-verify-status",this.pgpSignedVerifyStatus()),this.body.data("rl-pgp-verify-user",this.pgpSignedVerifyUser()))},i.prototype.fetchDataToDom=function(){if(this.body){this.isHtml(!!this.body.data("rl-is-html")),this.hasImages(!!this.body.data("rl-has-images")),this.plainRaw=d.pString(this.body.data("rl-plain-raw"));var e=t("../Storages/WebMailDataStorage.js");e.capaOpenPGP()?(this.isPgpSigned(!!this.body.data("rl-plain-pgp-signed")),this.isPgpEncrypted(!!this.body.data("rl-plain-pgp-encrypted")),this.pgpSignedVerifyStatus(this.body.data("rl-pgp-verify-status")),this.pgpSignedVerifyUser(this.body.data("rl-pgp-verify-user"))):(this.isPgpSigned(!1),this.isPgpEncrypted(!1),this.pgpSignedVerifyStatus(u.SignedVerifyStatus.None),this.pgpSignedVerifyUser(""))}},i.prototype.verifyPgpSignedClearMessage=function(){if(this.isPgpSigned()){var e=[],i=null,a=t("../Storages/WebMailDataStorage.js"),r=this.from&&this.from[0]&&this.from[0].email?this.from[0].email:"",l=a.findPublicKeysByEmail(r),d=null,p=null,h="";this.pgpSignedVerifyStatus(u.SignedVerifyStatus.Error),this.pgpSignedVerifyUser("");try{i=s.openpgp.cleartext.readArmored(this.plainRaw),i&&i.getText&&(this.pgpSignedVerifyStatus(l.length?u.SignedVerifyStatus.Unverified:u.SignedVerifyStatus.UnknownPublicKeys),e=i.verify(l),e&&0').text(h)).html(),c.empty(),this.replacePlaneTextBody(h)))))}catch(g){}this.storePgpVerifyDataToDom()}},i.prototype.decryptPgpEncryptedMessage=function(e){if(this.isPgpEncrypted()){var i=[],a=null,r=null,l=t("../Storages/WebMailDataStorage.js"),d=this.from&&this.from[0]&&this.from[0].email?this.from[0].email:"",p=l.findPublicKeysByEmail(d),h=l.findSelfPrivateKey(e),g=null,m=null,f="";this.pgpSignedVerifyStatus(u.SignedVerifyStatus.Error),this.pgpSignedVerifyUser(""),h||this.pgpSignedVerifyStatus(u.SignedVerifyStatus.UnknownPrivateKey);try{a=s.openpgp.message.readArmored(this.plainRaw),a&&h&&a.decrypt&&(this.pgpSignedVerifyStatus(u.SignedVerifyStatus.Unverified),r=a.decrypt(h),r&&(i=r.verify(p),i&&0').text(f)).html(),c.empty(),this.replacePlaneTextBody(f)))
-}catch(b){}this.storePgpVerifyDataToDom()}},i.prototype.replacePlaneTextBody=function(e){this.body&&this.body.html(e).addClass("b-text-part plain")},i.prototype.flagHash=function(){return[this.deleted(),this.unseen(),this.flagged(),this.answered(),this.forwarded(),this.isReadReceipt()].join("")},e.exports=i}(t,e)},{$:21,$div:12,$window:15,"../Storages/WebMailDataStorage.js":59,"./AttachmentModel.js":32,"./EmailModel.js":34,Enums:6,LinkBuilder:9,Utils:11,_:26,ko:23,moment:24,window:27}],36:[function(e,t){!function(e,t){"use strict";function i(e){u.call(this,"settings",e),this.menu=o.observableArray([]),this.oCurrentSubScreen=null,this.oViewModelPlace=null}var s=t("$"),n=t("_"),o=t("ko"),a=t("Globals"),r=t("Utils"),l=t("LinkBuilder"),c=t("kn"),u=t("KnoinAbstractScreen");n.extend(i.prototype,u.prototype),i.prototype.onRoute=function(e){var t=this,i=null,u=null,d=null,p=null;u=n.find(a.aViewModels.settings,function(t){return t&&t.__rlSettingsData&&e===t.__rlSettingsData.Route}),u&&(n.find(a.aViewModels["settings-removed"],function(e){return e&&e===u})&&(u=null),u&&n.find(a.aViewModels["settings-disabled"],function(e){return e&&e===u})&&(u=null)),u?(u.__builded&&u.__vm?i=u.__vm:(d=this.oViewModelPlace,d&&1===d.length?(i=new u,p=s("").addClass("rl-settings-view-model").hide(),p.appendTo(d),i.viewModelDom=p,i.__rlSettingsData=u.__rlSettingsData,u.__dom=p,u.__builded=!0,u.__vm=i,o.applyBindingAccessorsToNode(p[0],{i18nInit:!0,template:function(){return{name:u.__rlSettingsData.Template}}},i),r.delegateRun(i,"onBuild",[p])):r.log("Cannot find sub settings view model position: SettingsSubScreen")),i&&n.defer(function(){t.oCurrentSubScreen&&(r.delegateRun(t.oCurrentSubScreen,"onHide"),t.oCurrentSubScreen.viewModelDom.hide()),t.oCurrentSubScreen=i,t.oCurrentSubScreen&&(t.oCurrentSubScreen.viewModelDom.show(),r.delegateRun(t.oCurrentSubScreen,"onShow"),r.delegateRun(t.oCurrentSubScreen,"onFocus",[],200),n.each(t.menu(),function(e){e.selected(i&&i.__rlSettingsData&&e.route===i.__rlSettingsData.Route)}),s("#rl-content .b-settings .b-content .content").scrollTop(0)),r.windowResize()})):c.setHash(l.settings(),!1,!0)},i.prototype.onHide=function(){this.oCurrentSubScreen&&this.oCurrentSubScreen.viewModelDom&&(r.delegateRun(this.oCurrentSubScreen,"onHide"),this.oCurrentSubScreen.viewModelDom.hide())},i.prototype.onBuild=function(){n.each(a.aViewModels.settings,function(e){e&&e.__rlSettingsData&&!n.find(a.aViewModels["settings-removed"],function(t){return t&&t===e})&&this.menu.push({route:e.__rlSettingsData.Route,label:e.__rlSettingsData.Label,selected:o.observable(!1),disabled:!!n.find(a.aViewModels["settings-disabled"],function(t){return t&&t===e})})},this),this.oViewModelPlace=s("#rl-content #rl-settings-subscreen")},i.prototype.routes=function(){var e=n.find(a.aViewModels.settings,function(e){return e&&e.__rlSettingsData&&e.__rlSettingsData.IsDefault}),t=e?e.__rlSettingsData.Route:"general",i={subname:/^(.*)$/,normalize_:function(e,i){return i.subname=r.isUnd(i.subname)?t:r.pString(i.subname),[i.subname]}};return[["{subname}/",i],["{subname}",i],["",i]]},e.exports=i}(t,e)},{$:21,Globals:8,KnoinAbstractScreen:30,LinkBuilder:9,Utils:11,_:26,kn:28,ko:23}],37:[function(e,t){!function(e,t){"use strict";function i(){var e=t("../ViewModels/AdminLoginViewModel.js");n.call(this,"login",[e])}var s=t("_"),n=t("KnoinAbstractScreen");s.extend(i.prototype,n.prototype),i.prototype.onShow=function(){var e=t("../Apps/AdminApp.js");e.setTitle("")},e.exports=i}(t,e)},{"../Apps/AdminApp.js":3,"../ViewModels/AdminLoginViewModel.js":60,KnoinAbstractScreen:30,_:26}],38:[function(e,t){!function(e,t){"use strict";function i(){var e=t("../ViewModels/AdminMenuViewModel.js"),i=t("../ViewModels/AdminPaneViewModel.js");n.call(this,[e,i])}var s=t("_"),n=t("./AbstractSettings.js");s.extend(i.prototype,n.prototype),i.prototype.onShow=function(){var e=t("../Apps/AdminApp.js");e.setTitle("")},e.exports=i}(t,e)},{"../Apps/AdminApp.js":3,"../ViewModels/AdminMenuViewModel.js":61,"../ViewModels/AdminPaneViewModel.js":62,"./AbstractSettings.js":36,_:26}],39:[function(e,t){!function(e,t){"use strict";function i(){var e=t("../../Storages/AppSettings.js"),i=t("../../Storages/AdminDataStorage.js");this.version=s.observable(e.settingsGet("Version")),this.access=s.observable(!!e.settingsGet("CoreAccess")),this.errorDesc=s.observable(""),this.coreReal=i.coreReal,this.coreUpdatable=i.coreUpdatable,this.coreAccess=i.coreAccess,this.coreChecking=i.coreChecking,this.coreUpdating=i.coreUpdating,this.coreRemoteVersion=i.coreRemoteVersion,this.coreRemoteRelease=i.coreRemoteRelease,this.coreVersionCompare=i.coreVersionCompare,this.statusType=s.computed(function(){var e="",t=this.coreVersionCompare(),i=this.coreChecking(),s=this.coreUpdating(),n=this.coreReal();return i?e="checking":s?e="updating":n&&0===t?e="up-to-date":n&&-1===t?e="available":n||(e="error",this.errorDesc("Cannot access the repository at the moment.")),e},this)}var s=t("ko");i.prototype.onBuild=function(){this.access()&&t("../../Apps/AdminApp.js").reloadCoreData()},i.prototype.updateCoreData=function(){this.coreUpdating()||t("../../Apps/AdminApp.js").updateCoreData()},e.exports=i}(t,e)},{"../../Apps/AdminApp.js":3,"../../Storages/AdminDataStorage.js":53,"../../Storages/AppSettings.js":54,ko:23}],40:[function(e,t){!function(e,t){"use strict";function i(){var e=t("Enums"),i=t("../../Storages/AppSettings.js");this.title=n.observable(i.settingsGet("Title")),this.title.trigger=n.observable(e.SaveSettingsStep.Idle),this.loadingDesc=n.observable(i.settingsGet("LoadingDescription")),this.loadingDesc.trigger=n.observable(e.SaveSettingsStep.Idle),this.loginLogo=n.observable(i.settingsGet("LoginLogo")),this.loginLogo.trigger=n.observable(e.SaveSettingsStep.Idle),this.loginDescription=n.observable(i.settingsGet("LoginDescription")),this.loginDescription.trigger=n.observable(e.SaveSettingsStep.Idle),this.loginCss=n.observable(i.settingsGet("LoginCss")),this.loginCss.trigger=n.observable(e.SaveSettingsStep.Idle)}var s=t("_"),n=t("ko"),o=t("Utils");i.prototype.onBuild=function(){var e=this,i=t("../../Storages/AdminAjaxRemoteStorage.js");s.delay(function(){var t=o.settingsSaveHelperSimpleFunction(e.title.trigger,e),s=o.settingsSaveHelperSimpleFunction(e.loadingDesc.trigger,e),n=o.settingsSaveHelperSimpleFunction(e.loginLogo.trigger,e),a=o.settingsSaveHelperSimpleFunction(e.loginDescription.trigger,e),r=o.settingsSaveHelperSimpleFunction(e.loginCss.trigger,e);e.title.subscribe(function(e){i.saveAdminConfig(t,{Title:o.trim(e)})}),e.loadingDesc.subscribe(function(e){i.saveAdminConfig(s,{LoadingDescription:o.trim(e)})}),e.loginLogo.subscribe(function(e){i.saveAdminConfig(n,{LoginLogo:o.trim(e)})}),e.loginDescription.subscribe(function(e){i.saveAdminConfig(a,{LoginDescription:o.trim(e)})}),e.loginCss.subscribe(function(e){i.saveAdminConfig(r,{LoginCss:o.trim(e)})})},50)},e.exports=i}(t,e)},{"../../Storages/AdminAjaxRemoteStorage.js":52,"../../Storages/AppSettings.js":54,Enums:6,Utils:11,_:26,ko:23}],41:[function(e,t){!function(e,t){"use strict";function i(){var e=t("../../Storages/AdminAjaxRemoteStorage.js");this.defautOptionsAfterRender=a.defautOptionsAfterRender,this.enableContacts=n.observable(!!r.settingsGet("ContactsEnable")),this.contactsSharing=n.observable(!!r.settingsGet("ContactsSharing")),this.contactsSync=n.observable(!!r.settingsGet("ContactsSync"));var i=["sqlite","mysql","pgsql"],l=[],c=function(e){switch(e){case"sqlite":e="SQLite";break;case"mysql":e="MySQL";break;case"pgsql":e="PostgreSQL"}return e};r.settingsGet("SQLiteIsSupported")&&l.push("sqlite"),r.settingsGet("MySqlIsSupported")&&l.push("mysql"),r.settingsGet("PostgreSqlIsSupported")&&l.push("pgsql"),this.contactsSupported=0(new s.Date).getTime()-h),m&&r.oRequests[m]&&(r.oRequests[m].__aborted&&(n="abort"),r.oRequests[m]=null),r.defaultResponse(e,m,n,i,o,t)}),m&&0=e?1:e},this),this.mainMessageListSearch=a.computed({read:this.messageListSearch,write:function(e){b.setHash(g.mailBox(this.currentFolderFullNameHash(),1,h.trim(e.toString())))},owner:this}),this.messageListError=a.observable(""),this.messageListLoading=a.observable(!1),this.messageListIsNotCompleted=a.observable(!1),this.messageListCompleteLoadingThrottle=a.observable(!1).extend({throttle:200}),this.messageListCompleteLoading=a.computed(function(){var e=this.messageListLoading(),t=this.messageListIsNotCompleted();return e||t},this),this.messageListCompleteLoading.subscribe(function(e){this.messageListCompleteLoadingThrottle(e)},this),this.messageList.subscribe(o.debounce(function(e){o.each(e,function(e){e.newForAnimation()&&e.newForAnimation(!1)})},500)),this.staticMessageList=new S,this.message=a.observable(null),this.messageLoading=a.observable(!1),this.messageLoadingThrottle=a.observable(!1).extend({throttle:50}),this.message.focused=a.observable(!1),this.message.subscribe(function(e){e?d.Layout.NoPreview===this.layout()&&this.message.focused(!0):(this.message.focused(!1),this.messageFullScreenMode(!1),this.hideMessageBodies(),d.Layout.NoPreview===this.layout()&&-10?s.Math.ceil(t/e*100):0},this),this.capaOpenPGP=a.observable(!1),this.openpgpkeys=a.observableArray([]),this.openpgpKeyring=null,this.openpgpkeysPublic=this.openpgpkeys.filter(function(e){return!(!e||e.isPrivate)}),this.openpgpkeysPrivate=this.openpgpkeys.filter(function(e){return!(!e||!e.isPrivate)}),this.googleActions=a.observable(!1),this.googleLoggined=a.observable(!1),this.googleUserName=a.observable(""),this.facebookActions=a.observable(!1),this.facebookLoggined=a.observable(!1),this.facebookUserName=a.observable(""),this.twitterActions=a.observable(!1),this.twitterLoggined=a.observable(!1),this.twitterUserName=a.observable(""),this.customThemeType=a.observable(d.CustomThemeType.Light),this.purgeMessageBodyCacheThrottle=o.throttle(this.purgeMessageBodyCache,3e4)}var s=t("window"),n=t("$"),o=t("_"),a=t("ko"),r=t("moment"),l=t("$div"),c=t("NotificationClass"),u=t("Consts"),d=t("Enums"),p=t("Globals"),h=t("Utils"),g=t("LinkBuilder"),m=t("./AppSettings.js"),f=t("./WebMailCacheStorage.js"),b=t("kn"),S=t("../Models/MessageModel.js"),v=t("./LocalStorage.js"),y=t("./AbstractData.js");o.extend(i.prototype,y.prototype),i.prototype.purgeMessageBodyCache=function(){var e=0,t=null,i=p.iMessageBodyCacheCount-u.Values.MessageBodyCacheLimit;i>0&&(t=this.messagesBodiesDom(),t&&(t.find(".rl-cache-class").each(function(){var t=n(this);i>t.data("rl-cache-count")&&(t.addClass("rl-cache-purge"),e++)}),e>0&&o.delay(function(){t.find(".rl-cache-purge").remove()},300)))},i.prototype.populateDataOnStart=function(){y.prototype.populateDataOnStart.call(this),this.accountEmail(m.settingsGet("Email")),this.accountIncLogin(m.settingsGet("IncLogin")),this.accountOutLogin(m.settingsGet("OutLogin")),this.projectHash(m.settingsGet("ProjectHash")),this.defaultIdentityID(m.settingsGet("DefaultIdentityID")),this.displayName(m.settingsGet("DisplayName")),this.replyTo(m.settingsGet("ReplyTo")),this.signature(m.settingsGet("Signature")),this.signatureToAll(!!m.settingsGet("SignatureToAll")),this.enableTwoFactor(!!m.settingsGet("EnableTwoFactor")),this.lastFoldersHash=v.get(d.ClientSideKeyName.FoldersLashHash)||"",this.remoteSuggestions=!!m.settingsGet("RemoteSuggestions"),this.devEmail=m.settingsGet("DevEmail"),this.devPassword=m.settingsGet("DevPassword")},i.prototype.initUidNextAndNewMessages=function(e,t,i){if("INBOX"===e&&h.isNormal(t)&&""!==t){if(h.isArray(i)&&03)l(g.notificationMailIcon(),this.accountEmail(),h.i18n("MESSAGE_LIST/NEW_MESSAGE_NOTIFICATION",{COUNT:r}));else for(;r>a;a++)l(g.notificationMailIcon(),S.emailsToLine(S.initEmailsFromJson(i[a].From),!1),i[a].Subject)}f.setFolderUidNext(e,t)}},i.prototype.hideMessageBodies=function(){var e=this.messagesBodiesDom();e&&e.find(".b-text-part").hide()},i.prototype.getNextFolderNames=function(e){e=h.isUnd(e)?!1:!!e;var t=[],i=10,s=r().unix(),n=s-300,a=[],l=function(t){o.each(t,function(t){t&&"INBOX"!==t.fullNameRaw&&t.selectable&&t.existen&&n>t.interval&&(!e||t.subScribed())&&a.push([t.interval,t.fullNameRaw]),t&&0t[0]?1:0}),o.find(a,function(e){var n=f.getFolderFromCacheList(e[1]);return n&&(n.interval=s,t.push(e[1])),i<=t.length}),o.uniq(t)},i.prototype.removeMessagesFromList=function(e,t,i,s){i=h.isNormal(i)?i:"",s=h.isUnd(s)?!1:!!s,t=o.map(t,function(e){return h.pInt(e)});var n=this,a=0,r=this.messageList(),l=f.getFolderFromCacheList(e),c=""===i?null:f.getFolderFromCacheList(i||""),u=this.currentFolderFullNameRaw(),d=this.message(),p=u===e?o.filter(r,function(e){return e&&-10&&l.messageCountUnread(0<=l.messageCountUnread()-a?l.messageCountUnread()-a:0)),c&&(c.messageCountAll(c.messageCountAll()+t.length),a>0&&c.messageCountUnread(c.messageCountUnread()+a),c.actionBlink(!0)),0').hide().addClass("rl-cache-class"),a.data("rl-cache-count",++p.iMessageBodyCacheCount),h.isNormal(e.Result.Html)&&""!==e.Result.Html?(i=!0,u=e.Result.Html.toString()):h.isNormal(e.Result.Plain)&&""!==e.Result.Plain?(i=!1,u=h.plainToHtml(e.Result.Plain.toString(),!1),(S.isPgpSigned()||S.isPgpEncrypted())&&this.capaOpenPGP()&&(S.plainRaw=h.pString(e.Result.Plain),m=/---BEGIN PGP MESSAGE---/.test(S.plainRaw),m||(g=/-----BEGIN PGP SIGNED MESSAGE-----/.test(S.plainRaw)&&/-----BEGIN PGP SIGNATURE-----/.test(S.plainRaw)),l.empty(),g&&S.isPgpSigned()?u=l.append(n('').text(S.plainRaw)).html():m&&S.isPgpEncrypted()&&(u=l.append(n('').text(S.plainRaw)).html()),l.empty(),S.isPgpSigned(g),S.isPgpEncrypted(m))):i=!1,a.html(h.linkify(u)).addClass("b-text-part "+(i?"html":"plain")),S.isHtml(!!i),S.hasImages(!!s),S.pgpSignedVerifyStatus(d.SignedVerifyStatus.None),S.pgpSignedVerifyUser(""),S.body=a,S.body&&b.append(S.body),S.storeDataToDom(),o&&S.showInternalImages(!0),S.hasImages()&&this.showImages()&&S.showExternalImages(!0),this.purgeMessageBodyCacheThrottle()),this.messageActiveDom(S.body),this.hideMessageBodies(),S.body.show(),a&&h.initBlockquoteSwitcher(a)),f.initMessageFlagsFromCache(S),S.unseen()&&p.__APP&&p.__APP.setMessageSeen(S),h.windowResize())},i.prototype.calculateMessageListHash=function(e){return o.map(e,function(e){return""+e.hash+"_"+e.threadsLen()+"_"+e.flagHash()}).join("|")},i.prototype.findPublicKeyByHex=function(e){return o.find(this.openpgpkeysPublic(),function(t){return t&&e===t.id})},i.prototype.findPublicKeysByEmail=function(e){return o.compact(o.map(this.openpgpkeysPublic(),function(t){var i=null;if(t&&e===t.email)try{if(i=s.openpgp.key.readArmored(t.armor),i&&!i.err&&i.keys&&i.keys[0])return i.keys[0]}catch(n){}return null}))},i.prototype.findPrivateKeyByEmail=function(e,t){var i=null,n=o.find(this.openpgpkeysPrivate(),function(t){return t&&e===t.email});if(n)try{i=s.openpgp.key.readArmored(n.armor),i&&!i.err&&i.keys&&i.keys[0]?(i=i.keys[0],i.decrypt(h.pString(t))):i=null}catch(a){i=null}return i},i.prototype.findSelfPrivateKey=function(e){return this.findPrivateKeyByEmail(this.accountEmail(),e)},e.exports=new i}(t,e)},{$:21,$div:12,"../Models/MessageModel.js":35,"./AbstractData.js":51,"./AppSettings.js":54,"./LocalStorage.js":55,"./WebMailCacheStorage.js":58,Consts:5,Enums:6,Globals:8,LinkBuilder:9,NotificationClass:18,Utils:11,_:26,kn:28,ko:23,moment:24,window:27}],60:[function(e,t){!function(e,t){"use strict";function i(){c.call(this,"Center","AdminLogin"),this.login=n.observable(""),this.password=n.observable(""),this.loginError=n.observable(!1),this.passwordError=n.observable(!1),this.loginFocus=n.observable(!1),this.login.subscribe(function(){this.loginError(!1)},this),this.password.subscribe(function(){this.passwordError(!1)},this),this.submitRequest=n.observable(!1),this.submitError=n.observable(""),this.submitCommand=a.createCommand(this,function(){return a.triggerAutocompleteInputChange(),this.loginError(""===a.trim(this.login())),this.passwordError(""===a.trim(this.password())),this.loginError()||this.passwordError()?!1:(this.submitRequest(!0),r.adminLogin(s.bind(function(e,i){if(o.StorageResultType.Success===e&&i&&"AdminLogin"===i.Action)if(i.Result){var s=t("../Apps/AdminApp.js");s.loginAndLogoutReload()}else i.ErrorCode&&(this.submitRequest(!1),this.submitError(a.getNotification(i.ErrorCode)));else this.submitRequest(!1),this.submitError(a.getNotification(o.Notification.UnknownError))},this),this.login(),this.password()),!0)},function(){return!this.submitRequest()}),l.constructorEnd(this)}var s=t("_"),n=t("ko"),o=t("Enums"),a=t("Utils"),r=t("../Storages/AdminAjaxRemoteStorage.js"),l=t("kn"),c=t("KnoinAbstractViewModel");l.extendAsViewModel("AdminLoginViewModel",i),i.prototype.onShow=function(){l.routeOff(),s.delay(s.bind(function(){this.loginFocus(!0)},this),100)},i.prototype.onHide=function(){this.loginFocus(!1)},i.prototype.onBuild=function(){a.triggerAutocompleteInputChange(!0)},i.prototype.submitForm=function(){this.submitCommand()},e.exports=i}(t,e)},{"../Apps/AdminApp.js":3,"../Storages/AdminAjaxRemoteStorage.js":52,Enums:6,KnoinAbstractViewModel:31,Utils:11,_:26,kn:28,ko:23}],61:[function(e,t){!function(e,t){"use strict";function i(e){o.call(this,"Left","AdminMenu"),this.leftPanelDisabled=n.leftPanelDisabled,this.menu=e.menu,s.constructorEnd(this)}var s=t("kn"),n=t("Globals"),o=t("KnoinAbstractViewModel");s.extendAsViewModel("AdminMenuViewModel",i),i.prototype.link=function(e){return"#/"+e},e.exports=i}(t,e)},{Globals:8,KnoinAbstractViewModel:31,kn:28}],62:[function(e,t){!function(e,t){"use strict";function i(){l.call(this,"Right","AdminPane"),this.adminDomain=s.observable(n.settingsGet("AdminDomain")),this.version=s.observable(n.settingsGet("Version")),this.adminManLoadingVisibility=o.adminManLoadingVisibility,r.constructorEnd(this)}var s=t("ko"),n=t("../Storages/AppSettings.js"),o=t("../Storages/AdminDataStorage.js"),a=t("../Storages/AdminAjaxRemoteStorage.js"),r=t("kn"),l=t("KnoinAbstractViewModel");r.extendAsViewModel("AdminPaneViewModel",i),i.prototype.logoutClick=function(){a.adminLogout(function(){var e=t("../Apps/AdminApp.js");e.loginAndLogoutReload()})},e.exports=i}(t,e)},{"../Apps/AdminApp.js":3,"../Storages/AdminAjaxRemoteStorage.js":52,"../Storages/AdminDataStorage.js":53,"../Storages/AppSettings.js":54,KnoinAbstractViewModel:31,kn:28,ko:23}],63:[function(e,t){!function(e,t){"use strict";function i(){u.call(this,"Popups","PopupsActivate");var e=this;this.domain=s.observable(""),this.key=s.observable(""),this.key.focus=s.observable(!1),this.activationSuccessed=s.observable(!1),this.licenseTrigger=r.licenseTrigger,this.activateProcess=s.observable(!1),this.activateText=s.observable(""),this.activateText.isError=s.observable(!1),this.key.subscribe(function(){this.activateText(""),this.activateText.isError(!1)},this),this.activationSuccessed.subscribe(function(e){e&&this.licenseTrigger(!this.licenseTrigger())},this),this.activateCommand=o.createCommand(this,function(){this.activateProcess(!0),this.validateSubscriptionKey()?l.licensingActivate(function(t,i){e.activateProcess(!1),n.StorageResultType.Success===t&&i.Result?!0===i.Result?(e.activationSuccessed(!0),e.activateText("Subscription Key Activated Successfully"),e.activateText.isError(!1)):(e.activateText(i.Result),e.activateText.isError(!0),e.key.focus(!0)):i.ErrorCode?(e.activateText(o.getNotification(i.ErrorCode)),e.activateText.isError(!0),e.key.focus(!0)):(e.activateText(o.getNotification(n.Notification.UnknownError)),e.activateText.isError(!0),e.key.focus(!0))},this.domain(),this.key()):(this.activateProcess(!1),this.activateText("Invalid Subscription Key"),this.activateText.isError(!0),this.key.focus(!0))},function(){return!this.activateProcess()&&""!==this.domain()&&""!==this.key()&&!this.activationSuccessed()}),c.constructorEnd(this)}var s=t("ko"),n=t("Enums"),o=t("Utils"),a=t("../../Storages/AppSettings.js"),r=t("../../Storages/AdminDataStorage.js"),l=t("../../Storages/AdminAjaxRemoteStorage.js"),c=t("kn"),u=t("KnoinAbstractViewModel");c.extendAsViewModel("PopupsActivateViewModel",i),i.prototype.onShow=function(){this.domain(a.settingsGet("AdminDomain")),this.activateProcess()||(this.key(""),this.activateText(""),this.activateText.isError(!1),this.activationSuccessed(!1))},i.prototype.onFocus=function(){this.activateProcess()||this.key.focus(!0)},i.prototype.validateSubscriptionKey=function(){var e=this.key();return""===e||!!/^RL[\d]+-[A-Z0-9\-]+Z$/.test(o.trim(e))},e.exports=i}(t,e)},{"../../Storages/AdminAjaxRemoteStorage.js":52,"../../Storages/AdminDataStorage.js":53,"../../Storages/AppSettings.js":54,Enums:6,KnoinAbstractViewModel:31,Utils:11,kn:28,ko:23}],64:[function(e,t){!function(e,t){"use strict";
-function i(){l.call(this,"Popups","PopupsAsk"),this.askDesc=s.observable(""),this.yesButton=s.observable(""),this.noButton=s.observable(""),this.yesFocus=s.observable(!1),this.noFocus=s.observable(!1),this.fYesAction=null,this.fNoAction=null,this.bDisabeCloseOnEsc=!0,this.sDefaultKeyScope=o.KeyState.PopupAsk,r.constructorEnd(this)}var s=t("ko"),n=t("key"),o=t("Enums"),a=t("Utils"),r=t("kn"),l=t("KnoinAbstractViewModel");r.extendAsViewModel("PopupsAskViewModel",i),i.prototype.clearPopup=function(){this.askDesc(""),this.yesButton(a.i18n("POPUPS_ASK/BUTTON_YES")),this.noButton(a.i18n("POPUPS_ASK/BUTTON_NO")),this.yesFocus(!1),this.noFocus(!1),this.fYesAction=null,this.fNoAction=null},i.prototype.yesClick=function(){this.cancelCommand(),a.isFunc(this.fYesAction)&&this.fYesAction.call(null)},i.prototype.noClick=function(){this.cancelCommand(),a.isFunc(this.fNoAction)&&this.fNoAction.call(null)},i.prototype.onShow=function(e,t,i,s,n){this.clearPopup(),this.fYesAction=t||null,this.fNoAction=i||null,this.askDesc(e||""),s&&this.yesButton(s),s&&this.yesButton(n)},i.prototype.onFocus=function(){this.yesFocus(!0)},i.prototype.onBuild=function(){n("tab, shift+tab, right, left",o.KeyState.PopupAsk,_.bind(function(){return this.yesFocus()?this.noFocus(!0):this.yesFocus(!0),!1},this)),n("esc",o.KeyState.PopupAsk,_.bind(function(){return this.noClick(),!1},this))},e.exports=i}(t,e)},{Enums:6,KnoinAbstractViewModel:31,Utils:11,key:22,kn:28,ko:23}],65:[function(e,t){!function(e,t){"use strict";function i(){u.call(this,"Popups","PopupsDomain"),this.edit=n.observable(!1),this.saving=n.observable(!1),this.savingError=n.observable(""),this.whiteListPage=n.observable(!1),this.testing=n.observable(!1),this.testingDone=n.observable(!1),this.testingImapError=n.observable(!1),this.testingSmtpError=n.observable(!1),this.testingImapErrorDesc=n.observable(""),this.testingSmtpErrorDesc=n.observable(""),this.testingImapError.subscribe(function(e){e||this.testingImapErrorDesc("")},this),this.testingSmtpError.subscribe(function(e){e||this.testingSmtpErrorDesc("")},this),this.testingImapErrorDesc=n.observable(""),this.testingSmtpErrorDesc=n.observable(""),this.imapServerFocus=n.observable(!1),this.smtpServerFocus=n.observable(!1),this.name=n.observable(""),this.name.focused=n.observable(!1),this.imapServer=n.observable(""),this.imapPort=n.observable(""+a.Values.ImapDefaulPort),this.imapSecure=n.observable(o.ServerSecure.None),this.imapShortLogin=n.observable(!1),this.smtpServer=n.observable(""),this.smtpPort=n.observable(""+a.Values.SmtpDefaulPort),this.smtpSecure=n.observable(o.ServerSecure.None),this.smtpShortLogin=n.observable(!1),this.smtpAuth=n.observable(!0),this.whiteList=n.observable(""),this.headerText=n.computed(function(){var e=this.name();return this.edit()?'Edit Domain "'+e+'"':"Add Domain"+(""===e?"":' "'+e+'"')},this),this.domainIsComputed=n.computed(function(){return""!==this.name()&&""!==this.imapServer()&&""!==this.imapPort()&&""!==this.smtpServer()&&""!==this.smtpPort()},this),this.canBeTested=n.computed(function(){return!this.testing()&&this.domainIsComputed()},this),this.canBeSaved=n.computed(function(){return!this.saving()&&this.domainIsComputed()},this),this.createOrAddCommand=r.createCommand(this,function(){this.saving(!0),l.createOrUpdateDomain(s.bind(this.onDomainCreateOrSaveResponse,this),!this.edit(),this.name(),this.imapServer(),r.pInt(this.imapPort()),this.imapSecure(),this.imapShortLogin(),this.smtpServer(),r.pInt(this.smtpPort()),this.smtpSecure(),this.smtpShortLogin(),this.smtpAuth(),this.whiteList())},this.canBeSaved),this.testConnectionCommand=r.createCommand(this,function(){this.whiteListPage(!1),this.testingDone(!1),this.testingImapError(!1),this.testingSmtpError(!1),this.testing(!0),l.testConnectionForDomain(s.bind(this.onTestConnectionResponse,this),this.name(),this.imapServer(),r.pInt(this.imapPort()),this.imapSecure(),this.smtpServer(),r.pInt(this.smtpPort()),this.smtpSecure(),this.smtpAuth())},this.canBeTested),this.whiteListCommand=r.createCommand(this,function(){this.whiteListPage(!this.whiteListPage())}),this.imapServerFocus.subscribe(function(e){e&&""!==this.name()&&""===this.imapServer()&&this.imapServer(this.name().replace(/[.]?[*][.]?/g,""))},this),this.smtpServerFocus.subscribe(function(e){e&&""!==this.imapServer()&&""===this.smtpServer()&&this.smtpServer(this.imapServer().replace(/imap/gi,"smtp"))},this),this.imapSecure.subscribe(function(e){var t=r.pInt(this.imapPort());switch(e=r.pString(e)){case"0":993===t&&this.imapPort("143");break;case"1":143===t&&this.imapPort("993")}},this),this.smtpSecure.subscribe(function(e){var t=r.pInt(this.smtpPort());switch(e=r.pString(e)){case"0":(465===t||587===t)&&this.smtpPort("25");break;case"1":(25===t||587===t)&&this.smtpPort("465");break;case"2":(25===t||465===t)&&this.smtpPort("587")}},this),c.constructorEnd(this)}var s=t("_"),n=t("ko"),o=t("Enums"),a=t("Consts"),r=t("Utils"),l=t("../../Storages/AdminAjaxRemoteStorage.js"),c=t("kn"),u=t("KnoinAbstractViewModel");c.extendAsViewModel("PopupsDomainViewModel",i),i.prototype.onTestConnectionResponse=function(e,t){this.testing(!1),o.StorageResultType.Success===e&&t.Result?(this.testingDone(!0),this.testingImapError(!0!==t.Result.Imap),this.testingSmtpError(!0!==t.Result.Smtp),this.testingImapError()&&t.Result.Imap&&this.testingImapErrorDesc(t.Result.Imap),this.testingSmtpError()&&t.Result.Smtp&&this.testingSmtpErrorDesc(t.Result.Smtp)):(this.testingImapError(!0),this.testingSmtpError(!0))},i.prototype.onDomainCreateOrSaveResponse=function(e,i){if(this.saving(!1),o.StorageResultType.Success===e&&i)if(i.Result){var s=t("../../Apps/AdminApp.js");s.reloadDomainList(),this.closeCommand()}else o.Notification.DomainAlreadyExists===i.ErrorCode&&this.savingError("Domain already exists");else this.savingError("Unknown error")},i.prototype.onHide=function(){this.whiteListPage(!1)},i.prototype.onShow=function(e){this.saving(!1),this.whiteListPage(!1),this.testing(!1),this.testingDone(!1),this.testingImapError(!1),this.testingSmtpError(!1),this.clearForm(),e&&(this.edit(!0),this.name(r.trim(e.Name)),this.imapServer(r.trim(e.IncHost)),this.imapPort(""+r.pInt(e.IncPort)),this.imapSecure(r.trim(e.IncSecure)),this.imapShortLogin(!!e.IncShortLogin),this.smtpServer(r.trim(e.OutHost)),this.smtpPort(""+r.pInt(e.OutPort)),this.smtpSecure(r.trim(e.OutSecure)),this.smtpShortLogin(!!e.OutShortLogin),this.smtpAuth(!!e.OutAuth),this.whiteList(r.trim(e.WhiteList)))},i.prototype.onFocus=function(){""===this.name()&&this.name.focused(!0)},i.prototype.clearForm=function(){this.edit(!1),this.whiteListPage(!1),this.savingError(""),this.name(""),this.name.focused(!1),this.imapServer(""),this.imapPort(""+a.Values.ImapDefaulPort),this.imapSecure(o.ServerSecure.None),this.imapShortLogin(!1),this.smtpServer(""),this.smtpPort(""+a.Values.SmtpDefaulPort),this.smtpSecure(o.ServerSecure.None),this.smtpShortLogin(!1),this.smtpAuth(!0),this.whiteList("")},e.exports=i}(t,e)},{"../../Apps/AdminApp.js":3,"../../Storages/AdminAjaxRemoteStorage.js":52,Consts:5,Enums:6,KnoinAbstractViewModel:31,Utils:11,_:26,kn:28,ko:23}],66:[function(e,t){!function(e,t){"use strict";function i(){l.call(this,"Popups","PopupsLanguages"),this.exp=n.observable(!1),this.languages=n.computed(function(){return s.map(a.languages(),function(e){return{key:e,selected:n.observable(!1),fullName:o.convertLangName(e)}})}),a.mainLanguage.subscribe(function(){this.resetMainLanguage()},this),r.constructorEnd(this)}var s=t("_"),n=t("ko"),o=t("Utils"),a=t("../../Storages/WebMailDataStorage.js"),r=t("kn"),l=t("KnoinAbstractViewModel");r.extendAsViewModel("PopupsLanguagesViewModel",i),i.prototype.languageEnName=function(e){return o.convertLangName(e,!0)},i.prototype.resetMainLanguage=function(){var e=a.mainLanguage();s.each(this.languages(),function(t){t.selected(t.key===e)})},i.prototype.onShow=function(){this.exp(!0),this.resetMainLanguage()},i.prototype.onHide=function(){this.exp(!1)},i.prototype.changeLanguage=function(e){a.mainLanguage(e),this.cancelCommand()},e.exports=i}(t,e)},{"../../Storages/WebMailDataStorage.js":59,KnoinAbstractViewModel:31,Utils:11,_:26,kn:28,ko:23}],67:[function(e,t){!function(e,t){"use strict";function i(){d.call(this,"Popups","PopupsPlugin");var e=this;this.onPluginSettingsUpdateResponse=s.bind(this.onPluginSettingsUpdateResponse,this),this.saveError=n.observable(""),this.name=n.observable(""),this.readme=n.observable(""),this.configures=n.observableArray([]),this.hasReadme=n.computed(function(){return""!==this.readme()},this),this.hasConfiguration=n.computed(function(){return 0').appendTo("body"),r.on("error",function(t){t&&t.originalEvent&&t.originalEvent.message&&-1===u.inArray(t.originalEvent.message,["Script error.","Uncaught Error: Error calling method on NPObject."])&&e.jsError(u.emptyFunction,t.originalEvent.message,t.originalEvent.filename,t.originalEvent.lineno,o.location&&o.location.toString?o.location.toString():"",a.attr("class"),u.microtime()-c.now)}),l.on("keydown",function(e){e&&e.ctrlKey&&a.addClass("rl-ctrl-key-pressed")}).on("keyup",function(e){e&&!e.ctrlKey&&a.removeClass("rl-ctrl-key-pressed")})}var s=t("$"),n=t("_"),o=t("window"),a=t("$html"),r=t("$win"),l=t("$doc"),c=t("Globals"),u=t("Utils"),d=t("LinkBuilder"),p=t("Events"),h=t("Storage:Settings"),g=t("Knoin:AbstractBoot");n.extend(i.prototype,g.prototype),i.prototype.remote=function(){return null},i.prototype.data=function(){return null},i.prototype.setupSettings=function(){return!0},i.prototype.download=function(e){var t=null,i=null,s=o.navigator.userAgent.toLowerCase();return s&&(s.indexOf("chrome")>-1||s.indexOf("chrome")>-1)&&(i=o.document.createElement("a"),i.href=e,o.document.createEvent&&(t=o.document.createEvent("MouseEvents"),t&&t.initEvent&&i.dispatchEvent))?(t.initEvent("click",!0,!0),i.dispatchEvent(t),!0):(c.bMobileDevice?(o.open(e,"_self"),o.focus()):this.iframe.attr("src",e),!0)},i.prototype.setTitle=function(e){e=(u.isNormal(e)&&01&&(s=s.replace(/[\/]+$/,""),s+="/p"+t),""!==i&&(s=s.replace(/[\/]+$/,""),s+="/"+encodeURI(i)),s},i.prototype.phpInfo=function(){return this.sServer+"Info"},i.prototype.langLink=function(e){return this.sServer+"/Lang/0/"+encodeURI(e)+"/"+this.sVersion+"/"},i.prototype.exportContactsVcf=function(){return this.sServer+"/Raw/"+this.sSpecSuffix+"/ContactsVcf/"},i.prototype.exportContactsCsv=function(){return this.sServer+"/Raw/"+this.sSpecSuffix+"/ContactsCsv/"},i.prototype.emptyContactPic=function(){return this.sStaticPrefix+"css/images/empty-contact.png"},i.prototype.sound=function(e){return this.sStaticPrefix+"sounds/"+e},i.prototype.themePreviewLink=function(e){var t="rainloop/v/"+this.sVersion+"/";return"@custom"===e.substr(-7)&&(e=n.trim(e.substring(0,e.length-7)),t=""),t+"themes/"+encodeURI(e)+"/images/preview.png"},i.prototype.notificationMailIcon=function(){return this.sStaticPrefix+"css/images/icom-message-notification.png"},i.prototype.openPgpJs=function(){return this.sStaticPrefix+"js/openpgp.min.js"},i.prototype.socialGoogle=function(){return this.sServer+"SocialGoogle"+(""!==this.sSpecSuffix?"/"+this.sSpecSuffix+"/":"")},i.prototype.socialTwitter=function(){return this.sServer+"SocialTwitter"+(""!==this.sSpecSuffix?"/"+this.sSpecSuffix+"/":"")},i.prototype.socialFacebook=function(){return this.sServer+"SocialFacebook"+(""!==this.sSpecSuffix?"/"+this.sSpecSuffix+"/":"")},e.exports=new i}(t,e)},{"Storage:Settings":59,Utils:11,window:27}],10:[function(e,t){!function(e,t){"use strict";var i={__boot:null,__remote:null,__data:null},s=t("_"),n=t("Utils"),o=t("Storage:Settings");i.oViewModelsHooks={},i.oSimpleHooks={},i.regViewModelHook=function(e,t){t&&(t.__hookName=e)},i.addHook=function(e,t){n.isFunc(t)&&(n.isArray(i.oSimpleHooks[e])||(i.oSimpleHooks[e]=[]),i.oSimpleHooks[e].push(t))},i.runHook=function(e,t){n.isArray(i.oSimpleHooks[e])&&(t=t||[],s.each(i.oSimpleHooks[e],function(e){e.apply(null,t)}))},i.mainSettingsGet=function(e){return o.settingsGet(e)},i.remoteRequest=function(e,t,s,n,o,a){i.__remote&&i.__remote.defaultRequest(e,t,s,n,o,a)},i.settingsGet=function(e,t){var i=o.settingsGet("Plugins");return i=i&&!n.isUnd(i[e])?i[e]:null,i?n.isUnd(i[t])?null:i[t]:null},e.exports=i}(t,e)},{"Storage:Settings":59,Utils:11,_:26}],11:[function(e,t){!function(e,t){"use strict";var i={},s=t("$"),n=t("_"),o=t("ko"),a=t("window"),r=t("$win"),l=t("$html"),c=t("$div"),u=t("$doc"),d=t("NotificationClass"),p=t("Enums"),h=t("Consts"),g=t("Globals");i.trim=s.trim,i.inArray=s.inArray,i.isArray=n.isArray,i.isFunc=n.isFunction,i.isUnd=n.isUndefined,i.isNull=n.isNull,i.emptyFunction=function(){},i.isNormal=function(e){return!i.isUnd(e)&&!i.isNull(e)},i.windowResize=n.debounce(function(e){i.isUnd(e)?r.resize():a.setTimeout(function(){r.resize()},e)},50),i.isPosNumeric=function(e,t){return i.isNormal(e)?(i.isUnd(t)?0:!t)?/^[1-9]+[0-9]*$/.test(e.toString()):/^[0-9]*$/.test(e.toString()):!1},i.pInt=function(e,t){var s=i.isNormal(e)&&""!==e?a.parseInt(e,10):t||0;return a.isNaN(s)?t||0:s},i.pString=function(e){return i.isNormal(e)?""+e:""},i.isNonEmptyArray=function(e){return i.isArray(e)&&0n;n++)s=i[n].split("="),t[a.decodeURIComponent(s[0])]=a.decodeURIComponent(s[1]);return t},i.rsaEncode=function(e,t,s,n){if(a.crypto&&a.crypto.getRandomValues&&a.RSAKey&&t&&s&&n){var o=new a.RSAKey;if(o.setPublic(n,s),e=o.encrypt(i.fakeMd5()+":"+e+":"+i.fakeMd5()),!1!==e)return"rsa:"+t+":"+e}return!1},i.rsaEncode.supported=!!(a.crypto&&a.crypto.getRandomValues&&a.RSAKey),i.exportPath=function(e,t,s){for(var n=null,o=e.split("."),r=s||a;o.length&&(n=o.shift());)o.length||i.isUnd(t)?r=r[n]?r[n]:r[n]={}:r[n]=t},i.pImport=function(e,t,i){e[t]=i},i.pExport=function(e,t,s){return i.isUnd(e[t])?s:e[t]},i.encodeHtml=function(e){return i.isNormal(e)?e.toString().replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'"):""},i.splitPlainText=function(e,t){var s="",n="",o=e,a=0,r=0;for(t=i.isUnd(t)?100:t;o.length>t;)n=o.substring(0,t),a=n.lastIndexOf(" "),r=n.lastIndexOf("\n"),-1!==r&&(a=r),-1===a&&(a=t),s+=n.substring(0,a)+"\n",o=o.substring(a+1);return s+o},i.timeOutAction=function(){var e={};return function(t,s,n){i.isUnd(e[t])&&(e[t]=0),a.clearTimeout(e[t]),e[t]=a.setTimeout(s,n)}}(),i.timeOutActionSecond=function(){var e={};return function(t,i,s){e[t]||(e[t]=a.setTimeout(function(){i(),e[t]=0},s))}}(),i.audio=function(){var e=!1;return function(t,i){if(!1===e)if(g.bIsiOSDevice)e=null;else{var s=!1,n=!1,o=a.Audio?new a.Audio:null;o&&o.canPlayType&&o.play?(s=""!==o.canPlayType('audio/mpeg; codecs="mp3"'),s||(n=""!==o.canPlayType('audio/ogg; codecs="vorbis"')),s||n?(e=o,e.preload="none",e.loop=!1,e.autoplay=!1,e.muted=!1,e.src=s?t:i):e=null):e=null}return e}}(),i.hos=function(e,t){return e&&a.Object&&a.Object.hasOwnProperty?a.Object.hasOwnProperty.call(e,t):!1},i.i18n=function(e,t,s){var n="",o=i.isUnd(g.oI18N[e])?i.isUnd(s)?e:s:g.oI18N[e];if(!i.isUnd(t)&&!i.isNull(t))for(n in t)i.hos(t,n)&&(o=o.replace("%"+n+"%",t[n]));return o},i.i18nToNode=function(e){n.defer(function(){s(".i18n",e).each(function(){var e=s(this),t="";t=e.data("i18n-text"),t?e.text(i.i18n(t)):(t=e.data("i18n-html"),t&&e.html(i.i18n(t)),t=e.data("i18n-placeholder"),t&&e.attr("placeholder",i.i18n(t)),t=e.data("i18n-title"),t&&e.attr("title",i.i18n(t)))})})},i.i18nReload=function(){a.rainloopI18N&&(g.oI18N=a.rainloopI18N||{},i.i18nToNode(u),g.langChangeTrigger(!g.langChangeTrigger())),a.rainloopI18N=null},i.initOnStartOrLangChange=function(e,t,i){e&&e.call(t),i?g.langChangeTrigger.subscribe(function(){e&&e.call(t),i.call(t)}):e&&g.langChangeTrigger.subscribe(e,t)},i.inFocus=function(){return a.document.activeElement?(i.isUnd(a.document.activeElement.__inFocusCache)&&(a.document.activeElement.__inFocusCache=s(a.document.activeElement).is("input,textarea,iframe,.cke_editable")),!!a.document.activeElement.__inFocusCache):!1},i.removeInFocus=function(){if(a.document&&a.document.activeElement&&a.document.activeElement.blur){var e=s(a.document.activeElement);e.is("input,textarea")&&a.document.activeElement.blur()}},i.removeSelection=function(){if(a&&a.getSelection){var e=a.getSelection();e&&e.removeAllRanges&&e.removeAllRanges()}else a.document&&a.document.selection&&a.document.selection.empty&&a.document.selection.empty()},i.replySubjectAdd=function(e,t){e=i.trim(e.toUpperCase()),t=i.trim(t.replace(/[\s]+/," "));var s=0,n="",o=!1,a="",r=[],l=[],c="RE"===e,u="FWD"===e,d=!u;if(""!==t){for(o=!1,l=t.split(":"),s=0;s0);return e.replace(/[\s]+/," ")},i._replySubjectAdd_=function(e,t,s){var n=null,o=i.trim(t);return o=null===(n=new a.RegExp("^"+e+"[\\s]?\\:(.*)$","gi").exec(t))||i.isUnd(n[1])?null===(n=new a.RegExp("^("+e+"[\\s]?[\\[\\(]?)([\\d]+)([\\]\\)]?[\\s]?\\:.*)$","gi").exec(t))||i.isUnd(n[1])||i.isUnd(n[2])||i.isUnd(n[3])?e+": "+t:n[1]+(i.pInt(n[2])+1)+n[3]:e+"[2]: "+n[1],o=o.replace(/[\s]+/g," "),o=(i.isUnd(s)?!0:s)?i.fixLongSubject(o):o},i._fixLongSubject_=function(e){var t=0,s=null;e=i.trim(e.replace(/[\s]+/," "));do s=/^Re(\[([\d]+)\]|):[\s]{0,3}Re(\[([\d]+)\]|):/gi.exec(e),(!s||i.isUnd(s[0]))&&(s=null),s&&(t=0,t+=i.isUnd(s[2])?1:0+i.pInt(s[2]),t+=i.isUnd(s[4])?1:0+i.pInt(s[4]),e=e.replace(/^Re(\[[\d]+\]|):[\s]{0,3}Re(\[[\d]+\]|):/gi,"Re"+(t>0?"["+t+"]":"")+":"));while(s);return e=e.replace(/[\s]+/," ")},i.roundNumber=function(e,t){return a.Math.round(e*a.Math.pow(10,t))/a.Math.pow(10,t)},i.friendlySize=function(e){return e=i.pInt(e),e>=1073741824?i.roundNumber(e/1073741824,1)+"GB":e>=1048576?i.roundNumber(e/1048576,1)+"MB":e>=1024?i.roundNumber(e/1024,0)+"KB":e+"B"},i.log=function(e){a.console&&a.console.log&&a.console.log(e)},i.getNotification=function(e,t){return e=i.pInt(e),p.Notification.ClientViewError===e&&t?t:i.isUnd(g.oNotificationI18N[e])?"":g.oNotificationI18N[e]},i.initNotificationLanguage=function(){var e=g.oNotificationI18N||{};e[p.Notification.InvalidToken]=i.i18n("NOTIFICATIONS/INVALID_TOKEN"),e[p.Notification.AuthError]=i.i18n("NOTIFICATIONS/AUTH_ERROR"),e[p.Notification.AccessError]=i.i18n("NOTIFICATIONS/ACCESS_ERROR"),e[p.Notification.ConnectionError]=i.i18n("NOTIFICATIONS/CONNECTION_ERROR"),e[p.Notification.CaptchaError]=i.i18n("NOTIFICATIONS/CAPTCHA_ERROR"),e[p.Notification.SocialFacebookLoginAccessDisable]=i.i18n("NOTIFICATIONS/SOCIAL_FACEBOOK_LOGIN_ACCESS_DISABLE"),e[p.Notification.SocialTwitterLoginAccessDisable]=i.i18n("NOTIFICATIONS/SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE"),e[p.Notification.SocialGoogleLoginAccessDisable]=i.i18n("NOTIFICATIONS/SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE"),e[p.Notification.DomainNotAllowed]=i.i18n("NOTIFICATIONS/DOMAIN_NOT_ALLOWED"),e[p.Notification.AccountNotAllowed]=i.i18n("NOTIFICATIONS/ACCOUNT_NOT_ALLOWED"),e[p.Notification.AccountTwoFactorAuthRequired]=i.i18n("NOTIFICATIONS/ACCOUNT_TWO_FACTOR_AUTH_REQUIRED"),e[p.Notification.AccountTwoFactorAuthError]=i.i18n("NOTIFICATIONS/ACCOUNT_TWO_FACTOR_AUTH_ERROR"),e[p.Notification.CouldNotSaveNewPassword]=i.i18n("NOTIFICATIONS/COULD_NOT_SAVE_NEW_PASSWORD"),e[p.Notification.CurrentPasswordIncorrect]=i.i18n("NOTIFICATIONS/CURRENT_PASSWORD_INCORRECT"),e[p.Notification.NewPasswordShort]=i.i18n("NOTIFICATIONS/NEW_PASSWORD_SHORT"),e[p.Notification.NewPasswordWeak]=i.i18n("NOTIFICATIONS/NEW_PASSWORD_WEAK"),e[p.Notification.NewPasswordForbidden]=i.i18n("NOTIFICATIONS/NEW_PASSWORD_FORBIDDENT"),e[p.Notification.ContactsSyncError]=i.i18n("NOTIFICATIONS/CONTACTS_SYNC_ERROR"),e[p.Notification.CantGetMessageList]=i.i18n("NOTIFICATIONS/CANT_GET_MESSAGE_LIST"),e[p.Notification.CantGetMessage]=i.i18n("NOTIFICATIONS/CANT_GET_MESSAGE"),e[p.Notification.CantDeleteMessage]=i.i18n("NOTIFICATIONS/CANT_DELETE_MESSAGE"),e[p.Notification.CantMoveMessage]=i.i18n("NOTIFICATIONS/CANT_MOVE_MESSAGE"),e[p.Notification.CantCopyMessage]=i.i18n("NOTIFICATIONS/CANT_MOVE_MESSAGE"),e[p.Notification.CantSaveMessage]=i.i18n("NOTIFICATIONS/CANT_SAVE_MESSAGE"),e[p.Notification.CantSendMessage]=i.i18n("NOTIFICATIONS/CANT_SEND_MESSAGE"),e[p.Notification.InvalidRecipients]=i.i18n("NOTIFICATIONS/INVALID_RECIPIENTS"),e[p.Notification.CantCreateFolder]=i.i18n("NOTIFICATIONS/CANT_CREATE_FOLDER"),e[p.Notification.CantRenameFolder]=i.i18n("NOTIFICATIONS/CANT_RENAME_FOLDER"),e[p.Notification.CantDeleteFolder]=i.i18n("NOTIFICATIONS/CANT_DELETE_FOLDER"),e[p.Notification.CantDeleteNonEmptyFolder]=i.i18n("NOTIFICATIONS/CANT_DELETE_NON_EMPTY_FOLDER"),e[p.Notification.CantSubscribeFolder]=i.i18n("NOTIFICATIONS/CANT_SUBSCRIBE_FOLDER"),e[p.Notification.CantUnsubscribeFolder]=i.i18n("NOTIFICATIONS/CANT_UNSUBSCRIBE_FOLDER"),e[p.Notification.CantSaveSettings]=i.i18n("NOTIFICATIONS/CANT_SAVE_SETTINGS"),e[p.Notification.CantSavePluginSettings]=i.i18n("NOTIFICATIONS/CANT_SAVE_PLUGIN_SETTINGS"),e[p.Notification.DomainAlreadyExists]=i.i18n("NOTIFICATIONS/DOMAIN_ALREADY_EXISTS"),e[p.Notification.CantInstallPackage]=i.i18n("NOTIFICATIONS/CANT_INSTALL_PACKAGE"),e[p.Notification.CantDeletePackage]=i.i18n("NOTIFICATIONS/CANT_DELETE_PACKAGE"),e[p.Notification.InvalidPluginPackage]=i.i18n("NOTIFICATIONS/INVALID_PLUGIN_PACKAGE"),e[p.Notification.UnsupportedPluginPackage]=i.i18n("NOTIFICATIONS/UNSUPPORTED_PLUGIN_PACKAGE"),e[p.Notification.LicensingServerIsUnavailable]=i.i18n("NOTIFICATIONS/LICENSING_SERVER_IS_UNAVAILABLE"),e[p.Notification.LicensingExpired]=i.i18n("NOTIFICATIONS/LICENSING_EXPIRED"),e[p.Notification.LicensingBanned]=i.i18n("NOTIFICATIONS/LICENSING_BANNED"),e[p.Notification.DemoSendMessageError]=i.i18n("NOTIFICATIONS/DEMO_SEND_MESSAGE_ERROR"),e[p.Notification.AccountAlreadyExists]=i.i18n("NOTIFICATIONS/ACCOUNT_ALREADY_EXISTS"),e[p.Notification.MailServerError]=i.i18n("NOTIFICATIONS/MAIL_SERVER_ERROR"),e[p.Notification.InvalidInputArgument]=i.i18n("NOTIFICATIONS/INVALID_INPUT_ARGUMENT"),e[p.Notification.UnknownNotification]=i.i18n("NOTIFICATIONS/UNKNOWN_ERROR"),e[p.Notification.UnknownError]=i.i18n("NOTIFICATIONS/UNKNOWN_ERROR")
+},i.getUploadErrorDescByCode=function(e){var t="";switch(i.pInt(e)){case p.UploadErrorCode.FileIsTooBig:t=i.i18n("UPLOAD/ERROR_FILE_IS_TOO_BIG");break;case p.UploadErrorCode.FilePartiallyUploaded:t=i.i18n("UPLOAD/ERROR_FILE_PARTIALLY_UPLOADED");break;case p.UploadErrorCode.FileNoUploaded:t=i.i18n("UPLOAD/ERROR_NO_FILE_UPLOADED");break;case p.UploadErrorCode.MissingTempFolder:t=i.i18n("UPLOAD/ERROR_MISSING_TEMP_FOLDER");break;case p.UploadErrorCode.FileOnSaveingError:t=i.i18n("UPLOAD/ERROR_ON_SAVING_FILE");break;case p.UploadErrorCode.FileType:t=i.i18n("UPLOAD/ERROR_FILE_TYPE");break;default:t=i.i18n("UPLOAD/ERROR_UNKNOWN")}return t},i.delegateRun=function(e,t,s,o){e&&e[t]&&(o=i.pInt(o),0>=o?e[t].apply(e,i.isArray(s)?s:[]):n.delay(function(){e[t].apply(e,i.isArray(s)?s:[])},o))},i.killCtrlAandS=function(e){if(e=e||a.event,e&&e.ctrlKey&&!e.shiftKey&&!e.altKey){var t=e.target||e.srcElement,i=e.keyCode||e.which;if(i===p.EventKeyCode.S)return void e.preventDefault();if(t&&t.tagName&&t.tagName.match(/INPUT|TEXTAREA/i))return;i===p.EventKeyCode.A&&(a.getSelection?a.getSelection().removeAllRanges():a.document.selection&&a.document.selection.clear&&a.document.selection.clear(),e.preventDefault())}},i.createCommand=function(e,t,s){var n=t?function(){return n&&n.canExecute&&n.canExecute()&&t.apply(e,Array.prototype.slice.call(arguments)),!1}:function(){};return n.enabled=o.observable(!0),s=i.isUnd(s)?!0:s,n.canExecute=o.computed(i.isFunc(s)?function(){return n.enabled()&&s.call(e)}:function(){return n.enabled()&&!!s}),n},i.initDataConstructorBySettings=function(e){e.editorDefaultType=o.observable(p.EditorDefaultType.Html),e.showImages=o.observable(!1),e.interfaceAnimation=o.observable(p.InterfaceAnimation.Full),e.contactsAutosave=o.observable(!1),g.sAnimationType=p.InterfaceAnimation.Full,e.capaThemes=o.observable(!1),e.allowLanguagesOnSettings=o.observable(!0),e.allowLanguagesOnLogin=o.observable(!0),e.useLocalProxyForExternalImages=o.observable(!1),e.desktopNotifications=o.observable(!1),e.useThreads=o.observable(!0),e.replySameFolder=o.observable(!0),e.useCheckboxesInList=o.observable(!0),e.layout=o.observable(p.Layout.SidePreview),e.usePreviewPane=o.computed(function(){return p.Layout.NoPreview!==e.layout()}),e.interfaceAnimation.subscribe(function(e){if(g.bMobileDevice||e===p.InterfaceAnimation.None)l.removeClass("rl-anim rl-anim-full").addClass("no-rl-anim"),g.sAnimationType=p.InterfaceAnimation.None;else switch(e){case p.InterfaceAnimation.Full:l.removeClass("no-rl-anim").addClass("rl-anim rl-anim-full"),g.sAnimationType=e;break;case p.InterfaceAnimation.Normal:l.removeClass("no-rl-anim rl-anim-full").addClass("rl-anim"),g.sAnimationType=e}}),e.interfaceAnimation.valueHasMutated(),e.desktopNotificationsPermisions=o.computed(function(){e.desktopNotifications();var t=p.DesktopNotifications.NotSupported;if(d&&d.permission)switch(d.permission.toLowerCase()){case"granted":t=p.DesktopNotifications.Allowed;break;case"denied":t=p.DesktopNotifications.Denied;break;case"default":t=p.DesktopNotifications.NotAllowed}else a.webkitNotifications&&a.webkitNotifications.checkPermission&&(t=a.webkitNotifications.checkPermission());return t}),e.useDesktopNotifications=o.computed({read:function(){return e.desktopNotifications()&&p.DesktopNotifications.Allowed===e.desktopNotificationsPermisions()},write:function(t){if(t){var i=e.desktopNotificationsPermisions();p.DesktopNotifications.Allowed===i?e.desktopNotifications(!0):p.DesktopNotifications.NotAllowed===i?d.requestPermission(function(){e.desktopNotifications.valueHasMutated(),p.DesktopNotifications.Allowed===e.desktopNotificationsPermisions()?e.desktopNotifications()?e.desktopNotifications.valueHasMutated():e.desktopNotifications(!0):e.desktopNotifications()?e.desktopNotifications(!1):e.desktopNotifications.valueHasMutated()}):e.desktopNotifications(!1)}else e.desktopNotifications(!1)}}),e.language=o.observable(""),e.languages=o.observableArray([]),e.mainLanguage=o.computed({read:e.language,write:function(t){t!==e.language()?-1=t.diff(s,"hours")?n:t.format("L")===s.format("L")?i.i18n("MESSAGE_LIST/TODAY_AT",{TIME:s.format("LT")}):t.clone().subtract("days",1).format("L")===s.format("L")?i.i18n("MESSAGE_LIST/YESTERDAY_AT",{TIME:s.format("LT")}):s.format(t.year()===s.year()?"D MMM.":"LL")},e)},i.initBlockquoteSwitcher=function(e){if(e){var t=s("blockquote:not(.rl-bq-switcher)",e).filter(function(){return 0===s(this).parent().closest("blockquote",e).length});t&&0100)&&(e.addClass("rl-bq-switcher hidden-bq"),s('').insertBefore(e).click(function(){e.toggleClass("hidden-bq"),i.windowResize()}).after("
").before("
"))})}},i.removeBlockquoteSwitcher=function(e){e&&(s(e).find("blockquote.rl-bq-switcher").each(function(){s(this).removeClass("rl-bq-switcher hidden-bq")}),s(e).find(".rlBlockquoteSwitcher").each(function(){s(this).remove()}))},i.toggleMessageBlockquote=function(e){e&&e.find(".rlBlockquoteSwitcher").click()},i.convertThemeName=function(e){return"@custom"===e.substr(-7)&&(e=i.trim(e.substring(0,e.length-7))),i.trim(e.replace(/[^a-zA-Z]+/g," ").replace(/([A-Z])/g," $1").replace(/[\s]+/g," "))},i.quoteName=function(e){return e.replace(/["]/g,'\\"')},i.microtime=function(){return(new Date).getTime()},i.convertLangName=function(e,t){return i.i18n("LANGS_NAMES"+(!0===t?"_EN":"")+"/LANG_"+e.toUpperCase().replace(/[^a-zA-Z0-9]+/,"_"),null,e)},i.fakeMd5=function(e){var t="",s="0123456789abcdefghijklmnopqrstuvwxyz";for(e=i.isUnd(e)?32:i.pInt(e);t.length>>32-t}function i(e,t){var i,s,n,o,a;return n=2147483648&e,o=2147483648&t,i=1073741824&e,s=1073741824&t,a=(1073741823&e)+(1073741823&t),i&s?2147483648^a^n^o:i|s?1073741824&a?3221225472^a^n^o:1073741824^a^n^o:a^n^o}function s(e,t,i){return e&t|~e&i}function n(e,t,i){return e&i|t&~i}function o(e,t,i){return e^t^i}function a(e,t,i){return t^(e|~i)}function r(e,n,o,a,r,l,c){return e=i(e,i(i(s(n,o,a),r),c)),i(t(e,l),n)}function l(e,s,o,a,r,l,c){return e=i(e,i(i(n(s,o,a),r),c)),i(t(e,l),s)}function c(e,s,n,a,r,l,c){return e=i(e,i(i(o(s,n,a),r),c)),i(t(e,l),s)}function u(e,s,n,o,r,l,c){return e=i(e,i(i(a(s,n,o),r),c)),i(t(e,l),s)}function d(e){for(var t,i=e.length,s=i+8,n=(s-s%64)/64,o=16*(n+1),a=Array(o-1),r=0,l=0;i>l;)t=(l-l%4)/4,r=l%4*8,a[t]=a[t]|e.charCodeAt(l)<>>29,a}function p(e){var t,i,s="",n="";for(i=0;3>=i;i++)t=e>>>8*i&255,n="0"+t.toString(16),s+=n.substr(n.length-2,2);return s}function h(e){e=e.replace(/rn/g,"n");for(var t="",i=0;is?t+=String.fromCharCode(s):s>127&&2048>s?(t+=String.fromCharCode(s>>6|192),t+=String.fromCharCode(63&s|128)):(t+=String.fromCharCode(s>>12|224),t+=String.fromCharCode(s>>6&63|128),t+=String.fromCharCode(63&s|128))}return t}var g,m,f,b,S,v,y,A,w,C=Array(),T=7,E=12,N=17,P=22,L=5,I=9,R=14,k=20,D=4,_=11,F=16,x=23,U=6,M=10,O=15,V=21;for(e=h(e),C=d(e),v=1732584193,y=4023233417,A=2562383102,w=271733878,g=0;g/g,">").replace(/")},i.draggeblePlace=function(){return s('
').appendTo("#rl-hidden")},i.defautOptionsAfterRender=function(e,t){t&&!i.isUnd(t.disabled)&&e&&s(e).toggleClass("disabled",t.disabled).prop("disabled",t.disabled)},i.windowPopupKnockout=function(e,t,n,r){var l=null,c=a.open(""),u="__OpenerApplyBindingsUid"+i.fakeMd5()+"__",d=s("#"+t);a[u]=function(){if(c&&c.document.body&&d&&d[0]){var t=s(c.document.body);s("#rl-content",t).html(d.html()),s("html",c.document).addClass("external "+s("html").attr("class")),i.i18nToNode(t),e&&s("#rl-content",t)[0]&&o.applyBindings(e,s("#rl-content",t)[0]),a[u]=null,r(c)}},c.document.open(),c.document.write(''+i.encodeHtml(n)+''),c.document.close(),l=c.document.createElement("script"),l.type="text/javascript",l.innerHTML="if(window&&window.opener&&window.opener['"+u+"']){window.opener['"+u+"']();window.opener['"+u+"']=null}",c.document.getElementsByTagName("head")[0].appendChild(l)},i.settingsSaveHelperFunction=function(e,t,s,o){return s=s||null,o=i.isUnd(o)?1e3:i.pInt(o),function(i,a,r,l,c){t.call(s,a&&a.Result?p.SaveSettingsStep.TrueResult:p.SaveSettingsStep.FalseResult),e&&e.call(s,i,a,r,l,c),n.delay(function(){t.call(s,p.SaveSettingsStep.Idle)},o)}},i.settingsSaveHelperSimpleFunction=function(e,t){return i.settingsSaveHelperFunction(null,e,t,1e3)},i.htmlToPlain=function(e){var t=0,i=0,n=0,o=0,a=0,r="",l=function(e){for(var t=100,i="",s="",n=e,o=0,a=0;n.length>t;)s=n.substring(0,t),o=s.lastIndexOf(" "),a=s.lastIndexOf("\n"),-1!==a&&(o=a),-1===o&&(o=t),i+=s.substring(0,o)+"\n",n=n.substring(o+1);return i+n},u=function(e){return e=l(s.trim(e)),e="> "+e.replace(/\n/gm,"\n> "),e.replace(/(^|\n)([> ]+)/gm,function(){return arguments&&2]*>([\s\S\r\n]*)<\/div>/gim,d),e="\n"+s.trim(e)+"\n"),e}return""},p=function(){return arguments&&1"):""},h=function(){return arguments&&1/g,">"):""},g=function(){return arguments&&1]*>([\s\S\r\n]*)<\/pre>/gim,p).replace(/[\s]+/gm," ").replace(/((?:href|data)\s?=\s?)("[^"]+?"|'[^']+?')/gim,h).replace(/
]*>/gim,"\n").replace(/<\/h[\d]>/gi,"\n").replace(/<\/p>/gi,"\n\n").replace(/<\/li>/gi,"\n").replace(/<\/td>/gi,"\n").replace(/<\/tr>/gi,"\n").replace(/
]*>/gim,"\n_______________________________\n\n").replace(/]*>([\s\S\r\n]*)<\/div>/gim,d).replace(/
]*>/gim,"\n__bq__start__\n").replace(/<\/blockquote>/gim,"\n__bq__end__\n").replace(/]*>([\s\S\r\n]*?)<\/a>/gim,g).replace(/<\/div>/gi,"\n").replace(/ /gi," ").replace(/"/gi,'"').replace(/<[^>]*>/gm,""),r=c.html(r).text(),r=r.replace(/\n[ \t]+/gm,"\n").replace(/[\n]{3,}/gm,"\n\n").replace(/>/gi,">").replace(/</gi,"<").replace(/&/gi,"&"),t=0,a=100;a>0&&(a--,i=r.indexOf("__bq__start__",t),i>-1);)n=r.indexOf("__bq__start__",i+5),o=r.indexOf("__bq__end__",i+5),(-1===n||n>o)&&o>i?(r=r.substring(0,i)+u(r.substring(i+13,o))+r.substring(o+11),t=0):t=n>-1&&o>n?n-1:0;return r=r.replace(/__bq__start__/gm,"").replace(/__bq__end__/gm,"")},i.plainToHtml=function(e,t){e=e.toString().replace(/\r/g,"");var s=!1,n=!0,o=!0,a=[],r="",l=0,c=e.split("\n");do{for(n=!1,a=[],l=0;l"===r.substr(0,1),o&&!s?(n=!0,s=!0,a.push("~~~blockquote~~~"),a.push(r.substr(1))):!o&&s?(s=!1,a.push("~~~/blockquote~~~"),a.push(r)):a.push(o&&s?r.substr(1):r);s&&(s=!1,a.push("~~~/blockquote~~~")),c=a}while(n);return e=c.join("\n"),e=e.replace(/&/g,"&").replace(/>/g,">").replace(/").replace(/[\s]*~~~\/blockquote~~~/g,"
").replace(/[\-_~]{10,}/g,"
").replace(/\n/g,"
"),t?i.linkify(e):e},a.rainloop_Utils_htmlToPlain=i.htmlToPlain,a.rainloop_Utils_plainToHtml=i.plainToHtml,i.linkify=function(e){return s.fn&&s.fn.linkify&&(e=c.html(e.replace(/&/gi,"amp_amp_12345_amp_amp")).linkify().find(".linkified").removeClass("linkified").end().html().replace(/amp_amp_12345_amp_amp/g,"&")),e},i.resizeAndCrop=function(e,t,i){var s=new a.Image;s.onload=function(){var e=[0,0],s=a.document.createElement("canvas"),n=s.getContext("2d");s.width=t,s.height=t,e=this.width>this.height?[this.width-this.height,0]:[0,this.height-this.width],n.fillStyle="#fff",n.fillRect(0,0,t,t),n.drawImage(this,e[0]/2,e[1]/2,this.width-e[0],this.height-e[1],0,0,t,t),i(s.toDataURL("image/jpeg"))},s.src=e},i.folderListOptionsBuilder=function(e,t,s,n,o,r,l,c,u,d){var h=null,g=!1,m=0,f=0,b=" ",S=[];for(u=i.isNormal(u)?u:0
m;m++)S.push({id:n[m][0],name:n[m][1],system:!1,seporator:!1,disabled:!1});for(g=!0,m=0,f=e.length;f>m;m++)h=e[m],(l?l.call(null,h):!0)&&(g&&0m;m++)h=t[m],(h.subScribed()||!h.existen)&&(l?l.call(null,h):!0)&&(p.FolderType.User===h.type()||!u||01||c>0&&l>c){for(l>c?(u(c),s=c,n=c):((3>=l||l>=c-2)&&(o+=2),u(l),s=l,n=l);o>0;)if(s-=1,n+=1,s>0&&(u(s,!1),o--),c>=n)u(n,!0),o--;else if(0>=s)break;3===s?u(2,!1):s>3&&u(a.Math.round((s-1)/2),!1,"..."),c-2===n?u(c-1,!0):c-2>n&&u(a.Math.round((c+n)/2),!0,"..."),s>1&&u(1,!1),c>n&&u(c,!0)}return r}},i.selectElement=function(e){if(a.getSelection){var t=a.getSelection();t.removeAllRanges();var i=a.document.createRange();i.selectNodeContents(e),t.addRange(i)}else if(a.document.selection){var s=a.document.body.createTextRange();s.moveToElementText(e),s.select()}},i.detectDropdownVisibility=n.debounce(function(){g.dropdownVisibility(!!n.find(g.aBootstrapDropdowns,function(e){return e.hasClass("open")}))},50),i.triggerAutocompleteInputChange=function(e){var t=function(){s(".checkAutocomplete").trigger("change")};e?n.delay(t,100):t()},e.exports=i}(t,e)},{$:21,$div:12,$doc:13,$html:14,$win:15,Consts:5,Enums:6,Globals:8,NotificationClass:18,_:26,ko:23,window:27}],12:[function(e,t){t.exports=e("$")("")},{$:21}],13:[function(e,t){t.exports=e("$")(window.document)},{$:21}],14:[function(e,t){t.exports=e("$")("html")},{$:21}],15:[function(e,t){t.exports=e("$")(window)},{$:21}],16:[function(e,t){t.exports=e("window").rainloopAppData||{}},{window:27}],17:[function(e,t){t.exports=JSON},{}],18:[function(e,t){var i=e("window");t.exports=i.Notification&&i.Notification.requestPermission?i.Notification:null},{window:27}],19:[function(e,t){t.exports=crossroads},{}],20:[function(e,t){t.exports=hasher},{}],21:[function(e,t){t.exports=$},{}],22:[function(e,t){t.exports=key},{}],23:[function(e,t){!function(t,i){"use strict";var s=e("window"),n=e("_"),o=e("$"),a=e("$win"),r=e("$doc");i.bindingHandlers.tooltip={init:function(t,s){var n=e("Globals"),a=e("Utils");if(!n.bMobileDevice){var r=o(t),l=r.data("tooltip-class")||"",c=r.data("tooltip-placement")||"top";r.tooltip({delay:{show:500,hide:100},html:!0,container:"body",placement:c,trigger:"hover",title:function(){return r.is(".disabled")||n.dropdownVisibility()?"":''+a.i18n(i.utils.unwrapObservable(s()))+""}}).click(function(){r.tooltip("hide")}),n.tooltipTrigger.subscribe(function(){r.tooltip("hide")})}}},i.bindingHandlers.tooltip2={init:function(t,i){var s=e("Globals"),n=o(t),a=n.data("tooltip-class")||"",r=n.data("tooltip-placement")||"top";n.tooltip({delay:{show:500,hide:100},html:!0,container:"body",placement:r,title:function(){return n.is(".disabled")||s.dropdownVisibility()?"":''+i()()+""}}).click(function(){n.tooltip("hide")}),s.tooltipTrigger.subscribe(function(){n.tooltip("hide")})}},i.bindingHandlers.tooltip3={init:function(t){var i=o(t),s=e("Globals");i.tooltip({container:"body",trigger:"hover manual",title:function(){return i.data("tooltip3-data")||""}}),r.click(function(){i.tooltip("hide")}),s.tooltipTrigger.subscribe(function(){i.tooltip("hide")})},update:function(e,t){var s=i.utils.unwrapObservable(t());""===s?o(e).data("tooltip3-data","").tooltip("hide"):o(e).data("tooltip3-data",s).tooltip("show")}},i.bindingHandlers.registrateBootstrapDropdown={init:function(t){var i=e("Globals");i.aBootstrapDropdowns.push(o(t))}},i.bindingHandlers.openDropdownTrigger={update:function(t,s){if(i.utils.unwrapObservable(s())){var n=o(t),a=e("Utils");n.hasClass("open")||(n.find(".dropdown-toggle").dropdown("toggle"),a.detectDropdownVisibility()),s()(!1)}}},i.bindingHandlers.dropdownCloser={init:function(e){o(e).closest(".dropdown").on("click",".e-item",function(){o(e).dropdown("toggle")})}},i.bindingHandlers.popover={init:function(e,t){o(e).popover(i.utils.unwrapObservable(t()))}},i.bindingHandlers.csstext={init:function(t,s){var n=e("Utils");t&&t.styleSheet&&!n.isUnd(t.styleSheet.cssText)?t.styleSheet.cssText=i.utils.unwrapObservable(s()):o(t).text(i.utils.unwrapObservable(s()))},update:function(t,s){var n=e("Utils");t&&t.styleSheet&&!n.isUnd(t.styleSheet.cssText)?t.styleSheet.cssText=i.utils.unwrapObservable(s()):o(t).text(i.utils.unwrapObservable(s()))}},i.bindingHandlers.resizecrop={init:function(e){o(e).addClass("resizecrop").resizecrop({width:"100",height:"100",wrapperCSS:{"border-radius":"10px"}})},update:function(e,t){t()(),o(e).resizecrop({width:"100",height:"100"})}},i.bindingHandlers.onEnter={init:function(e,t,i,n){o(e).on("keypress",function(i){i&&13===s.parseInt(i.keyCode,10)&&(o(e).trigger("change"),t().call(n))})}},i.bindingHandlers.onEsc={init:function(e,t,i,n){o(e).on("keypress",function(i){i&&27===s.parseInt(i.keyCode,10)&&(o(e).trigger("change"),t().call(n))})}},i.bindingHandlers.clickOnTrue={update:function(e,t){i.utils.unwrapObservable(t())&&o(e).click()}},i.bindingHandlers.modal={init:function(t,s){var n=e("Globals"),a=e("Utils");o(t).toggleClass("fade",!n.bMobileDevice).modal({keyboard:!1,show:i.utils.unwrapObservable(s())}).on("shown",function(){a.windowResize()}).find(".close").click(function(){s()(!1)})},update:function(e,t){o(e).modal(i.utils.unwrapObservable(t())?"show":"hide")}},i.bindingHandlers.i18nInit={init:function(t){var i=e("Utils");i.i18nToNode(t)}},i.bindingHandlers.i18nUpdate={update:function(t,s){var n=e("Utils");i.utils.unwrapObservable(s()),n.i18nToNode(t)}},i.bindingHandlers.link={update:function(e,t){o(e).attr("href",i.utils.unwrapObservable(t()))}},i.bindingHandlers.title={update:function(e,t){o(e).attr("title",i.utils.unwrapObservable(t()))}},i.bindingHandlers.textF={init:function(e,t){o(e).text(i.utils.unwrapObservable(t()))}},i.bindingHandlers.initDom={init:function(e,t){t()(e)}},i.bindingHandlers.initResizeTrigger={init:function(e,t){var s=i.utils.unwrapObservable(t());o(e).css({height:s[1],"min-height":s[1]})},update:function(t,s){var n=e("Utils"),r=i.utils.unwrapObservable(s()),l=n.pInt(r[1]),c=0,u=o(t).offset().top;u>0&&(u+=n.pInt(r[2]),c=a.height()-u,c>l&&(l=c),o(t).css({height:l,"min-height":l}))}},i.bindingHandlers.appendDom={update:function(e,t){o(e).hide().empty().append(i.utils.unwrapObservable(t())).show()}},i.bindingHandlers.draggable={init:function(t,n,a){var r=e("Globals"),l=e("Utils");if(!r.bMobileDevice){var c=100,u=3,d=a(),p=d&&d.droppableSelector?d.droppableSelector:"",h={distance:20,handle:".dragHandle",cursorAt:{top:22,left:3},refreshPositions:!0,scroll:!0};p&&(h.drag=function(e){o(p).each(function(){var t=null,i=null,n=o(this),a=n.offset(),r=a.top+n.height();s.clearInterval(n.data("timerScroll")),n.data("timerScroll",!1),e.pageX>=a.left&&e.pageX<=a.left+n.width()&&(e.pageY>=r-c&&e.pageY<=r&&(t=function(){n.scrollTop(n.scrollTop()+u),l.windowResize()},n.data("timerScroll",s.setInterval(t,10)),t()),e.pageY>=a.top&&e.pageY<=a.top+c&&(i=function(){n.scrollTop(n.scrollTop()-u),l.windowResize()},n.data("timerScroll",s.setInterval(i,10)),i()))})},h.stop=function(){o(p).each(function(){s.clearInterval(o(this).data("timerScroll")),o(this).data("timerScroll",!1)})}),h.helper=function(e){return n()(e&&e.target?i.dataFor(e.target):null)},o(t).draggable(h).on("mousedown",function(){l.removeInFocus()})}}},i.bindingHandlers.droppable={init:function(t,i,s){var n=e("Globals");if(!n.bMobileDevice){var a=i(),r=s(),l=r&&r.droppableOver?r.droppableOver:null,c=r&&r.droppableOut?r.droppableOut:null,u={tolerance:"pointer",hoverClass:"droppableHover"};a&&(u.drop=function(e,t){a(e,t)},l&&(u.over=function(e,t){l(e,t)}),c&&(u.out=function(e,t){c(e,t)}),o(t).droppable(u))}}},i.bindingHandlers.nano={init:function(t){var i=e("Globals");i.bDisableNanoScroll||o(t).addClass("nano").nanoScroller({iOSNativeScrolling:!1,preventPageScrolling:!0})}},i.bindingHandlers.saveTrigger={init:function(e){var t=o(e);t.data("save-trigger-type",t.is("input[type=text],input[type=email],input[type=password],select,textarea")?"input":"custom"),"custom"===t.data("save-trigger-type")?t.append(' ').addClass("settings-saved-trigger"):t.addClass("settings-saved-trigger-input")},update:function(e,t){var s=i.utils.unwrapObservable(t()),n=o(e);if("custom"===n.data("save-trigger-type"))switch(s.toString()){case"1":n.find(".animated,.error").hide().removeClass("visible").end().find(".success").show().addClass("visible");break;case"0":n.find(".animated,.success").hide().removeClass("visible").end().find(".error").show().addClass("visible");break;case"-2":n.find(".error,.success").hide().removeClass("visible").end().find(".animated").show().addClass("visible");break;default:n.find(".animated").hide().end().find(".error,.success").removeClass("visible")}else switch(s.toString()){case"1":n.addClass("success").removeClass("error");break;case"0":n.addClass("error").removeClass("success");break;case"-2":break;default:n.removeClass("error success")}}},i.bindingHandlers.emailsTags={init:function(t,i,s){var a=e("Utils"),r=e("Model:Email"),l=o(t),c=i(),u=s(),d=u.autoCompleteSource||null,p=function(e){c&&c.focusTrigger&&c.focusTrigger(e)};l.inputosaurus({parseOnBlur:!0,allowDragAndDrop:!0,focusCallback:p,inputDelimiters:[",",";"],autoCompleteSource:d,parseHook:function(e){return n.map(e,function(e){var t=a.trim(e),i=null;return""!==t?(i=new r,i.mailsoParse(t),i.clearDuplicateName(),[i.toLine(!1),i]):[t,null]})},change:n.bind(function(e){l.data("EmailsTagsValue",e.target.value),c(e.target.value)},this)})},update:function(e,t,s){var n=o(e),a=s(),r=a.emailsTagsFilter||null,l=i.utils.unwrapObservable(t());n.data("EmailsTagsValue")!==l&&(n.val(l),n.data("EmailsTagsValue",l),n.inputosaurus("refresh")),r&&i.utils.unwrapObservable(r)&&n.inputosaurus("focus")}},i.bindingHandlers.contactTags={init:function(t,i,s){var a=e("Utils"),r=e("Model:ContactTag"),l=o(t),c=i(),u=s(),d=u.autoCompleteSource||null,p=function(e){c&&c.focusTrigger&&c.focusTrigger(e)};l.inputosaurus({parseOnBlur:!0,allowDragAndDrop:!1,focusCallback:p,inputDelimiters:[",",";"],outputDelimiter:",",autoCompleteSource:d,parseHook:function(e){return n.map(e,function(e){var t=a.trim(e),i=null;return""!==t?(i=new r,i.name(t),[i.toLine(!1),i]):[t,null]})},change:n.bind(function(e){l.data("ContactTagsValue",e.target.value),c(e.target.value)},this)})},update:function(e,t,s){var n=o(e),a=s(),r=a.contactTagsFilter||null,l=i.utils.unwrapObservable(t());n.data("ContactTagsValue")!==l&&(n.val(l),n.data("ContactTagsValue",l),n.inputosaurus("refresh")),r&&i.utils.unwrapObservable(r)&&n.inputosaurus("focus")}},i.bindingHandlers.command={init:function(e,t,s,n){var a=o(e),r=t();if(!r||!r.enabled||!r.canExecute)throw new Error("You are not using command function");a.addClass("command"),i.bindingHandlers[a.is("form")?"submit":"click"].init.apply(n,arguments)},update:function(e,t){var i=!0,s=o(e),n=t();i=n.enabled(),s.toggleClass("command-not-enabled",!i),i&&(i=n.canExecute(),s.toggleClass("command-can-not-be-execute",!i)),s.toggleClass("command-disabled disable disabled",!i).toggleClass("no-disabled",!!i),(s.is("input")||s.is("button"))&&s.prop("disabled",!i)}},i.extenders.trimmer=function(t){var s=e("Utils"),n=i.computed({read:t,write:function(e){t(s.trim(e.toString()))},owner:this});return n(t()),n},i.extenders.posInterer=function(t,s){var n=e("Utils"),o=i.computed({read:t,write:function(e){var i=n.pInt(e.toString(),s);0>=i&&(i=s),i===t()&&""+i!=""+e&&t(i+1),t(i)}});return o(t()),o},i.extenders.reversible=function(e){var t=e();return e.commit=function(){t=e()},e.reverse=function(){e(t)},e.commitedValue=function(){return t},e},i.extenders.toggleSubscribe=function(e,t){return e.subscribe(t[1],t[0],"beforeChange"),e.subscribe(t[2],t[0]),e},i.extenders.falseTimeout=function(t,i){var n=e("Utils");return t.iTimeout=0,t.subscribe(function(e){e&&(s.clearTimeout(t.iTimeout),t.iTimeout=s.setTimeout(function(){t(!1),t.iTimeout=0},n.pInt(i)))}),t},i.observable.fn.validateNone=function(){return this.hasError=i.observable(!1),this},i.observable.fn.validateEmail=function(){var t=e("Utils");return this.hasError=i.observable(!1),this.subscribe(function(e){e=t.trim(e),this.hasError(""!==e&&!/^[^@\s]+@[^@\s]+$/.test(e))},this),this.valueHasMutated(),this},i.observable.fn.validateSimpleEmail=function(){var t=e("Utils");return this.hasError=i.observable(!1),this.subscribe(function(e){e=t.trim(e),this.hasError(""!==e&&!/^.+@.+$/.test(e))},this),this.valueHasMutated(),this},i.observable.fn.validateFunc=function(t){var s=e("Utils");return this.hasFuncError=i.observable(!1),s.isFunc(t)&&(this.subscribe(function(e){this.hasFuncError(!t(e))},this),this.valueHasMutated()),this},t.exports=i}(t,ko)},{$:21,$doc:13,$win:15,Globals:8,"Model:ContactTag":33,"Model:Email":34,Utils:11,_:26,window:27}],24:[function(e,t){t.exports=moment},{}],25:[function(e,t){t.exports=ssm},{}],26:[function(e,t){t.exports=_},{}],27:[function(e,t){t.exports=window},{}],28:[function(e,t){!function(e,t){"use strict";function i(){this.oScreens={},this.sDefaultScreenName="",this.oCurrentScreen=null}var s=t("$"),n=t("_"),o=t("ko"),a=t("hasher"),r=t("crossroads"),l=t("$html"),c=t("Globals"),u=t("Plugins"),d=t("Utils"),p=t("Knoin:AbstractViewModel");i.prototype.oScreens={},i.prototype.sDefaultScreenName="",i.prototype.oCurrentScreen=null,i.prototype.hideLoading=function(){s("#rl-loading").hide()},i.prototype.constructorEnd=function(e){d.isFunc(e.__constructor_end)&&e.__constructor_end.call(e)},i.prototype.extendAsViewModel=function(e,t,i){t&&(i||(i=p),t.__name=e,u.regViewModelHook(e,t),n.extend(t.prototype,i.prototype))},i.prototype.addSettingsViewModel=function(e,t,i,s,n){e.__rlSettingsData={Label:i,Template:t,Route:s,IsDefault:!!n},c.aViewModels.settings.push(e)},i.prototype.removeSettingsViewModel=function(e){c.aViewModels["settings-removed"].push(e)},i.prototype.disableSettingsViewModel=function(e){c.aViewModels["settings-disabled"].push(e)},i.prototype.routeOff=function(){a.changed.active=!1},i.prototype.routeOn=function(){a.changed.active=!0},i.prototype.screen=function(e){return""===e||d.isUnd(this.oScreens[e])?null:this.oScreens[e]},i.prototype.buildViewModel=function(e,t){if(e&&!e.__builded){var i=this,a=new e(t),r=a.viewModelPosition(),l=s("#rl-content #rl-"+r.toLowerCase()),p=null;
+e.__builded=!0,e.__vm=a,a.viewModelName=e.__name,l&&1===l.length?(p=s("").addClass("rl-view-model").addClass("RL-"+a.viewModelTemplate()).hide(),p.appendTo(l),a.viewModelDom=p,e.__dom=p,"Popups"===r&&(a.cancelCommand=a.closeCommand=d.createCommand(a,function(){i.hideScreenPopup(e)}),a.modalVisibility.subscribe(function(e){var t=this;e?(this.viewModelDom.show(),this.storeAndSetKeyScope(),c.popupVisibilityNames.push(this.viewModelName),a.viewModelDom.css("z-index",3e3+c.popupVisibilityNames().length+10),d.delegateRun(this,"onFocus",[],500)):(d.delegateRun(this,"onHide"),this.restoreKeyScope(),c.popupVisibilityNames.remove(this.viewModelName),a.viewModelDom.css("z-index",2e3),c.tooltipTrigger(!c.tooltipTrigger()),n.delay(function(){t.viewModelDom.hide()},300))},a)),u.runHook("view-model-pre-build",[e.__name,a,p]),o.applyBindingAccessorsToNode(p[0],{i18nInit:!0,template:function(){return{name:a.viewModelTemplate()}}},a),d.delegateRun(a,"onBuild",[p]),a&&"Popups"===r&&a.registerPopupKeyDown(),u.runHook("view-model-post-build",[e.__name,a,p])):d.log("Cannot find view model position: "+r)}return e?e.__vm:null},i.prototype.hideScreenPopup=function(e){e&&e.__vm&&e.__dom&&(e.__vm.modalVisibility(!1),u.runHook("view-model-on-hide",[e.__name,e.__vm]))},i.prototype.showScreenPopup=function(e,t){e&&(this.buildViewModel(e),e.__vm&&e.__dom&&(e.__vm.modalVisibility(!0),d.delegateRun(e.__vm,"onShow",t||[]),u.runHook("view-model-on-show",[e.__name,e.__vm,t||[]])))},i.prototype.isPopupVisible=function(e){return e&&e.__vm?e.__vm.modalVisibility():!1},i.prototype.screenOnRoute=function(e,t){var i=this,s=null,o=null;""===d.pString(e)&&(e=this.sDefaultScreenName),""!==e&&(s=this.screen(e),s||(s=this.screen(this.sDefaultScreenName),s&&(t=e+"/"+t,e=this.sDefaultScreenName)),s&&s.__started&&(s.__builded||(s.__builded=!0,d.isNonEmptyArray(s.viewModels())&&n.each(s.viewModels(),function(e){this.buildViewModel(e,s)},this),d.delegateRun(s,"onBuild")),n.defer(function(){i.oCurrentScreen&&(d.delegateRun(i.oCurrentScreen,"onHide"),d.isNonEmptyArray(i.oCurrentScreen.viewModels())&&n.each(i.oCurrentScreen.viewModels(),function(e){e.__vm&&e.__dom&&"Popups"!==e.__vm.viewModelPosition()&&(e.__dom.hide(),e.__vm.viewModelVisibility(!1),d.delegateRun(e.__vm,"onHide"))})),i.oCurrentScreen=s,i.oCurrentScreen&&(d.delegateRun(i.oCurrentScreen,"onShow"),u.runHook("screen-on-show",[i.oCurrentScreen.screenName(),i.oCurrentScreen]),d.isNonEmptyArray(i.oCurrentScreen.viewModels())&&n.each(i.oCurrentScreen.viewModels(),function(e){e.__vm&&e.__dom&&"Popups"!==e.__vm.viewModelPosition()&&(e.__dom.show(),e.__vm.viewModelVisibility(!0),d.delegateRun(e.__vm,"onShow"),d.delegateRun(e.__vm,"onFocus",[],200),u.runHook("view-model-on-show",[e.__name,e.__vm]))},i)),o=s.__cross?s.__cross():null,o&&o.parse(t)})))},i.prototype.startScreens=function(e){s("#rl-content").css({visibility:"hidden"}),n.each(e,function(e){var t=new e,i=t?t.screenName():"";t&&""!==i&&(""===this.sDefaultScreenName&&(this.sDefaultScreenName=i),this.oScreens[i]=t)},this),n.each(this.oScreens,function(e){e&&!e.__started&&e.__start&&(e.__started=!0,e.__start(),u.runHook("screen-pre-start",[e.screenName(),e]),d.delegateRun(e,"onStart"),u.runHook("screen-post-start",[e.screenName(),e]))},this);var t=r.create();t.addRoute(/^([a-zA-Z0-9\-]*)\/?(.*)$/,n.bind(this.screenOnRoute,this)),a.initialized.add(t.parse,t),a.changed.add(t.parse,t),a.init(),s("#rl-content").css({visibility:"visible"}),n.delay(function(){l.removeClass("rl-started-trigger").addClass("rl-started")},50)},i.prototype.setHash=function(e,t,i){e="#"===e.substr(0,1)?e.substr(1):e,e="/"===e.substr(0,1)?e.substr(1):e,i=d.isUnd(i)?!1:!!i,(d.isUnd(t)?1:!t)?(a.changed.active=!0,a[i?"replaceHash":"setHash"](e),a.setHash(e)):(a.changed.active=!1,a[i?"replaceHash":"setHash"](e),a.changed.active=!0)},e.exports=new i}(t,e)},{$:21,$html:14,Globals:8,"Knoin:AbstractViewModel":31,Plugins:10,Utils:11,_:26,crossroads:19,hasher:20,ko:23}],29:[function(e,t){!function(e){"use strict";function t(){}t.prototype.bootstart=function(){},e.exports=t}(t,e)},{}],30:[function(e,t){!function(e,t){"use strict";function i(e,t){this.sScreenName=e,this.aViewModels=n.isArray(t)?t:[]}var s=t("crossroads"),n=t("Utils");i.prototype.oCross=null,i.prototype.sScreenName="",i.prototype.aViewModels=[],i.prototype.viewModels=function(){return this.aViewModels},i.prototype.screenName=function(){return this.sScreenName},i.prototype.routes=function(){return null},i.prototype.__cross=function(){return this.oCross},i.prototype.__start=function(){var e=this.routes(),t=null,i=null;n.isNonEmptyArray(e)&&(i=_.bind(this.onRoute||n.emptyFunction,this),t=s.create(),_.each(e,function(e){t.addRoute(e[0],i).rules=e[1]}),this.oCross=t)},e.exports=i}(t,e)},{Utils:11,crossroads:19}],31:[function(e,t){!function(e,t){"use strict";function i(e,t){this.bDisabeCloseOnEsc=!1,this.sPosition=r.pString(e),this.sTemplate=r.pString(t),this.sDefaultKeyScope=o.KeyState.None,this.sCurrentKeyScope=this.sDefaultKeyScope,this.viewModelName="",this.viewModelVisibility=s.observable(!1),this.modalVisibility=s.observable(!1).extend({rateLimit:0}),this.viewModelDom=null}var s=t("ko"),n=t("$win"),o=t("Enums"),a=t("Globals"),r=t("Utils");i.prototype.sPosition="",i.prototype.sTemplate="",i.prototype.viewModelName="",i.prototype.viewModelDom=null,i.prototype.viewModelTemplate=function(){return this.sTemplate},i.prototype.viewModelPosition=function(){return this.sPosition},i.prototype.cancelCommand=function(){},i.prototype.closeCommand=function(){},i.prototype.storeAndSetKeyScope=function(){this.sCurrentKeyScope=a.keyScope(),a.keyScope(this.sDefaultKeyScope)},i.prototype.restoreKeyScope=function(){a.keyScope(this.sCurrentKeyScope)},i.prototype.registerPopupKeyDown=function(){var e=this;n.on("keydown",function(t){if(t&&e.modalVisibility&&e.modalVisibility()){if(!this.bDisabeCloseOnEsc&&o.EventKeyCode.Esc===t.keyCode)return r.delegateRun(e,"cancelCommand"),!1;if(o.EventKeyCode.Backspace===t.keyCode&&!r.inFocus())return!1}return!0})},e.exports=i}(t,e)},{$win:15,Enums:6,Globals:8,Utils:11,ko:23}],32:[function(e,t){!function(e,t){"use strict";function i(){this.mimeType="",this.fileName="",this.estimatedSize=0,this.friendlySize="",this.isInline=!1,this.isLinked=!1,this.cid="",this.cidWithOutTags="",this.contentLocation="",this.download="",this.folder="",this.uid="",this.mimeIndex=""}var s=t("window"),n=t("Globals"),o=t("Utils"),a=t("LinkBuilder");i.newInstanceFromJson=function(e){var t=new i;return t.initByJson(e)?t:null},i.prototype.mimeType="",i.prototype.fileName="",i.prototype.estimatedSize=0,i.prototype.friendlySize="",i.prototype.isInline=!1,i.prototype.isLinked=!1,i.prototype.cid="",i.prototype.cidWithOutTags="",i.prototype.contentLocation="",i.prototype.download="",i.prototype.folder="",i.prototype.uid="",i.prototype.mimeIndex="",i.prototype.initByJson=function(e){var t=!1;return e&&"Object/Attachment"===e["@Object"]&&(this.mimeType=(e.MimeType||"").toLowerCase(),this.fileName=e.FileName,this.estimatedSize=o.pInt(e.EstimatedSize),this.isInline=!!e.IsInline,this.isLinked=!!e.IsLinked,this.cid=e.CID,this.contentLocation=e.ContentLocation,this.download=e.Download,this.folder=e.Folder,this.uid=e.Uid,this.mimeIndex=e.MimeIndex,this.friendlySize=o.friendlySize(this.estimatedSize),this.cidWithOutTags=this.cid.replace(/^<+/,"").replace(/>+$/,""),t=!0),t},i.prototype.isImage=function(){return-1,]+)>?,? ?/g,i=t.exec(e);i?(this.name=i[1]||"",this.email=i[2]||"",this.clearDuplicateName()):/^[^@]+@[^@]+$/.test(e)&&(this.name="",this.email=e)},i.prototype.initByJson=function(e){var t=!1;return e&&"Object/Email"===e["@Object"]&&(this.name=n.trim(e.Name),this.email=n.trim(e.Email),t=""!==this.email,this.clearDuplicateName()),t},i.prototype.toLine=function(e,t,i){var s="";return""!==this.email&&(t=n.isUnd(t)?!1:!!t,i=n.isUnd(i)?!1:!!i,e&&""!==this.name?s=t?'")+'" target="_blank" tabindex="-1">'+n.encodeHtml(this.name)+"":i?n.encodeHtml(this.name):this.name:(s=this.email,""!==this.name?t?s=n.encodeHtml('"'+this.name+'" <')+'")+'" target="_blank" tabindex="-1">'+n.encodeHtml(s)+""+n.encodeHtml(">"):(s='"'+this.name+'" <'+s+">",i&&(s=n.encodeHtml(s))):t&&(s=''+n.encodeHtml(this.email)+""))),s},i.prototype.mailsoParse=function(e){if(e=n.trim(e),""===e)return!1;for(var t=function(e,t,i){e+="";var s=e.length;return 0>t&&(t+=s),s="undefined"==typeof i?s:0>i?i+s:i+t,t>=e.length||0>t||t>s?!1:e.slice(t,s)},i=function(e,t,i,s){return 0>i&&(i+=e.length),s=void 0!==s?s:e.length,0>s&&(s=s+e.length-i),e.slice(0,i)+t.substr(0,s)+t.slice(s)+e.slice(i+s)},s="",o="",a="",r=!1,l=!1,c=!1,u=null,d=0,p=0,h=0;h0&&0===s.length&&(s=t(e,0,h)),l=!0,d=h);break;case">":l&&(p=h,o=t(e,d+1,p-d-1),e=i(e,"",d,p-d+1),p=0,h=0,d=0,l=!1);break;case"(":r||l||c||(c=!0,d=h);break;case")":c&&(p=h,a=t(e,d+1,p-d-1),e=i(e,"",d,p-d+1),p=0,h=0,d=0,c=!1);break;case"\\":h++}h++}return 0===o.length&&(u=e.match(/[^@\s]+@\S+/i),u&&u[0]?o=u[0]:s=e),o.length>0&&0===s.length&&0===a.length&&(s=e.replace(o,"")),o=n.trim(o).replace(/^[<]+/,"").replace(/[>]+$/,""),s=n.trim(s).replace(/^["']+/,"").replace(/["']+$/,""),a=n.trim(a).replace(/^[(]+/,"").replace(/[)]+$/,""),s=s.replace(/\\\\(.)/,"$1"),a=a.replace(/\\\\(.)/,"$1"),this.name=s,this.email=o,this.clearDuplicateName(),!0},i.prototype.inputoTagLine=function(){return 0t?t:e))},this),this.body=null,this.plainRaw="",this.isHtml=a.observable(!1),this.hasImages=a.observable(!1),this.attachments=a.observableArray([]),this.isPgpSigned=a.observable(!1),this.isPgpEncrypted=a.observable(!1),this.pgpSignedVerifyStatus=a.observable(u.SignedVerifyStatus.None),this.pgpSignedVerifyUser=a.observable(""),this.priority=a.observable(u.MessagePriority.Normal),this.readReceipt=a.observable(""),this.aDraftInfo=[],this.sMessageId="",this.sInReplyTo="",this.sReferences="",this.parentUid=a.observable(0),this.threads=a.observableArray([]),this.threadsLen=a.observable(0),this.hasUnseenSubMessage=a.observable(!1),this.hasFlaggedSubMessage=a.observable(!1),this.lastInCollapsedThread=a.observable(!1),this.lastInCollapsedThreadLoading=a.observable(!1),this.threadsLenResult=a.computed(function(){var e=this.threadsLen();return 0===this.parentUid()&&e>0?e+1:""},this)}var s=t("window"),n=t("$"),o=t("_"),a=t("ko"),r=t("moment"),l=t("$win"),c=t("$div"),u=t("Enums"),d=t("Utils"),p=t("LinkBuilder"),h=t("Model:Email"),g=t("Model:Attachment");i.newInstanceFromJson=function(e){var t=new i;return t.initByJson(e)?t:null},i.calculateFullFromatDateValue=function(e){return e>0?r.unix(e).format("LLL"):""},i.emailsToLine=function(e,t,i){var s=[],n=0,o=0;if(d.isNonEmptyArray(e))for(n=0,o=e.length;o>n;n++)s.push(e[n].toLine(t,i));return s.join(", ")},i.emailsToLineClear=function(e){var t=[],i=0,s=0;if(d.isNonEmptyArray(e))for(i=0,s=e.length;s>i;i++)e[i]&&e[i].email&&""!==e[i].name&&t.push(e[i].email);return t.join(", ")},i.initEmailsFromJson=function(e){var t=0,i=0,s=null,n=[];if(d.isNonEmptyArray(e))for(t=0,i=e.length;i>t;t++)s=h.newInstanceFromJson(e[t]),s&&n.push(s);return n},i.replyHelper=function(e,t,i){if(e&&0s;s++)d.isUnd(t[e[s].email])&&(t[e[s].email]=!0,i.push(e[s]))},i.prototype.clear=function(){this.folderFullNameRaw="",this.uid="",this.hash="",this.requestHash="",this.subject(""),this.subjectPrefix(""),this.subjectSuffix(""),this.size(0),this.dateTimeStampInUTC(0),this.priority(u.MessagePriority.Normal),this.proxy=!1,this.fromEmailString(""),this.fromClearEmailString(""),this.toEmailsString(""),this.toClearEmailsString(""),this.senderEmailsString(""),this.senderClearEmailsString(""),this.emails=[],this.from=[],this.to=[],this.cc=[],this.bcc=[],this.replyTo=[],this.deliveredTo=[],this.newForAnimation(!1),this.deleted(!1),this.unseen(!1),this.flagged(!1),this.answered(!1),this.forwarded(!1),this.isReadReceipt(!1),this.selected(!1),this.checked(!1),this.hasAttachments(!1),this.attachmentsMainType(""),this.body=null,this.isHtml(!1),this.hasImages(!1),this.attachments([]),this.isPgpSigned(!1),this.isPgpEncrypted(!1),this.pgpSignedVerifyStatus(u.SignedVerifyStatus.None),this.pgpSignedVerifyUser(""),this.priority(u.MessagePriority.Normal),this.readReceipt(""),this.aDraftInfo=[],this.sMessageId="",this.sInReplyTo="",this.sReferences="",this.parentUid(0),this.threads([]),this.threadsLen(0),this.hasUnseenSubMessage(!1),this.hasFlaggedSubMessage(!1),this.lastInCollapsedThread(!1),this.lastInCollapsedThreadLoading(!1)},i.prototype.computeSenderEmail=function(){var e=t("Storage:RainLoop:Data"),i=e.sentFolder(),s=e.draftFolder();this.senderEmailsString(this.folderFullNameRaw===i||this.folderFullNameRaw===s?this.toEmailsString():this.fromEmailString()),this.senderClearEmailsString(this.folderFullNameRaw===i||this.folderFullNameRaw===s?this.toClearEmailsString():this.fromClearEmailString())},i.prototype.initByJson=function(e){var t=!1;return e&&"Object/Message"===e["@Object"]&&(this.folderFullNameRaw=e.Folder,this.uid=e.Uid,this.hash=e.Hash,this.requestHash=e.RequestHash,this.proxy=!!e.ExternalProxy,this.size(d.pInt(e.Size)),this.from=i.initEmailsFromJson(e.From),this.to=i.initEmailsFromJson(e.To),this.cc=i.initEmailsFromJson(e.Cc),this.bcc=i.initEmailsFromJson(e.Bcc),this.replyTo=i.initEmailsFromJson(e.ReplyTo),this.deliveredTo=i.initEmailsFromJson(e.DeliveredTo),this.subject(e.Subject),d.isArray(e.SubjectParts)?(this.subjectPrefix(e.SubjectParts[0]),this.subjectSuffix(e.SubjectParts[1])):(this.subjectPrefix(""),this.subjectSuffix(this.subject())),this.dateTimeStampInUTC(d.pInt(e.DateTimeStampInUTC)),this.hasAttachments(!!e.HasAttachments),this.attachmentsMainType(e.AttachmentsMainType),this.fromEmailString(i.emailsToLine(this.from,!0)),this.fromClearEmailString(i.emailsToLineClear(this.from)),this.toEmailsString(i.emailsToLine(this.to,!0)),this.toClearEmailsString(i.emailsToLineClear(this.to)),this.parentUid(d.pInt(e.ParentThread)),this.threads(d.isArray(e.Threads)?e.Threads:[]),this.threadsLen(d.pInt(e.ThreadsLen)),this.initFlagsByJson(e),this.computeSenderEmail(),t=!0),t},i.prototype.initUpdateByMessageJson=function(e){var i=t("Storage:RainLoop:Data"),s=!1,n=u.MessagePriority.Normal;return e&&"Object/Message"===e["@Object"]&&(n=d.pInt(e.Priority),this.priority(-1t;t++)s=g.newInstanceFromJson(e["@Collection"][t]),s&&(""!==s.cidWithOutTags&&0+$/,""),t=o.find(i,function(t){return e===t.cidWithOutTags})),t||null},i.prototype.findAttachmentByContentLocation=function(e){var t=null,i=this.attachments();return d.isNonEmptyArray(i)&&(t=o.find(i,function(t){return e===t.contentLocation})),t||null},i.prototype.messageId=function(){return this.sMessageId},i.prototype.inReplyTo=function(){return this.sInReplyTo},i.prototype.references=function(){return this.sReferences},i.prototype.fromAsSingleEmail=function(){return d.isArray(this.from)&&this.from[0]?this.from[0].email:""},i.prototype.viewLink=function(){return p.messageViewLink(this.requestHash)},i.prototype.downloadLink=function(){return p.messageDownloadLink(this.requestHash)},i.prototype.replyEmails=function(e){var t=[],s=d.isUnd(e)?{}:e;return i.replyHelper(this.replyTo,s,t),0===t.length&&i.replyHelper(this.from,s,t),t},i.prototype.replyAllEmails=function(e){var t=[],s=[],n=d.isUnd(e)?{}:e;return i.replyHelper(this.replyTo,n,t),0===t.length&&i.replyHelper(this.from,n,t),i.replyHelper(this.to,n,t),i.replyHelper(this.cc,n,s),[t,s]},i.prototype.textBodyToString=function(){return this.body?this.body.html():""},i.prototype.attachmentsToStringLine=function(){var e=o.map(this.attachments(),function(e){return e.fileName+" ("+e.friendlySize+")"});return e&&0=0&&s&&!o&&i.attr("src",s)}),e&&s.setTimeout(function(){t.print()},100))})},i.prototype.printMessage=function(){this.viewPopupMessage(!0)},i.prototype.generateUid=function(){return this.folderFullNameRaw+"/"+this.uid},i.prototype.populateByMessageListItem=function(e){return this.folderFullNameRaw=e.folderFullNameRaw,this.uid=e.uid,this.hash=e.hash,this.requestHash=e.requestHash,this.subject(e.subject()),this.subjectPrefix(this.subjectPrefix()),this.subjectSuffix(this.subjectSuffix()),this.size(e.size()),this.dateTimeStampInUTC(e.dateTimeStampInUTC()),this.priority(e.priority()),this.proxy=e.proxy,this.fromEmailString(e.fromEmailString()),this.fromClearEmailString(e.fromClearEmailString()),this.toEmailsString(e.toEmailsString()),this.toClearEmailsString(e.toClearEmailsString()),this.emails=e.emails,this.from=e.from,this.to=e.to,this.cc=e.cc,this.bcc=e.bcc,this.replyTo=e.replyTo,this.deliveredTo=e.deliveredTo,this.unseen(e.unseen()),this.flagged(e.flagged()),this.answered(e.answered()),this.forwarded(e.forwarded()),this.isReadReceipt(e.isReadReceipt()),this.selected(e.selected()),this.checked(e.checked()),this.hasAttachments(e.hasAttachments()),this.attachmentsMainType(e.attachmentsMainType()),this.moment(e.moment()),this.body=null,this.priority(u.MessagePriority.Normal),this.aDraftInfo=[],this.sMessageId="",this.sInReplyTo="",this.sReferences="",this.parentUid(e.parentUid()),this.threads(e.threads()),this.threadsLen(e.threadsLen()),this.computeSenderEmail(),this},i.prototype.showExternalImages=function(e){if(this.body&&this.body.data("rl-has-images")){var t="";e=d.isUnd(e)?!1:e,this.hasImages(!1),this.body.data("rl-has-images",!1),t=this.proxy?"data-x-additional-src":"data-x-src",n("["+t+"]",this.body).each(function(){e&&n(this).is("img")?n(this).addClass("lazy").attr("data-original",n(this).attr(t)).removeAttr(t):n(this).attr("src",n(this).attr(t)).removeAttr(t)}),t=this.proxy?"data-x-additional-style-url":"data-x-style-url",n("["+t+"]",this.body).each(function(){var e=d.trim(n(this).attr("style"));e=""===e?"":";"===e.substr(-1)?e+" ":e+"; ",n(this).attr("style",e+n(this).attr(t)).removeAttr(t)}),e&&(n("img.lazy",this.body).addClass("lazy-inited").lazyload({threshold:400,effect:"fadeIn",skip_invisible:!1,container:n(".RL-MailMessageView .messageView .messageItem .content")[0]}),l.resize()),d.windowResize(500)}},i.prototype.showInternalImages=function(e){if(this.body&&!this.body.data("rl-init-internal-images")){this.body.data("rl-init-internal-images",!0),e=d.isUnd(e)?!1:e;var t=this;n("[data-x-src-cid]",this.body).each(function(){var i=t.findAttachmentByCid(n(this).attr("data-x-src-cid"));i&&i.download&&(e&&n(this).is("img")?n(this).addClass("lazy").attr("data-original",i.linkPreview()):n(this).attr("src",i.linkPreview()))}),n("[data-x-src-location]",this.body).each(function(){var i=t.findAttachmentByContentLocation(n(this).attr("data-x-src-location"));i||(i=t.findAttachmentByCid(n(this).attr("data-x-src-location"))),i&&i.download&&(e&&n(this).is("img")?n(this).addClass("lazy").attr("data-original",i.linkPreview()):n(this).attr("src",i.linkPreview()))}),n("[data-x-style-cid]",this.body).each(function(){var e="",i="",s=t.findAttachmentByCid(n(this).attr("data-x-style-cid"));s&&s.linkPreview&&(i=n(this).attr("data-x-style-cid-name"),""!==i&&(e=d.trim(n(this).attr("style")),e=""===e?"":";"===e.substr(-1)?e+" ":e+"; ",n(this).attr("style",e+i+": url('"+s.linkPreview()+"')")))}),e&&!function(e,t){o.delay(function(){e.addClass("lazy-inited").lazyload({threshold:400,effect:"fadeIn",skip_invisible:!1,container:t})},300)}(n("img.lazy",t.body),n(".RL-MailMessageView .messageView .messageItem .content")[0]),d.windowResize(500)}},i.prototype.storeDataToDom=function(){if(this.body){this.body.data("rl-is-html",!!this.isHtml()),this.body.data("rl-has-images",!!this.hasImages()),this.body.data("rl-plain-raw",this.plainRaw);var e=t("Storage:RainLoop:Data");e.capaOpenPGP()&&(this.body.data("rl-plain-pgp-signed",!!this.isPgpSigned()),this.body.data("rl-plain-pgp-encrypted",!!this.isPgpEncrypted()),this.body.data("rl-pgp-verify-status",this.pgpSignedVerifyStatus()),this.body.data("rl-pgp-verify-user",this.pgpSignedVerifyUser()))}},i.prototype.storePgpVerifyDataToDom=function(){var e=t("Storage:RainLoop:Data");this.body&&e.capaOpenPGP()&&(this.body.data("rl-pgp-verify-status",this.pgpSignedVerifyStatus()),this.body.data("rl-pgp-verify-user",this.pgpSignedVerifyUser()))},i.prototype.fetchDataToDom=function(){if(this.body){this.isHtml(!!this.body.data("rl-is-html")),this.hasImages(!!this.body.data("rl-has-images")),this.plainRaw=d.pString(this.body.data("rl-plain-raw"));var e=t("Storage:RainLoop:Data");e.capaOpenPGP()?(this.isPgpSigned(!!this.body.data("rl-plain-pgp-signed")),this.isPgpEncrypted(!!this.body.data("rl-plain-pgp-encrypted")),this.pgpSignedVerifyStatus(this.body.data("rl-pgp-verify-status")),this.pgpSignedVerifyUser(this.body.data("rl-pgp-verify-user"))):(this.isPgpSigned(!1),this.isPgpEncrypted(!1),this.pgpSignedVerifyStatus(u.SignedVerifyStatus.None),this.pgpSignedVerifyUser(""))}},i.prototype.verifyPgpSignedClearMessage=function(){if(this.isPgpSigned()){var e=[],i=null,a=t("Storage:RainLoop:Data"),r=this.from&&this.from[0]&&this.from[0].email?this.from[0].email:"",l=a.findPublicKeysByEmail(r),d=null,p=null,h="";this.pgpSignedVerifyStatus(u.SignedVerifyStatus.Error),this.pgpSignedVerifyUser("");try{i=s.openpgp.cleartext.readArmored(this.plainRaw),i&&i.getText&&(this.pgpSignedVerifyStatus(l.length?u.SignedVerifyStatus.Unverified:u.SignedVerifyStatus.UnknownPublicKeys),e=i.verify(l),e&&0').text(h)).html(),c.empty(),this.replacePlaneTextBody(h)))))}catch(g){}this.storePgpVerifyDataToDom()}},i.prototype.decryptPgpEncryptedMessage=function(e){if(this.isPgpEncrypted()){var i=[],a=null,r=null,l=t("Storage:RainLoop:Data"),d=this.from&&this.from[0]&&this.from[0].email?this.from[0].email:"",p=l.findPublicKeysByEmail(d),h=l.findSelfPrivateKey(e),g=null,m=null,f="";this.pgpSignedVerifyStatus(u.SignedVerifyStatus.Error),this.pgpSignedVerifyUser(""),h||this.pgpSignedVerifyStatus(u.SignedVerifyStatus.UnknownPrivateKey);try{a=s.openpgp.message.readArmored(this.plainRaw),a&&h&&a.decrypt&&(this.pgpSignedVerifyStatus(u.SignedVerifyStatus.Unverified),r=a.decrypt(h),r&&(i=r.verify(p),i&&0').text(f)).html(),c.empty(),this.replacePlaneTextBody(f)))}catch(b){}this.storePgpVerifyDataToDom()
+}},i.prototype.replacePlaneTextBody=function(e){this.body&&this.body.html(e).addClass("b-text-part plain")},i.prototype.flagHash=function(){return[this.deleted(),this.unseen(),this.flagged(),this.answered(),this.forwarded(),this.isReadReceipt()].join("")},e.exports=i}(t,e)},{$:21,$div:12,$win:15,Enums:6,LinkBuilder:9,"Model:Attachment":32,"Model:Email":34,"Storage:RainLoop:Data":55,Utils:11,_:26,ko:23,moment:24,window:27}],36:[function(e,t){!function(e,t){"use strict";function i(e){u.call(this,"settings",e),this.menu=o.observableArray([]),this.oCurrentSubScreen=null,this.oViewModelPlace=null}var s=t("$"),n=t("_"),o=t("ko"),a=t("Globals"),r=t("Utils"),l=t("LinkBuilder"),c=t("App:Knoin"),u=t("Knoin:AbstractScreen");n.extend(i.prototype,u.prototype),i.prototype.onRoute=function(e){var t=this,i=null,u=null,d=null,p=null;u=n.find(a.aViewModels.settings,function(t){return t&&t.__rlSettingsData&&e===t.__rlSettingsData.Route}),u&&(n.find(a.aViewModels["settings-removed"],function(e){return e&&e===u})&&(u=null),u&&n.find(a.aViewModels["settings-disabled"],function(e){return e&&e===u})&&(u=null)),u?(u.__builded&&u.__vm?i=u.__vm:(d=this.oViewModelPlace,d&&1===d.length?(i=new u,p=s("").addClass("rl-settings-view-model").hide(),p.appendTo(d),i.viewModelDom=p,i.__rlSettingsData=u.__rlSettingsData,u.__dom=p,u.__builded=!0,u.__vm=i,o.applyBindingAccessorsToNode(p[0],{i18nInit:!0,template:function(){return{name:u.__rlSettingsData.Template}}},i),r.delegateRun(i,"onBuild",[p])):r.log("Cannot find sub settings view model position: SettingsSubScreen")),i&&n.defer(function(){t.oCurrentSubScreen&&(r.delegateRun(t.oCurrentSubScreen,"onHide"),t.oCurrentSubScreen.viewModelDom.hide()),t.oCurrentSubScreen=i,t.oCurrentSubScreen&&(t.oCurrentSubScreen.viewModelDom.show(),r.delegateRun(t.oCurrentSubScreen,"onShow"),r.delegateRun(t.oCurrentSubScreen,"onFocus",[],200),n.each(t.menu(),function(e){e.selected(i&&i.__rlSettingsData&&e.route===i.__rlSettingsData.Route)}),s("#rl-content .b-settings .b-content .content").scrollTop(0)),r.windowResize()})):c.setHash(l.settings(),!1,!0)},i.prototype.onHide=function(){this.oCurrentSubScreen&&this.oCurrentSubScreen.viewModelDom&&(r.delegateRun(this.oCurrentSubScreen,"onHide"),this.oCurrentSubScreen.viewModelDom.hide())},i.prototype.onBuild=function(){n.each(a.aViewModels.settings,function(e){e&&e.__rlSettingsData&&!n.find(a.aViewModels["settings-removed"],function(t){return t&&t===e})&&this.menu.push({route:e.__rlSettingsData.Route,label:e.__rlSettingsData.Label,selected:o.observable(!1),disabled:!!n.find(a.aViewModels["settings-disabled"],function(t){return t&&t===e})})},this),this.oViewModelPlace=s("#rl-content #rl-settings-subscreen")},i.prototype.routes=function(){var e=n.find(a.aViewModels.settings,function(e){return e&&e.__rlSettingsData&&e.__rlSettingsData.IsDefault}),t=e?e.__rlSettingsData.Route:"general",i={subname:/^(.*)$/,normalize_:function(e,i){return i.subname=r.isUnd(i.subname)?t:r.pString(i.subname),[i.subname]}};return[["{subname}/",i],["{subname}",i],["",i]]},e.exports=i}(t,e)},{$:21,"App:Knoin":28,Globals:8,"Knoin:AbstractScreen":30,LinkBuilder:9,Utils:11,_:26,ko:23}],37:[function(e,t){!function(e,t){"use strict";function i(){n.call(this,"login",[t("View:Admin:Login")])}var s=t("_"),n=t("Knoin:AbstractScreen");s.extend(i.prototype,n.prototype),i.prototype.onShow=function(){t("App:Admin").setTitle("")},e.exports=i}(t,e)},{"App:Admin":3,"Knoin:AbstractScreen":30,"View:Admin:Login":60,_:26}],38:[function(e,t){!function(e,t){"use strict";function i(){n.call(this,[t("View:Admin:SettingsMenu"),t("View:Admin:SettingsPane")])}var s=t("_"),n=t("Screen:AbstractSettings");s.extend(i.prototype,n.prototype),i.prototype.onShow=function(){t("App:Admin").setTitle("")},e.exports=i}(t,e)},{"App:Admin":3,"Screen:AbstractSettings":36,"View:Admin:SettingsMenu":61,"View:Admin:SettingsPane":62,_:26}],39:[function(e,t){!function(e,t){"use strict";function i(){var e=t("Storage:Settings"),i=t("Storage:Admin:Data");this.version=s.observable(e.settingsGet("Version")),this.access=s.observable(!!e.settingsGet("CoreAccess")),this.errorDesc=s.observable(""),this.coreReal=i.coreReal,this.coreUpdatable=i.coreUpdatable,this.coreAccess=i.coreAccess,this.coreChecking=i.coreChecking,this.coreUpdating=i.coreUpdating,this.coreRemoteVersion=i.coreRemoteVersion,this.coreRemoteRelease=i.coreRemoteRelease,this.coreVersionCompare=i.coreVersionCompare,this.statusType=s.computed(function(){var e="",t=this.coreVersionCompare(),i=this.coreChecking(),s=this.coreUpdating(),n=this.coreReal();return i?e="checking":s?e="updating":n&&0===t?e="up-to-date":n&&-1===t?e="available":n||(e="error",this.errorDesc("Cannot access the repository at the moment.")),e},this)}var s=t("ko");i.prototype.onBuild=function(){this.access()&&t("App:Admin").reloadCoreData()},i.prototype.updateCoreData=function(){this.coreUpdating()||t("App:Admin").updateCoreData()},e.exports=i}(t,e)},{"App:Admin":3,"Storage:Admin:Data":52,"Storage:Settings":59,ko:23}],40:[function(e,t){!function(e,t){"use strict";function i(){var e=t("Enums"),i=t("Storage:Settings");this.title=n.observable(i.settingsGet("Title")),this.title.trigger=n.observable(e.SaveSettingsStep.Idle),this.loadingDesc=n.observable(i.settingsGet("LoadingDescription")),this.loadingDesc.trigger=n.observable(e.SaveSettingsStep.Idle),this.loginLogo=n.observable(i.settingsGet("LoginLogo")),this.loginLogo.trigger=n.observable(e.SaveSettingsStep.Idle),this.loginDescription=n.observable(i.settingsGet("LoginDescription")),this.loginDescription.trigger=n.observable(e.SaveSettingsStep.Idle),this.loginCss=n.observable(i.settingsGet("LoginCss")),this.loginCss.trigger=n.observable(e.SaveSettingsStep.Idle)}var s=t("_"),n=t("ko"),o=t("Utils");i.prototype.onBuild=function(){var e=this,i=t("Storage:Admin:Remote");s.delay(function(){var t=o.settingsSaveHelperSimpleFunction(e.title.trigger,e),s=o.settingsSaveHelperSimpleFunction(e.loadingDesc.trigger,e),n=o.settingsSaveHelperSimpleFunction(e.loginLogo.trigger,e),a=o.settingsSaveHelperSimpleFunction(e.loginDescription.trigger,e),r=o.settingsSaveHelperSimpleFunction(e.loginCss.trigger,e);e.title.subscribe(function(e){i.saveAdminConfig(t,{Title:o.trim(e)})}),e.loadingDesc.subscribe(function(e){i.saveAdminConfig(s,{LoadingDescription:o.trim(e)})}),e.loginLogo.subscribe(function(e){i.saveAdminConfig(n,{LoginLogo:o.trim(e)})}),e.loginDescription.subscribe(function(e){i.saveAdminConfig(a,{LoginDescription:o.trim(e)})}),e.loginCss.subscribe(function(e){i.saveAdminConfig(r,{LoginCss:o.trim(e)})})},50)},e.exports=i}(t,e)},{Enums:6,"Storage:Admin:Remote":53,"Storage:Settings":59,Utils:11,_:26,ko:23}],41:[function(e,t){!function(e,t){"use strict";function i(){var e=t("Storage:Admin:Remote");this.defautOptionsAfterRender=a.defautOptionsAfterRender,this.enableContacts=n.observable(!!r.settingsGet("ContactsEnable")),this.contactsSharing=n.observable(!!r.settingsGet("ContactsSharing")),this.contactsSync=n.observable(!!r.settingsGet("ContactsSync"));var i=["sqlite","mysql","pgsql"],l=[],c=function(e){switch(e){case"sqlite":e="SQLite";break;case"mysql":e="MySQL";break;case"pgsql":e="PostgreSQL"}return e};r.settingsGet("SQLiteIsSupported")&&l.push("sqlite"),r.settingsGet("MySqlIsSupported")&&l.push("mysql"),r.settingsGet("PostgreSqlIsSupported")&&l.push("pgsql"),this.contactsSupported=0(new s.Date).getTime()-g),f&&l.oRequests[f]&&(l.oRequests[f].__aborted&&(n="abort"),l.oRequests[f]=null),l.defaultResponse(e,f,n,i,o,t)}),f&&0=e?1:e},this),this.mainMessageListSearch=a.computed({read:this.messageListSearch,write:function(e){b.setHash(g.mailBox(this.currentFolderFullNameHash(),1,h.trim(e.toString())))},owner:this}),this.messageListError=a.observable(""),this.messageListLoading=a.observable(!1),this.messageListIsNotCompleted=a.observable(!1),this.messageListCompleteLoadingThrottle=a.observable(!1).extend({throttle:200}),this.messageListCompleteLoading=a.computed(function(){var e=this.messageListLoading(),t=this.messageListIsNotCompleted();return e||t},this),this.messageListCompleteLoading.subscribe(function(e){this.messageListCompleteLoadingThrottle(e)},this),this.messageList.subscribe(o.debounce(function(e){o.each(e,function(e){e.newForAnimation()&&e.newForAnimation(!1)})},500)),this.staticMessageList=new S,this.message=a.observable(null),this.messageLoading=a.observable(!1),this.messageLoadingThrottle=a.observable(!1).extend({throttle:50}),this.message.focused=a.observable(!1),this.message.subscribe(function(e){e?d.Layout.NoPreview===this.layout()&&this.message.focused(!0):(this.message.focused(!1),this.messageFullScreenMode(!1),this.hideMessageBodies(),d.Layout.NoPreview===this.layout()&&-10?s.Math.ceil(t/e*100):0},this),this.capaOpenPGP=a.observable(!1),this.openpgpkeys=a.observableArray([]),this.openpgpKeyring=null,this.openpgpkeysPublic=this.openpgpkeys.filter(function(e){return!(!e||e.isPrivate)}),this.openpgpkeysPrivate=this.openpgpkeys.filter(function(e){return!(!e||!e.isPrivate)}),this.googleActions=a.observable(!1),this.googleLoggined=a.observable(!1),this.googleUserName=a.observable(""),this.facebookActions=a.observable(!1),this.facebookLoggined=a.observable(!1),this.facebookUserName=a.observable(""),this.twitterActions=a.observable(!1),this.twitterLoggined=a.observable(!1),this.twitterUserName=a.observable(""),this.customThemeType=a.observable(d.CustomThemeType.Light),this.purgeMessageBodyCacheThrottle=o.throttle(this.purgeMessageBodyCache,3e4)}var s=t("window"),n=t("$"),o=t("_"),a=t("ko"),r=t("moment"),l=t("$div"),c=t("NotificationClass"),u=t("Consts"),d=t("Enums"),p=t("Globals"),h=t("Utils"),g=t("LinkBuilder"),m=t("Storage:Settings"),f=t("Storage:RainLoop:Cache"),b=t("App:Knoin"),S=t("Model:Message"),v=t("Storage:LocalStorage"),y=t("Storage:Abstract:Data");o.extend(i.prototype,y.prototype),i.prototype.purgeMessageBodyCache=function(){var e=0,t=null,i=p.iMessageBodyCacheCount-u.Values.MessageBodyCacheLimit;i>0&&(t=this.messagesBodiesDom(),t&&(t.find(".rl-cache-class").each(function(){var t=n(this);i>t.data("rl-cache-count")&&(t.addClass("rl-cache-purge"),e++)}),e>0&&o.delay(function(){t.find(".rl-cache-purge").remove()},300)))},i.prototype.populateDataOnStart=function(){y.prototype.populateDataOnStart.call(this),this.accountEmail(m.settingsGet("Email")),this.accountIncLogin(m.settingsGet("IncLogin")),this.accountOutLogin(m.settingsGet("OutLogin")),this.projectHash(m.settingsGet("ProjectHash")),this.defaultIdentityID(m.settingsGet("DefaultIdentityID")),this.displayName(m.settingsGet("DisplayName")),this.replyTo(m.settingsGet("ReplyTo")),this.signature(m.settingsGet("Signature")),this.signatureToAll(!!m.settingsGet("SignatureToAll")),this.enableTwoFactor(!!m.settingsGet("EnableTwoFactor")),this.lastFoldersHash=v.get(d.ClientSideKeyName.FoldersLashHash)||"",this.remoteSuggestions=!!m.settingsGet("RemoteSuggestions"),this.devEmail=m.settingsGet("DevEmail"),this.devPassword=m.settingsGet("DevPassword")},i.prototype.initUidNextAndNewMessages=function(e,t,i){if("INBOX"===e&&h.isNormal(t)&&""!==t){if(h.isArray(i)&&03)l(g.notificationMailIcon(),this.accountEmail(),h.i18n("MESSAGE_LIST/NEW_MESSAGE_NOTIFICATION",{COUNT:r}));else for(;r>a;a++)l(g.notificationMailIcon(),S.emailsToLine(S.initEmailsFromJson(i[a].From),!1),i[a].Subject)}f.setFolderUidNext(e,t)}},i.prototype.hideMessageBodies=function(){var e=this.messagesBodiesDom();e&&e.find(".b-text-part").hide()},i.prototype.getNextFolderNames=function(e){e=h.isUnd(e)?!1:!!e;var t=[],i=10,s=r().unix(),n=s-300,a=[],l=function(t){o.each(t,function(t){t&&"INBOX"!==t.fullNameRaw&&t.selectable&&t.existen&&n>t.interval&&(!e||t.subScribed())&&a.push([t.interval,t.fullNameRaw]),t&&0t[0]?1:0}),o.find(a,function(e){var n=f.getFolderFromCacheList(e[1]);return n&&(n.interval=s,t.push(e[1])),i<=t.length}),o.uniq(t)},i.prototype.removeMessagesFromList=function(e,t,i,s){i=h.isNormal(i)?i:"",s=h.isUnd(s)?!1:!!s,t=o.map(t,function(e){return h.pInt(e)});var n=this,a=0,r=this.messageList(),l=f.getFolderFromCacheList(e),c=""===i?null:f.getFolderFromCacheList(i||""),u=this.currentFolderFullNameRaw(),d=this.message(),p=u===e?o.filter(r,function(e){return e&&-10&&l.messageCountUnread(0<=l.messageCountUnread()-a?l.messageCountUnread()-a:0)),c&&(c.messageCountAll(c.messageCountAll()+t.length),a>0&&c.messageCountUnread(c.messageCountUnread()+a),c.actionBlink(!0)),0').hide().addClass("rl-cache-class"),a.data("rl-cache-count",++p.iMessageBodyCacheCount),h.isNormal(e.Result.Html)&&""!==e.Result.Html?(i=!0,u=e.Result.Html.toString()):h.isNormal(e.Result.Plain)&&""!==e.Result.Plain?(i=!1,u=h.plainToHtml(e.Result.Plain.toString(),!1),(S.isPgpSigned()||S.isPgpEncrypted())&&this.capaOpenPGP()&&(S.plainRaw=h.pString(e.Result.Plain),m=/---BEGIN PGP MESSAGE---/.test(S.plainRaw),m||(g=/-----BEGIN PGP SIGNED MESSAGE-----/.test(S.plainRaw)&&/-----BEGIN PGP SIGNATURE-----/.test(S.plainRaw)),l.empty(),g&&S.isPgpSigned()?u=l.append(n('').text(S.plainRaw)).html():m&&S.isPgpEncrypted()&&(u=l.append(n('').text(S.plainRaw)).html()),l.empty(),S.isPgpSigned(g),S.isPgpEncrypted(m))):i=!1,a.html(h.linkify(u)).addClass("b-text-part "+(i?"html":"plain")),S.isHtml(!!i),S.hasImages(!!s),S.pgpSignedVerifyStatus(d.SignedVerifyStatus.None),S.pgpSignedVerifyUser(""),S.body=a,S.body&&b.append(S.body),S.storeDataToDom(),o&&S.showInternalImages(!0),S.hasImages()&&this.showImages()&&S.showExternalImages(!0),this.purgeMessageBodyCacheThrottle()),this.messageActiveDom(S.body),this.hideMessageBodies(),S.body.show(),a&&h.initBlockquoteSwitcher(a)),f.initMessageFlagsFromCache(S),S.unseen()&&p.__APP&&p.__APP.setMessageSeen(S),h.windowResize())},i.prototype.calculateMessageListHash=function(e){return o.map(e,function(e){return""+e.hash+"_"+e.threadsLen()+"_"+e.flagHash()}).join("|")},i.prototype.findPublicKeyByHex=function(e){return o.find(this.openpgpkeysPublic(),function(t){return t&&e===t.id})},i.prototype.findPublicKeysByEmail=function(e){return o.compact(o.map(this.openpgpkeysPublic(),function(t){var i=null;if(t&&e===t.email)try{if(i=s.openpgp.key.readArmored(t.armor),i&&!i.err&&i.keys&&i.keys[0])return i.keys[0]}catch(n){}return null}))},i.prototype.findPrivateKeyByEmail=function(e,t){var i=null,n=o.find(this.openpgpkeysPrivate(),function(t){return t&&e===t.email});if(n)try{i=s.openpgp.key.readArmored(n.armor),i&&!i.err&&i.keys&&i.keys[0]?(i=i.keys[0],i.decrypt(h.pString(t))):i=null}catch(a){i=null}return i},i.prototype.findSelfPrivateKey=function(e){return this.findPrivateKeyByEmail(this.accountEmail(),e)},e.exports=new i}(t,e)},{$:21,$div:12,"App:Knoin":28,Consts:5,Enums:6,Globals:8,LinkBuilder:9,"Model:Message":35,NotificationClass:18,"Storage:Abstract:Data":50,"Storage:LocalStorage":56,"Storage:RainLoop:Cache":54,"Storage:Settings":59,Utils:11,_:26,ko:23,moment:24,window:27}],56:[function(e,t){!function(e,t){"use strict";function i(){var e=t("_"),i=e.find([t("Storage:LocalStorage:Cookie"),t("Storage:LocalStorage:LocalStorage")],function(e){return e.supported()});this.oDriver=null,i&&(this.oDriver=new i)}i.prototype.oDriver=null,i.prototype.set=function(e,t){return this.oDriver?this.oDriver.set("p"+e,t):!1},i.prototype.get=function(e){return this.oDriver?this.oDriver.get("p"+e):null},e.exports=new i}(t,e)},{"Storage:LocalStorage:Cookie":57,"Storage:LocalStorage:LocalStorage":58,_:26}],57:[function(e,t){!function(e,t){"use strict";function i(){}var s=t("$"),n=t("JSON"),o=t("Consts"),a=t("Utils");i.supported=function(){return!0},i.prototype.set=function(e,t){var i=s.cookie(o.Values.ClientSideCookieIndexName),a=!1,r=null;try{r=null===i?null:n.parse(i),r||(r={}),r[e]=t,s.cookie(o.Values.ClientSideCookieIndexName,n.stringify(r),{expires:30}),a=!0}catch(l){}return a},i.prototype.get=function(e){var t=s.cookie(o.Values.ClientSideCookieIndexName),i=null;try{i=null===t?null:n.parse(t),i=i&&!a.isUnd(i[e])?i[e]:null}catch(r){}return i},e.exports=i}(t,e)},{$:21,Consts:5,JSON:17,Utils:11}],58:[function(e,t){!function(e,t){"use strict";function i(){}var s=t("window"),n=t("JSON"),o=t("Consts"),a=t("Utils");i.supported=function(){return!!s.localStorage},i.prototype.set=function(e,t){var i=s.localStorage[o.Values.ClientSideCookieIndexName]||null,a=!1,r=null;try{r=null===i?null:n.parse(i),r||(r={}),r[e]=t,s.localStorage[o.Values.ClientSideCookieIndexName]=n.stringify(r),a=!0}catch(l){}return a},i.prototype.get=function(e){var t=s.localStorage[o.Values.ClientSideCookieIndexName]||null,i=null;try{i=null===t?null:n.parse(t),i=i&&!a.isUnd(i[e])?i[e]:null}catch(r){}return i},e.exports=i}(t,e)},{Consts:5,JSON:17,Utils:11,window:27}],59:[function(e,t){!function(e,t){"use strict";function i(){this.oSettings=t("AppData"),this.oSettings=s.isNormal(this.oSettings)?this.oSettings:{}}var s=t("Utils");i.prototype.oSettings=null,i.prototype.settingsGet=function(e){return s.isUnd(this.oSettings[e])?null:this.oSettings[e]},i.prototype.settingsSet=function(e,t){this.oSettings[e]=t},i.prototype.capa=function(e){var t=this.settingsGet("Capa");return s.isArray(t)&&s.isNormal(e)&&-1').appendTo('body');
- $window.on('error', function (oEvent) {
+ $win.on('error', function (oEvent) {
if (oEvent && oEvent.originalEvent && oEvent.originalEvent.message &&
-1 === Utils.inArray(oEvent.originalEvent.message, [
'Script error.', 'Uncaught Error: Error calling method on NPObject.'
@@ -137,7 +137,7 @@
AbstractApp.prototype.setTitle = function (sTitle)
{
sTitle = ((Utils.isNormal(sTitle) && 0 < sTitle.length) ? sTitle + ' - ' : '') +
- AppSettings.settingsGet('Title') || '';
+ Settings.settingsGet('Title') || '';
window.document.title = '_';
window.document.title = sTitle;
@@ -150,9 +150,9 @@
AbstractApp.prototype.loginAndLogoutReload = function (bLogout, bClose)
{
var
- kn = require('kn'),
- sCustomLogoutLink = Utils.pString(AppSettings.settingsGet('CustomLogoutLink')),
- bInIframe = !!AppSettings.settingsGet('InIframe')
+ kn = require('App:Knoin'),
+ sCustomLogoutLink = Utils.pString(Settings.settingsGet('CustomLogoutLink')),
+ bInIframe = !!Settings.settingsGet('InIframe')
;
bLogout = Utils.isUnd(bLogout) ? false : !!bLogout;
@@ -204,7 +204,7 @@
{
Events.pub('rl.bootstart');
- var ssm = require('../External/ssm.js');
+ var ssm = require('ssm');
Utils.initOnStartOrLangChange(function () {
Utils.initNotificationLanguage();
@@ -280,7 +280,7 @@
module.exports = AbstractApp;
}(module, require));
-},{"$":26,"$doc":16,"$html":17,"$window":18,"../External/ssm.js":30,"../Storages/AppSettings.js":68,"Events":8,"Globals":9,"KnoinAbstractBoot":34,"LinkBuilder":10,"Utils":14,"_":31,"kn":33,"window":32}],3:[function(require,module,exports){
+},{"$":26,"$doc":16,"$html":17,"$win":18,"App:Knoin":33,"Events":8,"Globals":9,"Knoin:AbstractBoot":34,"LinkBuilder":11,"Storage:Settings":75,"Utils":14,"_":31,"ssm":30,"window":32}],3:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -301,30 +301,22 @@
LinkBuilder = require('LinkBuilder'),
Events = require('Events'),
- kn = require('kn'),
+ kn = require('App:Knoin'),
- LocalStorage = require('../Storages/LocalStorage.js'),
- AppSettings = require('../Storages/AppSettings.js'),
- Data = require('../Storages/WebMailDataStorage.js'),
- Cache = require('../Storages/WebMailCacheStorage.js'),
- Remote = require('../Storages/WebMailAjaxRemoteStorage.js'),
+ LocalStorage = require('Storage:LocalStorage'),
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:RainLoop:Data'),
+ Cache = require('Storage:RainLoop:Cache'),
+ Remote = require('Storage:RainLoop:Remote'),
- EmailModel = require('../Models/EmailModel.js'),
- FolderModel = require('../Models/FolderModel.js'),
- MessageModel = require('../Models/MessageModel.js'),
- AccountModel = require('../Models/AccountModel.js'),
- IdentityModel = require('../Models/IdentityModel.js'),
- OpenPgpKeyModel = require('../Models/OpenPgpKeyModel.js'),
+ EmailModel = require('Model:Email'),
+ FolderModel = require('Model:Folder'),
+ MessageModel = require('Model:Message'),
+ AccountModel = require('Model:Account'),
+ IdentityModel = require('Model:Identity'),
+ OpenPgpKeyModel = require('Model:OpenPgpKey'),
- PopupsFolderSystemViewModel = require('../ViewModels/Popups/PopupsAskViewModel.js'),
- PopupsAskViewModel = require('../ViewModels/Popups/PopupsAskViewModel.js'),
- PopupsComposeViewModel = require('../ViewModels/Popups/PopupsComposeViewModel.js'),
-
- MailBoxScreen = require('../Screens/MailBoxScreen.js'),
- SettingsScreen = require('../Screens/SettingsScreen.js'),
- LoginScreen = require('../Screens/LoginScreen.js'),
-
- AbstractApp = require('./AbstractApp.js')
+ AbstractApp = require('App:Abstract')
;
/**
@@ -377,7 +369,7 @@
Remote.jsVersion(function (sResult, oData) {
if (Enums.StorageResultType.Success === sResult && oData && !oData.Result)
{
- if (window.parent && !!AppSettings.settingsGet('InIframe'))
+ if (window.parent && !!Settings.settingsGet('InIframe'))
{
window.parent.location.reload();
}
@@ -386,7 +378,7 @@
window.location.reload();
}
}
- }, AppSettings.settingsGet('Version'));
+ }, Settings.settingsGet('Version'));
}, {}, 60 * 60 * 1000);
@@ -408,70 +400,70 @@
RainLoopApp.prototype.setupSettings = function ()
{
- kn.addSettingsViewModel(require('../Settings/App/SettingsGeneral.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:General'),
'SettingsGeneral', 'SETTINGS_LABELS/LABEL_GENERAL_NAME', 'general', true);
- if (AppSettings.settingsGet('ContactsIsAllowed'))
+ if (Settings.settingsGet('ContactsIsAllowed'))
{
- kn.addSettingsViewModel(require('../Settings/App/SettingsContacts.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:Contacts'),
'SettingsContacts', 'SETTINGS_LABELS/LABEL_CONTACTS_NAME', 'contacts');
}
- if (AppSettings.capa(Enums.Capa.AdditionalAccounts))
+ if (Settings.capa(Enums.Capa.AdditionalAccounts))
{
- kn.addSettingsViewModel(require('../Settings/App/SettingsAccounts.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:Accounts'),
'SettingsAccounts', 'SETTINGS_LABELS/LABEL_ACCOUNTS_NAME', 'accounts');
}
- if (AppSettings.capa(Enums.Capa.AdditionalIdentities))
+ if (Settings.capa(Enums.Capa.AdditionalIdentities))
{
- kn.addSettingsViewModel(require('../Settings/App/SettingsIdentities.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:Identities'),
'SettingsIdentities', 'SETTINGS_LABELS/LABEL_IDENTITIES_NAME', 'identities');
}
else
{
- kn.addSettingsViewModel(require('../Settings/App/SettingsIdentity.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:Identity'),
'SettingsIdentity', 'SETTINGS_LABELS/LABEL_IDENTITY_NAME', 'identity');
}
- if (AppSettings.capa(Enums.Capa.Filters))
+ if (Settings.capa(Enums.Capa.Filters))
{
- kn.addSettingsViewModel(require('../Settings/App/SettingsFilters.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:Filters'),
'SettingsFilters', 'SETTINGS_LABELS/LABEL_FILTERS_NAME', 'filters');
}
- if (AppSettings.capa(Enums.Capa.TwoFactor))
+ if (Settings.capa(Enums.Capa.TwoFactor))
{
- kn.addSettingsViewModel(require('../Settings/App/SettingsSecurity.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:Security'),
'SettingsSecurity', 'SETTINGS_LABELS/LABEL_SECURITY_NAME', 'security');
}
- if (AppSettings.settingsGet('AllowGoogleSocial') ||
- AppSettings.settingsGet('AllowFacebookSocial') ||
- AppSettings.settingsGet('AllowTwitterSocial'))
+ if (Settings.settingsGet('AllowGoogleSocial') ||
+ Settings.settingsGet('AllowFacebookSocial') ||
+ Settings.settingsGet('AllowTwitterSocial'))
{
- kn.addSettingsViewModel(require('../Settings/App/SettingsSocial.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:Social'),
'SettingsSocial', 'SETTINGS_LABELS/LABEL_SOCIAL_NAME', 'social');
}
- if (AppSettings.settingsGet('ChangePasswordIsAllowed'))
+ if (Settings.settingsGet('ChangePasswordIsAllowed'))
{
- kn.addSettingsViewModel(require('../Settings/App/SettingsChangePassword.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:ChangePassword'),
'SettingsChangePassword', 'SETTINGS_LABELS/LABEL_CHANGE_PASSWORD_NAME', 'change-password');
}
- kn.addSettingsViewModel(require('../Settings/App/SettingsFolders.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:Folders'),
'SettingsFolders', 'SETTINGS_LABELS/LABEL_FOLDERS_NAME', 'folders');
- if (AppSettings.capa(Enums.Capa.Themes))
+ if (Settings.capa(Enums.Capa.Themes))
{
- kn.addSettingsViewModel(require('../Settings/App/SettingsThemes.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:Themes'),
'SettingsThemes', 'SETTINGS_LABELS/LABEL_THEMES_NAME', 'themes');
}
- if (AppSettings.capa(Enums.Capa.OpenPGP))
+ if (Settings.capa(Enums.Capa.OpenPGP))
{
- kn.addSettingsViewModel(require('../Settings/App/SettingsOpenPGP.js'),
+ kn.addSettingsViewModel(require('Settings:RainLoop:OpenPGP'),
'SettingsOpenPGP', 'SETTINGS_LABELS/LABEL_OPEN_PGP_NAME', 'openpgp');
}
@@ -708,12 +700,12 @@
if (!oMoveFolder && bUseFolder)
{
- kn.showScreenPopup(PopupsFolderSystemViewModel, [nSetSystemFoldersNotification]);
+ kn.showScreenPopup(require('View:Popup:FolderSystem'), [nSetSystemFoldersNotification]);
}
else if (!bUseFolder || (Enums.FolderType.Trash === iDeleteType &&
(sFromFolderFullNameRaw === Data.spamFolder() || sFromFolderFullNameRaw === Data.trashFolder())))
{
- kn.showScreenPopup(PopupsAskViewModel, [Utils.i18n('POPUPS_ASK/DESC_WANT_DELETE_MESSAGES'), function () {
+ kn.showScreenPopup(require('View:Popup:Ask'), [Utils.i18n('POPUPS_ASK/DESC_WANT_DELETE_MESSAGES'), function () {
self.messagesDeleteHelper(sFromFolderFullNameRaw, aUidForRemove);
Data.removeMessagesFromList(sFromFolderFullNameRaw, aUidForRemove);
@@ -844,7 +836,7 @@
if (Enums.StorageResultType.Success === sResult && oData.Result)
{
var
- sParentEmail = AppSettings.settingsGet('ParentEmail'),
+ sParentEmail = Settings.settingsGet('ParentEmail'),
sAccountEmail = Data.accountEmail()
;
@@ -1439,31 +1431,31 @@
Data.namespace = oData.Result.Namespace;
}
- Data.threading(!!AppSettings.settingsGet('UseImapThread') && oData.Result.IsThreadsSupported && true);
+ Data.threading(!!Settings.settingsGet('UseImapThread') && oData.Result.IsThreadsSupported && true);
aList = this.folderResponseParseRec(Data.namespace, oData.Result['@Collection']);
Data.folderList(aList);
if (oData.Result['SystemFolders'] &&
- '' === '' + AppSettings.settingsGet('SentFolder') + AppSettings.settingsGet('DraftFolder') +
- AppSettings.settingsGet('SpamFolder') + AppSettings.settingsGet('TrashFolder') + AppSettings.settingsGet('ArchiveFolder') +
- AppSettings.settingsGet('NullFolder'))
+ '' === '' + Settings.settingsGet('SentFolder') + Settings.settingsGet('DraftFolder') +
+ Settings.settingsGet('SpamFolder') + Settings.settingsGet('TrashFolder') + Settings.settingsGet('ArchiveFolder') +
+ Settings.settingsGet('NullFolder'))
{
// TODO Magic Numbers
- AppSettings.settingsSet('SentFolder', oData.Result['SystemFolders'][2] || null);
- AppSettings.settingsSet('DraftFolder', oData.Result['SystemFolders'][3] || null);
- AppSettings.settingsSet('SpamFolder', oData.Result['SystemFolders'][4] || null);
- AppSettings.settingsSet('TrashFolder', oData.Result['SystemFolders'][5] || null);
- AppSettings.settingsSet('ArchiveFolder', oData.Result['SystemFolders'][12] || null);
+ Settings.settingsSet('SentFolder', oData.Result['SystemFolders'][2] || null);
+ Settings.settingsSet('DraftFolder', oData.Result['SystemFolders'][3] || null);
+ Settings.settingsSet('SpamFolder', oData.Result['SystemFolders'][4] || null);
+ Settings.settingsSet('TrashFolder', oData.Result['SystemFolders'][5] || null);
+ Settings.settingsSet('ArchiveFolder', oData.Result['SystemFolders'][12] || null);
bUpdate = true;
}
- Data.sentFolder(fNormalizeFolder(AppSettings.settingsGet('SentFolder')));
- Data.draftFolder(fNormalizeFolder(AppSettings.settingsGet('DraftFolder')));
- Data.spamFolder(fNormalizeFolder(AppSettings.settingsGet('SpamFolder')));
- Data.trashFolder(fNormalizeFolder(AppSettings.settingsGet('TrashFolder')));
- Data.archiveFolder(fNormalizeFolder(AppSettings.settingsGet('ArchiveFolder')));
+ Data.sentFolder(fNormalizeFolder(Settings.settingsGet('SentFolder')));
+ Data.draftFolder(fNormalizeFolder(Settings.settingsGet('DraftFolder')));
+ Data.spamFolder(fNormalizeFolder(Settings.settingsGet('SpamFolder')));
+ Data.trashFolder(fNormalizeFolder(Settings.settingsGet('TrashFolder')));
+ Data.archiveFolder(fNormalizeFolder(Settings.settingsGet('ArchiveFolder')));
if (bUpdate)
{
@@ -1610,7 +1602,7 @@
if (oEmailModel && oEmailModel.email)
{
oParams = Utils.simpleQueryParser(sQueryString);
- kn.showScreenPopup(PopupsComposeViewModel, [Enums.ComposeType.Empty, null, [oEmailModel],
+ kn.showScreenPopup(require('View:Popup:Compose'), [Enums.ComposeType.Empty, null, [oEmailModel],
Utils.isUnd(oParams.subject) ? null : Utils.pString(oParams.subject),
Utils.isUnd(oParams.body) ? null : Utils.plainToHtml(Utils.pString(oParams.body))
]);
@@ -1622,6 +1614,32 @@
return false;
};
+ RainLoopApp.prototype.bootstartLoginScreen = function ()
+ {
+ var sCustomLoginLink = Utils.pString(Settings.settingsGet('CustomLoginLink'));
+ if (!sCustomLoginLink)
+ {
+ kn.hideLoading();
+
+ kn.startScreens([
+ require('Screen:RainLoop:Login')
+ ]);
+
+ Plugins.runHook('rl-start-login-screens');
+ Events.pub('rl.bootstart-login-screens');
+ }
+ else
+ {
+ kn.routeOff();
+ kn.setHash(LinkBuilder.root(), true);
+ kn.routeOff();
+
+ _.defer(function () {
+ window.location.href = sCustomLoginLink;
+ });
+ }
+ };
+
RainLoopApp.prototype.bootstart = function ()
{
AbstractApp.prototype.bootstart.call(this);
@@ -1630,12 +1648,11 @@
var
self = this,
- sCustomLoginLink = '',
- sJsHash = AppSettings.settingsGet('JsHash'),
- iContactsSyncInterval = Utils.pInt(AppSettings.settingsGet('ContactsSyncInterval')),
- bGoogle = AppSettings.settingsGet('AllowGoogleSocial'),
- bFacebook = AppSettings.settingsGet('AllowFacebookSocial'),
- bTwitter = AppSettings.settingsGet('AllowTwitterSocial')
+ sJsHash = Settings.settingsGet('JsHash'),
+ iContactsSyncInterval = Utils.pInt(Settings.settingsGet('ContactsSyncInterval')),
+ bGoogle = Settings.settingsGet('AllowGoogleSocial'),
+ bFacebook = Settings.settingsGet('AllowFacebookSocial'),
+ bTwitter = Settings.settingsGet('AllowTwitterSocial')
;
Utils.initOnStartOrLangChange(function () {
@@ -1668,7 +1685,7 @@
Events.pub('left-panel.' + (bValue ? 'off' : 'on'));
});
- if (!!AppSettings.settingsGet('Auth'))
+ if (!!Settings.settingsGet('Auth'))
{
this.setTitle(Utils.i18n('TITLES/LOADING'));
@@ -1678,7 +1695,7 @@
if (bValue)
{
- if (window.$LAB && window.crypto && window.crypto.getRandomValues && AppSettings.capa(Enums.Capa.OpenPGP))
+ if (window.$LAB && window.crypto && window.crypto.getRandomValues && Settings.capa(Enums.Capa.OpenPGP))
{
window.$LAB.script(window.openpgp ? '' : LinkBuilder.openPgpJs()).wait(function () {
if (window.openpgp)
@@ -1697,7 +1714,11 @@
Data.capaOpenPGP(false);
}
- kn.startScreens([MailBoxScreen, SettingsScreen]);
+ kn.startScreens([
+ require('Screen:RainLoop:MailBox'),
+ require('Screen:RainLoop:Settings'),
+ require('Screen:RainLoop:About')
+ ]);
if (bGoogle || bFacebook || bTwitter)
{
@@ -1746,28 +1767,32 @@
Plugins.runHook('rl-start-user-screens');
Events.pub('rl.bootstart-user-screens');
- if (!!AppSettings.settingsGet('AccountSignMe') && window.navigator.registerProtocolHandler)
+ if (!!Settings.settingsGet('AccountSignMe') && window.navigator.registerProtocolHandler)
{
_.delay(function () {
try {
window.navigator.registerProtocolHandler('mailto',
window.location.protocol + '//' + window.location.host + window.location.pathname + '?mailto&to=%s',
- '' + (AppSettings.settingsGet('Title') || 'RainLoop'));
+ '' + (Settings.settingsGet('Title') || 'RainLoop'));
} catch(e) {}
- if (AppSettings.settingsGet('MailToEmail'))
+ if (Settings.settingsGet('MailToEmail'))
{
- self.mailToHelper(AppSettings.settingsGet('MailToEmail'));
+ self.mailToHelper(Settings.settingsGet('MailToEmail'));
}
}, 500);
}
+
+ if (!Globals.bMobileDevice)
+ {
+ _.defer(function () {
+ self.initLayoutResizer('#rl-left', '#rl-right', Enums.ClientSideKeyName.FolderListSize);
+ });
+ }
}
else
{
- kn.startScreens([LoginScreen]);
-
- Plugins.runHook('rl-start-login-screens');
- Events.pub('rl.bootstart-login-screens');
+ self.bootstartLoginScreen();
}
if (window.SimplePace)
@@ -1775,40 +1800,15 @@
window.SimplePace.set(100);
}
- if (!Globals.bMobileDevice)
- {
- _.defer(function () {
- self.initLayoutResizer('#rl-left', '#rl-right', Enums.ClientSideKeyName.FolderListSize);
- });
- }
-
}, this));
}
else
{
- sCustomLoginLink = Utils.pString(AppSettings.settingsGet('CustomLoginLink'));
- if (!sCustomLoginLink)
+ this.bootstartLoginScreen();
+
+ if (window.SimplePace)
{
- kn.hideLoading();
- kn.startScreens([LoginScreen]);
-
- Plugins.runHook('rl-start-login-screens');
- Events.pub('rl.bootstart-login-screens');
-
- if (window.SimplePace)
- {
- window.SimplePace.set(100);
- }
- }
- else
- {
- kn.routeOff();
- kn.setHash(LinkBuilder.root(), true);
- kn.routeOff();
-
- _.defer(function () {
- window.location.href = sCustomLoginLink;
- });
+ window.SimplePace.set(100);
}
}
@@ -1847,7 +1847,7 @@
module.exports = new RainLoopApp();
}(module, require));
-},{"$":26,"../Models/AccountModel.js":37,"../Models/EmailModel.js":43,"../Models/FolderModel.js":46,"../Models/IdentityModel.js":47,"../Models/MessageModel.js":48,"../Models/OpenPgpKeyModel.js":49,"../Screens/LoginScreen.js":51,"../Screens/MailBoxScreen.js":52,"../Screens/SettingsScreen.js":53,"../Settings/App/SettingsAccounts.js":54,"../Settings/App/SettingsChangePassword.js":55,"../Settings/App/SettingsContacts.js":56,"../Settings/App/SettingsFilters.js":57,"../Settings/App/SettingsFolders.js":58,"../Settings/App/SettingsGeneral.js":59,"../Settings/App/SettingsIdentities.js":60,"../Settings/App/SettingsIdentity.js":61,"../Settings/App/SettingsOpenPGP.js":62,"../Settings/App/SettingsSecurity.js":63,"../Settings/App/SettingsSocial.js":64,"../Settings/App/SettingsThemes.js":65,"../Storages/AppSettings.js":68,"../Storages/LocalStorage.js":69,"../Storages/WebMailAjaxRemoteStorage.js":72,"../Storages/WebMailCacheStorage.js":73,"../Storages/WebMailDataStorage.js":74,"../ViewModels/Popups/PopupsAskViewModel.js":84,"../ViewModels/Popups/PopupsComposeViewModel.js":86,"./AbstractApp.js":2,"Consts":6,"Enums":7,"Events":8,"Globals":9,"LinkBuilder":10,"Plugins":12,"Utils":14,"_":31,"kn":33,"moment":29,"window":32}],4:[function(require,module,exports){
+},{"$":26,"App:Abstract":2,"App:Knoin":33,"Consts":6,"Enums":7,"Events":8,"Globals":9,"LinkBuilder":11,"Model:Account":37,"Model:Email":43,"Model:Folder":46,"Model:Identity":47,"Model:Message":48,"Model:OpenPgpKey":49,"Plugins":12,"Screen:RainLoop:About":50,"Screen:RainLoop:Login":52,"Screen:RainLoop:MailBox":53,"Screen:RainLoop:Settings":54,"Settings:RainLoop:Accounts":55,"Settings:RainLoop:ChangePassword":56,"Settings:RainLoop:Contacts":57,"Settings:RainLoop:Filters":58,"Settings:RainLoop:Folders":59,"Settings:RainLoop:General":60,"Settings:RainLoop:Identities":61,"Settings:RainLoop:Identity":62,"Settings:RainLoop:OpenPGP":63,"Settings:RainLoop:Security":64,"Settings:RainLoop:Social":65,"Settings:RainLoop:Themes":66,"Storage:LocalStorage":71,"Storage:RainLoop:Cache":69,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,"Storage:Settings":75,"Utils":14,"View:Popup:Ask":86,"View:Popup:Compose":88,"View:Popup:FolderSystem":93,"_":31,"moment":29,"window":32}],4:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -1860,7 +1860,7 @@
window = require('window'),
_ = require('_'),
$ = require('$'),
- $window = require('$window'),
+ $win = require('$win'),
$html = require('$html'),
Globals = require('Globals'),
@@ -1868,7 +1868,7 @@
Utils = require('Utils'),
Enums = require('Enums'),
- EmailModel = require('./Models/EmailModel.js')
+ EmailModel = require('Model:Email')
;
Globals.__APP = App;
@@ -1881,8 +1881,9 @@
$html.addClass(Globals.bMobileDevice ? 'mobile' : 'no-mobile');
- $window.keydown(Utils.killCtrlAandS).keyup(Utils.killCtrlAandS);
- $window.unload(function () {
+ $win.keydown(Utils.killCtrlAandS).keyup(Utils.killCtrlAandS);
+
+ $win.unload(function () {
Globals.bUnload = true;
});
@@ -1915,7 +1916,7 @@
App.bootstart();
$html.removeClass('no-js rl-booted-trigger').addClass('rl-booted');
- }, 50);
+ }, 10);
}
else
{
@@ -1929,7 +1930,7 @@
};
}(module, require));
-},{"$":26,"$html":17,"$window":18,"./Models/EmailModel.js":43,"Enums":7,"Globals":9,"Plugins":12,"Utils":14,"_":31,"window":32}],5:[function(require,module,exports){
+},{"$":26,"$html":17,"$win":18,"Enums":7,"Globals":9,"Model:Email":43,"Plugins":12,"Utils":14,"_":31,"window":32}],5:[function(require,module,exports){
// Base64 encode / decode
// http://www.webtoolkit.info/
@@ -3019,6 +3020,282 @@
},{"$html":17,"Enums":7,"key":27,"ko":28,"window":32}],10:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
+(function (module, require) {
+
+ 'use strict';
+
+ var
+ window = require('window'),
+ _ = require('_'),
+ Globals = require('Globals'),
+ Settings = require('Storage:Settings')
+ ;
+
+ /**
+ * @constructor
+ * @param {Object} oElement
+ * @param {Function=} fOnBlur
+ * @param {Function=} fOnReady
+ * @param {Function=} fOnModeChange
+ */
+ function HtmlEditor(oElement, fOnBlur, fOnReady, fOnModeChange)
+ {
+ this.editor = null;
+ this.iBlurTimer = 0;
+ this.fOnBlur = fOnBlur || null;
+ this.fOnReady = fOnReady || null;
+ this.fOnModeChange = fOnModeChange || null;
+
+ this.$element = $(oElement);
+
+ this.resize = _.throttle(_.bind(this.resize, this), 100);
+
+ this.init();
+ }
+
+ HtmlEditor.prototype.blurTrigger = function ()
+ {
+ if (this.fOnBlur)
+ {
+ var self = this;
+ window.clearTimeout(this.iBlurTimer);
+ this.iBlurTimer = window.setTimeout(function () {
+ self.fOnBlur();
+ }, 200);
+ }
+ };
+
+ HtmlEditor.prototype.focusTrigger = function ()
+ {
+ if (this.fOnBlur)
+ {
+ window.clearTimeout(this.iBlurTimer);
+ }
+ };
+
+ /**
+ * @return {boolean}
+ */
+ HtmlEditor.prototype.isHtml = function ()
+ {
+ return this.editor ? 'wysiwyg' === this.editor.mode : false;
+ };
+
+ /**
+ * @return {boolean}
+ */
+ HtmlEditor.prototype.checkDirty = function ()
+ {
+ return this.editor ? this.editor.checkDirty() : false;
+ };
+
+ HtmlEditor.prototype.resetDirty = function ()
+ {
+ if (this.editor)
+ {
+ this.editor.resetDirty();
+ }
+ };
+
+ /**
+ * @return {string}
+ */
+ HtmlEditor.prototype.getData = function (bWrapIsHtml)
+ {
+ if (this.editor)
+ {
+ if ('plain' === this.editor.mode && this.editor.plugins.plain && this.editor.__plain)
+ {
+ return this.editor.__plain.getRawData();
+ }
+
+ return bWrapIsHtml ?
+ '' +
+ this.editor.getData() + '
' : this.editor.getData();
+ }
+
+ return '';
+ };
+
+ HtmlEditor.prototype.modeToggle = function (bPlain)
+ {
+ if (this.editor)
+ {
+ if (bPlain)
+ {
+ if ('plain' === this.editor.mode)
+ {
+ this.editor.setMode('wysiwyg');
+ }
+ }
+ else
+ {
+ if ('wysiwyg' === this.editor.mode)
+ {
+ this.editor.setMode('plain');
+ }
+ }
+
+ this.resize();
+ }
+ };
+
+ HtmlEditor.prototype.setHtml = function (sHtml, bFocus)
+ {
+ if (this.editor)
+ {
+ this.modeToggle(true);
+ this.editor.setData(sHtml);
+
+ if (bFocus)
+ {
+ this.focus();
+ }
+ }
+ };
+
+ HtmlEditor.prototype.setPlain = function (sPlain, bFocus)
+ {
+ if (this.editor)
+ {
+ this.modeToggle(false);
+ if ('plain' === this.editor.mode && this.editor.plugins.plain && this.editor.__plain)
+ {
+ return this.editor.__plain.setRawData(sPlain);
+ }
+ else
+ {
+ this.editor.setData(sPlain);
+ }
+
+ if (bFocus)
+ {
+ this.focus();
+ }
+ }
+ };
+
+ HtmlEditor.prototype.init = function ()
+ {
+ if (this.$element && this.$element[0])
+ {
+ var
+ self = this,
+ fInit = function () {
+
+ var
+ oConfig = Globals.oHtmlEditorDefaultConfig,
+ sLanguage = Settings.settingsGet('Language'),
+ bSource = !!Settings.settingsGet('AllowHtmlEditorSourceButton')
+ ;
+
+ if (bSource && oConfig.toolbarGroups && !oConfig.toolbarGroups.__SourceInited)
+ {
+ oConfig.toolbarGroups.__SourceInited = true;
+ oConfig.toolbarGroups.push({name: 'document', groups: ['mode', 'document', 'doctools']});
+ }
+
+ oConfig.enterMode = window.CKEDITOR.ENTER_BR;
+ oConfig.shiftEnterMode = window.CKEDITOR.ENTER_BR;
+
+ oConfig.language = Globals.oHtmlEditorLangsMap[sLanguage] || 'en';
+ if (window.CKEDITOR.env)
+ {
+ window.CKEDITOR.env.isCompatible = true;
+ }
+
+ self.editor = window.CKEDITOR.appendTo(self.$element[0], oConfig);
+
+ self.editor.on('key', function(oEvent) {
+ if (oEvent && oEvent.data && 9 /* Tab */ === oEvent.data.keyCode)
+ {
+ return false;
+ }
+ });
+
+ self.editor.on('blur', function() {
+ self.blurTrigger();
+ });
+
+ self.editor.on('mode', function() {
+
+ self.blurTrigger();
+
+ if (self.fOnModeChange)
+ {
+ self.fOnModeChange('plain' !== self.editor.mode);
+ }
+ });
+
+ self.editor.on('focus', function() {
+ self.focusTrigger();
+ });
+
+ if (self.fOnReady)
+ {
+ self.editor.on('instanceReady', function () {
+
+ self.editor.setKeystroke(window.CKEDITOR.CTRL + 65 /* A */, 'selectAll');
+
+ self.fOnReady();
+ self.__resizable = true;
+ self.resize();
+ });
+ }
+ }
+ ;
+
+ if (window.CKEDITOR)
+ {
+ fInit();
+ }
+ else
+ {
+ window.__initEditor = fInit;
+ }
+ }
+ };
+
+ HtmlEditor.prototype.focus = function ()
+ {
+ if (this.editor)
+ {
+ this.editor.focus();
+ }
+ };
+
+ HtmlEditor.prototype.blur = function ()
+ {
+ if (this.editor)
+ {
+ this.editor.focusManager.blur(true);
+ }
+ };
+
+ HtmlEditor.prototype.resize = function ()
+ {
+ if (this.editor && this.__resizable)
+ {
+ try
+ {
+ this.editor.resize(this.$element.width(), this.$element.innerHeight());
+ }
+ catch (e) {}
+ }
+ };
+
+ HtmlEditor.prototype.clear = function (bFocus)
+ {
+ this.setHtml('', bFocus);
+ };
+
+
+ module.exports = HtmlEditor;
+
+}(module, require));
+},{"Globals":9,"Storage:Settings":75,"_":31,"window":32}],11:[function(require,module,exports){
+/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
+
(function (module, require) {
'use strict';
@@ -3033,13 +3310,13 @@
*/
function LinkBuilder()
{
- var AppSettings = require('../Storages/AppSettings.js');
+ var Settings = require('Storage:Settings');
this.sBase = '#/';
this.sServer = './?';
- this.sVersion = AppSettings.settingsGet('Version');
- this.sSpecSuffix = AppSettings.settingsGet('AuthAccountHash') || '0';
- this.sStaticPrefix = AppSettings.settingsGet('StaticPrefix') || 'rainloop/v/' + this.sVersion + '/static/';
+ this.sVersion = Settings.settingsGet('Version');
+ this.sSpecSuffix = Settings.settingsGet('AuthAccountHash') || '0';
+ this.sStaticPrefix = Settings.settingsGet('StaticPrefix') || 'rainloop/v/' + this.sVersion + '/static/';
}
/**
@@ -3186,6 +3463,14 @@
return sResult;
};
+ /**
+ * @return {string}
+ */
+ LinkBuilder.prototype.about = function ()
+ {
+ return this.sBase + 'about';
+ };
+
/**
* @param {string} sScreenName
* @return {string}
@@ -3347,283 +3632,7 @@
module.exports = new LinkBuilder();
}(module, require));
-},{"../Storages/AppSettings.js":68,"Utils":14,"window":32}],11:[function(require,module,exports){
-/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
-
-(function (module, require) {
-
- 'use strict';
-
- var
- window = require('window'),
- _ = require('_'),
- Globals = require('Globals'),
- AppSettings = require('../Storages/AppSettings.js')
- ;
-
- /**
- * @constructor
- * @param {Object} oElement
- * @param {Function=} fOnBlur
- * @param {Function=} fOnReady
- * @param {Function=} fOnModeChange
- */
- function NewHtmlEditorWrapper(oElement, fOnBlur, fOnReady, fOnModeChange)
- {
- this.editor = null;
- this.iBlurTimer = 0;
- this.fOnBlur = fOnBlur || null;
- this.fOnReady = fOnReady || null;
- this.fOnModeChange = fOnModeChange || null;
-
- this.$element = $(oElement);
-
- this.resize = _.throttle(_.bind(this.resize, this), 100);
-
- this.init();
- }
-
- NewHtmlEditorWrapper.prototype.blurTrigger = function ()
- {
- if (this.fOnBlur)
- {
- var self = this;
- window.clearTimeout(this.iBlurTimer);
- this.iBlurTimer = window.setTimeout(function () {
- self.fOnBlur();
- }, 200);
- }
- };
-
- NewHtmlEditorWrapper.prototype.focusTrigger = function ()
- {
- if (this.fOnBlur)
- {
- window.clearTimeout(this.iBlurTimer);
- }
- };
-
- /**
- * @return {boolean}
- */
- NewHtmlEditorWrapper.prototype.isHtml = function ()
- {
- return this.editor ? 'wysiwyg' === this.editor.mode : false;
- };
-
- /**
- * @return {boolean}
- */
- NewHtmlEditorWrapper.prototype.checkDirty = function ()
- {
- return this.editor ? this.editor.checkDirty() : false;
- };
-
- NewHtmlEditorWrapper.prototype.resetDirty = function ()
- {
- if (this.editor)
- {
- this.editor.resetDirty();
- }
- };
-
- /**
- * @return {string}
- */
- NewHtmlEditorWrapper.prototype.getData = function (bWrapIsHtml)
- {
- if (this.editor)
- {
- if ('plain' === this.editor.mode && this.editor.plugins.plain && this.editor.__plain)
- {
- return this.editor.__plain.getRawData();
- }
-
- return bWrapIsHtml ?
- '' +
- this.editor.getData() + '
' : this.editor.getData();
- }
-
- return '';
- };
-
- NewHtmlEditorWrapper.prototype.modeToggle = function (bPlain)
- {
- if (this.editor)
- {
- if (bPlain)
- {
- if ('plain' === this.editor.mode)
- {
- this.editor.setMode('wysiwyg');
- }
- }
- else
- {
- if ('wysiwyg' === this.editor.mode)
- {
- this.editor.setMode('plain');
- }
- }
-
- this.resize();
- }
- };
-
- NewHtmlEditorWrapper.prototype.setHtml = function (sHtml, bFocus)
- {
- if (this.editor)
- {
- this.modeToggle(true);
- this.editor.setData(sHtml);
-
- if (bFocus)
- {
- this.focus();
- }
- }
- };
-
- NewHtmlEditorWrapper.prototype.setPlain = function (sPlain, bFocus)
- {
- if (this.editor)
- {
- this.modeToggle(false);
- if ('plain' === this.editor.mode && this.editor.plugins.plain && this.editor.__plain)
- {
- return this.editor.__plain.setRawData(sPlain);
- }
- else
- {
- this.editor.setData(sPlain);
- }
-
- if (bFocus)
- {
- this.focus();
- }
- }
- };
-
- NewHtmlEditorWrapper.prototype.init = function ()
- {
- if (this.$element && this.$element[0])
- {
- var
- self = this,
- fInit = function () {
-
- var
- oConfig = Globals.oHtmlEditorDefaultConfig,
- sLanguage = AppSettings.settingsGet('Language'),
- bSource = !!AppSettings.settingsGet('AllowHtmlEditorSourceButton')
- ;
-
- if (bSource && oConfig.toolbarGroups && !oConfig.toolbarGroups.__SourceInited)
- {
- oConfig.toolbarGroups.__SourceInited = true;
- oConfig.toolbarGroups.push({name: 'document', groups: ['mode', 'document', 'doctools']});
- }
-
- oConfig.enterMode = window.CKEDITOR.ENTER_BR;
- oConfig.shiftEnterMode = window.CKEDITOR.ENTER_BR;
-
- oConfig.language = Globals.oHtmlEditorLangsMap[sLanguage] || 'en';
- if (window.CKEDITOR.env)
- {
- window.CKEDITOR.env.isCompatible = true;
- }
-
- self.editor = window.CKEDITOR.appendTo(self.$element[0], oConfig);
-
- self.editor.on('key', function(oEvent) {
- if (oEvent && oEvent.data && 9 /* Tab */ === oEvent.data.keyCode)
- {
- return false;
- }
- });
-
- self.editor.on('blur', function() {
- self.blurTrigger();
- });
-
- self.editor.on('mode', function() {
-
- self.blurTrigger();
-
- if (self.fOnModeChange)
- {
- self.fOnModeChange('plain' !== self.editor.mode);
- }
- });
-
- self.editor.on('focus', function() {
- self.focusTrigger();
- });
-
- if (self.fOnReady)
- {
- self.editor.on('instanceReady', function () {
-
- self.editor.setKeystroke(window.CKEDITOR.CTRL + 65 /* A */, 'selectAll');
-
- self.fOnReady();
- self.__resizable = true;
- self.resize();
- });
- }
- }
- ;
-
- if (window.CKEDITOR)
- {
- fInit();
- }
- else
- {
- window.__initEditor = fInit;
- }
- }
- };
-
- NewHtmlEditorWrapper.prototype.focus = function ()
- {
- if (this.editor)
- {
- this.editor.focus();
- }
- };
-
- NewHtmlEditorWrapper.prototype.blur = function ()
- {
- if (this.editor)
- {
- this.editor.focusManager.blur(true);
- }
- };
-
- NewHtmlEditorWrapper.prototype.resize = function ()
- {
- if (this.editor && this.__resizable)
- {
- try
- {
- this.editor.resize(this.$element.width(), this.$element.innerHeight());
- }
- catch (e) {}
- }
- };
-
- NewHtmlEditorWrapper.prototype.clear = function (bFocus)
- {
- this.setHtml('', bFocus);
- };
-
-
- module.exports = NewHtmlEditorWrapper;
-
-}(module, require));
-},{"../Storages/AppSettings.js":68,"Globals":9,"_":31,"window":32}],12:[function(require,module,exports){
+},{"Storage:Settings":75,"Utils":14,"window":32}],12:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -3638,7 +3647,7 @@
},
_ = require('_'),
Utils = require('Utils'),
- AppSettings = require('../Storages/AppSettings.js')
+ Settings = require('Storage:Settings')
;
/**
@@ -3702,7 +3711,7 @@
*/
Plugins.mainSettingsGet = function (sName)
{
- return AppSettings.settingsGet(sName);
+ return Settings.settingsGet(sName);
};
/**
@@ -3728,7 +3737,7 @@
*/
Plugins.settingsGet = function (sPluginSection, sName)
{
- var oPlugin = AppSettings.settingsGet('Plugins');
+ var oPlugin = Settings.settingsGet('Plugins');
oPlugin = oPlugin && !Utils.isUnd(oPlugin[sPluginSection]) ? oPlugin[sPluginSection] : null;
return oPlugin ? (Utils.isUnd(oPlugin[sName]) ? null : oPlugin[sName]) : null;
};
@@ -3736,7 +3745,7 @@
module.exports = Plugins;
}(module, require));
-},{"../Storages/AppSettings.js":68,"Utils":14,"_":31}],13:[function(require,module,exports){
+},{"Storage:Settings":75,"Utils":14,"_":31}],13:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -4481,7 +4490,7 @@
_ = require('_'),
ko = require('ko'),
window = require('window'),
- $window = require('$window'),
+ $win = require('$win'),
$html = require('$html'),
$div = require('$div'),
$doc = require('$doc'),
@@ -4512,12 +4521,12 @@
Utils.windowResize = _.debounce(function (iTimeout) {
if (Utils.isUnd(iTimeout))
{
- $window.resize();
+ $win.resize();
}
else
{
window.setTimeout(function () {
- $window.resize();
+ $win.resize();
}, iTimeout);
}
}, 50);
@@ -6516,7 +6525,7 @@
module.exports = Utils;
}(module, require));
-},{"$":26,"$div":15,"$doc":16,"$html":17,"$window":18,"Consts":6,"Enums":7,"Globals":9,"NotificationClass":22,"_":31,"ko":28,"window":32}],15:[function(require,module,exports){
+},{"$":26,"$div":15,"$doc":16,"$html":17,"$win":18,"Consts":6,"Enums":7,"Globals":9,"NotificationClass":22,"_":31,"ko":28,"window":32}],15:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
module.exports = require('$')('');
@@ -6580,7 +6589,7 @@ module.exports = key;
window = require('window'),
_ = require('_'),
$ = require('$'),
- $window = require('$window'),
+ $win = require('$win'),
$doc = require('$doc')
;
@@ -6895,7 +6904,7 @@ module.exports = key;
if (0 < iOffset)
{
iOffset += Utils.pInt(aValues[2]);
- iSize = $window.height() - iOffset;
+ iSize = $win.height() - iOffset;
if (iValue < iSize)
{
@@ -7142,7 +7151,7 @@ module.exports = key;
var
Utils = require('Utils'),
- EmailModel = require('../Models/EmailModel.js'),
+ EmailModel = require('Model:Email'),
$oEl = $(oElement),
fValue = fValueAccessor(),
@@ -7216,7 +7225,7 @@ module.exports = key;
var
Utils = require('Utils'),
- ContactTagModel = require('../Models/ContactTagModel.js'),
+ ContactTagModel = require('Model:ContactTag'),
$oEl = $(oElement),
fValue = fValueAccessor(),
@@ -7478,7 +7487,7 @@ module.exports = key;
}(module, ko));
-},{"$":26,"$doc":16,"$window":18,"../Models/ContactTagModel.js":42,"../Models/EmailModel.js":43,"Globals":9,"Utils":14,"_":31,"window":32}],29:[function(require,module,exports){
+},{"$":26,"$doc":16,"$win":18,"Globals":9,"Model:ContactTag":42,"Model:Email":43,"Utils":14,"_":31,"window":32}],29:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
module.exports = moment;
@@ -7513,7 +7522,7 @@ module.exports = window;
Plugins = require('Plugins'),
Utils = require('Utils'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -7521,13 +7530,13 @@ module.exports = window;
*/
function Knoin()
{
- this.sDefaultScreenName = '';
this.oScreens = {};
+ this.sDefaultScreenName = '';
this.oCurrentScreen = null;
}
- Knoin.prototype.sDefaultScreenName = '';
Knoin.prototype.oScreens = {};
+ Knoin.prototype.sDefaultScreenName = '';
Knoin.prototype.oCurrentScreen = null;
Knoin.prototype.hideLoading = function ()
@@ -7706,7 +7715,7 @@ module.exports = window;
Utils.log('Cannot find view model position: ' + sPosition);
}
}
-
+
return ViewModelClass ? ViewModelClass.__vm : null;
};
@@ -7849,7 +7858,7 @@ module.exports = window;
}
// --
- oCross = oScreen.__cross();
+ oCross = oScreen.__cross ? oScreen.__cross() : null;
if (oCross)
{
oCross.parse(sSubPart);
@@ -7945,7 +7954,7 @@ module.exports = window;
module.exports = new Knoin();
}(module, require));
-},{"$":26,"$html":17,"Globals":9,"KnoinAbstractViewModel":36,"Plugins":12,"Utils":14,"_":31,"crossroads":23,"hasher":24,"ko":28}],34:[function(require,module,exports){
+},{"$":26,"$html":17,"Globals":9,"Knoin:AbstractViewModel":36,"Plugins":12,"Utils":14,"_":31,"crossroads":23,"hasher":24,"ko":28}],34:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module) {
@@ -8068,7 +8077,7 @@ module.exports = window;
var
ko = require('ko'),
- $window = require('$window'),
+ $win = require('$win'),
Enums = require('Enums'),
Globals = require('Globals'),
@@ -8150,7 +8159,7 @@ module.exports = window;
{
var self = this;
- $window.on('keydown', function (oEvent) {
+ $win.on('keydown', function (oEvent) {
if (oEvent && self.modalVisibility && self.modalVisibility())
{
if (!this.bDisabeCloseOnEsc && Enums.EventKeyCode.Esc === oEvent.keyCode)
@@ -8171,7 +8180,7 @@ module.exports = window;
module.exports = KnoinAbstractViewModel;
}(module, require));
-},{"$window":18,"Enums":7,"Globals":9,"Utils":14,"ko":28}],37:[function(require,module,exports){
+},{"$win":18,"Enums":7,"Globals":9,"Utils":14,"ko":28}],37:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -8207,7 +8216,7 @@ module.exports = window;
module.exports = AccountModel;
}(module, require));
-},{"LinkBuilder":10,"ko":28}],38:[function(require,module,exports){
+},{"LinkBuilder":11,"ko":28}],38:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -8460,7 +8469,7 @@ module.exports = window;
module.exports = AttachmentModel;
}(module, require));
-},{"Globals":9,"LinkBuilder":10,"Utils":14,"window":32}],39:[function(require,module,exports){
+},{"Globals":9,"LinkBuilder":11,"Utils":14,"window":32}],39:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -8679,7 +8688,7 @@ module.exports = window;
module.exports = ContactModel;
}(module, require));
-},{"Enums":7,"LinkBuilder":10,"Utils":14,"_":31,"ko":28}],41:[function(require,module,exports){
+},{"Enums":7,"LinkBuilder":11,"Utils":14,"_":31,"ko":28}],41:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -9235,7 +9244,7 @@ module.exports = window;
ko = require('ko'),
Enums = require('Enums'),
Utils = require('Utils'),
- FilterConditionModel = require('./FilterConditionModel.js')
+ FilterConditionModel = require('Model:FilterCondition')
;
/**
@@ -9319,7 +9328,7 @@ module.exports = window;
module.exports = FilterModel;
}(module, require));
-},{"./FilterConditionModel.js":44,"Enums":7,"Utils":14,"ko":28}],46:[function(require,module,exports){
+},{"Enums":7,"Model:FilterCondition":44,"Utils":14,"ko":28}],46:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -9329,7 +9338,6 @@ module.exports = window;
var
_ = require('_'),
ko = require('ko'),
- $window = require('$window'),
Enums = require('Enums'),
Globals = require('Globals'),
@@ -9490,11 +9498,11 @@ module.exports = window;
return !this.isSystemFolder() && this.selectable && 'INBOX' !== this.fullNameRaw;
}, this);
- this.visible.subscribe(function () {
- Utils.timeOutAction('folder-list-folder-visibility-change', function () {
- $window.trigger('folder-list-folder-visibility-change');
- }, 100);
- });
+// this.visible.subscribe(function () {
+// Utils.timeOutAction('folder-list-folder-visibility-change', function () {
+// require('$win').trigger('folder-list-folder-visibility-change');
+// }, 100);
+// });
this.localName = ko.computed(function () {
@@ -9675,7 +9683,7 @@ module.exports = window;
module.exports = FolderModel;
}(module, require));
-},{"$window":18,"Enums":7,"Events":8,"Globals":9,"Utils":14,"_":31,"ko":28}],47:[function(require,module,exports){
+},{"Enums":7,"Events":8,"Globals":9,"Utils":14,"_":31,"ko":28}],47:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -9739,15 +9747,15 @@ module.exports = window;
_ = require('_'),
ko = require('ko'),
moment = require('moment'),
- $window = require('$window'),
+ $win = require('$win'),
$div = require('$div'),
Enums = require('Enums'),
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- EmailModel = require('./EmailModel.js'),
- AttachmentModel = require('./AttachmentModel.js')
+ EmailModel = require('Model:Email'),
+ AttachmentModel = require('Model:Attachment')
;
/**
@@ -10076,7 +10084,7 @@ module.exports = window;
MessageModel.prototype.computeSenderEmail = function ()
{
var
- Data = require('../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
sSent = Data.sentFolder(),
sDraft = Data.draftFolder()
;
@@ -10154,7 +10162,7 @@ module.exports = window;
MessageModel.prototype.initUpdateByMessageJson = function (oJsonMessage)
{
var
- Data = require('../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
bResult = false,
iPriority = Enums.MessagePriority.Normal
;
@@ -10705,7 +10713,7 @@ module.exports = window;
'container': $('.RL-MailMessageView .messageView .messageItem .content')[0]
});
- $window.resize();
+ $win.resize();
}
Utils.windowResize(500);
@@ -10810,7 +10818,7 @@ module.exports = window;
this.body.data('rl-plain-raw', this.plainRaw);
- var Data = require('../Storages/WebMailDataStorage.js');
+ var Data = require('Storage:RainLoop:Data');
if (Data.capaOpenPGP())
{
this.body.data('rl-plain-pgp-signed', !!this.isPgpSigned());
@@ -10823,7 +10831,7 @@ module.exports = window;
MessageModel.prototype.storePgpVerifyDataToDom = function ()
{
- var Data = require('../Storages/WebMailDataStorage.js');
+ var Data = require('Storage:RainLoop:Data');
if (this.body && Data.capaOpenPGP())
{
this.body.data('rl-pgp-verify-status', this.pgpSignedVerifyStatus());
@@ -10840,7 +10848,7 @@ module.exports = window;
this.plainRaw = Utils.pString(this.body.data('rl-plain-raw'));
- var Data = require('../Storages/WebMailDataStorage.js');
+ var Data = require('Storage:RainLoop:Data');
if (Data.capaOpenPGP())
{
this.isPgpSigned(!!this.body.data('rl-plain-pgp-signed'));
@@ -10865,7 +10873,7 @@ module.exports = window;
var
aRes = [],
mPgpMessage = null,
- Data = require('../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
sFrom = this.from && this.from[0] && this.from[0].email ? this.from[0].email : '',
aPublicKeys = Data.findPublicKeysByEmail(sFrom),
oValidKey = null,
@@ -10929,7 +10937,7 @@ module.exports = window;
aRes = [],
mPgpMessage = null,
mPgpMessageDecrypted = null,
- Data = require('../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
sFrom = this.from && this.from[0] && this.from[0].email ? this.from[0].email : '',
aPublicKey = Data.findPublicKeysByEmail(sFrom),
oPrivateKey = Data.findSelfPrivateKey(sPassword),
@@ -11014,7 +11022,7 @@ module.exports = window;
module.exports = MessageModel;
}(module, require));
-},{"$":26,"$div":15,"$window":18,"../Storages/WebMailDataStorage.js":74,"./AttachmentModel.js":38,"./EmailModel.js":43,"Enums":7,"LinkBuilder":10,"Utils":14,"_":31,"ko":28,"moment":29,"window":32}],49:[function(require,module,exports){
+},{"$":26,"$div":15,"$win":18,"Enums":7,"LinkBuilder":11,"Model:Attachment":38,"Model:Email":43,"Storage:RainLoop:Data":70,"Utils":14,"_":31,"ko":28,"moment":29,"window":32}],49:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -11062,6 +11070,39 @@ module.exports = window;
},{"ko":28}],50:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
+(function (module, require) {
+
+ 'use strict';
+
+ var
+ _ = require('_'),
+ KnoinAbstractScreen = require('Knoin:AbstractScreen')
+ ;
+
+ /**
+ * @constructor
+ * @extends KnoinAbstractScreen
+ */
+ function AboutScreen()
+ {
+ KnoinAbstractScreen.call(this, 'about', [
+ require('View:RainLoop:About')
+ ]);
+ }
+
+ _.extend(AboutScreen.prototype, KnoinAbstractScreen.prototype);
+
+ AboutScreen.prototype.onShow = function ()
+ {
+ require('App:RainLoop').setTitle('RainLoop');
+ };
+
+ module.exports = AboutScreen;
+
+}(module, require));
+},{"App:RainLoop":3,"Knoin:AbstractScreen":35,"View:RainLoop:About":76,"_":31}],51:[function(require,module,exports){
+/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
+
(function (module, require) {
'use strict';
@@ -11075,8 +11116,8 @@ module.exports = window;
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- kn = require('kn'),
- KnoinAbstractScreen = require('KnoinAbstractScreen')
+ kn = require('App:Knoin'),
+ KnoinAbstractScreen = require('Knoin:AbstractScreen')
;
/**
@@ -11260,7 +11301,7 @@ module.exports = window;
module.exports = AbstractSettings;
}(module, require));
-},{"$":26,"Globals":9,"KnoinAbstractScreen":35,"LinkBuilder":10,"Utils":14,"_":31,"kn":33,"ko":28}],51:[function(require,module,exports){
+},{"$":26,"App:Knoin":33,"Globals":9,"Knoin:AbstractScreen":35,"LinkBuilder":11,"Utils":14,"_":31,"ko":28}],52:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -11269,7 +11310,7 @@ module.exports = window;
var
_ = require('_'),
- KnoinAbstractScreen = require('KnoinAbstractScreen')
+ KnoinAbstractScreen = require('Knoin:AbstractScreen')
;
/**
@@ -11278,22 +11319,22 @@ module.exports = window;
*/
function LoginScreen()
{
- var LoginViewModel = require('../ViewModels/LoginViewModel.js');
- KnoinAbstractScreen.call(this, 'login', [LoginViewModel]);
+ KnoinAbstractScreen.call(this, 'login', [
+ require('View:RainLoop:Login')
+ ]);
}
_.extend(LoginScreen.prototype, KnoinAbstractScreen.prototype);
LoginScreen.prototype.onShow = function ()
{
- var App = require('../Apps/RainLoopApp.js');
- App.setTitle('');
+ require('App:RainLoop').setTitle('');
};
module.exports = LoginScreen;
}(module, require));
-},{"../Apps/RainLoopApp.js":3,"../ViewModels/LoginViewModel.js":76,"KnoinAbstractScreen":35,"_":31}],52:[function(require,module,exports){
+},{"App:RainLoop":3,"Knoin:AbstractScreen":35,"View:RainLoop:Login":78,"_":31}],53:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -11309,12 +11350,12 @@ module.exports = window;
Utils = require('Utils'),
Events = require('Events'),
- KnoinAbstractScreen = require('KnoinAbstractScreen'),
+ KnoinAbstractScreen = require('Knoin:AbstractScreen'),
- AppSettings = require('../Storages/AppSettings.js'),
- Data = require('../Storages/WebMailDataStorage.js'),
- Cache = require('../Storages/WebMailCacheStorage.js'),
- Remote = require('../Storages/WebMailAjaxRemoteStorage.js')
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:RainLoop:Data'),
+ Cache = require('Storage:RainLoop:Cache'),
+ Remote = require('Storage:RainLoop:Remote')
;
/**
@@ -11323,18 +11364,11 @@ module.exports = window;
*/
function MailBoxScreen()
{
- var
- MailBoxSystemDropDownViewModel = require('../ViewModels/MailBoxSystemDropDownViewModel.js'),
- MailBoxFolderListViewModel = require('../ViewModels/MailBoxFolderListViewModel.js'),
- MailBoxMessageListViewModel = require('../ViewModels/MailBoxMessageListViewModel.js'),
- MailBoxMessageViewViewModel = require('../ViewModels/MailBoxMessageViewViewModel.js')
- ;
-
KnoinAbstractScreen.call(this, 'mailbox', [
- MailBoxSystemDropDownViewModel,
- MailBoxFolderListViewModel,
- MailBoxMessageListViewModel,
- MailBoxMessageViewViewModel
+ require('View:RainLoop:MailBoxSystemDropDown'),
+ require('View:RainLoop:MailBoxFolderList'),
+ require('View:RainLoop:MailBoxMessageList'),
+ require('View:RainLoop:MailBoxMessageView')
]);
this.oLastRoute = {};
@@ -11350,12 +11384,11 @@ module.exports = window;
MailBoxScreen.prototype.setNewTitle = function ()
{
var
- App = require('../Apps/RainLoopApp.js'),
sEmail = Data.accountEmail(),
nFoldersInboxUnreadCount = Data.foldersInboxUnreadCount()
;
- App.setTitle(('' === sEmail ? '' :
+ require('App:RainLoop').setTitle(('' === sEmail ? '' :
(0 < nFoldersInboxUnreadCount ? '(' + nFoldersInboxUnreadCount + ') ' : ' ') + sEmail + ' - ') + Utils.i18n('TITLES/MAILBOX'));
};
@@ -11373,12 +11406,11 @@ module.exports = window;
*/
MailBoxScreen.prototype.onRoute = function (sFolderHash, iPage, sSearch, bPreview)
{
- var App = require('../Apps/RainLoopApp.js');
if (Utils.isUnd(bPreview) ? false : !!bPreview)
{
if (Enums.Layout.NoPreview === Data.layout() && !Data.message())
{
- App.historyBack();
+ require('App:RainLoop').historyBack();
}
}
else
@@ -11401,7 +11433,7 @@ module.exports = window;
Data.message(null);
}
- App.reloadMessageList();
+ require('App:RainLoop').reloadMessageList();
}
}
};
@@ -11409,26 +11441,25 @@ module.exports = window;
MailBoxScreen.prototype.onStart = function ()
{
var
- App = require('../Apps/RainLoopApp.js'),
fResizeFunction = function () {
Utils.windowResize();
}
;
- if (AppSettings.capa(Enums.Capa.AdditionalAccounts) || AppSettings.capa(Enums.Capa.AdditionalIdentities))
+ if (Settings.capa(Enums.Capa.AdditionalAccounts) || Settings.capa(Enums.Capa.AdditionalIdentities))
{
- App.accountsAndIdentities();
+ require('App:RainLoop').accountsAndIdentities();
}
_.delay(function () {
if ('INBOX' !== Data.currentFolderFullNameRaw())
{
- App.folderInformation('INBOX');
+ require('App:RainLoop').folderInformation('INBOX');
}
}, 1000);
_.delay(function () {
- App.quota();
+ require('App:RainLoop').quota();
}, 5000);
_.delay(function () {
@@ -11502,7 +11533,7 @@ module.exports = window;
module.exports = MailBoxScreen;
}(module, require));
-},{"$html":17,"../Apps/RainLoopApp.js":3,"../Storages/AppSettings.js":68,"../Storages/WebMailAjaxRemoteStorage.js":72,"../Storages/WebMailCacheStorage.js":73,"../Storages/WebMailDataStorage.js":74,"../ViewModels/MailBoxFolderListViewModel.js":77,"../ViewModels/MailBoxMessageListViewModel.js":78,"../ViewModels/MailBoxMessageViewViewModel.js":79,"../ViewModels/MailBoxSystemDropDownViewModel.js":80,"Enums":7,"Events":8,"Globals":9,"KnoinAbstractScreen":35,"Utils":14,"_":31}],53:[function(require,module,exports){
+},{"$html":17,"App:RainLoop":3,"Enums":7,"Events":8,"Globals":9,"Knoin:AbstractScreen":35,"Storage:RainLoop:Cache":69,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,"Storage:Settings":75,"Utils":14,"View:RainLoop:MailBoxFolderList":79,"View:RainLoop:MailBoxMessageList":80,"View:RainLoop:MailBoxMessageView":81,"View:RainLoop:MailBoxSystemDropDown":82,"_":31}],54:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -11516,7 +11547,7 @@ module.exports = window;
Utils = require('Utils'),
Globals = require('Globals'),
- AbstractSettings = require('./AbstractSettings.js')
+ AbstractSettings = require('Screen:AbstractSettings')
;
/**
@@ -11525,24 +11556,16 @@ module.exports = window;
*/
function SettingsScreen()
{
- var
- App = require('../Apps/RainLoopApp.js'),
-
- SettingsSystemDropDownViewModel = require('../ViewModels/SettingsSystemDropDownViewModel.js'),
- SettingsMenuViewModel = require('../ViewModels/SettingsMenuViewModel.js'),
- SettingsPaneViewModel = require('../ViewModels/SettingsPaneViewModel.js')
- ;
-
AbstractSettings.call(this, [
- SettingsSystemDropDownViewModel,
- SettingsMenuViewModel,
- SettingsPaneViewModel
+ require('View:RainLoop:SettingsSystemDropDown'),
+ require('View:RainLoop:SettingsMenu'),
+ require('View:RainLoop:SettingsPane')
]);
Utils.initOnStartOrLangChange(function () {
this.sSettingsTitle = Utils.i18n('TITLES/SETTINGS');
}, this, function () {
- App.setTitle(this.sSettingsTitle);
+ this.setSettingsTitle();
});
}
@@ -11550,16 +11573,19 @@ module.exports = window;
SettingsScreen.prototype.onShow = function ()
{
- var App = require('../Apps/RainLoopApp.js');
-
- App.setTitle(this.sSettingsTitle);
+ this.setSettingsTitle();
Globals.keyScope(Enums.KeyState.Settings);
};
+
+ SettingsScreen.prototype.setSettingsTitle = function ()
+ {
+ require('App:RainLoop').setTitle(this.sSettingsTitle);
+ };
module.exports = SettingsScreen;
}(module, require));
-},{"../Apps/RainLoopApp.js":3,"../ViewModels/SettingsMenuViewModel.js":98,"../ViewModels/SettingsPaneViewModel.js":99,"../ViewModels/SettingsSystemDropDownViewModel.js":100,"./AbstractSettings.js":50,"Enums":7,"Globals":9,"Utils":14,"_":31}],54:[function(require,module,exports){
+},{"App:RainLoop":3,"Enums":7,"Globals":9,"Screen:AbstractSettings":51,"Utils":14,"View:RainLoop:SettingsMenu":100,"View:RainLoop:SettingsPane":101,"View:RainLoop:SettingsSystemDropDown":102,"_":31}],55:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -11575,11 +11601,8 @@ module.exports = window;
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- Data = require('../../Storages/WebMailDataStorage.js'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
-
- kn = require('kn'),
- PopupsAddAccountViewModel = require('../../ViewModels/Popups/PopupsAddAccountViewModel.js')
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote')
;
/**
@@ -11614,7 +11637,7 @@ module.exports = window;
SettingsAccounts.prototype.addNewAccount = function ()
{
- kn.showScreenPopup(PopupsAddAccountViewModel);
+ require('App:Knoin').showScreenPopup(require('View:Popup:AddAccount'));
};
/**
@@ -11627,7 +11650,7 @@ module.exports = window;
this.accountForDeletion(null);
var
- App = require('../../Apps/RainLoopApp.js'),
+ kn = require('App:Knoin'),
fRemoveAccount = function (oAccount) {
return oAccountToRemove === oAccount;
}
@@ -11652,7 +11675,7 @@ module.exports = window;
}
else
{
- App.accountsAndIdentities();
+ require('App:RainLoop').accountsAndIdentities();
}
}, oAccountToRemove.email);
@@ -11663,7 +11686,7 @@ module.exports = window;
module.exports = SettingsAccounts;
}(module, require));
-},{"../../Apps/RainLoopApp.js":3,"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../Storages/WebMailDataStorage.js":74,"../../ViewModels/Popups/PopupsAddAccountViewModel.js":81,"Enums":7,"LinkBuilder":10,"Utils":14,"_":31,"kn":33,"ko":28,"window":32}],55:[function(require,module,exports){
+},{"App:Knoin":33,"App:RainLoop":3,"Enums":7,"LinkBuilder":11,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,"Utils":14,"View:Popup:AddAccount":83,"_":31,"ko":28,"window":32}],56:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -11677,7 +11700,7 @@ module.exports = window;
Enums = require('Enums'),
Utils = require('Utils'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js')
+ Remote = require('Storage:RainLoop:Remote')
;
/**
@@ -11786,7 +11809,7 @@ module.exports = window;
module.exports = SettingsChangePassword;
}(module, require));
-},{"../../Storages/WebMailAjaxRemoteStorage.js":72,"Enums":7,"Utils":14,"_":31,"ko":28}],56:[function(require,module,exports){
+},{"Enums":7,"Storage:RainLoop:Remote":74,"Utils":14,"_":31,"ko":28}],57:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -11798,8 +11821,8 @@ module.exports = window;
Utils = require('Utils'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
- Data = require('../../Storages/WebMailDataStorage.js')
+ Remote = require('Storage:RainLoop:Remote'),
+ Data = require('Storage:RainLoop:Data')
;
/**
@@ -11846,7 +11869,7 @@ module.exports = window;
module.exports = SettingsContacts;
}(module, require));
-},{"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../Storages/WebMailDataStorage.js":74,"Utils":14,"ko":28}],57:[function(require,module,exports){
+},{"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,"Utils":14,"ko":28}],58:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -11879,18 +11902,17 @@ module.exports = window;
SettingsFilters.prototype.addFilter = function ()
{
var
- kn = require('kn'),
- FilterModel = require('../../Models/FilterModel.js'),
- PopupsFilterViewModel = require('../../ViewModels/Popups/PopupsFilterViewModel.js')
+ FilterModel = require('Model:Filter')
;
- kn.showScreenPopup(PopupsFilterViewModel, [new FilterModel()]);
+ require('App:Knoin').showScreenPopup(
+ require('View:Popup:Filter'), [new FilterModel()]);
};
module.exports = SettingsFilters;
}(module, require));
-},{"../../Models/FilterModel.js":45,"../../ViewModels/Popups/PopupsFilterViewModel.js":88,"Utils":14,"kn":33,"ko":28}],58:[function(require,module,exports){
+},{"App:Knoin":33,"Model:Filter":45,"Utils":14,"View:Popup:Filter":90,"ko":28}],59:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -11903,16 +11925,11 @@ module.exports = window;
Enums = require('Enums'),
Utils = require('Utils'),
- kn = require('kn'),
-
- AppSettings = require('../../Storages/AppSettings.js'),
- LocalStorage = require('../../Storages/LocalStorage.js'),
- Data = require('../../Storages/WebMailDataStorage.js'),
- Cache = require('../../Storages/WebMailCacheStorage.js'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
-
- PopupsFolderCreateViewModel = require('../../ViewModels/Popups/PopupsFolderCreateViewModel.js'),
- PopupsFolderSystemViewModel = require('../../ViewModels/Popups/PopupsFolderSystemViewModel.js')
+ Settings = require('Storage:Settings'),
+ LocalStorage = require('Storage:LocalStorage'),
+ Data = require('Storage:RainLoop:Data'),
+ Cache = require('Storage:RainLoop:Cache'),
+ Remote = require('Storage:RainLoop:Remote')
;
/**
@@ -11985,13 +12002,12 @@ module.exports = window;
}
]});
- this.useImapSubscribe = !!AppSettings.settingsGet('UseImapSubscribe');
+ this.useImapSubscribe = !!Settings.settingsGet('UseImapSubscribe');
}
SettingsFolders.prototype.folderEditOnEnter = function (oFolder)
{
var
- App = require('../../Apps/RainLoopApp.js'),
sEditName = oFolder ? Utils.trim(oFolder.nameForEdit()) : ''
;
@@ -12009,7 +12025,7 @@ module.exports = window;
oData && oData.ErrorCode ? Utils.getNotification(oData.ErrorCode) : Utils.i18n('NOTIFICATIONS/CANT_RENAME_FOLDER'));
}
- App.folders();
+ require('App:RainLoop').folders();
}, oFolder.fullNameRaw, sEditName);
@@ -12036,12 +12052,12 @@ module.exports = window;
SettingsFolders.prototype.createFolder = function ()
{
- kn.showScreenPopup(PopupsFolderCreateViewModel);
+ require('App:Knoin').showScreenPopup(require('View:Popup:FolderCreate'));
};
SettingsFolders.prototype.systemFolder = function ()
{
- kn.showScreenPopup(PopupsFolderSystemViewModel);
+ require('App:Knoin').showScreenPopup(require('View:Popup:FolderSystem'));
};
SettingsFolders.prototype.deleteFolder = function (oFolderToRemove)
@@ -12052,7 +12068,6 @@ module.exports = window;
this.folderForDeletion(null);
var
- App = require('../../Apps/RainLoopApp.js'),
fRemoveFolder = function (oFolder) {
if (oFolderToRemove === oFolder)
@@ -12081,7 +12096,7 @@ module.exports = window;
oData && oData.ErrorCode ? Utils.getNotification(oData.ErrorCode) : Utils.i18n('NOTIFICATIONS/CANT_DELETE_FOLDER'));
}
- App.folders();
+ require('App:RainLoop').folders();
}, oFolderToRemove.fullNameRaw);
@@ -12113,7 +12128,7 @@ module.exports = window;
module.exports = SettingsFolders;
}(module, require));
-},{"../../Apps/RainLoopApp.js":3,"../../Storages/AppSettings.js":68,"../../Storages/LocalStorage.js":69,"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../Storages/WebMailCacheStorage.js":73,"../../Storages/WebMailDataStorage.js":74,"../../ViewModels/Popups/PopupsFolderCreateViewModel.js":90,"../../ViewModels/Popups/PopupsFolderSystemViewModel.js":91,"Enums":7,"Utils":14,"kn":33,"ko":28}],59:[function(require,module,exports){
+},{"App:Knoin":33,"App:RainLoop":3,"Enums":7,"Storage:LocalStorage":71,"Storage:RainLoop:Cache":69,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,"Storage:Settings":75,"Utils":14,"View:Popup:FolderCreate":92,"View:Popup:FolderSystem":93,"ko":28}],60:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -12131,11 +12146,8 @@ module.exports = window;
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- Data = require('../../Storages/WebMailDataStorage.js'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
-
- kn = require('kn'),
- PopupsLanguagesViewModel = require('../../ViewModels/Popups/PopupsLanguagesViewModel.js')
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote')
;
/**
@@ -12290,13 +12302,13 @@ module.exports = window;
SettingsGeneral.prototype.selectLanguage = function ()
{
- kn.showScreenPopup(PopupsLanguagesViewModel);
+ require('App:Knoin').showScreenPopup(require('View:Popup:Languages'));
};
module.exports = SettingsGeneral;
}(module, require));
-},{"$":26,"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../Storages/WebMailDataStorage.js":74,"../../ViewModels/Popups/PopupsLanguagesViewModel.js":95,"Consts":6,"Enums":7,"Globals":9,"LinkBuilder":10,"Utils":14,"_":31,"kn":33,"ko":28}],60:[function(require,module,exports){
+},{"$":26,"App:Knoin":33,"Consts":6,"Enums":7,"Globals":9,"LinkBuilder":11,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,"Utils":14,"View:Popup:Languages":96,"_":31,"ko":28}],61:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -12309,13 +12321,10 @@ module.exports = window;
Enums = require('Enums'),
Utils = require('Utils'),
- NewHtmlEditorWrapper = require('NewHtmlEditorWrapper'),
+ HtmlEditor = require('HtmlEditor'),
- Data = require('../../Storages/WebMailDataStorage.js'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
-
- kn = require('kn'),
- PopupsIdentityViewModel = require('../../ViewModels/Popups/PopupsIdentityViewModel.js')
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote')
;
/**
@@ -12415,12 +12424,12 @@ module.exports = window;
SettingsIdentities.prototype.addNewIdentity = function ()
{
- kn.showScreenPopup(PopupsIdentityViewModel);
+ require('App:Knoin').showScreenPopup(require('View:Popup:Identity'));
};
SettingsIdentities.prototype.editIdentity = function (oIdentity)
{
- kn.showScreenPopup(PopupsIdentityViewModel, [oIdentity]);
+ require('App:Knoin').showScreenPopup(require('View:Popup:Identity'), [oIdentity]);
};
/**
@@ -12433,7 +12442,6 @@ module.exports = window;
this.identityForDeletion(null);
var
- App = require('../../Apps/RainLoopApp.js'),
fRemoveFolder = function (oIdentity) {
return oIdentityToRemove === oIdentity;
}
@@ -12444,7 +12452,7 @@ module.exports = window;
this.identities.remove(fRemoveFolder);
Remote.identityDelete(function () {
- App.accountsAndIdentities();
+ require('App:RainLoop').accountsAndIdentities();
}, oIdentityToRemove.id);
}
}
@@ -12459,7 +12467,7 @@ module.exports = window;
sSignature = Data.signature()
;
- this.editor = new NewHtmlEditorWrapper(self.signatureDom(), function () {
+ this.editor = new HtmlEditor(self.signatureDom(), function () {
Data.signature(
(self.editor.isHtml() ? ':HTML:' : '') + self.editor.getData()
);
@@ -12535,7 +12543,7 @@ module.exports = window;
module.exports = SettingsIdentities;
}(module, require));
-},{"../../Apps/RainLoopApp.js":3,"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../Storages/WebMailDataStorage.js":74,"../../ViewModels/Popups/PopupsIdentityViewModel.js":93,"Enums":7,"NewHtmlEditorWrapper":11,"Utils":14,"_":31,"kn":33,"ko":28}],61:[function(require,module,exports){
+},{"App:Knoin":33,"App:RainLoop":3,"Enums":7,"HtmlEditor":10,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,"Utils":14,"View:Popup:Identity":94,"_":31,"ko":28}],62:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -12548,10 +12556,10 @@ module.exports = window;
Enums = require('Enums'),
Utils = require('Utils'),
- NewHtmlEditorWrapper = require('NewHtmlEditorWrapper'),
+ HtmlEditor = require('HtmlEditor'),
- Data = require('../../Storages/WebMailDataStorage.js'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js')
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote')
;
/**
@@ -12582,7 +12590,7 @@ module.exports = window;
sSignature = Data.signature()
;
- this.editor = new NewHtmlEditorWrapper(self.signatureDom(), function () {
+ this.editor = new HtmlEditor(self.signatureDom(), function () {
Data.signature(
(self.editor.isHtml() ? ':HTML:' : '') + self.editor.getData()
);
@@ -12640,7 +12648,7 @@ module.exports = window;
module.exports = SettingsIdentity;
}(module, require));
-},{"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../Storages/WebMailDataStorage.js":74,"Enums":7,"NewHtmlEditorWrapper":11,"Utils":14,"_":31,"ko":28}],62:[function(require,module,exports){
+},{"Enums":7,"HtmlEditor":10,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,"Utils":14,"_":31,"ko":28}],63:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -12649,14 +12657,8 @@ module.exports = window;
var
ko = require('ko'),
-
- kn = require('kn'),
-
- Data = require('../../Storages/WebMailDataStorage.js'),
-
- PopupsAddOpenPgpKeyViewModel = require('../../ViewModels/Popups/PopupsAddOpenPgpKeyViewModel.js'),
- PopupsGenerateNewOpenPgpKeyViewModel = require('../../ViewModels/Popups/PopupsGenerateNewOpenPgpKeyViewModel.js'),
- PopupsViewOpenPgpKeyViewModel = require('../../ViewModels/Popups/PopupsViewOpenPgpKeyViewModel.js')
+ kn = require('App:Knoin'),
+ Data = require('Storage:RainLoop:Data')
;
/**
@@ -12685,19 +12687,19 @@ module.exports = window;
SettingsOpenPGP.prototype.addOpenPgpKey = function ()
{
- kn.showScreenPopup(PopupsAddOpenPgpKeyViewModel);
+ kn.showScreenPopup(require('View:Popup:AddOpenPgpKey'));
};
SettingsOpenPGP.prototype.generateOpenPgpKey = function ()
{
- kn.showScreenPopup(PopupsGenerateNewOpenPgpKeyViewModel);
+ kn.showScreenPopup(require('View:Popup:NewOpenPgpKey'));
};
SettingsOpenPGP.prototype.viewOpenPgpKey = function (oOpenPgpKey)
{
if (oOpenPgpKey)
{
- kn.showScreenPopup(PopupsViewOpenPgpKeyViewModel, [oOpenPgpKey]);
+ kn.showScreenPopup(require('View:Popup:ViewOpenPgpKey'), [oOpenPgpKey]);
}
};
@@ -12721,8 +12723,7 @@ module.exports = window;
Data.openpgpKeyring.store();
- var App = require('../../Apps/RainLoopApp.js');
- App.reloadOpenPgpKeys();
+ require('App:RainLoop').reloadOpenPgpKeys();
}
}
};
@@ -12730,7 +12731,7 @@ module.exports = window;
module.exports = SettingsOpenPGP;
}(module, require));
-},{"../../Apps/RainLoopApp.js":3,"../../Storages/WebMailDataStorage.js":74,"../../ViewModels/Popups/PopupsAddOpenPgpKeyViewModel.js":82,"../../ViewModels/Popups/PopupsGenerateNewOpenPgpKeyViewModel.js":92,"../../ViewModels/Popups/PopupsViewOpenPgpKeyViewModel.js":97,"kn":33,"ko":28}],63:[function(require,module,exports){
+},{"App:Knoin":33,"App:RainLoop":3,"Storage:RainLoop:Data":70,"View:Popup:AddOpenPgpKey":84,"View:Popup:NewOpenPgpKey":97,"View:Popup:ViewOpenPgpKey":99,"ko":28}],64:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -12744,10 +12745,7 @@ module.exports = window;
Globals = require('Globals'),
Utils = require('Utils'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
-
- kn = require('kn'),
- PopupsTwoFactorTestViewModel = require('../../ViewModels/Popups/PopupsTwoFactorTestViewModel.js')
+ Remote = require('Storage:RainLoop:Remote')
;
/**
@@ -12810,7 +12808,7 @@ module.exports = window;
SettingsSecurity.prototype.testTwoFactor = function ()
{
- kn.showScreenPopup(PopupsTwoFactorTestViewModel);
+ require('App:Knoin').showScreenPopup(require('View:Popup:TwoFactorTest'));
};
SettingsSecurity.prototype.clearTwoFactor = function ()
@@ -12901,7 +12899,7 @@ module.exports = window;
module.exports = SettingsSecurity;
}(module, require));
-},{"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../ViewModels/Popups/PopupsTwoFactorTestViewModel.js":96,"Enums":7,"Globals":9,"Utils":14,"kn":33,"ko":28}],64:[function(require,module,exports){
+},{"App:Knoin":33,"Enums":7,"Globals":9,"Storage:RainLoop:Remote":74,"Utils":14,"View:Popup:TwoFactorTest":98,"ko":28}],65:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -12915,8 +12913,7 @@ module.exports = window;
{
var
Utils = require('Utils'),
- App = require('../../Apps/RainLoopApp.js'),
- Data = require('../../Storages/WebMailDataStorage.js')
+ Data = require('Storage:RainLoop:Data')
;
this.googleEnable = Data.googleEnable;
@@ -12940,47 +12937,47 @@ module.exports = window;
this.connectGoogle = Utils.createCommand(this, function () {
if (!this.googleLoggined())
{
- App.googleConnect();
+ require('App:RainLoop').googleConnect();
}
}, function () {
return !this.googleLoggined() && !this.googleActions();
});
this.disconnectGoogle = Utils.createCommand(this, function () {
- App.googleDisconnect();
+ require('App:RainLoop').googleDisconnect();
});
this.connectFacebook = Utils.createCommand(this, function () {
if (!this.facebookLoggined())
{
- App.facebookConnect();
+ require('App:RainLoop').facebookConnect();
}
}, function () {
return !this.facebookLoggined() && !this.facebookActions();
});
this.disconnectFacebook = Utils.createCommand(this, function () {
- App.facebookDisconnect();
+ require('App:RainLoop').facebookDisconnect();
});
this.connectTwitter = Utils.createCommand(this, function () {
if (!this.twitterLoggined())
{
- App.twitterConnect();
+ require('App:RainLoop').twitterConnect();
}
}, function () {
return !this.twitterLoggined() && !this.twitterActions();
});
this.disconnectTwitter = Utils.createCommand(this, function () {
- App.twitterDisconnect();
+ require('App:RainLoop').twitterDisconnect();
});
}
module.exports = SettingsSocial;
}(module, require));
-},{"../../Apps/RainLoopApp.js":3,"../../Storages/WebMailDataStorage.js":74,"Utils":14}],65:[function(require,module,exports){
+},{"App:RainLoop":3,"Storage:RainLoop:Data":70,"Utils":14}],66:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -12997,8 +12994,8 @@ module.exports = window;
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- Data = require('../../Storages/WebMailDataStorage.js'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js')
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote')
;
/**
@@ -13114,7 +13111,101 @@ module.exports = window;
module.exports = SettingsThemes;
}(module, require));
-},{"$":26,"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../Storages/WebMailDataStorage.js":74,"Enums":7,"LinkBuilder":10,"Utils":14,"_":31,"ko":28,"window":32}],66:[function(require,module,exports){
+},{"$":26,"Enums":7,"LinkBuilder":11,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,"Utils":14,"_":31,"ko":28,"window":32}],67:[function(require,module,exports){
+/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
+
+(function (module, require) {
+
+ 'use strict';
+
+ var
+ Enums = require('Enums'),
+ Utils = require('Utils'),
+
+ Settings = require('Storage:Settings')
+ ;
+
+ /**
+ * @constructor
+ */
+ function AbstractData()
+ {
+ Utils.initDataConstructorBySettings(this);
+ }
+
+ AbstractData.prototype.populateDataOnStart = function()
+ {
+ var
+ mLayout = Utils.pInt(Settings.settingsGet('Layout')),
+ aLanguages = Settings.settingsGet('Languages'),
+ aThemes = Settings.settingsGet('Themes')
+ ;
+
+ if (Utils.isArray(aLanguages))
+ {
+ this.languages(aLanguages);
+ }
+
+ if (Utils.isArray(aThemes))
+ {
+ this.themes(aThemes);
+ }
+
+ this.mainLanguage(Settings.settingsGet('Language'));
+ this.mainTheme(Settings.settingsGet('Theme'));
+
+ this.capaAdditionalAccounts(Settings.capa(Enums.Capa.AdditionalAccounts));
+ this.capaAdditionalIdentities(Settings.capa(Enums.Capa.AdditionalIdentities));
+ this.capaGravatar(Settings.capa(Enums.Capa.Gravatar));
+ this.determineUserLanguage(!!Settings.settingsGet('DetermineUserLanguage'));
+ this.determineUserDomain(!!Settings.settingsGet('DetermineUserDomain'));
+
+ this.capaThemes(Settings.capa(Enums.Capa.Themes));
+ this.allowLanguagesOnLogin(!!Settings.settingsGet('AllowLanguagesOnLogin'));
+ this.allowLanguagesOnSettings(!!Settings.settingsGet('AllowLanguagesOnSettings'));
+ this.useLocalProxyForExternalImages(!!Settings.settingsGet('UseLocalProxyForExternalImages'));
+
+ this.editorDefaultType(Settings.settingsGet('EditorDefaultType'));
+ this.showImages(!!Settings.settingsGet('ShowImages'));
+ this.contactsAutosave(!!Settings.settingsGet('ContactsAutosave'));
+ this.interfaceAnimation(Settings.settingsGet('InterfaceAnimation'));
+
+ this.mainMessagesPerPage(Settings.settingsGet('MPP'));
+
+ this.desktopNotifications(!!Settings.settingsGet('DesktopNotifications'));
+ this.useThreads(!!Settings.settingsGet('UseThreads'));
+ this.replySameFolder(!!Settings.settingsGet('ReplySameFolder'));
+ this.useCheckboxesInList(!!Settings.settingsGet('UseCheckboxesInList'));
+
+ this.layout(Enums.Layout.SidePreview);
+ if (-1 < Utils.inArray(mLayout, [Enums.Layout.NoPreview, Enums.Layout.SidePreview, Enums.Layout.BottomPreview]))
+ {
+ this.layout(mLayout);
+ }
+ this.facebookSupported(!!Settings.settingsGet('SupportedFacebookSocial'));
+ this.facebookEnable(!!Settings.settingsGet('AllowFacebookSocial'));
+ this.facebookAppID(Settings.settingsGet('FacebookAppID'));
+ this.facebookAppSecret(Settings.settingsGet('FacebookAppSecret'));
+
+ this.twitterEnable(!!Settings.settingsGet('AllowTwitterSocial'));
+ this.twitterConsumerKey(Settings.settingsGet('TwitterConsumerKey'));
+ this.twitterConsumerSecret(Settings.settingsGet('TwitterConsumerSecret'));
+
+ this.googleEnable(!!Settings.settingsGet('AllowGoogleSocial'));
+ this.googleClientID(Settings.settingsGet('GoogleClientID'));
+ this.googleClientSecret(Settings.settingsGet('GoogleClientSecret'));
+ this.googleApiKey(Settings.settingsGet('GoogleApiKey'));
+
+ this.dropboxEnable(!!Settings.settingsGet('AllowDropboxSocial'));
+ this.dropboxApiKey(Settings.settingsGet('DropboxApiKey'));
+
+ this.contactsIsAllowed(!!Settings.settingsGet('ContactsIsAllowed'));
+ };
+
+ module.exports = AbstractData;
+
+}(module, require));
+},{"Enums":7,"Storage:Settings":75,"Utils":14}],68:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -13124,6 +13215,7 @@ module.exports = window;
var
window = require('window'),
$ = require('$'),
+ _ = require('_'),
Consts = require('Consts'),
Enums = require('Enums'),
@@ -13132,18 +13224,18 @@ module.exports = window;
Plugins = require('Plugins'),
LinkBuilder = require('LinkBuilder'),
- AppSettings = require('./AppSettings.js')
+ Settings = require('Storage:Settings')
;
/**
* @constructor
*/
- function AbstractAjaxRemoteStorage()
+ function AbstractRemoteStorage()
{
this.oRequests = {};
}
- AbstractAjaxRemoteStorage.prototype.oRequests = {};
+ AbstractRemoteStorage.prototype.oRequests = {};
/**
* @param {?Function} fCallback
@@ -13153,7 +13245,7 @@ module.exports = window;
* @param {boolean} bCached
* @param {*=} oRequestParameters
*/
- AbstractAjaxRemoteStorage.prototype.defaultResponse = function (fCallback, sRequestAction, sType, oData, bCached, oRequestParameters)
+ AbstractRemoteStorage.prototype.defaultResponse = function (fCallback, sRequestAction, sType, oData, bCached, oRequestParameters)
{
var
fCall = function () {
@@ -13251,7 +13343,7 @@ module.exports = window;
* @param {Array=} aAbortActions = []
* @return {jQuery.jqXHR}
*/
- AbstractAjaxRemoteStorage.prototype.ajaxRequest = function (fResultCallback, oParameters, iTimeOut, sGetAdd, aAbortActions)
+ AbstractRemoteStorage.prototype.ajaxRequest = function (fResultCallback, oParameters, iTimeOut, sGetAdd, aAbortActions)
{
var
self = this,
@@ -13286,7 +13378,7 @@ module.exports = window;
if (bPost)
{
- oParameters['XToken'] = AppSettings.settingsGet('Token');
+ oParameters['XToken'] = Settings.settingsGet('Token');
}
oDefAjax = $.ajax({
@@ -13347,7 +13439,7 @@ module.exports = window;
* @param {string=} sGetAdd = ''
* @param {Array=} aAbortActions = []
*/
- AbstractAjaxRemoteStorage.prototype.defaultRequest = function (fCallback, sAction, oParameters, iTimeout, sGetAdd, aAbortActions)
+ AbstractRemoteStorage.prototype.defaultRequest = function (fCallback, sAction, oParameters, iTimeout, sGetAdd, aAbortActions)
{
oParameters = oParameters || {};
oParameters.Action = sAction;
@@ -13363,7 +13455,7 @@ module.exports = window;
/**
* @param {?Function} fCallback
*/
- AbstractAjaxRemoteStorage.prototype.noop = function (fCallback)
+ AbstractRemoteStorage.prototype.noop = function (fCallback)
{
this.defaultRequest(fCallback, 'Noop');
};
@@ -13377,7 +13469,7 @@ module.exports = window;
* @param {string} sHtmlCapa
* @param {number} iTime
*/
- AbstractAjaxRemoteStorage.prototype.jsError = function (fCallback, sMessage, sFileName, iLineNo, sLocation, sHtmlCapa, iTime)
+ AbstractRemoteStorage.prototype.jsError = function (fCallback, sMessage, sFileName, iLineNo, sLocation, sHtmlCapa, iTime)
{
this.defaultRequest(fCallback, 'JsError', {
'Message': sMessage,
@@ -13395,7 +13487,7 @@ module.exports = window;
* @param {Array=} mData = null
* @param {boolean=} bIsError = false
*/
- AbstractAjaxRemoteStorage.prototype.jsInfo = function (fCallback, sType, mData, bIsError)
+ AbstractRemoteStorage.prototype.jsInfo = function (fCallback, sType, mData, bIsError)
{
this.defaultRequest(fCallback, 'JsInfo', {
'Type': sType,
@@ -13407,7 +13499,7 @@ module.exports = window;
/**
* @param {?Function} fCallback
*/
- AbstractAjaxRemoteStorage.prototype.getPublicKey = function (fCallback)
+ AbstractRemoteStorage.prototype.getPublicKey = function (fCallback)
{
this.defaultRequest(fCallback, 'GetPublicKey');
};
@@ -13416,1229 +13508,17 @@ module.exports = window;
* @param {?Function} fCallback
* @param {string} sVersion
*/
- AbstractAjaxRemoteStorage.prototype.jsVersion = function (fCallback, sVersion)
+ AbstractRemoteStorage.prototype.jsVersion = function (fCallback, sVersion)
{
this.defaultRequest(fCallback, 'Version', {
'Version': sVersion
});
};
- module.exports = AbstractAjaxRemoteStorage;
+ module.exports = AbstractRemoteStorage;
}(module, require));
-},{"$":26,"./AppSettings.js":68,"Consts":6,"Enums":7,"Globals":9,"LinkBuilder":10,"Plugins":12,"Utils":14,"window":32}],67:[function(require,module,exports){
-/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
-
-(function (module, require) {
-
- 'use strict';
-
- var
- Enums = require('Enums'),
- Utils = require('Utils'),
-
- AppSettings = require('./AppSettings.js')
- ;
-
- /**
- * @constructor
- */
- function AbstractData()
- {
- Utils.initDataConstructorBySettings(this);
- }
-
- AbstractData.prototype.populateDataOnStart = function()
- {
- var
- mLayout = Utils.pInt(AppSettings.settingsGet('Layout')),
- aLanguages = AppSettings.settingsGet('Languages'),
- aThemes = AppSettings.settingsGet('Themes')
- ;
-
- if (Utils.isArray(aLanguages))
- {
- this.languages(aLanguages);
- }
-
- if (Utils.isArray(aThemes))
- {
- this.themes(aThemes);
- }
-
- this.mainLanguage(AppSettings.settingsGet('Language'));
- this.mainTheme(AppSettings.settingsGet('Theme'));
-
- this.capaAdditionalAccounts(AppSettings.capa(Enums.Capa.AdditionalAccounts));
- this.capaAdditionalIdentities(AppSettings.capa(Enums.Capa.AdditionalIdentities));
- this.capaGravatar(AppSettings.capa(Enums.Capa.Gravatar));
- this.determineUserLanguage(!!AppSettings.settingsGet('DetermineUserLanguage'));
- this.determineUserDomain(!!AppSettings.settingsGet('DetermineUserDomain'));
-
- this.capaThemes(AppSettings.capa(Enums.Capa.Themes));
- this.allowLanguagesOnLogin(!!AppSettings.settingsGet('AllowLanguagesOnLogin'));
- this.allowLanguagesOnSettings(!!AppSettings.settingsGet('AllowLanguagesOnSettings'));
- this.useLocalProxyForExternalImages(!!AppSettings.settingsGet('UseLocalProxyForExternalImages'));
-
- this.editorDefaultType(AppSettings.settingsGet('EditorDefaultType'));
- this.showImages(!!AppSettings.settingsGet('ShowImages'));
- this.contactsAutosave(!!AppSettings.settingsGet('ContactsAutosave'));
- this.interfaceAnimation(AppSettings.settingsGet('InterfaceAnimation'));
-
- this.mainMessagesPerPage(AppSettings.settingsGet('MPP'));
-
- this.desktopNotifications(!!AppSettings.settingsGet('DesktopNotifications'));
- this.useThreads(!!AppSettings.settingsGet('UseThreads'));
- this.replySameFolder(!!AppSettings.settingsGet('ReplySameFolder'));
- this.useCheckboxesInList(!!AppSettings.settingsGet('UseCheckboxesInList'));
-
- this.layout(Enums.Layout.SidePreview);
- if (-1 < Utils.inArray(mLayout, [Enums.Layout.NoPreview, Enums.Layout.SidePreview, Enums.Layout.BottomPreview]))
- {
- this.layout(mLayout);
- }
- this.facebookSupported(!!AppSettings.settingsGet('SupportedFacebookSocial'));
- this.facebookEnable(!!AppSettings.settingsGet('AllowFacebookSocial'));
- this.facebookAppID(AppSettings.settingsGet('FacebookAppID'));
- this.facebookAppSecret(AppSettings.settingsGet('FacebookAppSecret'));
-
- this.twitterEnable(!!AppSettings.settingsGet('AllowTwitterSocial'));
- this.twitterConsumerKey(AppSettings.settingsGet('TwitterConsumerKey'));
- this.twitterConsumerSecret(AppSettings.settingsGet('TwitterConsumerSecret'));
-
- this.googleEnable(!!AppSettings.settingsGet('AllowGoogleSocial'));
- this.googleClientID(AppSettings.settingsGet('GoogleClientID'));
- this.googleClientSecret(AppSettings.settingsGet('GoogleClientSecret'));
- this.googleApiKey(AppSettings.settingsGet('GoogleApiKey'));
-
- this.dropboxEnable(!!AppSettings.settingsGet('AllowDropboxSocial'));
- this.dropboxApiKey(AppSettings.settingsGet('DropboxApiKey'));
-
- this.contactsIsAllowed(!!AppSettings.settingsGet('ContactsIsAllowed'));
- };
-
- module.exports = AbstractData;
-
-}(module, require));
-},{"./AppSettings.js":68,"Enums":7,"Utils":14}],68:[function(require,module,exports){
-/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
-
-(function (module, require) {
-
- 'use strict';
-
- var
- AppData = require('AppData'),
- Utils = require('Utils')
- ;
-
- /**
- * @constructor
- */
- function AppSettings()
- {
- this.oSettings = null;
- }
-
- AppSettings.prototype.oSettings = null;
-
- /**
- * @param {string} sName
- * @return {?}
- */
- AppSettings.prototype.settingsGet = function (sName)
- {
- if (null === this.oSettings)
- {
- this.oSettings = Utils.isNormal(AppData) ? AppData : {};
- }
-
- return Utils.isUnd(this.oSettings[sName]) ? null : this.oSettings[sName];
- };
-
- /**
- * @param {string} sName
- * @param {?} mValue
- */
- AppSettings.prototype.settingsSet = function (sName, mValue)
- {
- if (null === this.oSettings)
- {
- this.oSettings = Utils.isNormal(AppData) ? AppData : {};
- }
-
- this.oSettings[sName] = mValue;
- };
-
- /**
- * @param {string} sName
- * @return {boolean}
- */
- AppSettings.prototype.capa = function (sName)
- {
- var mCapa = this.settingsGet('Capa');
- return Utils.isArray(mCapa) && Utils.isNormal(sName) && -1 < Utils.inArray(sName, mCapa);
- };
-
-
- module.exports = new AppSettings();
-
-}(module, require));
-},{"AppData":19,"Utils":14}],69:[function(require,module,exports){
-/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
-
-(function (module, require) {
-
- 'use strict';
-
- var
- _ = require('_'),
-
- CookieDriver = require('./LocalStorages/CookieDriver.js'),
- LocalStorageDriver = require('./LocalStorages/LocalStorageDriver.js')
- ;
-
- /**
- * @constructor
- */
- function LocalStorage()
- {
- var
- NextStorageDriver = _.find([LocalStorageDriver, CookieDriver], function (NextStorageDriver) {
- return NextStorageDriver.supported();
- })
- ;
-
- this.oDriver = null;
-
- if (NextStorageDriver)
- {
- NextStorageDriver = /** @type {?Function} */ NextStorageDriver;
- this.oDriver = new NextStorageDriver();
- }
- }
-
- LocalStorage.prototype.oDriver = null;
-
- /**
- * @param {number} iKey
- * @param {*} mData
- * @return {boolean}
- */
- LocalStorage.prototype.set = function (iKey, mData)
- {
- return this.oDriver ? this.oDriver.set('p' + iKey, mData) : false;
- };
-
- /**
- * @param {number} iKey
- * @return {*}
- */
- LocalStorage.prototype.get = function (iKey)
- {
- return this.oDriver ? this.oDriver.get('p' + iKey) : null;
- };
-
- module.exports = new LocalStorage();
-
-}(module, require));
-},{"./LocalStorages/CookieDriver.js":70,"./LocalStorages/LocalStorageDriver.js":71,"_":31}],70:[function(require,module,exports){
-/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
-
-(function (module, require) {
-
- 'use strict';
-
- var
- $ = require('$'),
- JSON = require('JSON'),
-
- Consts = require('Consts'),
- Utils = require('Utils')
- ;
-
- /**
- * @constructor
- */
- function CookieDriver()
- {
-
- }
-
- CookieDriver.supported = function ()
- {
- return true;
- };
-
- /**
- * @param {string} sKey
- * @param {*} mData
- * @returns {boolean}
- */
- CookieDriver.prototype.set = function (sKey, mData)
- {
- var
- mCokieValue = $.cookie(Consts.Values.ClientSideCookieIndexName),
- bResult = false,
- mResult = null
- ;
-
- try
- {
- mResult = null === mCokieValue ? null : JSON.parse(mCokieValue);
- if (!mResult)
- {
- mResult = {};
- }
-
- mResult[sKey] = mData;
- $.cookie(Consts.Values.ClientSideCookieIndexName, JSON.stringify(mResult), {
- 'expires': 30
- });
-
- bResult = true;
- }
- catch (oException) {}
-
- return bResult;
- };
-
- /**
- * @param {string} sKey
- * @returns {*}
- */
- CookieDriver.prototype.get = function (sKey)
- {
- var
- mCokieValue = $.cookie(Consts.Values.ClientSideCookieIndexName),
- mResult = null
- ;
-
- try
- {
- mResult = null === mCokieValue ? null : JSON.parse(mCokieValue);
- if (mResult && !Utils.isUnd(mResult[sKey]))
- {
- mResult = mResult[sKey];
- }
- else
- {
- mResult = null;
- }
- }
- catch (oException) {}
-
- return mResult;
- };
-
- module.exports = CookieDriver;
-
-}(module, require));
-},{"$":26,"Consts":6,"JSON":20,"Utils":14}],71:[function(require,module,exports){
-/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
-
-(function (module, require) {
-
- 'use strict';
-
- var
- window = require('window'),
- JSON = require('JSON'),
-
- Consts = require('Consts'),
- Utils = require('Utils')
- ;
-
- /**
- * @constructor
- */
- function LocalStorageDriver()
- {
- }
-
- LocalStorageDriver.supported = function ()
- {
- return !!window.localStorage;
- };
-
- /**
- * @param {string} sKey
- * @param {*} mData
- * @returns {boolean}
- */
- LocalStorageDriver.prototype.set = function (sKey, mData)
- {
- var
- mCookieValue = window.localStorage[Consts.Values.ClientSideCookieIndexName] || null,
- bResult = false,
- mResult = null
- ;
-
- try
- {
- mResult = null === mCookieValue ? null : JSON.parse(mCookieValue);
- if (!mResult)
- {
- mResult = {};
- }
-
- mResult[sKey] = mData;
- window.localStorage[Consts.Values.ClientSideCookieIndexName] = JSON.stringify(mResult);
-
- bResult = true;
- }
- catch (oException) {}
-
- return bResult;
- };
-
- /**
- * @param {string} sKey
- * @returns {*}
- */
- LocalStorageDriver.prototype.get = function (sKey)
- {
- var
- mCokieValue = window.localStorage[Consts.Values.ClientSideCookieIndexName] || null,
- mResult = null
- ;
-
- try
- {
- mResult = null === mCokieValue ? null : JSON.parse(mCokieValue);
- if (mResult && !Utils.isUnd(mResult[sKey]))
- {
- mResult = mResult[sKey];
- }
- else
- {
- mResult = null;
- }
- }
- catch (oException) {}
-
- return mResult;
- };
-
- module.exports = LocalStorageDriver;
-
-}(module, require));
-},{"Consts":6,"JSON":20,"Utils":14,"window":32}],72:[function(require,module,exports){
-/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
-
-(function (module, require) {
-
- 'use strict';
-
- var
- _ = require('_'),
-
- Utils = require('Utils'),
- Consts = require('Consts'),
- Globals = require('Globals'),
- Base64 = require('Base64'),
-
- AppSettings = require('./AppSettings.js'),
- Cache = require('./WebMailCacheStorage.js'),
- Data = require('./WebMailDataStorage.js'),
-
- AbstractAjaxRemoteStorage = require('./AbstractAjaxRemoteStorage.js')
- ;
-
- /**
- * @constructor
- * @extends AbstractAjaxRemoteStorage
- */
- function WebMailAjaxRemoteStorage()
- {
- AbstractAjaxRemoteStorage.call(this);
-
- this.oRequests = {};
- }
-
- _.extend(WebMailAjaxRemoteStorage.prototype, AbstractAjaxRemoteStorage.prototype);
-
- /**
- * @param {?Function} fCallback
- */
- WebMailAjaxRemoteStorage.prototype.folders = function (fCallback)
- {
- this.defaultRequest(fCallback, 'Folders', {
- 'SentFolder': AppSettings.settingsGet('SentFolder'),
- 'DraftFolder': AppSettings.settingsGet('DraftFolder'),
- 'SpamFolder': AppSettings.settingsGet('SpamFolder'),
- 'TrashFolder': AppSettings.settingsGet('TrashFolder'),
- 'ArchiveFolder': AppSettings.settingsGet('ArchiveFolder')
- }, null, '', ['Folders']);
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sEmail
- * @param {string} sLogin
- * @param {string} sPassword
- * @param {boolean} bSignMe
- * @param {string=} sLanguage
- * @param {string=} sAdditionalCode
- * @param {boolean=} bAdditionalCodeSignMe
- */
- WebMailAjaxRemoteStorage.prototype.login = function (fCallback, sEmail, sLogin, sPassword, bSignMe, sLanguage, sAdditionalCode, bAdditionalCodeSignMe)
- {
- this.defaultRequest(fCallback, 'Login', {
- 'Email': sEmail,
- 'Login': sLogin,
- 'Password': sPassword,
- 'Language': sLanguage || '',
- 'AdditionalCode': sAdditionalCode || '',
- 'AdditionalCodeSignMe': bAdditionalCodeSignMe ? '1' : '0',
- 'SignMe': bSignMe ? '1' : '0'
- });
- };
-
- /**
- * @param {?Function} fCallback
- */
- WebMailAjaxRemoteStorage.prototype.getTwoFactor = function (fCallback)
- {
- this.defaultRequest(fCallback, 'GetTwoFactorInfo');
- };
-
- /**
- * @param {?Function} fCallback
- */
- WebMailAjaxRemoteStorage.prototype.createTwoFactor = function (fCallback)
- {
- this.defaultRequest(fCallback, 'CreateTwoFactorSecret');
- };
-
- /**
- * @param {?Function} fCallback
- */
- WebMailAjaxRemoteStorage.prototype.clearTwoFactor = function (fCallback)
- {
- this.defaultRequest(fCallback, 'ClearTwoFactorInfo');
- };
-
- /**
- * @param {?Function} fCallback
- */
- WebMailAjaxRemoteStorage.prototype.showTwoFactorSecret = function (fCallback)
- {
- this.defaultRequest(fCallback, 'ShowTwoFactorSecret');
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sCode
- */
- WebMailAjaxRemoteStorage.prototype.testTwoFactor = function (fCallback, sCode)
- {
- this.defaultRequest(fCallback, 'TestTwoFactorInfo', {
- 'Code': sCode
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {boolean} bEnable
- */
- WebMailAjaxRemoteStorage.prototype.enableTwoFactor = function (fCallback, bEnable)
- {
- this.defaultRequest(fCallback, 'EnableTwoFactor', {
- 'Enable': bEnable ? '1' : '0'
- });
- };
-
- /**
- * @param {?Function} fCallback
- */
- WebMailAjaxRemoteStorage.prototype.clearTwoFactorInfo = function (fCallback)
- {
- this.defaultRequest(fCallback, 'ClearTwoFactorInfo');
- };
-
- /**
- * @param {?Function} fCallback
- */
- WebMailAjaxRemoteStorage.prototype.contactsSync = function (fCallback)
- {
- this.defaultRequest(fCallback, 'ContactsSync', null, Consts.Defaults.ContactsSyncAjaxTimeout);
- };
-
- /**
- * @param {?Function} fCallback
- * @param {boolean} bEnable
- * @param {string} sUrl
- * @param {string} sUser
- * @param {string} sPassword
- */
- WebMailAjaxRemoteStorage.prototype.saveContactsSyncData = function (fCallback, bEnable, sUrl, sUser, sPassword)
- {
- this.defaultRequest(fCallback, 'SaveContactsSyncData', {
- 'Enable': bEnable ? '1' : '0',
- 'Url': sUrl,
- 'User': sUser,
- 'Password': sPassword
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sEmail
- * @param {string} sLogin
- * @param {string} sPassword
- */
- WebMailAjaxRemoteStorage.prototype.accountAdd = function (fCallback, sEmail, sLogin, sPassword)
- {
- this.defaultRequest(fCallback, 'AccountAdd', {
- 'Email': sEmail,
- 'Login': sLogin,
- 'Password': sPassword
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sEmailToDelete
- */
- WebMailAjaxRemoteStorage.prototype.accountDelete = function (fCallback, sEmailToDelete)
- {
- this.defaultRequest(fCallback, 'AccountDelete', {
- 'EmailToDelete': sEmailToDelete
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sId
- * @param {string} sEmail
- * @param {string} sName
- * @param {string} sReplyTo
- * @param {string} sBcc
- */
- WebMailAjaxRemoteStorage.prototype.identityUpdate = function (fCallback, sId, sEmail, sName, sReplyTo, sBcc)
- {
- this.defaultRequest(fCallback, 'IdentityUpdate', {
- 'Id': sId,
- 'Email': sEmail,
- 'Name': sName,
- 'ReplyTo': sReplyTo,
- 'Bcc': sBcc
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sIdToDelete
- */
- WebMailAjaxRemoteStorage.prototype.identityDelete = function (fCallback, sIdToDelete)
- {
- this.defaultRequest(fCallback, 'IdentityDelete', {
- 'IdToDelete': sIdToDelete
- });
- };
-
- /**
- * @param {?Function} fCallback
- */
- WebMailAjaxRemoteStorage.prototype.accountsAndIdentities = function (fCallback)
- {
- this.defaultRequest(fCallback, 'AccountsAndIdentities');
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sFolderFullNameRaw
- * @param {number=} iOffset = 0
- * @param {number=} iLimit = 20
- * @param {string=} sSearch = ''
- * @param {boolean=} bSilent = false
- */
- WebMailAjaxRemoteStorage.prototype.messageList = function (fCallback, sFolderFullNameRaw, iOffset, iLimit, sSearch, bSilent)
- {
- sFolderFullNameRaw = Utils.pString(sFolderFullNameRaw);
-
- var
- sFolderHash = Cache.getFolderHash(sFolderFullNameRaw)
- ;
-
- bSilent = Utils.isUnd(bSilent) ? false : !!bSilent;
- iOffset = Utils.isUnd(iOffset) ? 0 : Utils.pInt(iOffset);
- iLimit = Utils.isUnd(iOffset) ? 20 : Utils.pInt(iLimit);
- sSearch = Utils.pString(sSearch);
-
- if ('' !== sFolderHash && ('' === sSearch || -1 === sSearch.indexOf('is:')))
- {
- this.defaultRequest(fCallback, 'MessageList', {},
- '' === sSearch ? Consts.Defaults.DefaultAjaxTimeout : Consts.Defaults.SearchAjaxTimeout,
- 'MessageList/' + Base64.urlsafe_encode([
- sFolderFullNameRaw,
- iOffset,
- iLimit,
- sSearch,
- Data.projectHash(),
- sFolderHash,
- 'INBOX' === sFolderFullNameRaw ? Cache.getFolderUidNext(sFolderFullNameRaw) : '',
- Data.threading() && Data.useThreads() ? '1' : '0',
- Data.threading() && sFolderFullNameRaw === Data.messageListThreadFolder() ? Data.messageListThreadUids().join(',') : ''
- ].join(String.fromCharCode(0))), bSilent ? [] : ['MessageList']);
- }
- else
- {
- this.defaultRequest(fCallback, 'MessageList', {
- 'Folder': sFolderFullNameRaw,
- 'Offset': iOffset,
- 'Limit': iLimit,
- 'Search': sSearch,
- 'UidNext': 'INBOX' === sFolderFullNameRaw ? Cache.getFolderUidNext(sFolderFullNameRaw) : '',
- 'UseThreads': Data.threading() && Data.useThreads() ? '1' : '0',
- 'ExpandedThreadUid': Data.threading() && sFolderFullNameRaw === Data.messageListThreadFolder() ? Data.messageListThreadUids().join(',') : ''
- }, '' === sSearch ? Consts.Defaults.DefaultAjaxTimeout : Consts.Defaults.SearchAjaxTimeout, '', bSilent ? [] : ['MessageList']);
- }
- };
-
- /**
- * @param {?Function} fCallback
- * @param {Array} aDownloads
- */
- WebMailAjaxRemoteStorage.prototype.messageUploadAttachments = function (fCallback, aDownloads)
- {
- this.defaultRequest(fCallback, 'MessageUploadAttachments', {
- 'Attachments': aDownloads
- }, 999000);
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sFolderFullNameRaw
- * @param {number} iUid
- * @return {boolean}
- */
- WebMailAjaxRemoteStorage.prototype.message = function (fCallback, sFolderFullNameRaw, iUid)
- {
- sFolderFullNameRaw = Utils.pString(sFolderFullNameRaw);
- iUid = Utils.pInt(iUid);
-
- if (Cache.getFolderFromCacheList(sFolderFullNameRaw) && 0 < iUid)
- {
- this.defaultRequest(fCallback, 'Message', {}, null,
- 'Message/' + Base64.urlsafe_encode([
- sFolderFullNameRaw,
- iUid,
- Data.projectHash(),
- Data.threading() && Data.useThreads() ? '1' : '0'
- ].join(String.fromCharCode(0))), ['Message']);
-
- return true;
- }
-
- return false;
- };
-
- /**
- * @param {?Function} fCallback
- * @param {Array} aExternals
- */
- WebMailAjaxRemoteStorage.prototype.composeUploadExternals = function (fCallback, aExternals)
- {
- this.defaultRequest(fCallback, 'ComposeUploadExternals', {
- 'Externals': aExternals
- }, 999000);
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sUrl
- * @param {string} sAccessToken
- */
- WebMailAjaxRemoteStorage.prototype.composeUploadDrive = function (fCallback, sUrl, sAccessToken)
- {
- this.defaultRequest(fCallback, 'ComposeUploadDrive', {
- 'AccessToken': sAccessToken,
- 'Url': sUrl
- }, 999000);
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sFolder
- * @param {Array=} aList = []
- */
- WebMailAjaxRemoteStorage.prototype.folderInformation = function (fCallback, sFolder, aList)
- {
- var
- bRequest = true,
- aUids = []
- ;
-
- if (Utils.isArray(aList) && 0 < aList.length)
- {
- bRequest = false;
- _.each(aList, function (oMessageListItem) {
- if (!Cache.getMessageFlagsFromCache(oMessageListItem.folderFullNameRaw, oMessageListItem.uid))
- {
- aUids.push(oMessageListItem.uid);
- }
-
- if (0 < oMessageListItem.threads().length)
- {
- _.each(oMessageListItem.threads(), function (sUid) {
- if (!Cache.getMessageFlagsFromCache(oMessageListItem.folderFullNameRaw, sUid))
- {
- aUids.push(sUid);
- }
- });
- }
- });
-
- if (0 < aUids.length)
- {
- bRequest = true;
- }
- }
-
- if (bRequest)
- {
- this.defaultRequest(fCallback, 'FolderInformation', {
- 'Folder': sFolder,
- 'FlagsUids': Utils.isArray(aUids) ? aUids.join(',') : '',
- 'UidNext': 'INBOX' === sFolder ? Cache.getFolderUidNext(sFolder) : ''
- });
- }
- else if (Data.useThreads())
- {
- if (Globals.__APP)
- {
- Globals.__APP.reloadFlagsCurrentMessageListAndMessageFromCache();
- }
- }
- };
-
- /**
- * @param {?Function} fCallback
- * @param {Array} aFolders
- */
- WebMailAjaxRemoteStorage.prototype.folderInformationMultiply = function (fCallback, aFolders)
- {
- this.defaultRequest(fCallback, 'FolderInformationMultiply', {
- 'Folders': aFolders
- });
- };
-
- /**
- * @param {?Function} fCallback
- */
- WebMailAjaxRemoteStorage.prototype.logout = function (fCallback)
- {
- this.defaultRequest(fCallback, 'Logout');
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sFolderFullNameRaw
- * @param {Array} aUids
- * @param {boolean} bSetFlagged
- */
- WebMailAjaxRemoteStorage.prototype.messageSetFlagged = function (fCallback, sFolderFullNameRaw, aUids, bSetFlagged)
- {
- this.defaultRequest(fCallback, 'MessageSetFlagged', {
- 'Folder': sFolderFullNameRaw,
- 'Uids': aUids.join(','),
- 'SetAction': bSetFlagged ? '1' : '0'
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sFolderFullNameRaw
- * @param {Array} aUids
- * @param {boolean} bSetSeen
- */
- WebMailAjaxRemoteStorage.prototype.messageSetSeen = function (fCallback, sFolderFullNameRaw, aUids, bSetSeen)
- {
- this.defaultRequest(fCallback, 'MessageSetSeen', {
- 'Folder': sFolderFullNameRaw,
- 'Uids': aUids.join(','),
- 'SetAction': bSetSeen ? '1' : '0'
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sFolderFullNameRaw
- * @param {boolean} bSetSeen
- */
- WebMailAjaxRemoteStorage.prototype.messageSetSeenToAll = function (fCallback, sFolderFullNameRaw, bSetSeen)
- {
- this.defaultRequest(fCallback, 'MessageSetSeenToAll', {
- 'Folder': sFolderFullNameRaw,
- 'SetAction': bSetSeen ? '1' : '0'
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sMessageFolder
- * @param {string} sMessageUid
- * @param {string} sDraftFolder
- * @param {string} sFrom
- * @param {string} sTo
- * @param {string} sCc
- * @param {string} sBcc
- * @param {string} sSubject
- * @param {boolean} bTextIsHtml
- * @param {string} sText
- * @param {Array} aAttachments
- * @param {(Array|null)} aDraftInfo
- * @param {string} sInReplyTo
- * @param {string} sReferences
- */
- WebMailAjaxRemoteStorage.prototype.saveMessage = function (fCallback, sMessageFolder, sMessageUid, sDraftFolder,
- sFrom, sTo, sCc, sBcc, sSubject, bTextIsHtml, sText, aAttachments, aDraftInfo, sInReplyTo, sReferences)
- {
- this.defaultRequest(fCallback, 'SaveMessage', {
- 'MessageFolder': sMessageFolder,
- 'MessageUid': sMessageUid,
- 'DraftFolder': sDraftFolder,
- 'From': sFrom,
- 'To': sTo,
- 'Cc': sCc,
- 'Bcc': sBcc,
- 'Subject': sSubject,
- 'TextIsHtml': bTextIsHtml ? '1' : '0',
- 'Text': sText,
- 'DraftInfo': aDraftInfo,
- 'InReplyTo': sInReplyTo,
- 'References': sReferences,
- 'Attachments': aAttachments
- }, Consts.Defaults.SaveMessageAjaxTimeout);
- };
-
-
- /**
- * @param {?Function} fCallback
- * @param {string} sMessageFolder
- * @param {string} sMessageUid
- * @param {string} sReadReceipt
- * @param {string} sSubject
- * @param {string} sText
- */
- WebMailAjaxRemoteStorage.prototype.sendReadReceiptMessage = function (fCallback, sMessageFolder, sMessageUid, sReadReceipt, sSubject, sText)
- {
- this.defaultRequest(fCallback, 'SendReadReceiptMessage', {
- 'MessageFolder': sMessageFolder,
- 'MessageUid': sMessageUid,
- 'ReadReceipt': sReadReceipt,
- 'Subject': sSubject,
- 'Text': sText
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sMessageFolder
- * @param {string} sMessageUid
- * @param {string} sSentFolder
- * @param {string} sFrom
- * @param {string} sTo
- * @param {string} sCc
- * @param {string} sBcc
- * @param {string} sSubject
- * @param {boolean} bTextIsHtml
- * @param {string} sText
- * @param {Array} aAttachments
- * @param {(Array|null)} aDraftInfo
- * @param {string} sInReplyTo
- * @param {string} sReferences
- * @param {boolean} bRequestReadReceipt
- */
- WebMailAjaxRemoteStorage.prototype.sendMessage = function (fCallback, sMessageFolder, sMessageUid, sSentFolder,
- sFrom, sTo, sCc, sBcc, sSubject, bTextIsHtml, sText, aAttachments, aDraftInfo, sInReplyTo, sReferences, bRequestReadReceipt)
- {
- this.defaultRequest(fCallback, 'SendMessage', {
- 'MessageFolder': sMessageFolder,
- 'MessageUid': sMessageUid,
- 'SentFolder': sSentFolder,
- 'From': sFrom,
- 'To': sTo,
- 'Cc': sCc,
- 'Bcc': sBcc,
- 'Subject': sSubject,
- 'TextIsHtml': bTextIsHtml ? '1' : '0',
- 'Text': sText,
- 'DraftInfo': aDraftInfo,
- 'InReplyTo': sInReplyTo,
- 'References': sReferences,
- 'ReadReceiptRequest': bRequestReadReceipt ? '1' : '0',
- 'Attachments': aAttachments
- }, Consts.Defaults.SendMessageAjaxTimeout);
- };
-
- /**
- * @param {?Function} fCallback
- * @param {Object} oData
- */
- WebMailAjaxRemoteStorage.prototype.saveSystemFolders = function (fCallback, oData)
- {
- this.defaultRequest(fCallback, 'SystemFoldersUpdate', oData);
- };
-
- /**
- * @param {?Function} fCallback
- * @param {Object} oData
- */
- WebMailAjaxRemoteStorage.prototype.saveSettings = function (fCallback, oData)
- {
- this.defaultRequest(fCallback, 'SettingsUpdate', oData);
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sPrevPassword
- * @param {string} sNewPassword
- */
- WebMailAjaxRemoteStorage.prototype.changePassword = function (fCallback, sPrevPassword, sNewPassword)
- {
- this.defaultRequest(fCallback, 'ChangePassword', {
- 'PrevPassword': sPrevPassword,
- 'NewPassword': sNewPassword
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sNewFolderName
- * @param {string} sParentName
- */
- WebMailAjaxRemoteStorage.prototype.folderCreate = function (fCallback, sNewFolderName, sParentName)
- {
- this.defaultRequest(fCallback, 'FolderCreate', {
- 'Folder': sNewFolderName,
- 'Parent': sParentName
- }, null, '', ['Folders']);
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sFolderFullNameRaw
- */
- WebMailAjaxRemoteStorage.prototype.folderDelete = function (fCallback, sFolderFullNameRaw)
- {
- this.defaultRequest(fCallback, 'FolderDelete', {
- 'Folder': sFolderFullNameRaw
- }, null, '', ['Folders']);
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sPrevFolderFullNameRaw
- * @param {string} sNewFolderName
- */
- WebMailAjaxRemoteStorage.prototype.folderRename = function (fCallback, sPrevFolderFullNameRaw, sNewFolderName)
- {
- this.defaultRequest(fCallback, 'FolderRename', {
- 'Folder': sPrevFolderFullNameRaw,
- 'NewFolderName': sNewFolderName
- }, null, '', ['Folders']);
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sFolderFullNameRaw
- */
- WebMailAjaxRemoteStorage.prototype.folderClear = function (fCallback, sFolderFullNameRaw)
- {
- this.defaultRequest(fCallback, 'FolderClear', {
- 'Folder': sFolderFullNameRaw
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sFolderFullNameRaw
- * @param {boolean} bSubscribe
- */
- WebMailAjaxRemoteStorage.prototype.folderSetSubscribe = function (fCallback, sFolderFullNameRaw, bSubscribe)
- {
- this.defaultRequest(fCallback, 'FolderSubscribe', {
- 'Folder': sFolderFullNameRaw,
- 'Subscribe': bSubscribe ? '1' : '0'
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sFolder
- * @param {string} sToFolder
- * @param {Array} aUids
- * @param {string=} sLearning
- */
- WebMailAjaxRemoteStorage.prototype.messagesMove = function (fCallback, sFolder, sToFolder, aUids, sLearning)
- {
- this.defaultRequest(fCallback, 'MessageMove', {
- 'FromFolder': sFolder,
- 'ToFolder': sToFolder,
- 'Uids': aUids.join(','),
- 'Learning': sLearning || ''
- }, null, '', ['MessageList']);
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sFolder
- * @param {string} sToFolder
- * @param {Array} aUids
- */
- WebMailAjaxRemoteStorage.prototype.messagesCopy = function (fCallback, sFolder, sToFolder, aUids)
- {
- this.defaultRequest(fCallback, 'MessageCopy', {
- 'FromFolder': sFolder,
- 'ToFolder': sToFolder,
- 'Uids': aUids.join(',')
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sFolder
- * @param {Array} aUids
- */
- WebMailAjaxRemoteStorage.prototype.messagesDelete = function (fCallback, sFolder, aUids)
- {
- this.defaultRequest(fCallback, 'MessageDelete', {
- 'Folder': sFolder,
- 'Uids': aUids.join(',')
- }, null, '', ['MessageList']);
- };
-
- /**
- * @param {?Function} fCallback
- */
- WebMailAjaxRemoteStorage.prototype.appDelayStart = function (fCallback)
- {
- this.defaultRequest(fCallback, 'AppDelayStart');
- };
-
- /**
- * @param {?Function} fCallback
- */
- WebMailAjaxRemoteStorage.prototype.quota = function (fCallback)
- {
- this.defaultRequest(fCallback, 'Quota');
- };
-
- /**
- * @param {?Function} fCallback
- * @param {number} iOffset
- * @param {number} iLimit
- * @param {string} sSearch
- */
- WebMailAjaxRemoteStorage.prototype.contacts = function (fCallback, iOffset, iLimit, sSearch)
- {
- this.defaultRequest(fCallback, 'Contacts', {
- 'Offset': iOffset,
- 'Limit': iLimit,
- 'Search': sSearch
- }, null, '', ['Contacts']);
- };
-
- /**
- * @param {?Function} fCallback
- */
- WebMailAjaxRemoteStorage.prototype.contactSave = function (fCallback, sRequestUid, sUid, sTags, aProperties)
- {
- this.defaultRequest(fCallback, 'ContactSave', {
- 'RequestUid': sRequestUid,
- 'Uid': Utils.trim(sUid),
- 'Tags': Utils.trim(sTags),
- 'Properties': aProperties
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {Array} aUids
- */
- WebMailAjaxRemoteStorage.prototype.contactsDelete = function (fCallback, aUids)
- {
- this.defaultRequest(fCallback, 'ContactsDelete', {
- 'Uids': aUids.join(',')
- });
- };
-
- /**
- * @param {?Function} fCallback
- * @param {string} sQuery
- * @param {number} iPage
- */
- WebMailAjaxRemoteStorage.prototype.suggestions = function (fCallback, sQuery, iPage)
- {
- this.defaultRequest(fCallback, 'Suggestions', {
- 'Query': sQuery,
- 'Page': iPage
- }, null, '', ['Suggestions']);
- };
-
- /**
- * @param {?Function} fCallback
- */
- WebMailAjaxRemoteStorage.prototype.facebookUser = function (fCallback)
- {
- this.defaultRequest(fCallback, 'SocialFacebookUserInformation');
- };
-
- /**
- * @param {?Function} fCallback
- */
- WebMailAjaxRemoteStorage.prototype.facebookDisconnect = function (fCallback)
- {
- this.defaultRequest(fCallback, 'SocialFacebookDisconnect');
- };
-
- /**
- * @param {?Function} fCallback
- */
- WebMailAjaxRemoteStorage.prototype.twitterUser = function (fCallback)
- {
- this.defaultRequest(fCallback, 'SocialTwitterUserInformation');
- };
-
- /**
- * @param {?Function} fCallback
- */
- WebMailAjaxRemoteStorage.prototype.twitterDisconnect = function (fCallback)
- {
- this.defaultRequest(fCallback, 'SocialTwitterDisconnect');
- };
-
- /**
- * @param {?Function} fCallback
- */
- WebMailAjaxRemoteStorage.prototype.googleUser = function (fCallback)
- {
- this.defaultRequest(fCallback, 'SocialGoogleUserInformation');
- };
-
- /**
- * @param {?Function} fCallback
- */
- WebMailAjaxRemoteStorage.prototype.googleDisconnect = function (fCallback)
- {
- this.defaultRequest(fCallback, 'SocialGoogleDisconnect');
- };
-
- /**
- * @param {?Function} fCallback
- */
- WebMailAjaxRemoteStorage.prototype.socialUsers = function (fCallback)
- {
- this.defaultRequest(fCallback, 'SocialUsers');
- };
-
- module.exports = new WebMailAjaxRemoteStorage();
-
-}(module, require));
-},{"./AbstractAjaxRemoteStorage.js":66,"./AppSettings.js":68,"./WebMailCacheStorage.js":73,"./WebMailDataStorage.js":74,"Base64":5,"Consts":6,"Globals":9,"Utils":14,"_":31}],73:[function(require,module,exports){
+},{"$":26,"Consts":6,"Enums":7,"Globals":9,"LinkBuilder":11,"Plugins":12,"Storage:Settings":75,"Utils":14,"_":31,"window":32}],69:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -14652,13 +13532,13 @@ module.exports = window;
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- AppSettings = require('./AppSettings.js')
+ Settings = require('Storage:Settings')
;
/**
* @constructor
*/
- function WebMailCacheStorage()
+ function CacheStorage()
{
this.oFoldersCache = {};
this.oFoldersNamesCache = {};
@@ -14669,60 +13549,60 @@ module.exports = window;
this.oNewMessage = {};
this.oRequestedMessage = {};
- this.bCapaGravatar = AppSettings.capa(Enums.Capa.Gravatar);
+ this.bCapaGravatar = Settings.capa(Enums.Capa.Gravatar);
}
/**
* @type {boolean}
*/
- WebMailCacheStorage.prototype.bCapaGravatar = false;
+ CacheStorage.prototype.bCapaGravatar = false;
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oFoldersCache = {};
+ CacheStorage.prototype.oFoldersCache = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oFoldersNamesCache = {};
+ CacheStorage.prototype.oFoldersNamesCache = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oFolderHashCache = {};
+ CacheStorage.prototype.oFolderHashCache = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oFolderUidNextCache = {};
+ CacheStorage.prototype.oFolderUidNextCache = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oMessageListHashCache = {};
+ CacheStorage.prototype.oMessageListHashCache = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oMessageFlagsCache = {};
+ CacheStorage.prototype.oMessageFlagsCache = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oBodies = {};
+ CacheStorage.prototype.oBodies = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oNewMessage = {};
+ CacheStorage.prototype.oNewMessage = {};
/**
* @type {Object}
*/
- WebMailCacheStorage.prototype.oRequestedMessage = {};
+ CacheStorage.prototype.oRequestedMessage = {};
- WebMailCacheStorage.prototype.clear = function ()
+ CacheStorage.prototype.clear = function ()
{
this.oFoldersCache = {};
this.oFoldersNamesCache = {};
@@ -14739,7 +13619,7 @@ module.exports = window;
* @param {Function} fCallback
* @return {string}
*/
- WebMailCacheStorage.prototype.getUserPic = function (sEmail, fCallback)
+ CacheStorage.prototype.getUserPic = function (sEmail, fCallback)
{
sEmail = Utils.trim(sEmail);
fCallback(this.bCapaGravatar && '' !== sEmail ? LinkBuilder.avatarLink(sEmail) : '', sEmail);
@@ -14750,7 +13630,7 @@ module.exports = window;
* @param {string} sUid
* @return {string}
*/
- WebMailCacheStorage.prototype.getMessageKey = function (sFolderFullNameRaw, sUid)
+ CacheStorage.prototype.getMessageKey = function (sFolderFullNameRaw, sUid)
{
return sFolderFullNameRaw + '#' + sUid;
};
@@ -14759,7 +13639,7 @@ module.exports = window;
* @param {string} sFolder
* @param {string} sUid
*/
- WebMailCacheStorage.prototype.addRequestedMessage = function (sFolder, sUid)
+ CacheStorage.prototype.addRequestedMessage = function (sFolder, sUid)
{
this.oRequestedMessage[this.getMessageKey(sFolder, sUid)] = true;
};
@@ -14769,7 +13649,7 @@ module.exports = window;
* @param {string} sUid
* @return {boolean}
*/
- WebMailCacheStorage.prototype.hasRequestedMessage = function (sFolder, sUid)
+ CacheStorage.prototype.hasRequestedMessage = function (sFolder, sUid)
{
return true === this.oRequestedMessage[this.getMessageKey(sFolder, sUid)];
};
@@ -14778,7 +13658,7 @@ module.exports = window;
* @param {string} sFolderFullNameRaw
* @param {string} sUid
*/
- WebMailCacheStorage.prototype.addNewMessageCache = function (sFolderFullNameRaw, sUid)
+ CacheStorage.prototype.addNewMessageCache = function (sFolderFullNameRaw, sUid)
{
this.oNewMessage[this.getMessageKey(sFolderFullNameRaw, sUid)] = true;
};
@@ -14787,7 +13667,7 @@ module.exports = window;
* @param {string} sFolderFullNameRaw
* @param {string} sUid
*/
- WebMailCacheStorage.prototype.hasNewMessageAndRemoveFromCache = function (sFolderFullNameRaw, sUid)
+ CacheStorage.prototype.hasNewMessageAndRemoveFromCache = function (sFolderFullNameRaw, sUid)
{
if (this.oNewMessage[this.getMessageKey(sFolderFullNameRaw, sUid)])
{
@@ -14798,7 +13678,7 @@ module.exports = window;
return false;
};
- WebMailCacheStorage.prototype.clearNewMessageCache = function ()
+ CacheStorage.prototype.clearNewMessageCache = function ()
{
this.oNewMessage = {};
};
@@ -14807,7 +13687,7 @@ module.exports = window;
* @param {string} sFolderHash
* @return {string}
*/
- WebMailCacheStorage.prototype.getFolderFullNameRaw = function (sFolderHash)
+ CacheStorage.prototype.getFolderFullNameRaw = function (sFolderHash)
{
return '' !== sFolderHash && this.oFoldersNamesCache[sFolderHash] ? this.oFoldersNamesCache[sFolderHash] : '';
};
@@ -14816,7 +13696,7 @@ module.exports = window;
* @param {string} sFolderHash
* @param {string} sFolderFullNameRaw
*/
- WebMailCacheStorage.prototype.setFolderFullNameRaw = function (sFolderHash, sFolderFullNameRaw)
+ CacheStorage.prototype.setFolderFullNameRaw = function (sFolderHash, sFolderFullNameRaw)
{
this.oFoldersNamesCache[sFolderHash] = sFolderFullNameRaw;
};
@@ -14825,7 +13705,7 @@ module.exports = window;
* @param {string} sFolderFullNameRaw
* @return {string}
*/
- WebMailCacheStorage.prototype.getFolderHash = function (sFolderFullNameRaw)
+ CacheStorage.prototype.getFolderHash = function (sFolderFullNameRaw)
{
return '' !== sFolderFullNameRaw && this.oFolderHashCache[sFolderFullNameRaw] ? this.oFolderHashCache[sFolderFullNameRaw] : '';
};
@@ -14834,7 +13714,7 @@ module.exports = window;
* @param {string} sFolderFullNameRaw
* @param {string} sFolderHash
*/
- WebMailCacheStorage.prototype.setFolderHash = function (sFolderFullNameRaw, sFolderHash)
+ CacheStorage.prototype.setFolderHash = function (sFolderFullNameRaw, sFolderHash)
{
this.oFolderHashCache[sFolderFullNameRaw] = sFolderHash;
};
@@ -14843,7 +13723,7 @@ module.exports = window;
* @param {string} sFolderFullNameRaw
* @return {string}
*/
- WebMailCacheStorage.prototype.getFolderUidNext = function (sFolderFullNameRaw)
+ CacheStorage.prototype.getFolderUidNext = function (sFolderFullNameRaw)
{
return '' !== sFolderFullNameRaw && this.oFolderUidNextCache[sFolderFullNameRaw] ? this.oFolderUidNextCache[sFolderFullNameRaw] : '';
};
@@ -14852,7 +13732,7 @@ module.exports = window;
* @param {string} sFolderFullNameRaw
* @param {string} sUidNext
*/
- WebMailCacheStorage.prototype.setFolderUidNext = function (sFolderFullNameRaw, sUidNext)
+ CacheStorage.prototype.setFolderUidNext = function (sFolderFullNameRaw, sUidNext)
{
this.oFolderUidNextCache[sFolderFullNameRaw] = sUidNext;
};
@@ -14861,7 +13741,7 @@ module.exports = window;
* @param {string} sFolderFullNameRaw
* @return {?FolderModel}
*/
- WebMailCacheStorage.prototype.getFolderFromCacheList = function (sFolderFullNameRaw)
+ CacheStorage.prototype.getFolderFromCacheList = function (sFolderFullNameRaw)
{
return '' !== sFolderFullNameRaw && this.oFoldersCache[sFolderFullNameRaw] ? this.oFoldersCache[sFolderFullNameRaw] : null;
};
@@ -14870,7 +13750,7 @@ module.exports = window;
* @param {string} sFolderFullNameRaw
* @param {?FolderModel} oFolder
*/
- WebMailCacheStorage.prototype.setFolderToCacheList = function (sFolderFullNameRaw, oFolder)
+ CacheStorage.prototype.setFolderToCacheList = function (sFolderFullNameRaw, oFolder)
{
this.oFoldersCache[sFolderFullNameRaw] = oFolder;
};
@@ -14878,7 +13758,7 @@ module.exports = window;
/**
* @param {string} sFolderFullNameRaw
*/
- WebMailCacheStorage.prototype.removeFolderFromCacheList = function (sFolderFullNameRaw)
+ CacheStorage.prototype.removeFolderFromCacheList = function (sFolderFullNameRaw)
{
this.setFolderToCacheList(sFolderFullNameRaw, null);
};
@@ -14888,7 +13768,7 @@ module.exports = window;
* @param {string} sUid
* @return {?Array}
*/
- WebMailCacheStorage.prototype.getMessageFlagsFromCache = function (sFolderFullName, sUid)
+ CacheStorage.prototype.getMessageFlagsFromCache = function (sFolderFullName, sUid)
{
return this.oMessageFlagsCache[sFolderFullName] && this.oMessageFlagsCache[sFolderFullName][sUid] ?
this.oMessageFlagsCache[sFolderFullName][sUid] : null;
@@ -14899,7 +13779,7 @@ module.exports = window;
* @param {string} sUid
* @param {Array} aFlagsCache
*/
- WebMailCacheStorage.prototype.setMessageFlagsToCache = function (sFolderFullName, sUid, aFlagsCache)
+ CacheStorage.prototype.setMessageFlagsToCache = function (sFolderFullName, sUid, aFlagsCache)
{
if (!this.oMessageFlagsCache[sFolderFullName])
{
@@ -14912,7 +13792,7 @@ module.exports = window;
/**
* @param {string} sFolderFullName
*/
- WebMailCacheStorage.prototype.clearMessageFlagsFromCacheByFolder = function (sFolderFullName)
+ CacheStorage.prototype.clearMessageFlagsFromCacheByFolder = function (sFolderFullName)
{
this.oMessageFlagsCache[sFolderFullName] = {};
};
@@ -14920,7 +13800,7 @@ module.exports = window;
/**
* @param {(MessageModel|null)} oMessage
*/
- WebMailCacheStorage.prototype.initMessageFlagsFromCache = function (oMessage)
+ CacheStorage.prototype.initMessageFlagsFromCache = function (oMessage)
{
if (oMessage)
{
@@ -14961,7 +13841,7 @@ module.exports = window;
/**
* @param {(MessageModel|null)} oMessage
*/
- WebMailCacheStorage.prototype.storeMessageFlagsToCache = function (oMessage)
+ CacheStorage.prototype.storeMessageFlagsToCache = function (oMessage)
{
if (oMessage)
{
@@ -14977,7 +13857,7 @@ module.exports = window;
* @param {string} sUid
* @param {Array} aFlags
*/
- WebMailCacheStorage.prototype.storeMessageFlagsToCacheByFolderAndUid = function (sFolder, sUid, aFlags)
+ CacheStorage.prototype.storeMessageFlagsToCacheByFolderAndUid = function (sFolder, sUid, aFlags)
{
if (Utils.isArray(aFlags) && 0 < aFlags.length)
{
@@ -14985,10 +13865,10 @@ module.exports = window;
}
};
- module.exports = new WebMailCacheStorage();
+ module.exports = new CacheStorage();
}(module, require));
-},{"./AppSettings.js":68,"Enums":7,"LinkBuilder":10,"Utils":14,"_":31}],74:[function(require,module,exports){
+},{"Enums":7,"LinkBuilder":11,"Storage:Settings":75,"Utils":14,"_":31}],70:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -15010,22 +13890,22 @@ module.exports = window;
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- AppSettings = require('./AppSettings.js'),
- Cache = require('./WebMailCacheStorage.js'),
+ Settings = require('Storage:Settings'),
+ Cache = require('Storage:RainLoop:Cache'),
- kn = require('kn'),
+ kn = require('App:Knoin'),
- MessageModel = require('../Models/MessageModel.js'),
+ MessageModel = require('Model:Message'),
- LocalStorage = require('./LocalStorage.js'),
- AbstractData = require('./AbstractData.js')
+ LocalStorage = require('Storage:LocalStorage'),
+ AbstractData = require('Storage:Abstract:Data')
;
/**
* @constructor
* @extends AbstractData
*/
- function WebMailDataStorage()
+ function DataStorage()
{
AbstractData.call(this);
@@ -15118,11 +13998,11 @@ module.exports = window;
this.contactsSyncUser = ko.observable('');
this.contactsSyncPass = ko.observable('');
- this.allowContactsSync = ko.observable(!!AppSettings.settingsGet('ContactsSyncIsAllowed'));
- this.enableContactsSync = ko.observable(!!AppSettings.settingsGet('EnableContactsSync'));
- this.contactsSyncUrl = ko.observable(AppSettings.settingsGet('ContactsSyncUrl'));
- this.contactsSyncUser = ko.observable(AppSettings.settingsGet('ContactsSyncUser'));
- this.contactsSyncPass = ko.observable(AppSettings.settingsGet('ContactsSyncPassword'));
+ this.allowContactsSync = ko.observable(!!Settings.settingsGet('ContactsSyncIsAllowed'));
+ this.enableContactsSync = ko.observable(!!Settings.settingsGet('EnableContactsSync'));
+ this.contactsSyncUrl = ko.observable(Settings.settingsGet('ContactsSyncUrl'));
+ this.contactsSyncUser = ko.observable(Settings.settingsGet('ContactsSyncUser'));
+ this.contactsSyncPass = ko.observable(Settings.settingsGet('ContactsSyncPassword'));
// folders
this.namespace = '';
@@ -15466,9 +14346,9 @@ module.exports = window;
this.purgeMessageBodyCacheThrottle = _.throttle(this.purgeMessageBodyCache, 1000 * 30);
}
- _.extend(WebMailDataStorage.prototype, AbstractData.prototype);
+ _.extend(DataStorage.prototype, AbstractData.prototype);
- WebMailDataStorage.prototype.purgeMessageBodyCache = function()
+ DataStorage.prototype.purgeMessageBodyCache = function()
{
var
iCount = 0,
@@ -15500,32 +14380,32 @@ module.exports = window;
}
};
- WebMailDataStorage.prototype.populateDataOnStart = function()
+ DataStorage.prototype.populateDataOnStart = function()
{
AbstractData.prototype.populateDataOnStart.call(this);
- this.accountEmail(AppSettings.settingsGet('Email'));
- this.accountIncLogin(AppSettings.settingsGet('IncLogin'));
- this.accountOutLogin(AppSettings.settingsGet('OutLogin'));
- this.projectHash(AppSettings.settingsGet('ProjectHash'));
+ this.accountEmail(Settings.settingsGet('Email'));
+ this.accountIncLogin(Settings.settingsGet('IncLogin'));
+ this.accountOutLogin(Settings.settingsGet('OutLogin'));
+ this.projectHash(Settings.settingsGet('ProjectHash'));
- this.defaultIdentityID(AppSettings.settingsGet('DefaultIdentityID'));
+ this.defaultIdentityID(Settings.settingsGet('DefaultIdentityID'));
- this.displayName(AppSettings.settingsGet('DisplayName'));
- this.replyTo(AppSettings.settingsGet('ReplyTo'));
- this.signature(AppSettings.settingsGet('Signature'));
- this.signatureToAll(!!AppSettings.settingsGet('SignatureToAll'));
- this.enableTwoFactor(!!AppSettings.settingsGet('EnableTwoFactor'));
+ this.displayName(Settings.settingsGet('DisplayName'));
+ this.replyTo(Settings.settingsGet('ReplyTo'));
+ this.signature(Settings.settingsGet('Signature'));
+ this.signatureToAll(!!Settings.settingsGet('SignatureToAll'));
+ this.enableTwoFactor(!!Settings.settingsGet('EnableTwoFactor'));
this.lastFoldersHash = LocalStorage.get(Enums.ClientSideKeyName.FoldersLashHash) || '';
- this.remoteSuggestions = !!AppSettings.settingsGet('RemoteSuggestions');
+ this.remoteSuggestions = !!Settings.settingsGet('RemoteSuggestions');
- this.devEmail = AppSettings.settingsGet('DevEmail');
- this.devPassword = AppSettings.settingsGet('DevPassword');
+ this.devEmail = Settings.settingsGet('DevEmail');
+ this.devPassword = Settings.settingsGet('DevPassword');
};
- WebMailDataStorage.prototype.initUidNextAndNewMessages = function (sFolder, sUidNext, aNewMessages)
+ DataStorage.prototype.initUidNextAndNewMessages = function (sFolder, sUidNext, aNewMessages)
{
if ('INBOX' === sFolder && Utils.isNormal(sUidNext) && sUidNext !== '')
{
@@ -15600,7 +14480,7 @@ module.exports = window;
}
};
- WebMailDataStorage.prototype.hideMessageBodies = function ()
+ DataStorage.prototype.hideMessageBodies = function ()
{
var oMessagesBodiesDom = this.messagesBodiesDom();
if (oMessagesBodiesDom)
@@ -15613,7 +14493,7 @@ module.exports = window;
* @param {boolean=} bBoot = false
* @returns {Array}
*/
- WebMailDataStorage.prototype.getNextFolderNames = function (bBoot)
+ DataStorage.prototype.getNextFolderNames = function (bBoot)
{
bBoot = Utils.isUnd(bBoot) ? false : !!bBoot;
@@ -15676,7 +14556,7 @@ module.exports = window;
* @param {string=} sToFolderFullNameRaw = ''
* @param {bCopy=} bCopy = false
*/
- WebMailDataStorage.prototype.removeMessagesFromList = function (
+ DataStorage.prototype.removeMessagesFromList = function (
sFromFolderFullNameRaw, aUidForRemove, sToFolderFullNameRaw, bCopy)
{
sToFolderFullNameRaw = Utils.isNormal(sToFolderFullNameRaw) ? sToFolderFullNameRaw : '';
@@ -15770,7 +14650,7 @@ module.exports = window;
}
};
- WebMailDataStorage.prototype.setMessage = function (oData, bCached)
+ DataStorage.prototype.setMessage = function (oData, bCached)
{
var
bIsHtml = false,
@@ -15930,21 +14810,21 @@ module.exports = window;
* @param {Array} aList
* @returns {string}
*/
- WebMailDataStorage.prototype.calculateMessageListHash = function (aList)
+ DataStorage.prototype.calculateMessageListHash = function (aList)
{
return _.map(aList, function (oMessage) {
return '' + oMessage.hash + '_' + oMessage.threadsLen() + '_' + oMessage.flagHash();
}).join('|');
};
- WebMailDataStorage.prototype.findPublicKeyByHex = function (sHash)
+ DataStorage.prototype.findPublicKeyByHex = function (sHash)
{
return _.find(this.openpgpkeysPublic(), function (oItem) {
return oItem && sHash === oItem.id;
});
};
- WebMailDataStorage.prototype.findPublicKeysByEmail = function (sEmail)
+ DataStorage.prototype.findPublicKeysByEmail = function (sEmail)
{
return _.compact(_.map(this.openpgpkeysPublic(), function (oItem) {
@@ -15972,7 +14852,7 @@ module.exports = window;
* @param {string=} sPassword
* @returns {?}
*/
- WebMailDataStorage.prototype.findPrivateKeyByEmail = function (sEmail, sPassword)
+ DataStorage.prototype.findPrivateKeyByEmail = function (sEmail, sPassword)
{
var
oPrivateKey = null,
@@ -16009,16 +14889,1154 @@ module.exports = window;
* @param {string=} sPassword
* @returns {?}
*/
- WebMailDataStorage.prototype.findSelfPrivateKey = function (sPassword)
+ DataStorage.prototype.findSelfPrivateKey = function (sPassword)
{
return this.findPrivateKeyByEmail(this.accountEmail(), sPassword);
};
- module.exports = new WebMailDataStorage();
+ module.exports = new DataStorage();
}(module, require));
-},{"$":26,"$div":15,"../Models/MessageModel.js":48,"./AbstractData.js":67,"./AppSettings.js":68,"./LocalStorage.js":69,"./WebMailCacheStorage.js":73,"Consts":6,"Enums":7,"Globals":9,"LinkBuilder":10,"NotificationClass":22,"Utils":14,"_":31,"kn":33,"ko":28,"moment":29,"window":32}],75:[function(require,module,exports){
+},{"$":26,"$div":15,"App:Knoin":33,"Consts":6,"Enums":7,"Globals":9,"LinkBuilder":11,"Model:Message":48,"NotificationClass":22,"Storage:Abstract:Data":67,"Storage:LocalStorage":71,"Storage:RainLoop:Cache":69,"Storage:Settings":75,"Utils":14,"_":31,"ko":28,"moment":29,"window":32}],71:[function(require,module,exports){
+/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
+
+(function (module, require) {
+
+ 'use strict';
+
+ /**
+ * @constructor
+ */
+ function LocalStorage()
+ {
+ var
+ _ = require('_'),
+ NextStorageDriver = _.find([
+ require('Storage:LocalStorage:Cookie'),
+ require('Storage:LocalStorage:LocalStorage')
+ ], function (NextStorageDriver) {
+ return NextStorageDriver.supported();
+ })
+ ;
+
+ this.oDriver = null;
+
+ if (NextStorageDriver)
+ {
+ this.oDriver = new NextStorageDriver();
+ }
+ }
+
+ LocalStorage.prototype.oDriver = null;
+
+ /**
+ * @param {number} iKey
+ * @param {*} mData
+ * @return {boolean}
+ */
+ LocalStorage.prototype.set = function (iKey, mData)
+ {
+ return this.oDriver ? this.oDriver.set('p' + iKey, mData) : false;
+ };
+
+ /**
+ * @param {number} iKey
+ * @return {*}
+ */
+ LocalStorage.prototype.get = function (iKey)
+ {
+ return this.oDriver ? this.oDriver.get('p' + iKey) : null;
+ };
+
+ module.exports = new LocalStorage();
+
+}(module, require));
+},{"Storage:LocalStorage:Cookie":72,"Storage:LocalStorage:LocalStorage":73,"_":31}],72:[function(require,module,exports){
+/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
+
+(function (module, require) {
+
+ 'use strict';
+
+ var
+ $ = require('$'),
+ JSON = require('JSON'),
+
+ Consts = require('Consts'),
+ Utils = require('Utils')
+ ;
+
+ /**
+ * @constructor
+ */
+ function CookieDriver()
+ {
+
+ }
+
+ CookieDriver.supported = function ()
+ {
+ return true;
+ };
+
+ /**
+ * @param {string} sKey
+ * @param {*} mData
+ * @returns {boolean}
+ */
+ CookieDriver.prototype.set = function (sKey, mData)
+ {
+ var
+ mCokieValue = $.cookie(Consts.Values.ClientSideCookieIndexName),
+ bResult = false,
+ mResult = null
+ ;
+
+ try
+ {
+ mResult = null === mCokieValue ? null : JSON.parse(mCokieValue);
+ if (!mResult)
+ {
+ mResult = {};
+ }
+
+ mResult[sKey] = mData;
+ $.cookie(Consts.Values.ClientSideCookieIndexName, JSON.stringify(mResult), {
+ 'expires': 30
+ });
+
+ bResult = true;
+ }
+ catch (oException) {}
+
+ return bResult;
+ };
+
+ /**
+ * @param {string} sKey
+ * @returns {*}
+ */
+ CookieDriver.prototype.get = function (sKey)
+ {
+ var
+ mCokieValue = $.cookie(Consts.Values.ClientSideCookieIndexName),
+ mResult = null
+ ;
+
+ try
+ {
+ mResult = null === mCokieValue ? null : JSON.parse(mCokieValue);
+ if (mResult && !Utils.isUnd(mResult[sKey]))
+ {
+ mResult = mResult[sKey];
+ }
+ else
+ {
+ mResult = null;
+ }
+ }
+ catch (oException) {}
+
+ return mResult;
+ };
+
+ module.exports = CookieDriver;
+
+}(module, require));
+},{"$":26,"Consts":6,"JSON":20,"Utils":14}],73:[function(require,module,exports){
+/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
+
+(function (module, require) {
+
+ 'use strict';
+
+ var
+ window = require('window'),
+ JSON = require('JSON'),
+
+ Consts = require('Consts'),
+ Utils = require('Utils')
+ ;
+
+ /**
+ * @constructor
+ */
+ function LocalStorageDriver()
+ {
+ }
+
+ LocalStorageDriver.supported = function ()
+ {
+ return !!window.localStorage;
+ };
+
+ /**
+ * @param {string} sKey
+ * @param {*} mData
+ * @returns {boolean}
+ */
+ LocalStorageDriver.prototype.set = function (sKey, mData)
+ {
+ var
+ mCookieValue = window.localStorage[Consts.Values.ClientSideCookieIndexName] || null,
+ bResult = false,
+ mResult = null
+ ;
+
+ try
+ {
+ mResult = null === mCookieValue ? null : JSON.parse(mCookieValue);
+ if (!mResult)
+ {
+ mResult = {};
+ }
+
+ mResult[sKey] = mData;
+ window.localStorage[Consts.Values.ClientSideCookieIndexName] = JSON.stringify(mResult);
+
+ bResult = true;
+ }
+ catch (oException) {}
+
+ return bResult;
+ };
+
+ /**
+ * @param {string} sKey
+ * @returns {*}
+ */
+ LocalStorageDriver.prototype.get = function (sKey)
+ {
+ var
+ mCokieValue = window.localStorage[Consts.Values.ClientSideCookieIndexName] || null,
+ mResult = null
+ ;
+
+ try
+ {
+ mResult = null === mCokieValue ? null : JSON.parse(mCokieValue);
+ if (mResult && !Utils.isUnd(mResult[sKey]))
+ {
+ mResult = mResult[sKey];
+ }
+ else
+ {
+ mResult = null;
+ }
+ }
+ catch (oException) {}
+
+ return mResult;
+ };
+
+ module.exports = LocalStorageDriver;
+
+}(module, require));
+},{"Consts":6,"JSON":20,"Utils":14,"window":32}],74:[function(require,module,exports){
+/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
+
+(function (module, require) {
+
+ 'use strict';
+
+ var
+ _ = require('_'),
+
+ Utils = require('Utils'),
+ Consts = require('Consts'),
+ Globals = require('Globals'),
+ Base64 = require('Base64'),
+
+ Settings = require('Storage:Settings'),
+ Cache = require('Storage:RainLoop:Cache'),
+ Data = require('Storage:RainLoop:Data'),
+
+ AbstractRemoteStorage = require('Storage:Abstract:Remote')
+ ;
+
+ /**
+ * @constructor
+ * @extends AbstractRemoteStorage
+ */
+ function RemoteStorage()
+ {
+ AbstractRemoteStorage.call(this);
+
+ this.oRequests = {};
+ }
+
+ _.extend(RemoteStorage.prototype, AbstractRemoteStorage.prototype);
+
+ /**
+ * @param {?Function} fCallback
+ */
+ RemoteStorage.prototype.folders = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'Folders', {
+ 'SentFolder': Settings.settingsGet('SentFolder'),
+ 'DraftFolder': Settings.settingsGet('DraftFolder'),
+ 'SpamFolder': Settings.settingsGet('SpamFolder'),
+ 'TrashFolder': Settings.settingsGet('TrashFolder'),
+ 'ArchiveFolder': Settings.settingsGet('ArchiveFolder')
+ }, null, '', ['Folders']);
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sEmail
+ * @param {string} sLogin
+ * @param {string} sPassword
+ * @param {boolean} bSignMe
+ * @param {string=} sLanguage
+ * @param {string=} sAdditionalCode
+ * @param {boolean=} bAdditionalCodeSignMe
+ */
+ RemoteStorage.prototype.login = function (fCallback, sEmail, sLogin, sPassword, bSignMe, sLanguage, sAdditionalCode, bAdditionalCodeSignMe)
+ {
+ this.defaultRequest(fCallback, 'Login', {
+ 'Email': sEmail,
+ 'Login': sLogin,
+ 'Password': sPassword,
+ 'Language': sLanguage || '',
+ 'AdditionalCode': sAdditionalCode || '',
+ 'AdditionalCodeSignMe': bAdditionalCodeSignMe ? '1' : '0',
+ 'SignMe': bSignMe ? '1' : '0'
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ RemoteStorage.prototype.getTwoFactor = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'GetTwoFactorInfo');
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ RemoteStorage.prototype.createTwoFactor = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'CreateTwoFactorSecret');
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ RemoteStorage.prototype.clearTwoFactor = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'ClearTwoFactorInfo');
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ RemoteStorage.prototype.showTwoFactorSecret = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'ShowTwoFactorSecret');
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sCode
+ */
+ RemoteStorage.prototype.testTwoFactor = function (fCallback, sCode)
+ {
+ this.defaultRequest(fCallback, 'TestTwoFactorInfo', {
+ 'Code': sCode
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {boolean} bEnable
+ */
+ RemoteStorage.prototype.enableTwoFactor = function (fCallback, bEnable)
+ {
+ this.defaultRequest(fCallback, 'EnableTwoFactor', {
+ 'Enable': bEnable ? '1' : '0'
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ RemoteStorage.prototype.clearTwoFactorInfo = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'ClearTwoFactorInfo');
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ RemoteStorage.prototype.contactsSync = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'ContactsSync', null, Consts.Defaults.ContactsSyncAjaxTimeout);
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {boolean} bEnable
+ * @param {string} sUrl
+ * @param {string} sUser
+ * @param {string} sPassword
+ */
+ RemoteStorage.prototype.saveContactsSyncData = function (fCallback, bEnable, sUrl, sUser, sPassword)
+ {
+ this.defaultRequest(fCallback, 'SaveContactsSyncData', {
+ 'Enable': bEnable ? '1' : '0',
+ 'Url': sUrl,
+ 'User': sUser,
+ 'Password': sPassword
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sEmail
+ * @param {string} sLogin
+ * @param {string} sPassword
+ */
+ RemoteStorage.prototype.accountAdd = function (fCallback, sEmail, sLogin, sPassword)
+ {
+ this.defaultRequest(fCallback, 'AccountAdd', {
+ 'Email': sEmail,
+ 'Login': sLogin,
+ 'Password': sPassword
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sEmailToDelete
+ */
+ RemoteStorage.prototype.accountDelete = function (fCallback, sEmailToDelete)
+ {
+ this.defaultRequest(fCallback, 'AccountDelete', {
+ 'EmailToDelete': sEmailToDelete
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sId
+ * @param {string} sEmail
+ * @param {string} sName
+ * @param {string} sReplyTo
+ * @param {string} sBcc
+ */
+ RemoteStorage.prototype.identityUpdate = function (fCallback, sId, sEmail, sName, sReplyTo, sBcc)
+ {
+ this.defaultRequest(fCallback, 'IdentityUpdate', {
+ 'Id': sId,
+ 'Email': sEmail,
+ 'Name': sName,
+ 'ReplyTo': sReplyTo,
+ 'Bcc': sBcc
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sIdToDelete
+ */
+ RemoteStorage.prototype.identityDelete = function (fCallback, sIdToDelete)
+ {
+ this.defaultRequest(fCallback, 'IdentityDelete', {
+ 'IdToDelete': sIdToDelete
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ RemoteStorage.prototype.accountsAndIdentities = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'AccountsAndIdentities');
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sFolderFullNameRaw
+ * @param {number=} iOffset = 0
+ * @param {number=} iLimit = 20
+ * @param {string=} sSearch = ''
+ * @param {boolean=} bSilent = false
+ */
+ RemoteStorage.prototype.messageList = function (fCallback, sFolderFullNameRaw, iOffset, iLimit, sSearch, bSilent)
+ {
+ sFolderFullNameRaw = Utils.pString(sFolderFullNameRaw);
+
+ var
+ sFolderHash = Cache.getFolderHash(sFolderFullNameRaw)
+ ;
+
+ bSilent = Utils.isUnd(bSilent) ? false : !!bSilent;
+ iOffset = Utils.isUnd(iOffset) ? 0 : Utils.pInt(iOffset);
+ iLimit = Utils.isUnd(iOffset) ? 20 : Utils.pInt(iLimit);
+ sSearch = Utils.pString(sSearch);
+
+ if ('' !== sFolderHash && ('' === sSearch || -1 === sSearch.indexOf('is:')))
+ {
+ this.defaultRequest(fCallback, 'MessageList', {},
+ '' === sSearch ? Consts.Defaults.DefaultAjaxTimeout : Consts.Defaults.SearchAjaxTimeout,
+ 'MessageList/' + Base64.urlsafe_encode([
+ sFolderFullNameRaw,
+ iOffset,
+ iLimit,
+ sSearch,
+ Data.projectHash(),
+ sFolderHash,
+ 'INBOX' === sFolderFullNameRaw ? Cache.getFolderUidNext(sFolderFullNameRaw) : '',
+ Data.threading() && Data.useThreads() ? '1' : '0',
+ Data.threading() && sFolderFullNameRaw === Data.messageListThreadFolder() ? Data.messageListThreadUids().join(',') : ''
+ ].join(String.fromCharCode(0))), bSilent ? [] : ['MessageList']);
+ }
+ else
+ {
+ this.defaultRequest(fCallback, 'MessageList', {
+ 'Folder': sFolderFullNameRaw,
+ 'Offset': iOffset,
+ 'Limit': iLimit,
+ 'Search': sSearch,
+ 'UidNext': 'INBOX' === sFolderFullNameRaw ? Cache.getFolderUidNext(sFolderFullNameRaw) : '',
+ 'UseThreads': Data.threading() && Data.useThreads() ? '1' : '0',
+ 'ExpandedThreadUid': Data.threading() && sFolderFullNameRaw === Data.messageListThreadFolder() ? Data.messageListThreadUids().join(',') : ''
+ }, '' === sSearch ? Consts.Defaults.DefaultAjaxTimeout : Consts.Defaults.SearchAjaxTimeout, '', bSilent ? [] : ['MessageList']);
+ }
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {Array} aDownloads
+ */
+ RemoteStorage.prototype.messageUploadAttachments = function (fCallback, aDownloads)
+ {
+ this.defaultRequest(fCallback, 'MessageUploadAttachments', {
+ 'Attachments': aDownloads
+ }, 999000);
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sFolderFullNameRaw
+ * @param {number} iUid
+ * @return {boolean}
+ */
+ RemoteStorage.prototype.message = function (fCallback, sFolderFullNameRaw, iUid)
+ {
+ sFolderFullNameRaw = Utils.pString(sFolderFullNameRaw);
+ iUid = Utils.pInt(iUid);
+
+ if (Cache.getFolderFromCacheList(sFolderFullNameRaw) && 0 < iUid)
+ {
+ this.defaultRequest(fCallback, 'Message', {}, null,
+ 'Message/' + Base64.urlsafe_encode([
+ sFolderFullNameRaw,
+ iUid,
+ Data.projectHash(),
+ Data.threading() && Data.useThreads() ? '1' : '0'
+ ].join(String.fromCharCode(0))), ['Message']);
+
+ return true;
+ }
+
+ return false;
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {Array} aExternals
+ */
+ RemoteStorage.prototype.composeUploadExternals = function (fCallback, aExternals)
+ {
+ this.defaultRequest(fCallback, 'ComposeUploadExternals', {
+ 'Externals': aExternals
+ }, 999000);
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sUrl
+ * @param {string} sAccessToken
+ */
+ RemoteStorage.prototype.composeUploadDrive = function (fCallback, sUrl, sAccessToken)
+ {
+ this.defaultRequest(fCallback, 'ComposeUploadDrive', {
+ 'AccessToken': sAccessToken,
+ 'Url': sUrl
+ }, 999000);
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sFolder
+ * @param {Array=} aList = []
+ */
+ RemoteStorage.prototype.folderInformation = function (fCallback, sFolder, aList)
+ {
+ var
+ bRequest = true,
+ aUids = []
+ ;
+
+ if (Utils.isArray(aList) && 0 < aList.length)
+ {
+ bRequest = false;
+ _.each(aList, function (oMessageListItem) {
+ if (!Cache.getMessageFlagsFromCache(oMessageListItem.folderFullNameRaw, oMessageListItem.uid))
+ {
+ aUids.push(oMessageListItem.uid);
+ }
+
+ if (0 < oMessageListItem.threads().length)
+ {
+ _.each(oMessageListItem.threads(), function (sUid) {
+ if (!Cache.getMessageFlagsFromCache(oMessageListItem.folderFullNameRaw, sUid))
+ {
+ aUids.push(sUid);
+ }
+ });
+ }
+ });
+
+ if (0 < aUids.length)
+ {
+ bRequest = true;
+ }
+ }
+
+ if (bRequest)
+ {
+ this.defaultRequest(fCallback, 'FolderInformation', {
+ 'Folder': sFolder,
+ 'FlagsUids': Utils.isArray(aUids) ? aUids.join(',') : '',
+ 'UidNext': 'INBOX' === sFolder ? Cache.getFolderUidNext(sFolder) : ''
+ });
+ }
+ else if (Data.useThreads())
+ {
+ if (Globals.__APP)
+ {
+ Globals.__APP.reloadFlagsCurrentMessageListAndMessageFromCache();
+ }
+ }
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {Array} aFolders
+ */
+ RemoteStorage.prototype.folderInformationMultiply = function (fCallback, aFolders)
+ {
+ this.defaultRequest(fCallback, 'FolderInformationMultiply', {
+ 'Folders': aFolders
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ RemoteStorage.prototype.logout = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'Logout');
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sFolderFullNameRaw
+ * @param {Array} aUids
+ * @param {boolean} bSetFlagged
+ */
+ RemoteStorage.prototype.messageSetFlagged = function (fCallback, sFolderFullNameRaw, aUids, bSetFlagged)
+ {
+ this.defaultRequest(fCallback, 'MessageSetFlagged', {
+ 'Folder': sFolderFullNameRaw,
+ 'Uids': aUids.join(','),
+ 'SetAction': bSetFlagged ? '1' : '0'
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sFolderFullNameRaw
+ * @param {Array} aUids
+ * @param {boolean} bSetSeen
+ */
+ RemoteStorage.prototype.messageSetSeen = function (fCallback, sFolderFullNameRaw, aUids, bSetSeen)
+ {
+ this.defaultRequest(fCallback, 'MessageSetSeen', {
+ 'Folder': sFolderFullNameRaw,
+ 'Uids': aUids.join(','),
+ 'SetAction': bSetSeen ? '1' : '0'
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sFolderFullNameRaw
+ * @param {boolean} bSetSeen
+ */
+ RemoteStorage.prototype.messageSetSeenToAll = function (fCallback, sFolderFullNameRaw, bSetSeen)
+ {
+ this.defaultRequest(fCallback, 'MessageSetSeenToAll', {
+ 'Folder': sFolderFullNameRaw,
+ 'SetAction': bSetSeen ? '1' : '0'
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sMessageFolder
+ * @param {string} sMessageUid
+ * @param {string} sDraftFolder
+ * @param {string} sFrom
+ * @param {string} sTo
+ * @param {string} sCc
+ * @param {string} sBcc
+ * @param {string} sSubject
+ * @param {boolean} bTextIsHtml
+ * @param {string} sText
+ * @param {Array} aAttachments
+ * @param {(Array|null)} aDraftInfo
+ * @param {string} sInReplyTo
+ * @param {string} sReferences
+ */
+ RemoteStorage.prototype.saveMessage = function (fCallback, sMessageFolder, sMessageUid, sDraftFolder,
+ sFrom, sTo, sCc, sBcc, sSubject, bTextIsHtml, sText, aAttachments, aDraftInfo, sInReplyTo, sReferences)
+ {
+ this.defaultRequest(fCallback, 'SaveMessage', {
+ 'MessageFolder': sMessageFolder,
+ 'MessageUid': sMessageUid,
+ 'DraftFolder': sDraftFolder,
+ 'From': sFrom,
+ 'To': sTo,
+ 'Cc': sCc,
+ 'Bcc': sBcc,
+ 'Subject': sSubject,
+ 'TextIsHtml': bTextIsHtml ? '1' : '0',
+ 'Text': sText,
+ 'DraftInfo': aDraftInfo,
+ 'InReplyTo': sInReplyTo,
+ 'References': sReferences,
+ 'Attachments': aAttachments
+ }, Consts.Defaults.SaveMessageAjaxTimeout);
+ };
+
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sMessageFolder
+ * @param {string} sMessageUid
+ * @param {string} sReadReceipt
+ * @param {string} sSubject
+ * @param {string} sText
+ */
+ RemoteStorage.prototype.sendReadReceiptMessage = function (fCallback, sMessageFolder, sMessageUid, sReadReceipt, sSubject, sText)
+ {
+ this.defaultRequest(fCallback, 'SendReadReceiptMessage', {
+ 'MessageFolder': sMessageFolder,
+ 'MessageUid': sMessageUid,
+ 'ReadReceipt': sReadReceipt,
+ 'Subject': sSubject,
+ 'Text': sText
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sMessageFolder
+ * @param {string} sMessageUid
+ * @param {string} sSentFolder
+ * @param {string} sFrom
+ * @param {string} sTo
+ * @param {string} sCc
+ * @param {string} sBcc
+ * @param {string} sSubject
+ * @param {boolean} bTextIsHtml
+ * @param {string} sText
+ * @param {Array} aAttachments
+ * @param {(Array|null)} aDraftInfo
+ * @param {string} sInReplyTo
+ * @param {string} sReferences
+ * @param {boolean} bRequestReadReceipt
+ */
+ RemoteStorage.prototype.sendMessage = function (fCallback, sMessageFolder, sMessageUid, sSentFolder,
+ sFrom, sTo, sCc, sBcc, sSubject, bTextIsHtml, sText, aAttachments, aDraftInfo, sInReplyTo, sReferences, bRequestReadReceipt)
+ {
+ this.defaultRequest(fCallback, 'SendMessage', {
+ 'MessageFolder': sMessageFolder,
+ 'MessageUid': sMessageUid,
+ 'SentFolder': sSentFolder,
+ 'From': sFrom,
+ 'To': sTo,
+ 'Cc': sCc,
+ 'Bcc': sBcc,
+ 'Subject': sSubject,
+ 'TextIsHtml': bTextIsHtml ? '1' : '0',
+ 'Text': sText,
+ 'DraftInfo': aDraftInfo,
+ 'InReplyTo': sInReplyTo,
+ 'References': sReferences,
+ 'ReadReceiptRequest': bRequestReadReceipt ? '1' : '0',
+ 'Attachments': aAttachments
+ }, Consts.Defaults.SendMessageAjaxTimeout);
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {Object} oData
+ */
+ RemoteStorage.prototype.saveSystemFolders = function (fCallback, oData)
+ {
+ this.defaultRequest(fCallback, 'SystemFoldersUpdate', oData);
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {Object} oData
+ */
+ RemoteStorage.prototype.saveSettings = function (fCallback, oData)
+ {
+ this.defaultRequest(fCallback, 'SettingsUpdate', oData);
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sPrevPassword
+ * @param {string} sNewPassword
+ */
+ RemoteStorage.prototype.changePassword = function (fCallback, sPrevPassword, sNewPassword)
+ {
+ this.defaultRequest(fCallback, 'ChangePassword', {
+ 'PrevPassword': sPrevPassword,
+ 'NewPassword': sNewPassword
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sNewFolderName
+ * @param {string} sParentName
+ */
+ RemoteStorage.prototype.folderCreate = function (fCallback, sNewFolderName, sParentName)
+ {
+ this.defaultRequest(fCallback, 'FolderCreate', {
+ 'Folder': sNewFolderName,
+ 'Parent': sParentName
+ }, null, '', ['Folders']);
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sFolderFullNameRaw
+ */
+ RemoteStorage.prototype.folderDelete = function (fCallback, sFolderFullNameRaw)
+ {
+ this.defaultRequest(fCallback, 'FolderDelete', {
+ 'Folder': sFolderFullNameRaw
+ }, null, '', ['Folders']);
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sPrevFolderFullNameRaw
+ * @param {string} sNewFolderName
+ */
+ RemoteStorage.prototype.folderRename = function (fCallback, sPrevFolderFullNameRaw, sNewFolderName)
+ {
+ this.defaultRequest(fCallback, 'FolderRename', {
+ 'Folder': sPrevFolderFullNameRaw,
+ 'NewFolderName': sNewFolderName
+ }, null, '', ['Folders']);
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sFolderFullNameRaw
+ */
+ RemoteStorage.prototype.folderClear = function (fCallback, sFolderFullNameRaw)
+ {
+ this.defaultRequest(fCallback, 'FolderClear', {
+ 'Folder': sFolderFullNameRaw
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sFolderFullNameRaw
+ * @param {boolean} bSubscribe
+ */
+ RemoteStorage.prototype.folderSetSubscribe = function (fCallback, sFolderFullNameRaw, bSubscribe)
+ {
+ this.defaultRequest(fCallback, 'FolderSubscribe', {
+ 'Folder': sFolderFullNameRaw,
+ 'Subscribe': bSubscribe ? '1' : '0'
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sFolder
+ * @param {string} sToFolder
+ * @param {Array} aUids
+ * @param {string=} sLearning
+ */
+ RemoteStorage.prototype.messagesMove = function (fCallback, sFolder, sToFolder, aUids, sLearning)
+ {
+ this.defaultRequest(fCallback, 'MessageMove', {
+ 'FromFolder': sFolder,
+ 'ToFolder': sToFolder,
+ 'Uids': aUids.join(','),
+ 'Learning': sLearning || ''
+ }, null, '', ['MessageList']);
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sFolder
+ * @param {string} sToFolder
+ * @param {Array} aUids
+ */
+ RemoteStorage.prototype.messagesCopy = function (fCallback, sFolder, sToFolder, aUids)
+ {
+ this.defaultRequest(fCallback, 'MessageCopy', {
+ 'FromFolder': sFolder,
+ 'ToFolder': sToFolder,
+ 'Uids': aUids.join(',')
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sFolder
+ * @param {Array} aUids
+ */
+ RemoteStorage.prototype.messagesDelete = function (fCallback, sFolder, aUids)
+ {
+ this.defaultRequest(fCallback, 'MessageDelete', {
+ 'Folder': sFolder,
+ 'Uids': aUids.join(',')
+ }, null, '', ['MessageList']);
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ RemoteStorage.prototype.appDelayStart = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'AppDelayStart');
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ RemoteStorage.prototype.quota = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'Quota');
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {number} iOffset
+ * @param {number} iLimit
+ * @param {string} sSearch
+ */
+ RemoteStorage.prototype.contacts = function (fCallback, iOffset, iLimit, sSearch)
+ {
+ this.defaultRequest(fCallback, 'Contacts', {
+ 'Offset': iOffset,
+ 'Limit': iLimit,
+ 'Search': sSearch
+ }, null, '', ['Contacts']);
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ RemoteStorage.prototype.contactSave = function (fCallback, sRequestUid, sUid, sTags, aProperties)
+ {
+ this.defaultRequest(fCallback, 'ContactSave', {
+ 'RequestUid': sRequestUid,
+ 'Uid': Utils.trim(sUid),
+ 'Tags': Utils.trim(sTags),
+ 'Properties': aProperties
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {Array} aUids
+ */
+ RemoteStorage.prototype.contactsDelete = function (fCallback, aUids)
+ {
+ this.defaultRequest(fCallback, 'ContactsDelete', {
+ 'Uids': aUids.join(',')
+ });
+ };
+
+ /**
+ * @param {?Function} fCallback
+ * @param {string} sQuery
+ * @param {number} iPage
+ */
+ RemoteStorage.prototype.suggestions = function (fCallback, sQuery, iPage)
+ {
+ this.defaultRequest(fCallback, 'Suggestions', {
+ 'Query': sQuery,
+ 'Page': iPage
+ }, null, '', ['Suggestions']);
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ RemoteStorage.prototype.facebookUser = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'SocialFacebookUserInformation');
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ RemoteStorage.prototype.facebookDisconnect = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'SocialFacebookDisconnect');
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ RemoteStorage.prototype.twitterUser = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'SocialTwitterUserInformation');
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ RemoteStorage.prototype.twitterDisconnect = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'SocialTwitterDisconnect');
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ RemoteStorage.prototype.googleUser = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'SocialGoogleUserInformation');
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ RemoteStorage.prototype.googleDisconnect = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'SocialGoogleDisconnect');
+ };
+
+ /**
+ * @param {?Function} fCallback
+ */
+ RemoteStorage.prototype.socialUsers = function (fCallback)
+ {
+ this.defaultRequest(fCallback, 'SocialUsers');
+ };
+
+ module.exports = new RemoteStorage();
+
+}(module, require));
+},{"Base64":5,"Consts":6,"Globals":9,"Storage:Abstract:Remote":68,"Storage:RainLoop:Cache":69,"Storage:RainLoop:Data":70,"Storage:Settings":75,"Utils":14,"_":31}],75:[function(require,module,exports){
+/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
+
+(function (module, require) {
+
+ 'use strict';
+
+ var
+ Utils = require('Utils')
+ ;
+
+ /**
+ * @constructor
+ */
+ function SettingsStorage()
+ {
+ this.oSettings = require('AppData');
+ this.oSettings = Utils.isNormal(this.oSettings) ? this.oSettings : {};
+ }
+
+ SettingsStorage.prototype.oSettings = null;
+
+ /**
+ * @param {string} sName
+ * @return {?}
+ */
+ SettingsStorage.prototype.settingsGet = function (sName)
+ {
+ return Utils.isUnd(this.oSettings[sName]) ? null : this.oSettings[sName];
+ };
+
+ /**
+ * @param {string} sName
+ * @param {?} mValue
+ */
+ SettingsStorage.prototype.settingsSet = function (sName, mValue)
+ {
+ this.oSettings[sName] = mValue;
+ };
+
+ /**
+ * @param {string} sName
+ * @return {boolean}
+ */
+ SettingsStorage.prototype.capa = function (sName)
+ {
+ var mCapa = this.settingsGet('Capa');
+ return Utils.isArray(mCapa) && Utils.isNormal(sName) && -1 < Utils.inArray(sName, mCapa);
+ };
+
+
+ module.exports = new SettingsStorage();
+
+}(module, require));
+},{"AppData":19,"Utils":14}],76:[function(require,module,exports){
+/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
+
+(function (module, require) {
+
+ 'use strict';
+
+ var
+ ko = require('ko'),
+
+ kn = require('App:Knoin'),
+ Settings = require('Storage:Settings'),
+
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
+ ;
+
+ /**
+ * @constructor
+ * @extends KnoinAbstractViewModel
+ */
+ function AboutViewModel()
+ {
+ KnoinAbstractViewModel.call(this, 'Center', 'About');
+
+ this.version = ko.observable(Settings.settingsGet('Version'));
+
+ kn.constructorEnd(this);
+ }
+
+ kn.extendAsViewModel('AboutViewModel', AboutViewModel);
+
+ module.exports = AboutViewModel;
+
+}(module, require));
+},{"App:Knoin":33,"Knoin:AbstractViewModel":36,"Storage:Settings":75,"ko":28}],77:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -16035,15 +16053,11 @@ module.exports = window;
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
- AppSettings = require('../Storages/AppSettings.js'),
- Data = require('../Storages/WebMailDataStorage.js'),
- Remote = require('../Storages/WebMailAjaxRemoteStorage.js'),
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote'),
- PopupsKeyboardShortcutsHelpViewModel = require('../ViewModels/Popups/PopupsKeyboardShortcutsHelpViewModel.js'),
- PopupsAddAccountViewModel = require('../ViewModels/Popups/PopupsKeyboardShortcutsHelpViewModel.js'),
-
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -16060,7 +16074,7 @@ module.exports = window;
this.accountMenuDropdownTrigger = ko.observable(false);
- this.capaAdditionalAccounts = AppSettings.capa(Enums.Capa.AdditionalAccounts);
+ this.capaAdditionalAccounts = Settings.capa(Enums.Capa.AdditionalAccounts);
this.loading = ko.computed(function () {
return this.accountsLoading();
@@ -16092,32 +16106,32 @@ module.exports = window;
AbstractSystemDropDownViewModel.prototype.settingsClick = function ()
{
- kn.setHash(LinkBuilder.settings());
+ require('App:Knoin').setHash(LinkBuilder.settings());
};
AbstractSystemDropDownViewModel.prototype.settingsHelp = function ()
{
- kn.showScreenPopup(PopupsKeyboardShortcutsHelpViewModel);
+ require('App:Knoin').showScreenPopup(require('View:Popup:KeyboardShortcutsHelp'));
};
AbstractSystemDropDownViewModel.prototype.addAccountClick = function ()
{
if (this.capaAdditionalAccounts)
{
- kn.showScreenPopup(PopupsAddAccountViewModel);
+ require('App:Knoin').showScreenPopup(require('View:Popup:AddAccount'));
}
};
AbstractSystemDropDownViewModel.prototype.logoutClick = function ()
{
- var App = require('../Apps/RainLoopApp.js');
Remote.logout(function () {
if (window.__rlah_clear)
{
window.__rlah_clear();
}
- App.loginAndLogoutReload(true, AppSettings.settingsGet('ParentEmail') && 0 < AppSettings.settingsGet('ParentEmail').length);
+ require('App:RainLoop').loginAndLogoutReload(true,
+ Settings.settingsGet('ParentEmail') && 0 < Settings.settingsGet('ParentEmail').length);
});
};
@@ -16135,7 +16149,7 @@ module.exports = window;
key('shift+/', [Enums.KeyState.MessageList, Enums.KeyState.MessageView, Enums.KeyState.Settings], function () {
if (self.viewModelVisibility())
{
- kn.showScreenPopup(PopupsKeyboardShortcutsHelpViewModel);
+ require('App:Knoin').showScreenPopup(require('View:Popup:KeyboardShortcutsHelp'));
return false;
}
});
@@ -16144,7 +16158,7 @@ module.exports = window;
module.exports = AbstractSystemDropDownViewModel;
}(module, require));
-},{"../Apps/RainLoopApp.js":3,"../Storages/AppSettings.js":68,"../Storages/WebMailAjaxRemoteStorage.js":72,"../Storages/WebMailDataStorage.js":74,"../ViewModels/Popups/PopupsKeyboardShortcutsHelpViewModel.js":94,"Enums":7,"KnoinAbstractViewModel":36,"LinkBuilder":10,"Utils":14,"_":31,"key":27,"kn":33,"ko":28,"window":32}],76:[function(require,module,exports){
+},{"App:Knoin":33,"App:RainLoop":3,"Enums":7,"Knoin:AbstractViewModel":36,"LinkBuilder":11,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,"Storage:Settings":75,"Utils":14,"View:Popup:AddAccount":83,"View:Popup:KeyboardShortcutsHelp":95,"_":31,"key":27,"ko":28,"window":32}],78:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -16161,14 +16175,12 @@ module.exports = window;
Enums = require('Enums'),
LinkBuilder = require('LinkBuilder'),
- AppSettings = require('../Storages/AppSettings.js'),
- Data = require('../Storages/WebMailDataStorage.js'),
- Remote = require('../Storages/WebMailAjaxRemoteStorage.js'),
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel'),
-
- PopupsLanguagesViewModel = require('../ViewModels/Popups/PopupsLanguagesViewModel.js')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -16189,9 +16201,9 @@ module.exports = window;
this.additionalCode.visibility = ko.observable(false);
this.additionalCodeSignMe = ko.observable(false);
- this.logoImg = Utils.trim(AppSettings.settingsGet('LoginLogo'));
- this.loginDescription = Utils.trim(AppSettings.settingsGet('LoginDescription'));
- this.logoCss = Utils.trim(AppSettings.settingsGet('LoginCss'));
+ this.logoImg = Utils.trim(Settings.settingsGet('LoginLogo'));
+ this.loginDescription = Utils.trim(Settings.settingsGet('LoginDescription'));
+ this.logoCss = Utils.trim(Settings.settingsGet('LoginCss'));
this.emailError = ko.observable(false);
this.passwordError = ko.observable(false);
@@ -16280,8 +16292,7 @@ module.exports = window;
}
else
{
- var App = require('../Apps/RainLoopApp.js');
- App.loginAndLogoutReload();
+ require('App:RainLoop').loginAndLogoutReload();
}
}
else if (oData.ErrorCode)
@@ -16314,7 +16325,7 @@ module.exports = window;
}, this)
;
- if (!!AppSettings.settingsGet('UseRsaEncryption') && Utils.rsaEncode.supported)
+ if (!!Settings.settingsGet('UseRsaEncryption') && Utils.rsaEncode.supported)
{
Remote.getPublicKey(_.bind(function (sResult, oData) {
@@ -16416,7 +16427,7 @@ module.exports = window;
this.emailFocus(true);
}
- if (AppSettings.settingsGet('UserLanguage'))
+ if (Settings.settingsGet('UserLanguage'))
{
$.cookie('rllang', Data.language(), {'expires': 30});
}
@@ -16434,15 +16445,13 @@ module.exports = window;
{
var
self = this,
- sJsHash = AppSettings.settingsGet('JsHash'),
+ sJsHash = Settings.settingsGet('JsHash'),
fSocial = function (iErrorCode) {
iErrorCode = Utils.pInt(iErrorCode);
if (0 === iErrorCode)
{
self.submitRequest(true);
-
- var App = require('../Apps/RainLoopApp.js');
- App.loginAndLogoutReload();
+ require('App:RainLoop').loginAndLogoutReload();
}
else
{
@@ -16451,11 +16460,11 @@ module.exports = window;
}
;
- this.facebookLoginEnabled(!!AppSettings.settingsGet('AllowFacebookSocial'));
- this.twitterLoginEnabled(!!AppSettings.settingsGet('AllowTwitterSocial'));
- this.googleLoginEnabled(!!AppSettings.settingsGet('AllowGoogleSocial'));
+ this.facebookLoginEnabled(!!Settings.settingsGet('AllowFacebookSocial'));
+ this.twitterLoginEnabled(!!Settings.settingsGet('AllowTwitterSocial'));
+ this.googleLoginEnabled(!!Settings.settingsGet('AllowGoogleSocial'));
- switch ((AppSettings.settingsGet('SignMe') || 'unused').toLowerCase())
+ switch ((Settings.settingsGet('SignMe') || 'unused').toLowerCase())
{
case Enums.LoginSignMeTypeAsString.DefaultOff:
this.signMeType(Enums.LoginSignMeType.DefaultOff);
@@ -16514,13 +16523,13 @@ module.exports = window;
LoginViewModel.prototype.selectLanguage = function ()
{
- kn.showScreenPopup(PopupsLanguagesViewModel);
+ kn.showScreenPopup(require('View:Popup:Languages'));
};
module.exports = LoginViewModel;
}(module, require));
-},{"$":26,"../Apps/RainLoopApp.js":3,"../Storages/AppSettings.js":68,"../Storages/WebMailAjaxRemoteStorage.js":72,"../Storages/WebMailDataStorage.js":74,"../ViewModels/Popups/PopupsLanguagesViewModel.js":95,"Enums":7,"KnoinAbstractViewModel":36,"LinkBuilder":10,"Utils":14,"_":31,"kn":33,"ko":28,"window":32}],77:[function(require,module,exports){
+},{"$":26,"App:Knoin":33,"App:RainLoop":3,"Enums":7,"Knoin:AbstractViewModel":36,"LinkBuilder":11,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,"Storage:Settings":75,"Utils":14,"View:Popup:Languages":96,"_":31,"ko":28,"window":32}],79:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -16539,16 +16548,12 @@ module.exports = window;
Globals = require('Globals'),
LinkBuilder = require('LinkBuilder'),
- AppSettings = require('../Storages/AppSettings.js'),
- Cache = require('../Storages/WebMailCacheStorage.js'),
- Data = require('../Storages/WebMailDataStorage.js'),
+ Settings = require('Storage:Settings'),
+ Cache = require('Storage:RainLoop:Cache'),
+ Data = require('Storage:RainLoop:Data'),
- PopupsComposeViewModel = require('./Popups/PopupsComposeViewModel.js'),
- PopupsFolderCreateViewModel = require('./Popups/PopupsFolderCreateViewModel.js'),
- PopupsContactsViewModel = require('./Popups/PopupsContactsViewModel.js'),
-
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -16571,7 +16576,7 @@ module.exports = window;
this.iDropOverTimer = 0;
- this.allowContacts = !!AppSettings.settingsGet('ContactsIsAllowed');
+ this.allowContacts = !!Settings.settingsGet('ContactsIsAllowed');
kn.constructorEnd(this);
}
@@ -16583,10 +16588,7 @@ module.exports = window;
this.oContentVisible = $('.b-content', oDom);
this.oContentScrollable = $('.content', this.oContentVisible);
- var
- self = this,
- App = require('../Apps/RainLoopApp.js')
- ;
+ var self = this;
oDom
.on('click', '.b-folders .e-item .e-link .e-collapsed-sign', function (oEvent) {
@@ -16599,7 +16601,7 @@ module.exports = window;
if (oFolder && oEvent)
{
bCollapsed = oFolder.collapsed();
- App.setExpandedFolder(oFolder.fullNameHash, bCollapsed);
+ require('App:RainLoop').setExpandedFolder(oFolder.fullNameHash, bCollapsed);
oFolder.collapsed(!bCollapsed);
oEvent.preventDefault();
@@ -16682,7 +16684,7 @@ module.exports = window;
if (oFolder)
{
bCollapsed = oFolder.collapsed();
- App.setExpandedFolder(oFolder.fullNameHash, bCollapsed);
+ require('App:RainLoop').setExpandedFolder(oFolder.fullNameHash, bCollapsed);
oFolder.collapsed(!bCollapsed);
}
}
@@ -16709,10 +16711,9 @@ module.exports = window;
window.clearTimeout(this.iDropOverTimer);
if (oFolder && oFolder.collapsed())
{
- var App = require('../Apps/RainLoopApp.js');
this.iDropOverTimer = window.setTimeout(function () {
oFolder.collapsed(false);
- App.setExpandedFolder(oFolder.fullNameHash, true);
+ require('App:RainLoop').setExpandedFolder(oFolder.fullNameHash, true);
Utils.windowResize();
}, 500);
}
@@ -16765,7 +16766,6 @@ module.exports = window;
if (oToFolder && oUi && oUi.helper)
{
var
- App = require('../Apps/RainLoopApp.js'),
sFromFolderFullNameRaw = oUi.helper.data('rl-folder'),
bCopy = $html.hasClass('rl-ctrl-key-pressed'),
aUids = oUi.helper.data('rl-uids')
@@ -16773,19 +16773,19 @@ module.exports = window;
if (Utils.isNormal(sFromFolderFullNameRaw) && '' !== sFromFolderFullNameRaw && Utils.isArray(aUids))
{
- App.moveMessagesToFolder(sFromFolderFullNameRaw, aUids, oToFolder.fullNameRaw, bCopy);
+ require('App:RainLoop').moveMessagesToFolder(sFromFolderFullNameRaw, aUids, oToFolder.fullNameRaw, bCopy);
}
}
};
MailBoxFolderListViewModel.prototype.composeClick = function ()
{
- kn.showScreenPopup(PopupsComposeViewModel);
+ kn.showScreenPopup(require('View:Popup:Compose'));
};
MailBoxFolderListViewModel.prototype.createFolder = function ()
{
- kn.showScreenPopup(PopupsFolderCreateViewModel);
+ kn.showScreenPopup(require('View:Popup:FolderCreate'));
};
MailBoxFolderListViewModel.prototype.configureFolders = function ()
@@ -16797,7 +16797,7 @@ module.exports = window;
{
if (this.allowContacts)
{
- kn.showScreenPopup(PopupsContactsViewModel);
+ kn.showScreenPopup(require('View:Popup:Contacts'));
}
};
@@ -16805,7 +16805,7 @@ module.exports = window;
}(module, require));
-},{"$":26,"$html":17,"../Apps/RainLoopApp.js":3,"../Storages/AppSettings.js":68,"../Storages/WebMailCacheStorage.js":73,"../Storages/WebMailDataStorage.js":74,"./Popups/PopupsComposeViewModel.js":86,"./Popups/PopupsContactsViewModel.js":87,"./Popups/PopupsFolderCreateViewModel.js":90,"Enums":7,"Globals":9,"KnoinAbstractViewModel":36,"LinkBuilder":10,"Utils":14,"key":27,"kn":33,"ko":28,"window":32}],78:[function(require,module,exports){
+},{"$":26,"$html":17,"App:Knoin":33,"App:RainLoop":3,"Enums":7,"Globals":9,"Knoin:AbstractViewModel":36,"LinkBuilder":11,"Storage:RainLoop:Cache":69,"Storage:RainLoop:Data":70,"Storage:Settings":75,"Utils":14,"View:Popup:Compose":88,"View:Popup:Contacts":89,"View:Popup:FolderCreate":92,"key":27,"ko":28,"window":32}],80:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -16828,17 +16828,13 @@ module.exports = window;
Events = require('Events'),
Selector = require('Selector'),
- AppSettings = require('../Storages/AppSettings.js'),
- Cache = require('../Storages/WebMailCacheStorage.js'),
- Data = require('../Storages/WebMailDataStorage.js'),
- Remote = require('../Storages/WebMailAjaxRemoteStorage.js'),
+ Settings = require('Storage:Settings'),
+ Cache = require('Storage:RainLoop:Cache'),
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel'),
-
- PopupsComposeViewModel = require('./Popups/PopupsComposeViewModel.js'),
- PopupsAdvancedSearchViewModel = require('./Popups/PopupsAdvancedSearchViewModel.js'),
- PopupsFolderClearViewModel = require('./Popups/PopupsFolderClearViewModel.js')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -16847,15 +16843,13 @@ module.exports = window;
*/
function MailBoxMessageListViewModel()
{
- var App = require('../Apps/RainLoopApp.js');
-
KnoinAbstractViewModel.call(this, 'Right', 'MailMessageList');
this.sLastUid = null;
this.bPrefetch = false;
this.emptySubjectValue = '';
- this.hideDangerousActions = !!AppSettings.settingsGet('HideDangerousActions');
+ this.hideDangerousActions = !!Settings.settingsGet('HideDangerousActions');
this.popupVisibility = Globals.popupVisibility;
@@ -16983,39 +16977,40 @@ module.exports = window;
this.canBeMoved = this.hasCheckedOrSelectedLines;
this.clearCommand = Utils.createCommand(this, function () {
- kn.showScreenPopup(PopupsFolderClearViewModel, [Data.currentFolder()]);
+ kn.showScreenPopup(require('View:Popup:FolderClear'), [Data.currentFolder()]);
});
this.multyForwardCommand = Utils.createCommand(this, function () {
- kn.showScreenPopup(PopupsComposeViewModel, [Enums.ComposeType.ForwardAsAttachment, Data.messageListCheckedOrSelected()]);
+ kn.showScreenPopup(require('View:Popup:Compose'), [
+ Enums.ComposeType.ForwardAsAttachment, Data.messageListCheckedOrSelected()]);
}, this.canBeMoved);
this.deleteWithoutMoveCommand = Utils.createCommand(this, function () {
- App.deleteMessagesFromFolder(Enums.FolderType.Trash,
+ require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.Trash,
Data.currentFolderFullNameRaw(),
Data.messageListCheckedOrSelectedUidsWithSubMails(), false);
}, this.canBeMoved);
this.deleteCommand = Utils.createCommand(this, function () {
- App.deleteMessagesFromFolder(Enums.FolderType.Trash,
+ require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.Trash,
Data.currentFolderFullNameRaw(),
Data.messageListCheckedOrSelectedUidsWithSubMails(), true);
}, this.canBeMoved);
this.archiveCommand = Utils.createCommand(this, function () {
- App.deleteMessagesFromFolder(Enums.FolderType.Archive,
+ require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.Archive,
Data.currentFolderFullNameRaw(),
Data.messageListCheckedOrSelectedUidsWithSubMails(), true);
}, this.canBeMoved);
this.spamCommand = Utils.createCommand(this, function () {
- App.deleteMessagesFromFolder(Enums.FolderType.Spam,
+ require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.Spam,
Data.currentFolderFullNameRaw(),
Data.messageListCheckedOrSelectedUidsWithSubMails(), true);
}, this.canBeMoved);
this.notSpamCommand = Utils.createCommand(this, function () {
- App.deleteMessagesFromFolder(Enums.FolderType.NotSpam,
+ require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.NotSpam,
Data.currentFolderFullNameRaw(),
Data.messageListCheckedOrSelectedUidsWithSubMails(), true);
}, this.canBeMoved);
@@ -17025,7 +17020,7 @@ module.exports = window;
this.reloadCommand = Utils.createCommand(this, function () {
if (!Data.messageListCompleteLoadingThrottle())
{
- App.reloadMessageList(false, true);
+ require('App:RainLoop').reloadMessageList(false, true);
}
});
@@ -17109,14 +17104,14 @@ module.exports = window;
/**
* @param {string} sToFolderFullNameRaw
+ * @param {boolean} bCopy
* @return {boolean}
*/
MailBoxMessageListViewModel.prototype.moveSelectedMessagesToFolder = function (sToFolderFullNameRaw, bCopy)
{
if (this.canBeMoved())
{
- var App = require('../Apps/RainLoopApp.js');
- App.moveMessagesToFolder(
+ require('App:RainLoop').moveMessagesToFolder(
Data.currentFolderFullNameRaw(),
Data.messageListCheckedOrSelectedUidsWithSubMails(), sToFolderFullNameRaw, bCopy);
}
@@ -17203,8 +17198,7 @@ module.exports = window;
var
aUids = [],
oFolder = null,
- iAlreadyUnread = 0,
- App = require('../Apps/RainLoopApp.js')
+ iAlreadyUnread = 0
;
if (Utils.isUnd(aMessages))
@@ -17272,7 +17266,7 @@ module.exports = window;
break;
}
- App.reloadFlagsCurrentMessageListAndMessageFromCache();
+ require('App:RainLoop').reloadFlagsCurrentMessageListAndMessageFromCache();
}
};
@@ -17284,8 +17278,7 @@ module.exports = window;
{
var
oFolder = null,
- aMessages = Data.messageList(),
- App = require('../Apps/RainLoopApp.js')
+ aMessages = Data.messageList()
;
if ('' !== sFolderFullNameRaw)
@@ -17324,7 +17317,7 @@ module.exports = window;
break;
}
- App.reloadFlagsCurrentMessageListAndMessageFromCache();
+ require('App:RainLoop').reloadFlagsCurrentMessageListAndMessageFromCache();
}
}
};
@@ -17437,10 +17430,7 @@ module.exports = window;
MailBoxMessageListViewModel.prototype.onBuild = function (oDom)
{
- var
- self = this,
- App = require('../Apps/RainLoopApp.js')
- ;
+ var self = this;
this.oContentVisible = $('.b-content', oDom);
this.oContentScrollable = $('.content', this.oContentVisible);
@@ -17471,7 +17461,7 @@ module.exports = window;
oMessage.lastInCollapsedThreadLoading(true);
oMessage.lastInCollapsedThread(!oMessage.lastInCollapsedThread());
- App.reloadMessageList();
+ require('App:RainLoop').reloadMessageList();
}
return false;
@@ -17508,7 +17498,7 @@ module.exports = window;
this.initUploaderForAppend();
this.initShortcuts();
- if (!Globals.bMobileDevice && AppSettings.capa(Enums.Capa.Prefetch) && ifvisible)
+ if (!Globals.bMobileDevice && Settings.capa(Enums.Capa.Prefetch) && ifvisible)
{
ifvisible.setIdleDuration(10);
@@ -17567,7 +17557,7 @@ module.exports = window;
// write/compose (open compose popup)
key('w,c', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
- kn.showScreenPopup(PopupsComposeViewModel);
+ kn.showScreenPopup(require('View:Popup:Compose'));
return false;
});
@@ -17677,12 +17667,12 @@ module.exports = window;
MailBoxMessageListViewModel.prototype.composeClick = function ()
{
- kn.showScreenPopup(PopupsComposeViewModel);
+ kn.showScreenPopup(require('View:Popup:Compose'));
};
MailBoxMessageListViewModel.prototype.advancedSearchClick = function ()
{
- kn.showScreenPopup(PopupsAdvancedSearchViewModel);
+ kn.showScreenPopup(require('View:Popup:AdvancedSearch'));
};
MailBoxMessageListViewModel.prototype.quotaTooltip = function ()
@@ -17696,7 +17686,7 @@ module.exports = window;
MailBoxMessageListViewModel.prototype.initUploaderForAppend = function ()
{
- if (!AppSettings.settingsGet('AllowAppendMessage') || !this.dragOverArea())
+ if (!Settings.settingsGet('AllowAppendMessage') || !this.dragOverArea())
{
return false;
}
@@ -17741,7 +17731,7 @@ module.exports = window;
return false;
}, this))
.on('onComplete', _.bind(function () {
- require('../Apps/RainLoopApp.js').reloadMessageList(true, true);
+ require('App:RainLoop').reloadMessageList(true, true);
}, this))
;
@@ -17752,7 +17742,7 @@ module.exports = window;
}(module, require));
-},{"$":26,"../Apps/RainLoopApp.js":3,"../Storages/AppSettings.js":68,"../Storages/WebMailAjaxRemoteStorage.js":72,"../Storages/WebMailCacheStorage.js":73,"../Storages/WebMailDataStorage.js":74,"./Popups/PopupsAdvancedSearchViewModel.js":83,"./Popups/PopupsComposeViewModel.js":86,"./Popups/PopupsFolderClearViewModel.js":89,"Consts":6,"Enums":7,"Events":8,"Globals":9,"Jua":21,"KnoinAbstractViewModel":36,"LinkBuilder":10,"Selector":13,"Utils":14,"_":31,"ifvisible":25,"key":27,"kn":33,"ko":28}],79:[function(require,module,exports){
+},{"$":26,"App:Knoin":33,"App:RainLoop":3,"Consts":6,"Enums":7,"Events":8,"Globals":9,"Jua":21,"Knoin:AbstractViewModel":36,"LinkBuilder":11,"Selector":13,"Storage:RainLoop:Cache":69,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,"Storage:Settings":75,"Utils":14,"View:Popup:AdvancedSearch":85,"View:Popup:Compose":88,"View:Popup:FolderClear":91,"_":31,"ifvisible":25,"key":27,"ko":28}],81:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -17771,14 +17761,12 @@ module.exports = window;
Utils = require('Utils'),
Events = require('Events'),
- Cache = require('../Storages/WebMailCacheStorage.js'),
- Data = require('../Storages/WebMailDataStorage.js'),
- Remote = require('../Storages/WebMailAjaxRemoteStorage.js'),
+ Cache = require('Storage:RainLoop:Cache'),
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote'),
- PopupsComposeViewModel = require('./Popups/PopupsComposeViewModel.js'),
-
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -17792,7 +17780,6 @@ module.exports = window;
var
self = this,
sLastEmail = '',
- App = require('../Apps/RainLoopApp.js'),
createCommandHelper = function (sType) {
return Utils.createCommand(self, function () {
this.replyOrforward(sType);
@@ -17857,7 +17844,7 @@ module.exports = window;
this.deleteCommand = Utils.createCommand(this, function () {
if (this.message())
{
- App.deleteMessagesFromFolder(Enums.FolderType.Trash,
+ require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.Trash,
this.message().folderFullNameRaw,
[this.message().uid], true);
}
@@ -17866,7 +17853,7 @@ module.exports = window;
this.deleteWithoutMoveCommand = Utils.createCommand(this, function () {
if (this.message())
{
- App.deleteMessagesFromFolder(Enums.FolderType.Trash,
+ require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.Trash,
Data.currentFolderFullNameRaw(),
[this.message().uid], false);
}
@@ -17875,7 +17862,7 @@ module.exports = window;
this.archiveCommand = Utils.createCommand(this, function () {
if (this.message())
{
- App.deleteMessagesFromFolder(Enums.FolderType.Archive,
+ require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.Archive,
this.message().folderFullNameRaw,
[this.message().uid], true);
}
@@ -17884,7 +17871,7 @@ module.exports = window;
this.spamCommand = Utils.createCommand(this, function () {
if (this.message())
{
- App.deleteMessagesFromFolder(Enums.FolderType.Spam,
+ require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.Spam,
this.message().folderFullNameRaw,
[this.message().uid], true);
}
@@ -17893,7 +17880,7 @@ module.exports = window;
this.notSpamCommand = Utils.createCommand(this, function () {
if (this.message())
{
- App.deleteMessagesFromFolder(Enums.FolderType.NotSpam,
+ require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.NotSpam,
this.message().folderFullNameRaw,
[this.message().uid], true);
}
@@ -18091,16 +18078,12 @@ module.exports = window;
*/
MailBoxMessageViewViewModel.prototype.replyOrforward = function (sType)
{
- kn.showScreenPopup(PopupsComposeViewModel, [sType, Data.message()]);
+ kn.showScreenPopup(require('View:Popup:Compose'), [sType, Data.message()]);
};
MailBoxMessageViewViewModel.prototype.onBuild = function (oDom)
{
- var
- self = this,
- App = require('../Apps/RainLoopApp.js')
- ;
-
+ var self = this;
this.fullScreenMode.subscribe(function (bValue) {
if (bValue)
{
@@ -18137,7 +18120,7 @@ module.exports = window;
})
.on('click', 'a', function (oEvent) {
// setup maito protocol
- return !(!!oEvent && 3 !== oEvent['which'] && App.mailToHelper($(this).attr('href')));
+ return !(!!oEvent && 3 !== oEvent['which'] && require('App:RainLoop').mailToHelper($(this).attr('href')));
})
.on('click', '.attachmentsPlace .attachmentPreview', function (oEvent) {
if (oEvent && oEvent.stopPropagation)
@@ -18153,7 +18136,7 @@ module.exports = window;
if (oAttachment && oAttachment.download)
{
- App.download(oAttachment.linkDownload());
+ require('App:RainLoop').download(oAttachment.linkDownload());
}
})
;
@@ -18390,14 +18373,14 @@ module.exports = window;
MailBoxMessageViewViewModel.prototype.composeClick = function ()
{
- kn.showScreenPopup(PopupsComposeViewModel);
+ kn.showScreenPopup(require('View:Popup:Compose'));
};
MailBoxMessageViewViewModel.prototype.editMessage = function ()
{
if (Data.message())
{
- kn.showScreenPopup(PopupsComposeViewModel, [Enums.ComposeType.Draft, Data.message()]);
+ kn.showScreenPopup(require('View:Popup:Compose'), [Enums.ComposeType.Draft, Data.message()]);
}
};
@@ -18468,15 +18451,14 @@ module.exports = window;
Cache.storeMessageFlagsToCache(oMessage);
- var App = require('../Apps/RainLoopApp.js');
- App.reloadFlagsCurrentMessageListAndMessageFromCache();
+ require('App:RainLoop').reloadFlagsCurrentMessageListAndMessageFromCache();
}
};
module.exports = MailBoxMessageViewViewModel;
}(module, require));
-},{"$":26,"$html":17,"../Apps/RainLoopApp.js":3,"../Storages/WebMailAjaxRemoteStorage.js":72,"../Storages/WebMailCacheStorage.js":73,"../Storages/WebMailDataStorage.js":74,"./Popups/PopupsComposeViewModel.js":86,"Consts":6,"Enums":7,"Events":8,"Globals":9,"KnoinAbstractViewModel":36,"Utils":14,"key":27,"kn":33,"ko":28}],80:[function(require,module,exports){
+},{"$":26,"$html":17,"App:Knoin":33,"App:RainLoop":3,"Consts":6,"Enums":7,"Events":8,"Globals":9,"Knoin:AbstractViewModel":36,"Storage:RainLoop:Cache":69,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,"Utils":14,"View:Popup:Compose":88,"key":27,"ko":28}],82:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -18484,8 +18466,8 @@ module.exports = window;
'use strict';
var
- kn = require('kn'),
- AbstractSystemDropDownViewModel = require('./AbstractSystemDropDownViewModel.js')
+ kn = require('App:Knoin'),
+ AbstractSystemDropDownViewModel = require('View:RainLoop:AbstractSystemDropDown')
;
/**
@@ -18504,7 +18486,7 @@ module.exports = window;
}(module, require));
-},{"./AbstractSystemDropDownViewModel.js":75,"kn":33}],81:[function(require,module,exports){
+},{"App:Knoin":33,"View:RainLoop:AbstractSystemDropDown":77}],83:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -18518,10 +18500,10 @@ module.exports = window;
Enums = require('Enums'),
Utils = require('Utils'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
+ Remote = require('Storage:RainLoop:Remote'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -18532,8 +18514,6 @@ module.exports = window;
{
KnoinAbstractViewModel.call(this, 'Popups', 'PopupsAddAccount');
- var App = require('../../Apps/RainLoopApp.js');
-
this.email = ko.observable('');
this.password = ko.observable('');
@@ -18572,7 +18552,7 @@ module.exports = window;
{
if (oData.Result)
{
- App.accountsAndIdentities();
+ require('App:RainLoop').accountsAndIdentities();
this.cancelCommand();
}
else if (oData.ErrorCode)
@@ -18623,7 +18603,7 @@ module.exports = window;
module.exports = PopupsAddAccountViewModel;
}(module, require));
-},{"../../Apps/RainLoopApp.js":3,"../../Storages/WebMailAjaxRemoteStorage.js":72,"Enums":7,"KnoinAbstractViewModel":36,"Utils":14,"_":31,"kn":33,"ko":28}],82:[function(require,module,exports){
+},{"App:Knoin":33,"App:RainLoop":3,"Enums":7,"Knoin:AbstractViewModel":36,"Storage:RainLoop:Remote":74,"Utils":14,"_":31,"ko":28}],84:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -18635,10 +18615,10 @@ module.exports = window;
Utils = require('Utils'),
- Data = require('../../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -18649,8 +18629,6 @@ module.exports = window;
{
KnoinAbstractViewModel.call(this, 'Popups', 'PopupsAddOpenPgpKey');
- var App = require('../../Apps/RainLoopApp.js');
-
this.key = ko.observable('');
this.key.error = ko.observable(false);
this.key.focus = ko.observable(false);
@@ -18705,7 +18683,7 @@ module.exports = window;
oOpenpgpKeyring.store();
- App.reloadOpenPgpKeys();
+ require('App:RainLoop').reloadOpenPgpKeys();
Utils.delegateRun(this, 'cancelCommand');
return true;
@@ -18735,7 +18713,7 @@ module.exports = window;
module.exports = PopupsAddOpenPgpKeyViewModel;
}(module, require));
-},{"../../Apps/RainLoopApp.js":3,"../../Storages/WebMailDataStorage.js":74,"KnoinAbstractViewModel":36,"Utils":14,"kn":33,"ko":28}],83:[function(require,module,exports){
+},{"App:Knoin":33,"App:RainLoop":3,"Knoin:AbstractViewModel":36,"Storage:RainLoop:Data":70,"Utils":14,"ko":28}],85:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -18748,10 +18726,10 @@ module.exports = window;
Utils = require('Utils'),
- Data = require('../../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -18893,7 +18871,7 @@ module.exports = window;
module.exports = PopupsAdvancedSearchViewModel;
}(module, require));
-},{"../../Storages/WebMailDataStorage.js":74,"KnoinAbstractViewModel":36,"Utils":14,"kn":33,"ko":28,"moment":29}],84:[function(require,module,exports){
+},{"App:Knoin":33,"Knoin:AbstractViewModel":36,"Storage:RainLoop:Data":70,"Utils":14,"ko":28,"moment":29}],86:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -18907,8 +18885,8 @@ module.exports = window;
Enums = require('Enums'),
Utils = require('Utils'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -19024,7 +19002,7 @@ module.exports = window;
module.exports = PopupsAskViewModel;
}(module, require));
-},{"Enums":7,"KnoinAbstractViewModel":36,"Utils":14,"key":27,"kn":33,"ko":28}],85:[function(require,module,exports){
+},{"App:Knoin":33,"Enums":7,"Knoin:AbstractViewModel":36,"Utils":14,"key":27,"ko":28}],87:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -19040,12 +19018,12 @@ module.exports = window;
Utils = require('Utils'),
Enums = require('Enums'),
- Data = require('../../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
- EmailModel = require('../../Models/EmailModel.js'),
+ EmailModel = require('Model:Email'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -19290,7 +19268,7 @@ module.exports = window;
module.exports = PopupsComposeOpenPgpViewModel;
}(module, require));
-},{"../../Models/EmailModel.js":43,"../../Storages/WebMailDataStorage.js":74,"Enums":7,"KnoinAbstractViewModel":36,"Utils":14,"_":31,"key":27,"kn":33,"ko":28,"window":32}],86:[function(require,module,exports){
+},{"App:Knoin":33,"Enums":7,"Knoin:AbstractViewModel":36,"Model:Email":43,"Storage:RainLoop:Data":70,"Utils":14,"_":31,"key":27,"ko":28,"window":32}],88:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -19303,7 +19281,7 @@ module.exports = window;
_ = require('_'),
ko = require('ko'),
moment = require('moment'),
- $window = require('$window'),
+ $win = require('$win'),
JSON = require('JSON'),
Jua = require('Jua'),
@@ -19313,21 +19291,17 @@ module.exports = window;
Globals = require('Globals'),
LinkBuilder = require('LinkBuilder'),
Events = require('Events'),
- NewHtmlEditorWrapper = require('NewHtmlEditorWrapper'),
+ HtmlEditor = require('HtmlEditor'),
- AppSettings = require('../../Storages/AppSettings.js'),
- Data = require('../../Storages/WebMailDataStorage.js'),
- Cache = require('../../Storages/WebMailCacheStorage.js'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:RainLoop:Data'),
+ Cache = require('Storage:RainLoop:Cache'),
+ Remote = require('Storage:RainLoop:Remote'),
- ComposeAttachmentModel = require('../../Models/ComposeAttachmentModel.js'),
+ ComposeAttachmentModel = require('Model:ComposeAttachment'),
- PopupsComposeOpenPgpViewModel = require('./PopupsComposeOpenPgpViewModel.js'),
- PopupsFolderSystemViewModel = require('./PopupsFolderSystemViewModel.js'),
- PopupsAskViewModel = require('./PopupsAskViewModel.js'),
-
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -19338,8 +19312,6 @@ module.exports = window;
{
KnoinAbstractViewModel.call(this, 'Popups', 'PopupsCompose');
- var App = require('../../Apps/RainLoopApp.js');
-
this.oEditor = null;
this.aDraftInfo = null;
this.sInReplyTo = '';
@@ -19347,7 +19319,7 @@ module.exports = window;
this.bSkipNext = false;
this.sReferences = '';
- this.bCapaAdditionalIdentities = AppSettings.capa(Enums.Capa.AdditionalIdentities);
+ this.bCapaAdditionalIdentities = Settings.capa(Enums.Capa.AdditionalIdentities);
var
self = this,
@@ -19512,7 +19484,7 @@ module.exports = window;
this.deleteCommand = Utils.createCommand(this, function () {
- App.deleteMessagesFromFolderWithoutCheck(this.draftFolder(), [this.draftUid()]);
+ require('App:RainLoop').deleteMessagesFromFolderWithoutCheck(this.draftFolder(), [this.draftUid()]);
kn.hideScreenPopup(PopupsComposeViewModel);
}, function () {
@@ -19549,7 +19521,7 @@ module.exports = window;
if ('' === sSentFolder)
{
- kn.showScreenPopup(PopupsFolderSystemViewModel, [Enums.SetSystemFoldersNotification.Sent]);
+ kn.showScreenPopup(require('View:Popup:FolderSystem'), [Enums.SetSystemFoldersNotification.Sent]);
}
else
{
@@ -19571,7 +19543,7 @@ module.exports = window;
}
Cache.setMessageFlagsToCache(this.aDraftInfo[2], this.aDraftInfo[1], aFlagsCache);
- App.reloadFlagsCurrentMessageListAndMessageFromCache();
+ require('App:RainLoop').reloadFlagsCurrentMessageListAndMessageFromCache();
Cache.setFolderHash(this.aDraftInfo[2], '');
}
}
@@ -19607,7 +19579,7 @@ module.exports = window;
if (Data.draftFolderNotEnabled())
{
- kn.showScreenPopup(PopupsFolderSystemViewModel, [Enums.SetSystemFoldersNotification.Draft]);
+ kn.showScreenPopup(require('View:Popup:FolderSystem'), [Enums.SetSystemFoldersNotification.Draft]);
}
else
{
@@ -19652,7 +19624,7 @@ module.exports = window;
this.triggerForResize();
}, this);
- this.dropboxEnabled = ko.observable(!!AppSettings.settingsGet('DropboxApiKey'));
+ this.dropboxEnabled = ko.observable(!!Settings.settingsGet('DropboxApiKey'));
this.dropboxCommand = Utils.createCommand(this, function () {
@@ -19679,7 +19651,7 @@ module.exports = window;
});
this.driveEnabled = ko.observable(Globals.bXMLHttpRequestSupported &&
- !!AppSettings.settingsGet('GoogleClientID') && !!AppSettings.settingsGet('GoogleApiKey'));
+ !!Settings.settingsGet('GoogleClientID') && !!Settings.settingsGet('GoogleApiKey'));
this.driveVisible = ko.observable(false);
@@ -19708,8 +19680,7 @@ module.exports = window;
PopupsComposeViewModel.prototype.emailsSource = function (oData, fResponse)
{
- var App = require('../../Apps/RainLoopApp.js');
- App.getAutocomplete(oData.term, function (aData) {
+ require('App:RainLoop').getAutocomplete(oData.term, function (aData) {
fResponse(_.map(aData, function (oEmailItem) {
return oEmailItem.toLine(false);
}));
@@ -19721,7 +19692,7 @@ module.exports = window;
if (this.capaOpenPGP() && this.oEditor && !this.oEditor.isHtml())
{
var self = this;
- kn.showScreenPopup(PopupsComposeOpenPgpViewModel, [
+ kn.showScreenPopup(require('View:Popup:ComposeOpenPgp'), [
function (sResult) {
self.editor(function (oEditor) {
oEditor.setPlain(sResult);
@@ -19739,7 +19710,6 @@ module.exports = window;
PopupsComposeViewModel.prototype.reloadDraftFolder = function ()
{
var
- App = require('../../Apps/RainLoopApp.js'),
sDraftFolder = Data.draftFolder()
;
@@ -19748,11 +19718,11 @@ module.exports = window;
Cache.setFolderHash(sDraftFolder, '');
if (Data.currentFolderFullNameRaw() === sDraftFolder)
{
- App.reloadMessageList(true);
+ require('App:RainLoop').reloadMessageList(true);
}
else
{
- App.folderInformation(sDraftFolder);
+ require('App:RainLoop').folderInformation(sDraftFolder);
}
}
};
@@ -20008,7 +19978,7 @@ module.exports = window;
if (!this.oEditor && this.composeEditorArea())
{
_.delay(function () {
- self.oEditor = new NewHtmlEditorWrapper(self.composeEditorArea(), null, function () {
+ self.oEditor = new HtmlEditor(self.composeEditorArea(), null, function () {
fOnInit(self.oEditor);
}, function (bHtml) {
self.isHtml(!!bHtml);
@@ -20309,7 +20279,11 @@ module.exports = window;
PopupsComposeViewModel.prototype.tryToClosePopup = function ()
{
- var self = this;
+ var
+ self = this,
+ PopupsAskViewModel = require('View:Popup:Ask')
+ ;
+
if (!kn.isPopupVisible(PopupsAskViewModel))
{
kn.showScreenPopup(PopupsAskViewModel, [Utils.i18n('POPUPS_ASK/DESC_WANT_CLOSE_THIS_WINDOW'), function () {
@@ -20353,7 +20327,7 @@ module.exports = window;
return false;
});
- $window.on('resize', function () {
+ $win.on('resize', function () {
self.triggerForResize();
});
@@ -20362,7 +20336,7 @@ module.exports = window;
oScript = window.document.createElement('script');
oScript.type = 'text/javascript';
oScript.src = 'https://www.dropbox.com/static/api/1/dropins.js';
- $(oScript).attr('id', 'dropboxjs').attr('data-app-key', AppSettings.settingsGet('DropboxApiKey'));
+ $(oScript).attr('id', 'dropboxjs').attr('data-app-key', Settings.settingsGet('DropboxApiKey'));
window.document.body.appendChild(oScript);
}
@@ -20461,7 +20435,7 @@ module.exports = window;
new window.google.picker.DocsView()
.setIncludeFolders(true)
)
- .setAppId(AppSettings.settingsGet('GoogleClientID'))
+ .setAppId(Settings.settingsGet('GoogleClientID'))
.setOAuthToken(oOauthToken.access_token)
.setCallback(_.bind(self.driveCallback, self, oOauthToken.access_token))
.enableFeature(window.google.picker.Feature.NAV_HIDDEN)
@@ -20486,7 +20460,7 @@ module.exports = window;
if (!oAuthToken)
{
window.gapi.auth.authorize({
- 'client_id': AppSettings.settingsGet('GoogleClientID'),
+ 'client_id': Settings.settingsGet('GoogleClientID'),
'scope': 'https://www.googleapis.com/auth/drive.readonly',
'immediate': true
}, function (oAuthResult) {
@@ -20501,7 +20475,7 @@ module.exports = window;
else
{
window.gapi.auth.authorize({
- 'client_id': AppSettings.settingsGet('GoogleClientID'),
+ 'client_id': Settings.settingsGet('GoogleClientID'),
'scope': 'https://www.googleapis.com/auth/drive.readonly',
'immediate': false
}, function (oAuthResult) {
@@ -20554,7 +20528,7 @@ module.exports = window;
{
var
oUploadCache = {},
- iAttachmentSizeLimit = Utils.pInt(AppSettings.settingsGet('AttachmentLimit')),
+ iAttachmentSizeLimit = Utils.pInt(Settings.settingsGet('AttachmentLimit')),
oJua = new Jua({
'action': LinkBuilder.upload(),
'name': 'uploader',
@@ -20803,7 +20777,7 @@ module.exports = window;
});
};
},
- iAttachmentSizeLimit = Utils.pInt(AppSettings.settingsGet('AttachmentLimit')),
+ iAttachmentSizeLimit = Utils.pInt(Settings.settingsGet('AttachmentLimit')),
mSize = oDropboxFile['bytes']
;
@@ -20864,7 +20838,7 @@ module.exports = window;
});
};
},
- iAttachmentSizeLimit = Utils.pInt(AppSettings.settingsGet('AttachmentLimit')),
+ iAttachmentSizeLimit = Utils.pInt(Settings.settingsGet('AttachmentLimit')),
oAttachment = null,
mSize = oDriveFile['fileSize'] ? Utils.pInt(oDriveFile['fileSize']) : 0
;
@@ -21079,7 +21053,7 @@ module.exports = window;
module.exports = PopupsComposeViewModel;
}(module, require));
-},{"$":26,"$window":18,"../../Apps/RainLoopApp.js":3,"../../Models/ComposeAttachmentModel.js":39,"../../Storages/AppSettings.js":68,"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../Storages/WebMailCacheStorage.js":73,"../../Storages/WebMailDataStorage.js":74,"./PopupsAskViewModel.js":84,"./PopupsComposeOpenPgpViewModel.js":85,"./PopupsFolderSystemViewModel.js":91,"Consts":6,"Enums":7,"Events":8,"Globals":9,"JSON":20,"Jua":21,"KnoinAbstractViewModel":36,"LinkBuilder":10,"NewHtmlEditorWrapper":11,"Utils":14,"_":31,"kn":33,"ko":28,"moment":29,"window":32}],87:[function(require,module,exports){
+},{"$":26,"$win":18,"App:Knoin":33,"App:RainLoop":3,"Consts":6,"Enums":7,"Events":8,"Globals":9,"HtmlEditor":10,"JSON":20,"Jua":21,"Knoin:AbstractViewModel":36,"LinkBuilder":11,"Model:ComposeAttachment":39,"Storage:RainLoop:Cache":69,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,"Storage:Settings":75,"Utils":14,"View:Popup:Ask":86,"View:Popup:ComposeOpenPgp":87,"View:Popup:FolderSystem":93,"_":31,"ko":28,"moment":29,"window":32}],89:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -21100,18 +21074,16 @@ module.exports = window;
LinkBuilder = require('LinkBuilder'),
Selector = require('Selector'),
- Data = require('../../Storages/WebMailDataStorage.js'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote'),
- EmailModel = require('../../Models/EmailModel.js'),
- ContactModel = require('../../Models/ContactModel.js'),
- ContactTagModel = require('../../Models/ContactTagModel.js'),
- ContactPropertyModel = require('../../Models/ContactPropertyModel.js'),
+ EmailModel = require('Model:Email'),
+ ContactModel = require('Model:Contact'),
+ ContactTagModel = require('Model:ContactTag'),
+ ContactPropertyModel = require('Model:ContactProperty'),
- PopupsComposeViewModel = require('./PopupsComposeViewModel.js'),
-
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -21362,8 +21334,8 @@ module.exports = window;
if (Utils.isNonEmptyArray(aE))
{
- kn.hideScreenPopup(PopupsContactsViewModel);
- kn.showScreenPopup(PopupsComposeViewModel, [Enums.ComposeType.Empty, null, aE]);
+ kn.hideScreenPopup(require('View:Popup:Contacts'));
+ kn.showScreenPopup(require('View:Popup:Compose'), [Enums.ComposeType.Empty, null, aE]);
}
}, function () {
@@ -21433,12 +21405,8 @@ module.exports = window;
this.syncCommand = Utils.createCommand(this, function () {
- var
- self = this,
- App = require('../../Apps/RainLoopApp.js')
- ;
-
- App.contactsSync(function (sResult, oData) {
+ var self = this;
+ require('App:RainLoop').contactsSync(function (sResult, oData) {
if (Enums.StorageResultType.Success !== sResult || !oData || !oData.Result)
{
window.alert(Utils.getNotification(
@@ -21483,8 +21451,7 @@ module.exports = window;
PopupsContactsViewModel.prototype.contactTagsSource = function (oData, fResponse)
{
- var App = require('../../Apps/RainLoopApp.js');
- App.getContactTagsAutocomplete(oData.term, function (aData) {
+ require('App:RainLoop').getContactTagsAutocomplete(oData.term, function (aData) {
fResponse(_.map(aData, function (oTagItem) {
return oTagItem.toLine(false);
}));
@@ -21569,14 +21536,12 @@ module.exports = window;
PopupsContactsViewModel.prototype.exportVcf = function ()
{
- var App = require('../../Apps/RainLoopApp.js');
- App.download(LinkBuilder.exportContactsVcf());
+ require('App:RainLoop').download(LinkBuilder.exportContactsVcf());
};
PopupsContactsViewModel.prototype.exportCsv = function ()
{
- var App = require('../../Apps/RainLoopApp.js');
- App.download(LinkBuilder.exportContactsCsv());
+ require('App:RainLoop').download(LinkBuilder.exportContactsCsv());
};
PopupsContactsViewModel.prototype.initUploader = function ()
@@ -21870,7 +21835,7 @@ module.exports = window;
module.exports = PopupsContactsViewModel;
}(module, require));
-},{"$":26,"../../Apps/RainLoopApp.js":3,"../../Models/ContactModel.js":40,"../../Models/ContactPropertyModel.js":41,"../../Models/ContactTagModel.js":42,"../../Models/EmailModel.js":43,"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../Storages/WebMailDataStorage.js":74,"./PopupsComposeViewModel.js":86,"Consts":6,"Enums":7,"Globals":9,"KnoinAbstractViewModel":36,"LinkBuilder":10,"Selector":13,"Utils":14,"_":31,"key":27,"kn":33,"ko":28,"window":32}],88:[function(require,module,exports){
+},{"$":26,"App:Knoin":33,"App:RainLoop":3,"Consts":6,"Enums":7,"Globals":9,"Knoin:AbstractViewModel":36,"LinkBuilder":11,"Model:Contact":40,"Model:ContactProperty":41,"Model:ContactTag":42,"Model:Email":43,"Selector":13,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,"Utils":14,"View:Popup:Compose":88,"View:Popup:Contacts":89,"_":31,"key":27,"ko":28,"window":32}],90:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -21883,10 +21848,10 @@ module.exports = window;
Consts = require('Consts'),
Utils = require('Utils'),
- Data = require('../../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -21923,7 +21888,7 @@ module.exports = window;
module.exports = PopupsFilterViewModel;
}(module, require));
-},{"../../Storages/WebMailDataStorage.js":74,"Consts":6,"KnoinAbstractViewModel":36,"Utils":14,"kn":33,"ko":28}],89:[function(require,module,exports){
+},{"App:Knoin":33,"Consts":6,"Knoin:AbstractViewModel":36,"Storage:RainLoop:Data":70,"Utils":14,"ko":28}],91:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -21936,12 +21901,12 @@ module.exports = window;
Enums = require('Enums'),
Utils = require('Utils'),
- Data = require('../../Storages/WebMailDataStorage.js'),
- Cache = require('../../Storages/WebMailCacheStorage.js'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
+ Cache = require('Storage:RainLoop:Cache'),
+ Remote = require('Storage:RainLoop:Remote'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -21952,8 +21917,6 @@ module.exports = window;
{
KnoinAbstractViewModel.call(this, 'Popups', 'PopupsFolderClear');
- var App = require('../../Apps/RainLoopApp.js');
-
this.selectedFolder = ko.observable(null);
this.clearingProcess = ko.observable(false);
this.clearingError = ko.observable('');
@@ -21998,7 +21961,7 @@ module.exports = window;
self.clearingProcess(false);
if (Enums.StorageResultType.Success === sResult && oData && oData.Result)
{
- App.reloadMessageList(true);
+ require('App:RainLoop').reloadMessageList(true);
self.cancelCommand();
}
else
@@ -22050,7 +22013,7 @@ module.exports = window;
}(module, require));
-},{"../../Apps/RainLoopApp.js":3,"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../Storages/WebMailCacheStorage.js":73,"../../Storages/WebMailDataStorage.js":74,"Enums":7,"KnoinAbstractViewModel":36,"Utils":14,"kn":33,"ko":28}],90:[function(require,module,exports){
+},{"App:Knoin":33,"App:RainLoop":3,"Enums":7,"Knoin:AbstractViewModel":36,"Storage:RainLoop:Cache":69,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,"Utils":14,"ko":28}],92:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -22064,11 +22027,11 @@ module.exports = window;
Consts = require('Consts'),
Utils = require('Utils'),
- Data = require('../../Storages/WebMailDataStorage.js'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -22118,7 +22081,6 @@ module.exports = window;
this.createFolder = Utils.createCommand(this, function () {
var
- App = require('../../Apps/RainLoopApp.js'),
sParentFolderName = this.selectedParentValue()
;
@@ -22133,7 +22095,7 @@ module.exports = window;
Data.foldersCreating(false);
if (Enums.StorageResultType.Success === sResult && oData && oData.Result)
{
- App.folders();
+ require('App:RainLoop').folders();
}
else
{
@@ -22183,7 +22145,7 @@ module.exports = window;
module.exports = PopupsFolderCreateViewModel;
}(module, require));
-},{"../../Apps/RainLoopApp.js":3,"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../Storages/WebMailDataStorage.js":74,"Consts":6,"Enums":7,"KnoinAbstractViewModel":36,"Utils":14,"kn":33,"ko":28}],91:[function(require,module,exports){
+},{"App:Knoin":33,"App:RainLoop":3,"Consts":6,"Enums":7,"Knoin:AbstractViewModel":36,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,"Utils":14,"ko":28}],93:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -22197,12 +22159,12 @@ module.exports = window;
Consts = require('Consts'),
Utils = require('Utils'),
- AppSettings = require('../../Storages/AppSettings.js'),
- Data = require('../../Storages/WebMailDataStorage.js'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
+ Settings = require('Storage:Settings'),
+ Data = require('Storage:RainLoop:Data'),
+ Remote = require('Storage:RainLoop:Remote'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -22241,11 +22203,11 @@ module.exports = window;
fSaveSystemFolders = _.debounce(function () {
- AppSettings.settingsSet('SentFolder', self.sentFolder());
- AppSettings.settingsSet('DraftFolder', self.draftFolder());
- AppSettings.settingsSet('SpamFolder', self.spamFolder());
- AppSettings.settingsSet('TrashFolder', self.trashFolder());
- AppSettings.settingsSet('ArchiveFolder', self.archiveFolder());
+ Settings.settingsSet('SentFolder', self.sentFolder());
+ Settings.settingsSet('DraftFolder', self.draftFolder());
+ Settings.settingsSet('SpamFolder', self.spamFolder());
+ Settings.settingsSet('TrashFolder', self.trashFolder());
+ Settings.settingsSet('ArchiveFolder', self.archiveFolder());
Remote.saveSystemFolders(Utils.emptyFunction, {
'SentFolder': self.sentFolder(),
@@ -22260,11 +22222,11 @@ module.exports = window;
fCallback = function () {
- AppSettings.settingsSet('SentFolder', self.sentFolder());
- AppSettings.settingsSet('DraftFolder', self.draftFolder());
- AppSettings.settingsSet('SpamFolder', self.spamFolder());
- AppSettings.settingsSet('TrashFolder', self.trashFolder());
- AppSettings.settingsSet('ArchiveFolder', self.archiveFolder());
+ Settings.settingsSet('SentFolder', self.sentFolder());
+ Settings.settingsSet('DraftFolder', self.draftFolder());
+ Settings.settingsSet('SpamFolder', self.spamFolder());
+ Settings.settingsSet('TrashFolder', self.trashFolder());
+ Settings.settingsSet('ArchiveFolder', self.archiveFolder());
fSaveSystemFolders();
};
@@ -22319,126 +22281,7 @@ module.exports = window;
module.exports = PopupsFolderSystemViewModel;
}(module, require));
-},{"../../Storages/AppSettings.js":68,"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../Storages/WebMailDataStorage.js":74,"Consts":6,"Enums":7,"KnoinAbstractViewModel":36,"Utils":14,"kn":33,"ko":28}],92:[function(require,module,exports){
-/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
-
-(function (module, require) {
-
- 'use strict';
-
- var
- window = require('window'),
- _ = require('_'),
- ko = require('ko'),
-
- Utils = require('Utils'),
-
- Data = require('../../Storages/WebMailDataStorage.js'),
-
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
- ;
-
- /**
- * @constructor
- * @extends KnoinAbstractViewModel
- */
- function PopupsGenerateNewOpenPgpKeyViewModel()
- {
- KnoinAbstractViewModel.call(this, 'Popups', 'PopupsGenerateNewOpenPgpKey');
-
- var App = require('../../Apps/RainLoopApp.js');
-
- this.email = ko.observable('');
- this.email.focus = ko.observable('');
- this.email.error = ko.observable(false);
-
- this.name = ko.observable('');
- this.password = ko.observable('');
- this.keyBitLength = ko.observable(2048);
-
- this.submitRequest = ko.observable(false);
-
- this.email.subscribe(function () {
- this.email.error(false);
- }, this);
-
- this.generateOpenPgpKeyCommand = Utils.createCommand(this, function () {
-
- var
- self = this,
- sUserID = '',
- mKeyPair = null,
- oOpenpgpKeyring = Data.openpgpKeyring
- ;
-
- this.email.error('' === Utils.trim(this.email()));
- if (!oOpenpgpKeyring || this.email.error())
- {
- return false;
- }
-
- sUserID = this.email();
- if ('' !== this.name())
- {
- sUserID = this.name() + ' <' + sUserID + '>';
- }
-
- this.submitRequest(true);
-
- _.delay(function () {
- // mKeyPair = window.openpgp.generateKeyPair(1, Utils.pInt(self.keyBitLength()), sUserID, Utils.trim(self.password()));
- mKeyPair = window.openpgp.generateKeyPair({
- 'userId': sUserID,
- 'numBits': Utils.pInt(self.keyBitLength()),
- 'passphrase': Utils.trim(self.password())
- });
-
- if (mKeyPair && mKeyPair.privateKeyArmored)
- {
- oOpenpgpKeyring.privateKeys.importKey(mKeyPair.privateKeyArmored);
- oOpenpgpKeyring.publicKeys.importKey(mKeyPair.publicKeyArmored);
- oOpenpgpKeyring.store();
-
- App.reloadOpenPgpKeys();
- Utils.delegateRun(self, 'cancelCommand');
- }
-
- self.submitRequest(false);
- }, 100);
-
- return true;
- });
-
- kn.constructorEnd(this);
- }
-
- kn.extendAsViewModel('PopupsGenerateNewOpenPgpKeyViewModel', PopupsGenerateNewOpenPgpKeyViewModel);
-
- PopupsGenerateNewOpenPgpKeyViewModel.prototype.clearPopup = function ()
- {
- this.name('');
- this.password('');
-
- this.email('');
- this.email.error(false);
- this.keyBitLength(2048);
- };
-
- PopupsGenerateNewOpenPgpKeyViewModel.prototype.onShow = function ()
- {
- this.clearPopup();
- };
-
- PopupsGenerateNewOpenPgpKeyViewModel.prototype.onFocus = function ()
- {
- this.email.focus(true);
- };
-
- module.exports = PopupsGenerateNewOpenPgpKeyViewModel;
-
-}(module, require));
-},{"../../Apps/RainLoopApp.js":3,"../../Storages/WebMailDataStorage.js":74,"KnoinAbstractViewModel":36,"Utils":14,"_":31,"kn":33,"ko":28,"window":32}],93:[function(require,module,exports){
+},{"App:Knoin":33,"Consts":6,"Enums":7,"Knoin:AbstractViewModel":36,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,"Storage:Settings":75,"Utils":14,"ko":28}],94:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -22450,12 +22293,12 @@ module.exports = window;
Enums = require('Enums'),
Utils = require('Utils'),
- kn = require('kn'),
+ kn = require('App:Knoin'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
- Data = require('../../Storages/WebMailDataStorage.js'),
+ Remote = require('Storage:RainLoop:Remote'),
+ Data = require('Storage:RainLoop:Data'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -22466,8 +22309,6 @@ module.exports = window;
{
KnoinAbstractViewModel.call(this, 'Popups', 'PopupsIdentity');
- var App = require('../../Apps/RainLoopApp.js');
-
this.id = '';
this.edit = ko.observable(false);
this.owner = ko.observable(false);
@@ -22526,7 +22367,7 @@ module.exports = window;
{
if (oData.Result)
{
- App.accountsAndIdentities();
+ require('App:RainLoop').accountsAndIdentities();
this.cancelCommand();
}
else if (oData.ErrorCode)
@@ -22611,7 +22452,7 @@ module.exports = window;
module.exports = PopupsIdentityViewModel;
}(module, require));
-},{"../../Apps/RainLoopApp.js":3,"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../Storages/WebMailDataStorage.js":74,"Enums":7,"KnoinAbstractViewModel":36,"Utils":14,"kn":33,"ko":28}],94:[function(require,module,exports){
+},{"App:Knoin":33,"App:RainLoop":3,"Enums":7,"Knoin:AbstractViewModel":36,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,"Utils":14,"ko":28}],95:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -22624,8 +22465,8 @@ module.exports = window;
Enums = require('Enums'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -22676,7 +22517,7 @@ module.exports = window;
module.exports = PopupsKeyboardShortcutsHelpViewModel;
}(module, require));
-},{"Enums":7,"KnoinAbstractViewModel":36,"_":31,"key":27,"kn":33}],95:[function(require,module,exports){
+},{"App:Knoin":33,"Enums":7,"Knoin:AbstractViewModel":36,"_":31,"key":27}],96:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -22689,10 +22530,10 @@ module.exports = window;
Utils = require('Utils'),
- Data = require('../../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -22758,7 +22599,124 @@ module.exports = window;
module.exports = PopupsLanguagesViewModel;
}(module, require));
-},{"../../Storages/WebMailDataStorage.js":74,"KnoinAbstractViewModel":36,"Utils":14,"_":31,"kn":33,"ko":28}],96:[function(require,module,exports){
+},{"App:Knoin":33,"Knoin:AbstractViewModel":36,"Storage:RainLoop:Data":70,"Utils":14,"_":31,"ko":28}],97:[function(require,module,exports){
+/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
+
+(function (module, require) {
+
+ 'use strict';
+
+ var
+ window = require('window'),
+ _ = require('_'),
+ ko = require('ko'),
+
+ Utils = require('Utils'),
+
+ Data = require('Storage:RainLoop:Data'),
+
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
+ ;
+
+ /**
+ * @constructor
+ * @extends KnoinAbstractViewModel
+ */
+ function PopupsNewOpenPgpKeyViewModel()
+ {
+ KnoinAbstractViewModel.call(this, 'Popups', 'PopupsNewOpenPgpKey');
+
+ this.email = ko.observable('');
+ this.email.focus = ko.observable('');
+ this.email.error = ko.observable(false);
+
+ this.name = ko.observable('');
+ this.password = ko.observable('');
+ this.keyBitLength = ko.observable(2048);
+
+ this.submitRequest = ko.observable(false);
+
+ this.email.subscribe(function () {
+ this.email.error(false);
+ }, this);
+
+ this.generateOpenPgpKeyCommand = Utils.createCommand(this, function () {
+
+ var
+ self = this,
+ sUserID = '',
+ mKeyPair = null,
+ oOpenpgpKeyring = Data.openpgpKeyring
+ ;
+
+ this.email.error('' === Utils.trim(this.email()));
+ if (!oOpenpgpKeyring || this.email.error())
+ {
+ return false;
+ }
+
+ sUserID = this.email();
+ if ('' !== this.name())
+ {
+ sUserID = this.name() + ' <' + sUserID + '>';
+ }
+
+ this.submitRequest(true);
+
+ _.delay(function () {
+ // mKeyPair = window.openpgp.generateKeyPair(1, Utils.pInt(self.keyBitLength()), sUserID, Utils.trim(self.password()));
+ mKeyPair = window.openpgp.generateKeyPair({
+ 'userId': sUserID,
+ 'numBits': Utils.pInt(self.keyBitLength()),
+ 'passphrase': Utils.trim(self.password())
+ });
+
+ if (mKeyPair && mKeyPair.privateKeyArmored)
+ {
+ oOpenpgpKeyring.privateKeys.importKey(mKeyPair.privateKeyArmored);
+ oOpenpgpKeyring.publicKeys.importKey(mKeyPair.publicKeyArmored);
+ oOpenpgpKeyring.store();
+
+ require('App:RainLoop').reloadOpenPgpKeys();
+ Utils.delegateRun(self, 'cancelCommand');
+ }
+
+ self.submitRequest(false);
+ }, 100);
+
+ return true;
+ });
+
+ kn.constructorEnd(this);
+ }
+
+ kn.extendAsViewModel('PopupsNewOpenPgpKeyViewModel', PopupsNewOpenPgpKeyViewModel);
+
+ PopupsNewOpenPgpKeyViewModel.prototype.clearPopup = function ()
+ {
+ this.name('');
+ this.password('');
+
+ this.email('');
+ this.email.error(false);
+ this.keyBitLength(2048);
+ };
+
+ PopupsNewOpenPgpKeyViewModel.prototype.onShow = function ()
+ {
+ this.clearPopup();
+ };
+
+ PopupsNewOpenPgpKeyViewModel.prototype.onFocus = function ()
+ {
+ this.email.focus(true);
+ };
+
+ module.exports = PopupsNewOpenPgpKeyViewModel;
+
+}(module, require));
+},{"App:Knoin":33,"App:RainLoop":3,"Knoin:AbstractViewModel":36,"Storage:RainLoop:Data":70,"Utils":14,"_":31,"ko":28,"window":32}],98:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -22771,10 +22729,10 @@ module.exports = window;
Enums = require('Enums'),
Utils = require('Utils'),
- Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
+ Remote = require('Storage:RainLoop:Remote'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -22834,7 +22792,7 @@ module.exports = window;
module.exports = PopupsTwoFactorTestViewModel;
}(module, require));
-},{"../../Storages/WebMailAjaxRemoteStorage.js":72,"Enums":7,"KnoinAbstractViewModel":36,"Utils":14,"kn":33,"ko":28}],97:[function(require,module,exports){
+},{"App:Knoin":33,"Enums":7,"Knoin:AbstractViewModel":36,"Storage:RainLoop:Remote":74,"Utils":14,"ko":28}],99:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -22846,8 +22804,8 @@ module.exports = window;
Utils = require('Utils'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -22893,7 +22851,7 @@ module.exports = window;
module.exports = PopupsViewOpenPgpKeyViewModel;
}(module, require));
-},{"KnoinAbstractViewModel":36,"Utils":14,"kn":33,"ko":28}],98:[function(require,module,exports){
+},{"App:Knoin":33,"Knoin:AbstractViewModel":36,"Utils":14,"ko":28}],100:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -22904,8 +22862,8 @@ module.exports = window;
LinkBuilder = require('LinkBuilder'),
Globals = require('Globals'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -22940,7 +22898,7 @@ module.exports = window;
module.exports = SettingsMenuViewModel;
}(module, require));
-},{"Globals":9,"KnoinAbstractViewModel":36,"LinkBuilder":10,"kn":33}],99:[function(require,module,exports){
+},{"App:Knoin":33,"Globals":9,"Knoin:AbstractViewModel":36,"LinkBuilder":11}],101:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -22953,10 +22911,10 @@ module.exports = window;
Enums = require('Enums'),
LinkBuilder = require('LinkBuilder'),
- Data = require('../Storages/WebMailDataStorage.js'),
+ Data = require('Storage:RainLoop:Data'),
- kn = require('kn'),
- KnoinAbstractViewModel = require('KnoinAbstractViewModel')
+ kn = require('App:Knoin'),
+ KnoinAbstractViewModel = require('Knoin:AbstractViewModel')
;
/**
@@ -22993,7 +22951,7 @@ module.exports = window;
module.exports = SettingsPaneViewModel;
}(module, require));
-},{"../Storages/WebMailDataStorage.js":74,"Enums":7,"KnoinAbstractViewModel":36,"LinkBuilder":10,"key":27,"kn":33}],100:[function(require,module,exports){
+},{"App:Knoin":33,"Enums":7,"Knoin:AbstractViewModel":36,"LinkBuilder":11,"Storage:RainLoop:Data":70,"key":27}],102:[function(require,module,exports){
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module, require) {
@@ -23001,8 +22959,8 @@ module.exports = window;
'use strict';
var
- kn = require('kn'),
- AbstractSystemDropDownViewModel = require('./AbstractSystemDropDownViewModel.js')
+ kn = require('App:Knoin'),
+ AbstractSystemDropDownViewModel = require('View:RainLoop:AbstractSystemDropDown')
;
/**
@@ -23020,4 +22978,4 @@ module.exports = window;
module.exports = SettingsSystemDropDownViewModel;
}(module, require));
-},{"./AbstractSystemDropDownViewModel.js":75,"kn":33}]},{},[1]);
+},{"App:Knoin":33,"View:RainLoop:AbstractSystemDropDown":77}]},{},[1]);
diff --git a/rainloop/v/0.0.0/static/js/app.min.js b/rainloop/v/0.0.0/static/js/app.min.js
index 822aecdd6..0afc2919d 100644
--- a/rainloop/v/0.0.0/static/js/app.min.js
+++ b/rainloop/v/0.0.0/static/js/app.min.js
@@ -1,10 +1,10 @@
-!function e(t,s,i){function o(r,a){if(!s[r]){if(!t[r]){var l="function"==typeof require&&require;if(!a&&l)return l(r,!0);if(n)return n(r,!0);var c=new Error("Cannot find module '"+r+"'");throw c.code="MODULE_NOT_FOUND",c}var u=s[r]={exports:{}};t[r][0].call(u.exports,function(e){var s=t[r][1][e];return o(s?s:e)},u,u.exports,e,t,s,i)}return s[r].exports}for(var n="function"==typeof require&&require,r=0;r').appendTo("body"),a.on("error",function(t){t&&t.originalEvent&&t.originalEvent.message&&-1===u.inArray(t.originalEvent.message,["Script error.","Uncaught Error: Error calling method on NPObject."])&&e.jsError(u.emptyFunction,t.originalEvent.message,t.originalEvent.filename,t.originalEvent.lineno,n.location&&n.location.toString?n.location.toString():"",r.attr("class"),u.microtime()-c.now)}),l.on("keydown",function(e){e&&e.ctrlKey&&r.addClass("rl-ctrl-key-pressed")}).on("keyup",function(e){e&&!e.ctrlKey&&r.removeClass("rl-ctrl-key-pressed")})}var i=t("$"),o=t("_"),n=t("window"),r=t("$html"),a=t("$window"),l=t("$doc"),c=t("Globals"),u=t("Utils"),d=t("LinkBuilder"),p=t("Events"),h=t("../Storages/AppSettings.js"),g=t("KnoinAbstractBoot");o.extend(s.prototype,g.prototype),s.prototype.remote=function(){return null},s.prototype.data=function(){return null},s.prototype.setupSettings=function(){return!0},s.prototype.download=function(e){var t=null,s=null,i=n.navigator.userAgent.toLowerCase();return i&&(i.indexOf("chrome")>-1||i.indexOf("chrome")>-1)&&(s=n.document.createElement("a"),s.href=e,n.document.createEvent&&(t=n.document.createEvent("MouseEvents"),t&&t.initEvent&&s.dispatchEvent))?(t.initEvent("click",!0,!0),s.dispatchEvent(t),!0):(c.bMobileDevice?(n.open(e,"_self"),n.focus()):this.iframe.attr("src",e),!0)},s.prototype.setTitle=function(e){e=(u.isNormal(e)&&0o;o++)g=e.Result["@Collection"][o],g&&"Object/Message"===g["@Object"]&&(m=h[o],m&&m.initByJson(g)||(m=C.newInstanceFromJson(g)),m&&(S.hasNewMessageAndRemoveFromCache(m.folderFullNameRaw,m.uid)&&5>=y&&(y++,m.newForAnimation(!0)),m.deleted(!1),t?S.initMessageFlagsFromCache(m):S.storeMessageFlagsToCache(m),m.lastInCollapsedThread(s&&-1i;i++)n=t[i],n&&(a=n.FullNameRaw,r=S.getFolderFromCacheList(a),r||(r=w.newInstanceFromJson(n),r&&(S.setFolderToCacheList(a,r),S.setFolderFullNameRaw(r.fullNameHash,a))),r&&(r.collapsed(!s.isFolderExpanded(r.fullNameHash)),n.Extended&&(n.Extended.Hash&&S.setFolderHash(r.fullNameRaw,n.Extended.Hash),d.isNormal(n.Extended.MessageCount)&&r.messageCountAll(n.Extended.MessageCount),d.isNormal(n.Extended.MessageUnseenCount)&&r.messageCountUnread(n.Extended.MessageUnseenCount)),l=n.SubFolders,l&&"Collection/FolderCollection"===l["@Object"]&&l["@Collection"]&&d.isArray(l["@Collection"])&&r.subFolders(this.folderResponseParseRec(e,l["@Collection"])),c.push(r)));return c},s.prototype.setFolders=function(e){var t=[],s=!1,i=function(e){return""===e||c.Values.UnuseOptionValue===e||null!==S.getFolderFromCacheList(e)?e:""};e&&e.Result&&"Collection/FolderCollection"===e.Result["@Object"]&&e.Result["@Collection"]&&d.isArray(e.Result["@Collection"])&&(d.isUnd(e.Result.Namespace)||(b.namespace=e.Result.Namespace),b.threading(!!f.settingsGet("UseImapThread")&&e.Result.IsThreadsSupported&&!0),t=this.folderResponseParseRec(b.namespace,e.Result["@Collection"]),b.folderList(t),e.Result.SystemFolders&&""==""+f.settingsGet("SentFolder")+f.settingsGet("DraftFolder")+f.settingsGet("SpamFolder")+f.settingsGet("TrashFolder")+f.settingsGet("ArchiveFolder")+f.settingsGet("NullFolder")&&(f.settingsSet("SentFolder",e.Result.SystemFolders[2]||null),f.settingsSet("DraftFolder",e.Result.SystemFolders[3]||null),f.settingsSet("SpamFolder",e.Result.SystemFolders[4]||null),f.settingsSet("TrashFolder",e.Result.SystemFolders[5]||null),f.settingsSet("ArchiveFolder",e.Result.SystemFolders[12]||null),s=!0),b.sentFolder(i(f.settingsGet("SentFolder"))),b.draftFolder(i(f.settingsGet("DraftFolder"))),b.spamFolder(i(f.settingsGet("SpamFolder"))),b.trashFolder(i(f.settingsGet("TrashFolder"))),b.archiveFolder(i(f.settingsGet("ArchiveFolder"))),s&&y.saveSystemFolders(d.emptyFunction,{SentFolder:b.sentFolder(),DraftFolder:b.draftFolder(),SpamFolder:b.spamFolder(),TrashFolder:b.trashFolder(),ArchiveFolder:b.archiveFolder(),NullFolder:"NullFolder"}),m.set(a.ClientSideKeyName.FoldersLashHash,e.Result.FoldersHash))},s.prototype.isFolderExpanded=function(e){var t=m.get(a.ClientSideKeyName.ExpandedFolders);return n.isArray(t)&&-1!==n.indexOf(t,e)},s.prototype.setExpandedFolder=function(e,t){var s=m.get(a.ClientSideKeyName.ExpandedFolders);n.isArray(s)||(s=[]),t?(s.push(e),s=n.uniq(s)):s=n.without(s,e),m.set(a.ClientSideKeyName.ExpandedFolders,s)},s.prototype.initLayoutResizer=function(e,t,s){var i=60,n=155,r=o(e),a=o(t),l=m.get(s)||null,c=function(e){e&&(r.css({width:""+e+"px"}),a.css({left:""+e+"px"}))},u=function(e){if(e)r.resizable("disable"),c(i);else{r.resizable("enable");var t=d.pInt(m.get(s))||n;c(t>n?t:n)}},p=function(e,t){t&&t.size&&t.size.width&&(m.set(s,t.size.width),a.css({left:""+t.size.width+"px"}))};null!==l&&c(l>n?l:n),r.resizable({helper:"ui-resizable-helper",minWidth:n,maxWidth:350,handles:"e",stop:p}),h.sub("left-panel.off",function(){u(!0)}),h.sub("left-panel.on",function(){u(!1)})},s.prototype.mailToHelper=function(e){if(e&&"mailto:"===e.toString().substr(0,7).toLowerCase()){e=e.toString().substr(7);var t={},s=null,o=e.replace(/\?.+$/,""),n=e.replace(/^[^\?]*\?/,"");return s=new v,s.parse(i.decodeURIComponent(o)),s&&s.email&&(t=d.simpleQueryParser(n),g.showScreenPopup(N,[a.ComposeType.Empty,null,[s],d.isUnd(t.subject)?null:d.pString(t.subject),d.isUnd(t.body)?null:d.plainToHtml(d.pString(t.body))])),!0}return!1},s.prototype.bootstart=function(){I.prototype.bootstart.call(this),b.populateDataOnStart();var e=this,t="",s=f.settingsGet("JsHash"),r=d.pInt(f.settingsGet("ContactsSyncInterval")),c=f.settingsGet("AllowGoogleSocial"),m=f.settingsGet("AllowFacebookSocial"),S=f.settingsGet("AllowTwitterSocial");d.initOnStartOrLangChange(function(){o.extend(!0,o.magnificPopup.defaults,{tClose:d.i18n("MAGNIFIC_POPUP/CLOSE"),tLoading:d.i18n("MAGNIFIC_POPUP/LOADING"),gallery:{tPrev:d.i18n("MAGNIFIC_POPUP/GALLERY_PREV"),tNext:d.i18n("MAGNIFIC_POPUP/GALLERY_NEXT"),tCounter:d.i18n("MAGNIFIC_POPUP/GALLERY_COUNTER")},image:{tError:d.i18n("MAGNIFIC_POPUP/IMAGE_ERROR")},ajax:{tError:d.i18n("MAGNIFIC_POPUP/AJAX_ERROR")}})},this),i.SimplePace&&(i.SimplePace.set(70),i.SimplePace.sleep()),l.leftPanelDisabled.subscribe(function(e){h.pub("left-panel."+(e?"off":"on"))}),f.settingsGet("Auth")?(this.setTitle(d.i18n("TITLES/LOADING")),this.folders(n.bind(function(t){g.hideLoading(),t?(i.$LAB&&i.crypto&&i.crypto.getRandomValues&&f.capa(a.Capa.OpenPGP)?i.$LAB.script(i.openpgp?"":p.openPgpJs()).wait(function(){i.openpgp&&(b.openpgpKeyring=new i.openpgp.Keyring,b.capaOpenPGP(!0),h.pub("openpgp.init"),e.reloadOpenPgpKeys())}):b.capaOpenPGP(!1),g.startScreens([R,L]),(c||m||S)&&e.socialUsers(!0),h.sub("interval.2m",function(){e.folderInformation("INBOX")}),h.sub("interval.2m",function(){var t=b.currentFolderFullNameRaw();"INBOX"!==t&&e.folderInformation(t)}),h.sub("interval.3m",function(){e.folderInformationMultiply()}),h.sub("interval.5m",function(){e.quota()}),h.sub("interval.10m",function(){e.folders()}),r=r>=5?r:20,r=320>=r?r:320,i.setInterval(function(){e.contactsSync()},6e4*r+5e3),n.delay(function(){e.contactsSync()},5e3),n.delay(function(){e.folderInformationMultiply(!0)},500),u.runHook("rl-start-user-screens"),h.pub("rl.bootstart-user-screens"),f.settingsGet("AccountSignMe")&&i.navigator.registerProtocolHandler&&n.delay(function(){try{i.navigator.registerProtocolHandler("mailto",i.location.protocol+"//"+i.location.host+i.location.pathname+"?mailto&to=%s",""+(f.settingsGet("Title")||"RainLoop"))}catch(t){}f.settingsGet("MailToEmail")&&e.mailToHelper(f.settingsGet("MailToEmail"))},500)):(g.startScreens([P]),u.runHook("rl-start-login-screens"),h.pub("rl.bootstart-login-screens")),i.SimplePace&&i.SimplePace.set(100),l.bMobileDevice||n.defer(function(){e.initLayoutResizer("#rl-left","#rl-right",a.ClientSideKeyName.FolderListSize)})},this))):(t=d.pString(f.settingsGet("CustomLoginLink")),t?(g.routeOff(),g.setHash(p.root(),!0),g.routeOff(),n.defer(function(){i.location.href=t})):(g.hideLoading(),g.startScreens([P]),u.runHook("rl-start-login-screens"),h.pub("rl.bootstart-login-screens"),i.SimplePace&&i.SimplePace.set(100))),c&&(i["rl_"+s+"_google_service"]=function(){b.googleActions(!0),e.socialUsers()}),m&&(i["rl_"+s+"_facebook_service"]=function(){b.facebookActions(!0),e.socialUsers()}),S&&(i["rl_"+s+"_twitter_service"]=function(){b.twitterActions(!0),e.socialUsers()}),h.sub("interval.1m",function(){l.momentTrigger(!l.momentTrigger())}),u.runHook("rl-start-screens"),h.pub("rl.bootstart-end")},e.exports=new s}(t,e)},{$:26,"../Models/AccountModel.js":37,"../Models/EmailModel.js":43,"../Models/FolderModel.js":46,"../Models/IdentityModel.js":47,"../Models/MessageModel.js":48,"../Models/OpenPgpKeyModel.js":49,"../Screens/LoginScreen.js":51,"../Screens/MailBoxScreen.js":52,"../Screens/SettingsScreen.js":53,"../Settings/App/SettingsAccounts.js":54,"../Settings/App/SettingsChangePassword.js":55,"../Settings/App/SettingsContacts.js":56,"../Settings/App/SettingsFilters.js":57,"../Settings/App/SettingsFolders.js":58,"../Settings/App/SettingsGeneral.js":59,"../Settings/App/SettingsIdentities.js":60,"../Settings/App/SettingsIdentity.js":61,"../Settings/App/SettingsOpenPGP.js":62,"../Settings/App/SettingsSecurity.js":63,"../Settings/App/SettingsSocial.js":64,"../Settings/App/SettingsThemes.js":65,"../Storages/AppSettings.js":68,"../Storages/LocalStorage.js":69,"../Storages/WebMailAjaxRemoteStorage.js":72,"../Storages/WebMailCacheStorage.js":73,"../Storages/WebMailDataStorage.js":74,"../ViewModels/Popups/PopupsAskViewModel.js":84,"../ViewModels/Popups/PopupsComposeViewModel.js":86,"./AbstractApp.js":2,Consts:6,Enums:7,Events:8,Globals:9,LinkBuilder:10,Plugins:12,Utils:14,_:31,kn:33,moment:29,window:32}],4:[function(e,t){!function(e,t){"use strict";e.exports=function(e){var s=t("window"),i=t("_"),o=t("$"),n=t("$window"),r=t("$html"),a=t("Globals"),l=t("Plugins"),c=t("Utils"),u=t("Enums"),d=t("./Models/EmailModel.js");a.__APP=e,e.setupSettings(),l.__boot=e,l.__remote=e.remote(),l.__data=e.data(),r.addClass(a.bMobileDevice?"mobile":"no-mobile"),n.keydown(c.killCtrlAandS).keyup(c.killCtrlAandS),n.unload(function(){a.bUnload=!0}),r.on("click.dropdown.data-api",function(){c.detectDropdownVisibility()}),s.rl=s.rl||{},s.rl.addHook=l.addHook,s.rl.settingsGet=l.mainSettingsGet,s.rl.remoteRequest=l.remoteRequest,s.rl.pluginSettingsGet=l.settingsGet,s.rl.createCommand=c.createCommand,s.rl.EmailModel=d,s.rl.Enums=u,s.__APP_BOOT=function(t){o(function(){s.rainloopTEMPLATES&&s.rainloopTEMPLATES[0]?(o("#rl-templates").html(s.rainloopTEMPLATES[0]),i.delay(function(){e.bootstart(),r.removeClass("no-js rl-booted-trigger").addClass("rl-booted")},50)):t(!1),s.__APP_BOOT=null})}}}(t,e)},{$:26,$html:17,$window:18,"./Models/EmailModel.js":43,Enums:7,Globals:9,Plugins:12,Utils:14,_:31,window:32}],5:[function(e,t){!function(e){"use strict";var t={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",urlsafe_encode:function(e){return t.encode(e).replace(/[+]/g,"-").replace(/[\/]/g,"_").replace(/[=]/g,".")},encode:function(e){var s,i,o,n,r,a,l,c="",u=0;for(e=t._utf8_encode(e);u>2,r=(3&s)<<4|i>>4,a=(15&i)<<2|o>>6,l=63&o,isNaN(i)?a=l=64:isNaN(o)&&(l=64),c=c+this._keyStr.charAt(n)+this._keyStr.charAt(r)+this._keyStr.charAt(a)+this._keyStr.charAt(l);return c},decode:function(e){var s,i,o,n,r,a,l,c="",u=0;for(e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");u>4,i=(15&r)<<4|a>>2,o=(3&a)<<6|l,c+=String.fromCharCode(s),64!==a&&(c+=String.fromCharCode(i)),64!==l&&(c+=String.fromCharCode(o));return t._utf8_decode(c)},_utf8_encode:function(e){e=e.replace(/\r\n/g,"\n");for(var t="",s=0,i=e.length,o=0;i>s;s++)o=e.charCodeAt(s),128>o?t+=String.fromCharCode(o):o>127&&2048>o?(t+=String.fromCharCode(o>>6|192),t+=String.fromCharCode(63&o|128)):(t+=String.fromCharCode(o>>12|224),t+=String.fromCharCode(o>>6&63|128),t+=String.fromCharCode(63&o|128));return t},_utf8_decode:function(e){for(var t="",s=0,i=0,o=0,n=0;si?(t+=String.fromCharCode(i),s++):i>191&&224>i?(o=e.charCodeAt(s+1),t+=String.fromCharCode((31&i)<<6|63&o),s+=2):(o=e.charCodeAt(s+1),n=e.charCodeAt(s+2),t+=String.fromCharCode((15&i)<<12|(63&o)<<6|63&n),s+=3);return t}};e.exports=t}(t,e)},{}],6:[function(e,t){!function(e){"use strict";var t={};t.Values={},t.DataImages={},t.Defaults={},t.Defaults.MessagesPerPage=20,t.Defaults.ContactsPerPage=50,t.Defaults.MessagesPerPageArray=[10,20,30,50,100],t.Defaults.DefaultAjaxTimeout=3e4,t.Defaults.SearchAjaxTimeout=3e5,t.Defaults.SendMessageAjaxTimeout=3e5,t.Defaults.SaveMessageAjaxTimeout=2e5,t.Defaults.ContactsSyncAjaxTimeout=2e5,t.Values.UnuseOptionValue="__UNUSE__",t.Values.ClientSideCookieIndexName="rlcsc",t.Values.ImapDefaulPort=143,t.Values.ImapDefaulSecurePort=993,t.Values.SmtpDefaulPort=25,t.Values.SmtpDefaulSecurePort=465,t.Values.MessageBodyCacheLimit=15,t.Values.AjaxErrorLimit=7,t.Values.TokenErrorLimit=10,t.DataImages.UserDotPic="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQIW2P8DwQACgAD/il4QJ8AAAAASUVORK5CYII=",t.DataImages.TranspPic="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQIW2NkAAIAAAoAAggA9GkAAAAASUVORK5CYII=",e.exports=t}(t,e)},{}],7:[function(e,t){!function(e){"use strict";var t={};t.StorageResultType={Success:"success",Abort:"abort",Error:"error",Unload:"unload"},t.State={Empty:10,Login:20,Auth:30},t.StateType={Webmail:0,Admin:1},t.Capa={Prem:"PREM",TwoFactor:"TWO_FACTOR",OpenPGP:"OPEN_PGP",Prefetch:"PREFETCH",Gravatar:"GRAVATAR",Themes:"THEMES",Filters:"FILTERS",AdditionalAccounts:"ADDITIONAL_ACCOUNTS",AdditionalIdentities:"ADDITIONAL_IDENTITIES"},t.KeyState={All:"all",None:"none",ContactList:"contact-list",MessageList:"message-list",FolderList:"folder-list",MessageView:"message-view",Compose:"compose",Settings:"settings",Menu:"menu",PopupComposeOpenPGP:"compose-open-pgp",PopupKeyboardShortcutsHelp:"popup-keyboard-shortcuts-help",PopupAsk:"popup-ask"},t.FolderType={Inbox:10,SentItems:11,Draft:12,Trash:13,Spam:14,Archive:15,NotSpam:80,User:99},t.LoginSignMeTypeAsString={DefaultOff:"defaultoff",DefaultOn:"defaulton",Unused:"unused"},t.LoginSignMeType={DefaultOff:0,DefaultOn:1,Unused:2},t.ComposeType={Empty:"empty",Reply:"reply",ReplyAll:"replyall",Forward:"forward",ForwardAsAttachment:"forward-as-attachment",Draft:"draft",EditAsNew:"editasnew"},t.UploadErrorCode={Normal:0,FileIsTooBig:1,FilePartiallyUploaded:2,FileNoUploaded:3,MissingTempFolder:4,FileOnSaveingError:5,FileType:98,Unknown:99},t.SetSystemFoldersNotification={None:0,Sent:1,Draft:2,Spam:3,Trash:4,Archive:5},t.ClientSideKeyName={FoldersLashHash:0,MessagesInboxLastHash:1,MailBoxListSize:2,ExpandedFolders:3,FolderListSize:4},t.EventKeyCode={Backspace:8,Tab:9,Enter:13,Esc:27,PageUp:33,PageDown:34,Left:37,Right:39,Up:38,Down:40,End:35,Home:36,Space:32,Insert:45,Delete:46,A:65,S:83},t.MessageSetAction={SetSeen:0,UnsetSeen:1,SetFlag:2,UnsetFlag:3},t.MessageSelectAction={All:0,None:1,Invert:2,Unseen:3,Seen:4,Flagged:5,Unflagged:6},t.DesktopNotifications={Allowed:0,NotAllowed:1,Denied:2,NotSupported:9},t.MessagePriority={Low:5,Normal:3,High:1},t.EditorDefaultType={Html:"Html",Plain:"Plain"},t.CustomThemeType={Light:"Light",Dark:"Dark"},t.ServerSecure={None:0,SSL:1,TLS:2},t.SearchDateType={All:-1,Days3:3,Days7:7,Month:30},t.EmailType={Defailt:0,Facebook:1,Google:2},t.SaveSettingsStep={Animate:-2,Idle:-1,TrueResult:1,FalseResult:0},t.InterfaceAnimation={None:"None",Normal:"Normal",Full:"Full"},t.Layout={NoPreview:0,SidePreview:1,BottomPreview:2},t.FilterConditionField={From:"From",To:"To",Recipient:"Recipient",Subject:"Subject"},t.FilterConditionType={Contains:"Contains",NotContains:"NotContains",EqualTo:"EqualTo",NotEqualTo:"NotEqualTo"},t.FiltersAction={None:"None",Move:"Move",Discard:"Discard",Forward:"Forward"},t.FilterRulesType={And:"And",Or:"Or"},t.SignedVerifyStatus={UnknownPublicKeys:-4,UnknownPrivateKey:-3,Unverified:-2,Error:-1,None:0,Success:1},t.ContactPropertyType={Unknown:0,FullName:10,FirstName:15,LastName:16,MiddleName:16,Nick:18,NamePrefix:20,NameSuffix:21,Email:30,Phone:31,Web:32,Birthday:40,Facebook:90,Skype:91,GitHub:92,Note:110,Custom:250},t.Notification={InvalidToken:101,AuthError:102,AccessError:103,ConnectionError:104,CaptchaError:105,SocialFacebookLoginAccessDisable:106,SocialTwitterLoginAccessDisable:107,SocialGoogleLoginAccessDisable:108,DomainNotAllowed:109,AccountNotAllowed:110,AccountTwoFactorAuthRequired:120,AccountTwoFactorAuthError:121,CouldNotSaveNewPassword:130,CurrentPasswordIncorrect:131,NewPasswordShort:132,NewPasswordWeak:133,NewPasswordForbidden:134,ContactsSyncError:140,CantGetMessageList:201,CantGetMessage:202,CantDeleteMessage:203,CantMoveMessage:204,CantCopyMessage:205,CantSaveMessage:301,CantSendMessage:302,InvalidRecipients:303,CantCreateFolder:400,CantRenameFolder:401,CantDeleteFolder:402,CantSubscribeFolder:403,CantUnsubscribeFolder:404,CantDeleteNonEmptyFolder:405,CantSaveSettings:501,CantSavePluginSettings:502,DomainAlreadyExists:601,CantInstallPackage:701,CantDeletePackage:702,InvalidPluginPackage:703,UnsupportedPluginPackage:704,LicensingServerIsUnavailable:710,LicensingExpired:711,LicensingBanned:712,DemoSendMessageError:750,AccountAlreadyExists:801,MailServerError:901,ClientViewError:902,InvalidInputArgument:903,UnknownNotification:999,UnknownError:999},e.exports=t
-}(t,e)},{}],8:[function(e,t){!function(e,t){"use strict";function s(){this.oSubs={}}var i=t("_"),o=t("Utils"),n=t("Plugins");s.prototype.oSubs={},s.prototype.sub=function(e,t,s){return o.isUnd(this.oSubs[e])&&(this.oSubs[e]=[]),this.oSubs[e].push([t,s]),this},s.prototype.pub=function(e,t){return n.runHook("rl-pub",[e,t]),o.isUnd(this.oSubs[e])||i.each(this.oSubs[e],function(e){e[0]&&e[0].apply(e[1]||null,t||[])}),this},e.exports=new s}(t,e)},{Plugins:12,Utils:14,_:31}],9:[function(e,t){!function(e,t){"use strict";var s={},i=t("window"),o=t("ko"),n=t("key"),r=t("$html"),a=t("Enums");s.now=(new i.Date).getTime(),s.momentTrigger=o.observable(!0),s.dropdownVisibility=o.observable(!1).extend({rateLimit:0}),s.tooltipTrigger=o.observable(!1).extend({rateLimit:0}),s.langChangeTrigger=o.observable(!0),s.useKeyboardShortcuts=o.observable(!0),s.iAjaxErrorCount=0,s.iTokenErrorCount=0,s.iMessageBodyCacheCount=0,s.bUnload=!1,s.sUserAgent=(i.navigator.userAgent||"").toLowerCase(),s.bIsiOSDevice=-11&&(i=i.replace(/[\/]+$/,""),i+="/p"+t),""!==s&&(i=i.replace(/[\/]+$/,""),i+="/"+encodeURI(s)),i},s.prototype.phpInfo=function(){return this.sServer+"Info"},s.prototype.langLink=function(e){return this.sServer+"/Lang/0/"+encodeURI(e)+"/"+this.sVersion+"/"},s.prototype.exportContactsVcf=function(){return this.sServer+"/Raw/"+this.sSpecSuffix+"/ContactsVcf/"},s.prototype.exportContactsCsv=function(){return this.sServer+"/Raw/"+this.sSpecSuffix+"/ContactsCsv/"},s.prototype.emptyContactPic=function(){return this.sStaticPrefix+"css/images/empty-contact.png"},s.prototype.sound=function(e){return this.sStaticPrefix+"sounds/"+e},s.prototype.themePreviewLink=function(e){var t="rainloop/v/"+this.sVersion+"/";return"@custom"===e.substr(-7)&&(e=o.trim(e.substring(0,e.length-7)),t=""),t+"themes/"+encodeURI(e)+"/images/preview.png"},s.prototype.notificationMailIcon=function(){return this.sStaticPrefix+"css/images/icom-message-notification.png"},s.prototype.openPgpJs=function(){return this.sStaticPrefix+"js/openpgp.min.js"},s.prototype.socialGoogle=function(){return this.sServer+"SocialGoogle"+(""!==this.sSpecSuffix?"/"+this.sSpecSuffix+"/":"")},s.prototype.socialTwitter=function(){return this.sServer+"SocialTwitter"+(""!==this.sSpecSuffix?"/"+this.sSpecSuffix+"/":"")},s.prototype.socialFacebook=function(){return this.sServer+"SocialFacebook"+(""!==this.sSpecSuffix?"/"+this.sSpecSuffix+"/":"")},e.exports=new s}(t,e)},{"../Storages/AppSettings.js":68,Utils:14,window:32}],11:[function(e,t){!function(e,t){"use strict";function s(e,t,s,i){this.editor=null,this.iBlurTimer=0,this.fOnBlur=t||null,this.fOnReady=s||null,this.fOnModeChange=i||null,this.$element=$(e),this.resize=o.throttle(o.bind(this.resize,this),100),this.init()}var i=t("window"),o=t("_"),n=t("Globals"),r=t("../Storages/AppSettings.js");s.prototype.blurTrigger=function(){if(this.fOnBlur){var e=this;i.clearTimeout(this.iBlurTimer),this.iBlurTimer=i.setTimeout(function(){e.fOnBlur()},200)}},s.prototype.focusTrigger=function(){this.fOnBlur&&i.clearTimeout(this.iBlurTimer)},s.prototype.isHtml=function(){return this.editor?"wysiwyg"===this.editor.mode:!1},s.prototype.checkDirty=function(){return this.editor?this.editor.checkDirty():!1},s.prototype.resetDirty=function(){this.editor&&this.editor.resetDirty()},s.prototype.getData=function(e){return this.editor?"plain"===this.editor.mode&&this.editor.plugins.plain&&this.editor.__plain?this.editor.__plain.getRawData():e?''+this.editor.getData()+"
":this.editor.getData():""},s.prototype.modeToggle=function(e){this.editor&&(e?"plain"===this.editor.mode&&this.editor.setMode("wysiwyg"):"wysiwyg"===this.editor.mode&&this.editor.setMode("plain"),this.resize())},s.prototype.setHtml=function(e,t){this.editor&&(this.modeToggle(!0),this.editor.setData(e),t&&this.focus())},s.prototype.setPlain=function(e,t){if(this.editor){if(this.modeToggle(!1),"plain"===this.editor.mode&&this.editor.plugins.plain&&this.editor.__plain)return this.editor.__plain.setRawData(e);this.editor.setData(e),t&&this.focus()}},s.prototype.init=function(){if(this.$element&&this.$element[0]){var e=this,t=function(){var t=n.oHtmlEditorDefaultConfig,s=r.settingsGet("Language"),o=!!r.settingsGet("AllowHtmlEditorSourceButton");o&&t.toolbarGroups&&!t.toolbarGroups.__SourceInited&&(t.toolbarGroups.__SourceInited=!0,t.toolbarGroups.push({name:"document",groups:["mode","document","doctools"]})),t.enterMode=i.CKEDITOR.ENTER_BR,t.shiftEnterMode=i.CKEDITOR.ENTER_BR,t.language=n.oHtmlEditorLangsMap[s]||"en",i.CKEDITOR.env&&(i.CKEDITOR.env.isCompatible=!0),e.editor=i.CKEDITOR.appendTo(e.$element[0],t),e.editor.on("key",function(e){return e&&e.data&&9===e.data.keyCode?!1:void 0}),e.editor.on("blur",function(){e.blurTrigger()}),e.editor.on("mode",function(){e.blurTrigger(),e.fOnModeChange&&e.fOnModeChange("plain"!==e.editor.mode)}),e.editor.on("focus",function(){e.focusTrigger()}),e.fOnReady&&e.editor.on("instanceReady",function(){e.editor.setKeystroke(i.CKEDITOR.CTRL+65,"selectAll"),e.fOnReady(),e.__resizable=!0,e.resize()})};i.CKEDITOR?t():i.__initEditor=t}},s.prototype.focus=function(){this.editor&&this.editor.focus()},s.prototype.blur=function(){this.editor&&this.editor.focusManager.blur(!0)},s.prototype.resize=function(){if(this.editor&&this.__resizable)try{this.editor.resize(this.$element.width(),this.$element.innerHeight())}catch(e){}},s.prototype.clear=function(e){this.setHtml("",e)},e.exports=s}(t,e)},{"../Storages/AppSettings.js":68,Globals:9,_:31,window:32}],12:[function(e,t){!function(e,t){"use strict";var s={__boot:null,__remote:null,__data:null},i=t("_"),o=t("Utils"),n=t("../Storages/AppSettings.js");s.oViewModelsHooks={},s.oSimpleHooks={},s.regViewModelHook=function(e,t){t&&(t.__hookName=e)},s.addHook=function(e,t){o.isFunc(t)&&(o.isArray(s.oSimpleHooks[e])||(s.oSimpleHooks[e]=[]),s.oSimpleHooks[e].push(t))},s.runHook=function(e,t){o.isArray(s.oSimpleHooks[e])&&(t=t||[],i.each(s.oSimpleHooks[e],function(e){e.apply(null,t)}))},s.mainSettingsGet=function(e){return n.settingsGet(e)},s.remoteRequest=function(e,t,i,o,n,r){s.__remote&&s.__remote.defaultRequest(e,t,i,o,n,r)},s.settingsGet=function(e,t){var s=n.settingsGet("Plugins");return s=s&&!o.isUnd(s[e])?s[e]:null,s?o.isUnd(s[t])?null:s[t]:null},e.exports=s}(t,e)},{"../Storages/AppSettings.js":68,Utils:14,_:31}],13:[function(e,t){!function(e,t){"use strict";function s(e,t,s,i,r,a){this.list=e,this.listChecked=n.computed(function(){return o.filter(this.list(),function(e){return e.checked()})},this).extend({rateLimit:0}),this.isListChecked=n.computed(function(){return 00&&-10)return o.newSelectPosition(s,r.shift),!1}})}},s.prototype.autoSelect=function(e){this.bAutoSelect=!!e},s.prototype.getItemUid=function(e){var t="",s=this.oCallbacks.onItemGetUid||null;return s&&e&&(t=s(e)),t.toString()},s.prototype.newSelectPosition=function(e,t,s){var i=0,n=10,r=!1,l=!1,c=null,u=this.list(),d=u?u.length:0,p=this.focusedItem();if(d>0)if(p){if(p)if(a.EventKeyCode.Down===e||a.EventKeyCode.Up===e||a.EventKeyCode.Insert===e||a.EventKeyCode.Space===e)o.each(u,function(t){if(!l)switch(e){case a.EventKeyCode.Up:p===t?l=!0:c=t;break;case a.EventKeyCode.Down:case a.EventKeyCode.Insert:r?(c=t,l=!0):p===t&&(r=!0)}});else if(a.EventKeyCode.Home===e||a.EventKeyCode.End===e)a.EventKeyCode.Home===e?c=u[0]:a.EventKeyCode.End===e&&(c=u[u.length-1]);else if(a.EventKeyCode.PageDown===e){for(;d>i;i++)if(p===u[i]){i+=n,i=i>d-1?d-1:i,c=u[i];break}}else if(a.EventKeyCode.PageUp===e)for(i=d;i>=0;i--)if(p===u[i]){i-=n,i=0>i?0:i,c=u[i];break}}else a.EventKeyCode.Down===e||a.EventKeyCode.Insert===e||a.EventKeyCode.Space===e||a.EventKeyCode.Home===e||a.EventKeyCode.PageUp===e?c=u[0]:(a.EventKeyCode.Up===e||a.EventKeyCode.End===e||a.EventKeyCode.PageDown===e)&&(c=u[u.length-1]);c?(this.focusedItem(c),p&&(t?(a.EventKeyCode.Up===e||a.EventKeyCode.Down===e)&&p.checked(!p.checked()):(a.EventKeyCode.Insert===e||a.EventKeyCode.Space===e)&&p.checked(!p.checked())),!this.bAutoSelect&&!s||this.isListChecked()||a.EventKeyCode.Space===e||this.selectedItem(c),this.scrollToFocused()):p&&(!t||a.EventKeyCode.Up!==e&&a.EventKeyCode.Down!==e?(a.EventKeyCode.Insert===e||a.EventKeyCode.Space===e)&&p.checked(!p.checked()):p.checked(!p.checked()),this.focusedItem(p))},s.prototype.scrollToFocused=function(){if(!this.oContentVisible||!this.oContentScrollable)return!1;var e=20,t=i(this.sItemFocusedSelector,this.oContentScrollable),s=t.position(),o=this.oContentVisible.height(),n=t.outerHeight();return s&&(s.top<0||s.top+n>o)?(this.oContentScrollable.scrollTop(s.top<0?this.oContentScrollable.scrollTop()+s.top-e:this.oContentScrollable.scrollTop()+s.top-o+n+e),!0):!1},s.prototype.scrollToTop=function(e){return this.oContentVisible&&this.oContentScrollable?(e?this.oContentScrollable.scrollTop(0):this.oContentScrollable.stop().animate({scrollTop:0},200),!0):!1},s.prototype.eventClickFunction=function(e,t){var s=this.getItemUid(e),i=0,o=0,n=null,r="",a=!1,l=!1,c=[],u=!1;if(t&&t.shiftKey&&""!==s&&""!==this.sLastUid&&s!==this.sLastUid)for(c=this.list(),u=e.checked(),i=0,o=c.length;o>i;i++)n=c[i],r=this.getItemUid(n),a=!1,(r===this.sLastUid||r===s)&&(a=!0),a&&(l=!l),(l||a)&&n.checked(u);this.sLastUid=""===s?"":s},s.prototype.actionClick=function(e,t){if(e){var s=!0,i=this.getItemUid(e);t&&(!t.shiftKey||t.ctrlKey||t.altKey?!t.ctrlKey||t.shiftKey||t.altKey||(s=!1,this.focusedItem(e),this.selectedItem()&&e!==this.selectedItem()&&this.selectedItem().checked(!0),e.checked(!e.checked())):(s=!1,""===this.sLastUid&&(this.sLastUid=i),e.checked(!e.checked()),this.eventClickFunction(e,t),this.focusedItem(e))),s&&(this.focusedItem(e),this.selectedItem(e),this.scrollToFocused())}},s.prototype.on=function(e,t){this.oCallbacks[e]=t},e.exports=s}(t,e)},{$:26,Enums:7,Utils:14,_:31,key:27,ko:28}],14:[function(e,t){!function(e,t){"use strict";var s={},i=t("$"),o=t("_"),n=t("ko"),r=t("window"),a=t("$window"),l=t("$html"),c=t("$div"),u=t("$doc"),d=t("NotificationClass"),p=t("Enums"),h=t("Consts"),g=t("Globals");s.trim=i.trim,s.inArray=i.inArray,s.isArray=o.isArray,s.isFunc=o.isFunction,s.isUnd=o.isUndefined,s.isNull=o.isNull,s.emptyFunction=function(){},s.isNormal=function(e){return!s.isUnd(e)&&!s.isNull(e)},s.windowResize=o.debounce(function(e){s.isUnd(e)?a.resize():r.setTimeout(function(){a.resize()},e)},50),s.isPosNumeric=function(e,t){return s.isNormal(e)?(s.isUnd(t)?0:!t)?/^[1-9]+[0-9]*$/.test(e.toString()):/^[0-9]*$/.test(e.toString()):!1},s.pInt=function(e,t){var i=s.isNormal(e)&&""!==e?r.parseInt(e,10):t||0;return r.isNaN(i)?t||0:i},s.pString=function(e){return s.isNormal(e)?""+e:""},s.isNonEmptyArray=function(e){return s.isArray(e)&&0o;o++)i=s[o].split("="),t[r.decodeURIComponent(i[0])]=r.decodeURIComponent(i[1]);return t},s.rsaEncode=function(e,t,i,o){if(r.crypto&&r.crypto.getRandomValues&&r.RSAKey&&t&&i&&o){var n=new r.RSAKey;if(n.setPublic(o,i),e=n.encrypt(s.fakeMd5()+":"+e+":"+s.fakeMd5()),!1!==e)return"rsa:"+t+":"+e}return!1},s.rsaEncode.supported=!!(r.crypto&&r.crypto.getRandomValues&&r.RSAKey),s.exportPath=function(e,t,i){for(var o=null,n=e.split("."),a=i||r;n.length&&(o=n.shift());)n.length||s.isUnd(t)?a=a[o]?a[o]:a[o]={}:a[o]=t},s.pImport=function(e,t,s){e[t]=s},s.pExport=function(e,t,i){return s.isUnd(e[t])?i:e[t]},s.encodeHtml=function(e){return s.isNormal(e)?e.toString().replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'"):""},s.splitPlainText=function(e,t){var i="",o="",n=e,r=0,a=0;for(t=s.isUnd(t)?100:t;n.length>t;)o=n.substring(0,t),r=o.lastIndexOf(" "),a=o.lastIndexOf("\n"),-1!==a&&(r=a),-1===r&&(r=t),i+=o.substring(0,r)+"\n",n=n.substring(r+1);return i+n},s.timeOutAction=function(){var e={};return function(t,i,o){s.isUnd(e[t])&&(e[t]=0),r.clearTimeout(e[t]),e[t]=r.setTimeout(i,o)}}(),s.timeOutActionSecond=function(){var e={};return function(t,s,i){e[t]||(e[t]=r.setTimeout(function(){s(),e[t]=0},i))}}(),s.audio=function(){var e=!1;return function(t,s){if(!1===e)if(g.bIsiOSDevice)e=null;else{var i=!1,o=!1,n=r.Audio?new r.Audio:null;n&&n.canPlayType&&n.play?(i=""!==n.canPlayType('audio/mpeg; codecs="mp3"'),i||(o=""!==n.canPlayType('audio/ogg; codecs="vorbis"')),i||o?(e=n,e.preload="none",e.loop=!1,e.autoplay=!1,e.muted=!1,e.src=i?t:s):e=null):e=null}return e}}(),s.hos=function(e,t){return e&&r.Object&&r.Object.hasOwnProperty?r.Object.hasOwnProperty.call(e,t):!1},s.i18n=function(e,t,i){var o="",n=s.isUnd(g.oI18N[e])?s.isUnd(i)?e:i:g.oI18N[e];if(!s.isUnd(t)&&!s.isNull(t))for(o in t)s.hos(t,o)&&(n=n.replace("%"+o+"%",t[o]));return n},s.i18nToNode=function(e){o.defer(function(){i(".i18n",e).each(function(){var e=i(this),t="";t=e.data("i18n-text"),t?e.text(s.i18n(t)):(t=e.data("i18n-html"),t&&e.html(s.i18n(t)),t=e.data("i18n-placeholder"),t&&e.attr("placeholder",s.i18n(t)),t=e.data("i18n-title"),t&&e.attr("title",s.i18n(t)))})})},s.i18nReload=function(){r.rainloopI18N&&(g.oI18N=r.rainloopI18N||{},s.i18nToNode(u),g.langChangeTrigger(!g.langChangeTrigger())),r.rainloopI18N=null},s.initOnStartOrLangChange=function(e,t,s){e&&e.call(t),s?g.langChangeTrigger.subscribe(function(){e&&e.call(t),s.call(t)}):e&&g.langChangeTrigger.subscribe(e,t)},s.inFocus=function(){return r.document.activeElement?(s.isUnd(r.document.activeElement.__inFocusCache)&&(r.document.activeElement.__inFocusCache=i(r.document.activeElement).is("input,textarea,iframe,.cke_editable")),!!r.document.activeElement.__inFocusCache):!1},s.removeInFocus=function(){if(r.document&&r.document.activeElement&&r.document.activeElement.blur){var e=i(r.document.activeElement);e.is("input,textarea")&&r.document.activeElement.blur()}},s.removeSelection=function(){if(r&&r.getSelection){var e=r.getSelection();e&&e.removeAllRanges&&e.removeAllRanges()}else r.document&&r.document.selection&&r.document.selection.empty&&r.document.selection.empty()},s.replySubjectAdd=function(e,t){e=s.trim(e.toUpperCase()),t=s.trim(t.replace(/[\s]+/," "));var i=0,o="",n=!1,r="",a=[],l=[],c="RE"===e,u="FWD"===e,d=!u;if(""!==t){for(n=!1,l=t.split(":"),i=0;i0);return e.replace(/[\s]+/," ")},s._replySubjectAdd_=function(e,t,i){var o=null,n=s.trim(t);return n=null===(o=new r.RegExp("^"+e+"[\\s]?\\:(.*)$","gi").exec(t))||s.isUnd(o[1])?null===(o=new r.RegExp("^("+e+"[\\s]?[\\[\\(]?)([\\d]+)([\\]\\)]?[\\s]?\\:.*)$","gi").exec(t))||s.isUnd(o[1])||s.isUnd(o[2])||s.isUnd(o[3])?e+": "+t:o[1]+(s.pInt(o[2])+1)+o[3]:e+"[2]: "+o[1],n=n.replace(/[\s]+/g," "),n=(s.isUnd(i)?!0:i)?s.fixLongSubject(n):n},s._fixLongSubject_=function(e){var t=0,i=null;e=s.trim(e.replace(/[\s]+/," "));do i=/^Re(\[([\d]+)\]|):[\s]{0,3}Re(\[([\d]+)\]|):/gi.exec(e),(!i||s.isUnd(i[0]))&&(i=null),i&&(t=0,t+=s.isUnd(i[2])?1:0+s.pInt(i[2]),t+=s.isUnd(i[4])?1:0+s.pInt(i[4]),e=e.replace(/^Re(\[[\d]+\]|):[\s]{0,3}Re(\[[\d]+\]|):/gi,"Re"+(t>0?"["+t+"]":"")+":"));while(i);return e=e.replace(/[\s]+/," ")},s.roundNumber=function(e,t){return r.Math.round(e*r.Math.pow(10,t))/r.Math.pow(10,t)},s.friendlySize=function(e){return e=s.pInt(e),e>=1073741824?s.roundNumber(e/1073741824,1)+"GB":e>=1048576?s.roundNumber(e/1048576,1)+"MB":e>=1024?s.roundNumber(e/1024,0)+"KB":e+"B"},s.log=function(e){r.console&&r.console.log&&r.console.log(e)},s.getNotification=function(e,t){return e=s.pInt(e),p.Notification.ClientViewError===e&&t?t:s.isUnd(g.oNotificationI18N[e])?"":g.oNotificationI18N[e]},s.initNotificationLanguage=function(){var e=g.oNotificationI18N||{};e[p.Notification.InvalidToken]=s.i18n("NOTIFICATIONS/INVALID_TOKEN"),e[p.Notification.AuthError]=s.i18n("NOTIFICATIONS/AUTH_ERROR"),e[p.Notification.AccessError]=s.i18n("NOTIFICATIONS/ACCESS_ERROR"),e[p.Notification.ConnectionError]=s.i18n("NOTIFICATIONS/CONNECTION_ERROR"),e[p.Notification.CaptchaError]=s.i18n("NOTIFICATIONS/CAPTCHA_ERROR"),e[p.Notification.SocialFacebookLoginAccessDisable]=s.i18n("NOTIFICATIONS/SOCIAL_FACEBOOK_LOGIN_ACCESS_DISABLE"),e[p.Notification.SocialTwitterLoginAccessDisable]=s.i18n("NOTIFICATIONS/SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE"),e[p.Notification.SocialGoogleLoginAccessDisable]=s.i18n("NOTIFICATIONS/SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE"),e[p.Notification.DomainNotAllowed]=s.i18n("NOTIFICATIONS/DOMAIN_NOT_ALLOWED"),e[p.Notification.AccountNotAllowed]=s.i18n("NOTIFICATIONS/ACCOUNT_NOT_ALLOWED"),e[p.Notification.AccountTwoFactorAuthRequired]=s.i18n("NOTIFICATIONS/ACCOUNT_TWO_FACTOR_AUTH_REQUIRED"),e[p.Notification.AccountTwoFactorAuthError]=s.i18n("NOTIFICATIONS/ACCOUNT_TWO_FACTOR_AUTH_ERROR"),e[p.Notification.CouldNotSaveNewPassword]=s.i18n("NOTIFICATIONS/COULD_NOT_SAVE_NEW_PASSWORD"),e[p.Notification.CurrentPasswordIncorrect]=s.i18n("NOTIFICATIONS/CURRENT_PASSWORD_INCORRECT"),e[p.Notification.NewPasswordShort]=s.i18n("NOTIFICATIONS/NEW_PASSWORD_SHORT"),e[p.Notification.NewPasswordWeak]=s.i18n("NOTIFICATIONS/NEW_PASSWORD_WEAK"),e[p.Notification.NewPasswordForbidden]=s.i18n("NOTIFICATIONS/NEW_PASSWORD_FORBIDDENT"),e[p.Notification.ContactsSyncError]=s.i18n("NOTIFICATIONS/CONTACTS_SYNC_ERROR"),e[p.Notification.CantGetMessageList]=s.i18n("NOTIFICATIONS/CANT_GET_MESSAGE_LIST"),e[p.Notification.CantGetMessage]=s.i18n("NOTIFICATIONS/CANT_GET_MESSAGE"),e[p.Notification.CantDeleteMessage]=s.i18n("NOTIFICATIONS/CANT_DELETE_MESSAGE"),e[p.Notification.CantMoveMessage]=s.i18n("NOTIFICATIONS/CANT_MOVE_MESSAGE"),e[p.Notification.CantCopyMessage]=s.i18n("NOTIFICATIONS/CANT_MOVE_MESSAGE"),e[p.Notification.CantSaveMessage]=s.i18n("NOTIFICATIONS/CANT_SAVE_MESSAGE"),e[p.Notification.CantSendMessage]=s.i18n("NOTIFICATIONS/CANT_SEND_MESSAGE"),e[p.Notification.InvalidRecipients]=s.i18n("NOTIFICATIONS/INVALID_RECIPIENTS"),e[p.Notification.CantCreateFolder]=s.i18n("NOTIFICATIONS/CANT_CREATE_FOLDER"),e[p.Notification.CantRenameFolder]=s.i18n("NOTIFICATIONS/CANT_RENAME_FOLDER"),e[p.Notification.CantDeleteFolder]=s.i18n("NOTIFICATIONS/CANT_DELETE_FOLDER"),e[p.Notification.CantDeleteNonEmptyFolder]=s.i18n("NOTIFICATIONS/CANT_DELETE_NON_EMPTY_FOLDER"),e[p.Notification.CantSubscribeFolder]=s.i18n("NOTIFICATIONS/CANT_SUBSCRIBE_FOLDER"),e[p.Notification.CantUnsubscribeFolder]=s.i18n("NOTIFICATIONS/CANT_UNSUBSCRIBE_FOLDER"),e[p.Notification.CantSaveSettings]=s.i18n("NOTIFICATIONS/CANT_SAVE_SETTINGS"),e[p.Notification.CantSavePluginSettings]=s.i18n("NOTIFICATIONS/CANT_SAVE_PLUGIN_SETTINGS"),e[p.Notification.DomainAlreadyExists]=s.i18n("NOTIFICATIONS/DOMAIN_ALREADY_EXISTS"),e[p.Notification.CantInstallPackage]=s.i18n("NOTIFICATIONS/CANT_INSTALL_PACKAGE"),e[p.Notification.CantDeletePackage]=s.i18n("NOTIFICATIONS/CANT_DELETE_PACKAGE"),e[p.Notification.InvalidPluginPackage]=s.i18n("NOTIFICATIONS/INVALID_PLUGIN_PACKAGE"),e[p.Notification.UnsupportedPluginPackage]=s.i18n("NOTIFICATIONS/UNSUPPORTED_PLUGIN_PACKAGE"),e[p.Notification.LicensingServerIsUnavailable]=s.i18n("NOTIFICATIONS/LICENSING_SERVER_IS_UNAVAILABLE"),e[p.Notification.LicensingExpired]=s.i18n("NOTIFICATIONS/LICENSING_EXPIRED"),e[p.Notification.LicensingBanned]=s.i18n("NOTIFICATIONS/LICENSING_BANNED"),e[p.Notification.DemoSendMessageError]=s.i18n("NOTIFICATIONS/DEMO_SEND_MESSAGE_ERROR"),e[p.Notification.AccountAlreadyExists]=s.i18n("NOTIFICATIONS/ACCOUNT_ALREADY_EXISTS"),e[p.Notification.MailServerError]=s.i18n("NOTIFICATIONS/MAIL_SERVER_ERROR"),e[p.Notification.InvalidInputArgument]=s.i18n("NOTIFICATIONS/INVALID_INPUT_ARGUMENT"),e[p.Notification.UnknownNotification]=s.i18n("NOTIFICATIONS/UNKNOWN_ERROR"),e[p.Notification.UnknownError]=s.i18n("NOTIFICATIONS/UNKNOWN_ERROR")},s.getUploadErrorDescByCode=function(e){var t="";switch(s.pInt(e)){case p.UploadErrorCode.FileIsTooBig:t=s.i18n("UPLOAD/ERROR_FILE_IS_TOO_BIG");break;case p.UploadErrorCode.FilePartiallyUploaded:t=s.i18n("UPLOAD/ERROR_FILE_PARTIALLY_UPLOADED");break;case p.UploadErrorCode.FileNoUploaded:t=s.i18n("UPLOAD/ERROR_NO_FILE_UPLOADED");break;case p.UploadErrorCode.MissingTempFolder:t=s.i18n("UPLOAD/ERROR_MISSING_TEMP_FOLDER");break;case p.UploadErrorCode.FileOnSaveingError:t=s.i18n("UPLOAD/ERROR_ON_SAVING_FILE");break;case p.UploadErrorCode.FileType:t=s.i18n("UPLOAD/ERROR_FILE_TYPE");break;default:t=s.i18n("UPLOAD/ERROR_UNKNOWN")}return t},s.delegateRun=function(e,t,i,n){e&&e[t]&&(n=s.pInt(n),0>=n?e[t].apply(e,s.isArray(i)?i:[]):o.delay(function(){e[t].apply(e,s.isArray(i)?i:[])},n))},s.killCtrlAandS=function(e){if(e=e||r.event,e&&e.ctrlKey&&!e.shiftKey&&!e.altKey){var t=e.target||e.srcElement,s=e.keyCode||e.which;if(s===p.EventKeyCode.S)return void e.preventDefault();if(t&&t.tagName&&t.tagName.match(/INPUT|TEXTAREA/i))return;s===p.EventKeyCode.A&&(r.getSelection?r.getSelection().removeAllRanges():r.document.selection&&r.document.selection.clear&&r.document.selection.clear(),e.preventDefault())}},s.createCommand=function(e,t,i){var o=t?function(){return o&&o.canExecute&&o.canExecute()&&t.apply(e,Array.prototype.slice.call(arguments)),!1}:function(){};return o.enabled=n.observable(!0),i=s.isUnd(i)?!0:i,o.canExecute=n.computed(s.isFunc(i)?function(){return o.enabled()&&i.call(e)}:function(){return o.enabled()&&!!i}),o},s.initDataConstructorBySettings=function(e){e.editorDefaultType=n.observable(p.EditorDefaultType.Html),e.showImages=n.observable(!1),e.interfaceAnimation=n.observable(p.InterfaceAnimation.Full),e.contactsAutosave=n.observable(!1),g.sAnimationType=p.InterfaceAnimation.Full,e.capaThemes=n.observable(!1),e.allowLanguagesOnSettings=n.observable(!0),e.allowLanguagesOnLogin=n.observable(!0),e.useLocalProxyForExternalImages=n.observable(!1),e.desktopNotifications=n.observable(!1),e.useThreads=n.observable(!0),e.replySameFolder=n.observable(!0),e.useCheckboxesInList=n.observable(!0),e.layout=n.observable(p.Layout.SidePreview),e.usePreviewPane=n.computed(function(){return p.Layout.NoPreview!==e.layout()}),e.interfaceAnimation.subscribe(function(e){if(g.bMobileDevice||e===p.InterfaceAnimation.None)l.removeClass("rl-anim rl-anim-full").addClass("no-rl-anim"),g.sAnimationType=p.InterfaceAnimation.None;else switch(e){case p.InterfaceAnimation.Full:l.removeClass("no-rl-anim").addClass("rl-anim rl-anim-full"),g.sAnimationType=e;break;case p.InterfaceAnimation.Normal:l.removeClass("no-rl-anim rl-anim-full").addClass("rl-anim"),g.sAnimationType=e}}),e.interfaceAnimation.valueHasMutated(),e.desktopNotificationsPermisions=n.computed(function(){e.desktopNotifications();var t=p.DesktopNotifications.NotSupported;if(d&&d.permission)switch(d.permission.toLowerCase()){case"granted":t=p.DesktopNotifications.Allowed;break;case"denied":t=p.DesktopNotifications.Denied;break;case"default":t=p.DesktopNotifications.NotAllowed}else r.webkitNotifications&&r.webkitNotifications.checkPermission&&(t=r.webkitNotifications.checkPermission());return t}),e.useDesktopNotifications=n.computed({read:function(){return e.desktopNotifications()&&p.DesktopNotifications.Allowed===e.desktopNotificationsPermisions()
-},write:function(t){if(t){var s=e.desktopNotificationsPermisions();p.DesktopNotifications.Allowed===s?e.desktopNotifications(!0):p.DesktopNotifications.NotAllowed===s?d.requestPermission(function(){e.desktopNotifications.valueHasMutated(),p.DesktopNotifications.Allowed===e.desktopNotificationsPermisions()?e.desktopNotifications()?e.desktopNotifications.valueHasMutated():e.desktopNotifications(!0):e.desktopNotifications()?e.desktopNotifications(!1):e.desktopNotifications.valueHasMutated()}):e.desktopNotifications(!1)}else e.desktopNotifications(!1)}}),e.language=n.observable(""),e.languages=n.observableArray([]),e.mainLanguage=n.computed({read:e.language,write:function(t){t!==e.language()?-1=t.diff(i,"hours")?o:t.format("L")===i.format("L")?s.i18n("MESSAGE_LIST/TODAY_AT",{TIME:i.format("LT")}):t.clone().subtract("days",1).format("L")===i.format("L")?s.i18n("MESSAGE_LIST/YESTERDAY_AT",{TIME:i.format("LT")}):i.format(t.year()===i.year()?"D MMM.":"LL")},e)},s.initBlockquoteSwitcher=function(e){if(e){var t=i("blockquote:not(.rl-bq-switcher)",e).filter(function(){return 0===i(this).parent().closest("blockquote",e).length});t&&0100)&&(e.addClass("rl-bq-switcher hidden-bq"),i('').insertBefore(e).click(function(){e.toggleClass("hidden-bq"),s.windowResize()}).after("
").before("
"))})}},s.removeBlockquoteSwitcher=function(e){e&&(i(e).find("blockquote.rl-bq-switcher").each(function(){i(this).removeClass("rl-bq-switcher hidden-bq")}),i(e).find(".rlBlockquoteSwitcher").each(function(){i(this).remove()}))},s.toggleMessageBlockquote=function(e){e&&e.find(".rlBlockquoteSwitcher").click()},s.convertThemeName=function(e){return"@custom"===e.substr(-7)&&(e=s.trim(e.substring(0,e.length-7))),s.trim(e.replace(/[^a-zA-Z]+/g," ").replace(/([A-Z])/g," $1").replace(/[\s]+/g," "))},s.quoteName=function(e){return e.replace(/["]/g,'\\"')},s.microtime=function(){return(new Date).getTime()},s.convertLangName=function(e,t){return s.i18n("LANGS_NAMES"+(!0===t?"_EN":"")+"/LANG_"+e.toUpperCase().replace(/[^a-zA-Z0-9]+/,"_"),null,e)},s.fakeMd5=function(e){var t="",i="0123456789abcdefghijklmnopqrstuvwxyz";for(e=s.isUnd(e)?32:s.pInt(e);t.length>>32-t}function s(e,t){var s,i,o,n,r;return o=2147483648&e,n=2147483648&t,s=1073741824&e,i=1073741824&t,r=(1073741823&e)+(1073741823&t),s&i?2147483648^r^o^n:s|i?1073741824&r?3221225472^r^o^n:1073741824^r^o^n:r^o^n}function i(e,t,s){return e&t|~e&s}function o(e,t,s){return e&s|t&~s}function n(e,t,s){return e^t^s}function r(e,t,s){return t^(e|~s)}function a(e,o,n,r,a,l,c){return e=s(e,s(s(i(o,n,r),a),c)),s(t(e,l),o)}function l(e,i,n,r,a,l,c){return e=s(e,s(s(o(i,n,r),a),c)),s(t(e,l),i)}function c(e,i,o,r,a,l,c){return e=s(e,s(s(n(i,o,r),a),c)),s(t(e,l),i)}function u(e,i,o,n,a,l,c){return e=s(e,s(s(r(i,o,n),a),c)),s(t(e,l),i)}function d(e){for(var t,s=e.length,i=s+8,o=(i-i%64)/64,n=16*(o+1),r=Array(n-1),a=0,l=0;s>l;)t=(l-l%4)/4,a=l%4*8,r[t]=r[t]|e.charCodeAt(l)<>>29,r}function p(e){var t,s,i="",o="";for(s=0;3>=s;s++)t=e>>>8*s&255,o="0"+t.toString(16),i+=o.substr(o.length-2,2);return i}function h(e){e=e.replace(/rn/g,"n");for(var t="",s=0;si?t+=String.fromCharCode(i):i>127&&2048>i?(t+=String.fromCharCode(i>>6|192),t+=String.fromCharCode(63&i|128)):(t+=String.fromCharCode(i>>12|224),t+=String.fromCharCode(i>>6&63|128),t+=String.fromCharCode(63&i|128))}return t}var g,m,f,b,S,y,v,w,C,A=Array(),T=7,F=12,E=17,M=22,N=5,R=9,L=14,P=20,I=4,k=11,D=16,U=23,_=6,O=10,x=15,j=21;for(e=h(e),A=d(e),y=1732584193,v=4023233417,w=2562383102,C=271733878,g=0;g/g,">").replace(/")},s.draggeblePlace=function(){return i('
').appendTo("#rl-hidden")},s.defautOptionsAfterRender=function(e,t){t&&!s.isUnd(t.disabled)&&e&&i(e).toggleClass("disabled",t.disabled).prop("disabled",t.disabled)},s.windowPopupKnockout=function(e,t,o,a){var l=null,c=r.open(""),u="__OpenerApplyBindingsUid"+s.fakeMd5()+"__",d=i("#"+t);r[u]=function(){if(c&&c.document.body&&d&&d[0]){var t=i(c.document.body);i("#rl-content",t).html(d.html()),i("html",c.document).addClass("external "+i("html").attr("class")),s.i18nToNode(t),e&&i("#rl-content",t)[0]&&n.applyBindings(e,i("#rl-content",t)[0]),r[u]=null,a(c)}},c.document.open(),c.document.write(''+s.encodeHtml(o)+''),c.document.close(),l=c.document.createElement("script"),l.type="text/javascript",l.innerHTML="if(window&&window.opener&&window.opener['"+u+"']){window.opener['"+u+"']();window.opener['"+u+"']=null}",c.document.getElementsByTagName("head")[0].appendChild(l)},s.settingsSaveHelperFunction=function(e,t,i,n){return i=i||null,n=s.isUnd(n)?1e3:s.pInt(n),function(s,r,a,l,c){t.call(i,r&&r.Result?p.SaveSettingsStep.TrueResult:p.SaveSettingsStep.FalseResult),e&&e.call(i,s,r,a,l,c),o.delay(function(){t.call(i,p.SaveSettingsStep.Idle)},n)}},s.settingsSaveHelperSimpleFunction=function(e,t){return s.settingsSaveHelperFunction(null,e,t,1e3)},s.htmlToPlain=function(e){var t=0,s=0,o=0,n=0,r=0,a="",l=function(e){for(var t=100,s="",i="",o=e,n=0,r=0;o.length>t;)i=o.substring(0,t),n=i.lastIndexOf(" "),r=i.lastIndexOf("\n"),-1!==r&&(n=r),-1===n&&(n=t),s+=i.substring(0,n)+"\n",o=o.substring(n+1);return s+o},u=function(e){return e=l(i.trim(e)),e="> "+e.replace(/\n/gm,"\n> "),e.replace(/(^|\n)([> ]+)/gm,function(){return arguments&&2]*>([\s\S\r\n]*)<\/div>/gim,d),e="\n"+i.trim(e)+"\n"),e}return""},p=function(){return arguments&&1"):""},h=function(){return arguments&&1/g,">"):""},g=function(){return arguments&&1]*>([\s\S\r\n]*)<\/pre>/gim,p).replace(/[\s]+/gm," ").replace(/((?:href|data)\s?=\s?)("[^"]+?"|'[^']+?')/gim,h).replace(/
]*>/gim,"\n").replace(/<\/h[\d]>/gi,"\n").replace(/<\/p>/gi,"\n\n").replace(/<\/li>/gi,"\n").replace(/<\/td>/gi,"\n").replace(/<\/tr>/gi,"\n").replace(/
]*>/gim,"\n_______________________________\n\n").replace(/]*>([\s\S\r\n]*)<\/div>/gim,d).replace(/
]*>/gim,"\n__bq__start__\n").replace(/<\/blockquote>/gim,"\n__bq__end__\n").replace(/]*>([\s\S\r\n]*?)<\/a>/gim,g).replace(/<\/div>/gi,"\n").replace(/ /gi," ").replace(/"/gi,'"').replace(/<[^>]*>/gm,""),a=c.html(a).text(),a=a.replace(/\n[ \t]+/gm,"\n").replace(/[\n]{3,}/gm,"\n\n").replace(/>/gi,">").replace(/</gi,"<").replace(/&/gi,"&"),t=0,r=100;r>0&&(r--,s=a.indexOf("__bq__start__",t),s>-1);)o=a.indexOf("__bq__start__",s+5),n=a.indexOf("__bq__end__",s+5),(-1===o||o>n)&&n>s?(a=a.substring(0,s)+u(a.substring(s+13,n))+a.substring(n+11),t=0):t=o>-1&&n>o?o-1:0;return a=a.replace(/__bq__start__/gm,"").replace(/__bq__end__/gm,"")},s.plainToHtml=function(e,t){e=e.toString().replace(/\r/g,"");var i=!1,o=!0,n=!0,r=[],a="",l=0,c=e.split("\n");do{for(o=!1,r=[],l=0;l"===a.substr(0,1),n&&!i?(o=!0,i=!0,r.push("~~~blockquote~~~"),r.push(a.substr(1))):!n&&i?(i=!1,r.push("~~~/blockquote~~~"),r.push(a)):r.push(n&&i?a.substr(1):a);i&&(i=!1,r.push("~~~/blockquote~~~")),c=r}while(o);return e=c.join("\n"),e=e.replace(/&/g,"&").replace(/>/g,">").replace(/").replace(/[\s]*~~~\/blockquote~~~/g,"
").replace(/[\-_~]{10,}/g,"
").replace(/\n/g,"
"),t?s.linkify(e):e},r.rainloop_Utils_htmlToPlain=s.htmlToPlain,r.rainloop_Utils_plainToHtml=s.plainToHtml,s.linkify=function(e){return i.fn&&i.fn.linkify&&(e=c.html(e.replace(/&/gi,"amp_amp_12345_amp_amp")).linkify().find(".linkified").removeClass("linkified").end().html().replace(/amp_amp_12345_amp_amp/g,"&")),e},s.resizeAndCrop=function(e,t,s){var i=new r.Image;i.onload=function(){var e=[0,0],i=r.document.createElement("canvas"),o=i.getContext("2d");i.width=t,i.height=t,e=this.width>this.height?[this.width-this.height,0]:[0,this.height-this.width],o.fillStyle="#fff",o.fillRect(0,0,t,t),o.drawImage(this,e[0]/2,e[1]/2,this.width-e[0],this.height-e[1],0,0,t,t),s(i.toDataURL("image/jpeg"))},i.src=e},s.folderListOptionsBuilder=function(e,t,i,o,n,a,l,c,u,d){var h=null,g=!1,m=0,f=0,b=" ",S=[];for(u=s.isNormal(u)?u:0
m;m++)S.push({id:o[m][0],name:o[m][1],system:!1,seporator:!1,disabled:!1});for(g=!0,m=0,f=e.length;f>m;m++)h=e[m],(l?l.call(null,h):!0)&&(g&&0m;m++)h=t[m],(h.subScribed()||!h.existen)&&(l?l.call(null,h):!0)&&(p.FolderType.User===h.type()||!u||01||c>0&&l>c){for(l>c?(u(c),i=c,o=c):((3>=l||l>=c-2)&&(n+=2),u(l),i=l,o=l);n>0;)if(i-=1,o+=1,i>0&&(u(i,!1),n--),c>=o)u(o,!0),n--;else if(0>=i)break;3===i?u(2,!1):i>3&&u(r.Math.round((i-1)/2),!1,"..."),c-2===o?u(c-1,!0):c-2>o&&u(r.Math.round((c+o)/2),!0,"..."),i>1&&u(1,!1),c>o&&u(c,!0)}return a}},s.selectElement=function(e){if(r.getSelection){var t=r.getSelection();t.removeAllRanges();var s=r.document.createRange();s.selectNodeContents(e),t.addRange(s)}else if(r.document.selection){var i=r.document.body.createTextRange();i.moveToElementText(e),i.select()}},s.detectDropdownVisibility=o.debounce(function(){g.dropdownVisibility(!!o.find(g.aBootstrapDropdowns,function(e){return e.hasClass("open")}))},50),s.triggerAutocompleteInputChange=function(e){var t=function(){i(".checkAutocomplete").trigger("change")};e?o.delay(t,100):t()},e.exports=s}(t,e)},{$:26,$div:15,$doc:16,$html:17,$window:18,Consts:6,Enums:7,Globals:9,NotificationClass:22,_:31,ko:28,window:32}],15:[function(e,t){t.exports=e("$")("")},{$:26}],16:[function(e,t){t.exports=e("$")(window.document)},{$:26}],17:[function(e,t){t.exports=e("$")("html")},{$:26}],18:[function(e,t){t.exports=e("$")(window)},{$:26}],19:[function(e,t){t.exports=e("window").rainloopAppData||{}},{window:32}],20:[function(e,t){t.exports=JSON},{}],21:[function(e,t){t.exports=Jua},{}],22:[function(e,t){var s=e("window");t.exports=s.Notification&&s.Notification.requestPermission?s.Notification:null},{window:32}],23:[function(e,t){t.exports=crossroads},{}],24:[function(e,t){t.exports=hasher},{}],25:[function(e,t){t.exports=ifvisible},{}],26:[function(e,t){t.exports=$},{}],27:[function(e,t){t.exports=key},{}],28:[function(e,t){!function(t,s){"use strict";var i=e("window"),o=e("_"),n=e("$"),r=e("$window"),a=e("$doc");s.bindingHandlers.tooltip={init:function(t,i){var o=e("Globals"),r=e("Utils");if(!o.bMobileDevice){var a=n(t),l=a.data("tooltip-class")||"",c=a.data("tooltip-placement")||"top";a.tooltip({delay:{show:500,hide:100},html:!0,container:"body",placement:c,trigger:"hover",title:function(){return a.is(".disabled")||o.dropdownVisibility()?"":''+r.i18n(s.utils.unwrapObservable(i()))+""}}).click(function(){a.tooltip("hide")}),o.tooltipTrigger.subscribe(function(){a.tooltip("hide")})}}},s.bindingHandlers.tooltip2={init:function(t,s){var i=e("Globals"),o=n(t),r=o.data("tooltip-class")||"",a=o.data("tooltip-placement")||"top";o.tooltip({delay:{show:500,hide:100},html:!0,container:"body",placement:a,title:function(){return o.is(".disabled")||i.dropdownVisibility()?"":''+s()()+""}}).click(function(){o.tooltip("hide")}),i.tooltipTrigger.subscribe(function(){o.tooltip("hide")})}},s.bindingHandlers.tooltip3={init:function(t){var s=n(t),i=e("Globals");s.tooltip({container:"body",trigger:"hover manual",title:function(){return s.data("tooltip3-data")||""}}),a.click(function(){s.tooltip("hide")}),i.tooltipTrigger.subscribe(function(){s.tooltip("hide")})},update:function(e,t){var i=s.utils.unwrapObservable(t());""===i?n(e).data("tooltip3-data","").tooltip("hide"):n(e).data("tooltip3-data",i).tooltip("show")}},s.bindingHandlers.registrateBootstrapDropdown={init:function(t){var s=e("Globals");s.aBootstrapDropdowns.push(n(t))}},s.bindingHandlers.openDropdownTrigger={update:function(t,i){if(s.utils.unwrapObservable(i())){var o=n(t),r=e("Utils");o.hasClass("open")||(o.find(".dropdown-toggle").dropdown("toggle"),r.detectDropdownVisibility()),i()(!1)}}},s.bindingHandlers.dropdownCloser={init:function(e){n(e).closest(".dropdown").on("click",".e-item",function(){n(e).dropdown("toggle")})}},s.bindingHandlers.popover={init:function(e,t){n(e).popover(s.utils.unwrapObservable(t()))}},s.bindingHandlers.csstext={init:function(t,i){var o=e("Utils");t&&t.styleSheet&&!o.isUnd(t.styleSheet.cssText)?t.styleSheet.cssText=s.utils.unwrapObservable(i()):n(t).text(s.utils.unwrapObservable(i()))},update:function(t,i){var o=e("Utils");t&&t.styleSheet&&!o.isUnd(t.styleSheet.cssText)?t.styleSheet.cssText=s.utils.unwrapObservable(i()):n(t).text(s.utils.unwrapObservable(i()))}},s.bindingHandlers.resizecrop={init:function(e){n(e).addClass("resizecrop").resizecrop({width:"100",height:"100",wrapperCSS:{"border-radius":"10px"}})},update:function(e,t){t()(),n(e).resizecrop({width:"100",height:"100"})}},s.bindingHandlers.onEnter={init:function(e,t,s,o){n(e).on("keypress",function(s){s&&13===i.parseInt(s.keyCode,10)&&(n(e).trigger("change"),t().call(o))})}},s.bindingHandlers.onEsc={init:function(e,t,s,o){n(e).on("keypress",function(s){s&&27===i.parseInt(s.keyCode,10)&&(n(e).trigger("change"),t().call(o))})}},s.bindingHandlers.clickOnTrue={update:function(e,t){s.utils.unwrapObservable(t())&&n(e).click()}},s.bindingHandlers.modal={init:function(t,i){var o=e("Globals"),r=e("Utils");n(t).toggleClass("fade",!o.bMobileDevice).modal({keyboard:!1,show:s.utils.unwrapObservable(i())}).on("shown",function(){r.windowResize()}).find(".close").click(function(){i()(!1)})},update:function(e,t){n(e).modal(s.utils.unwrapObservable(t())?"show":"hide")}},s.bindingHandlers.i18nInit={init:function(t){var s=e("Utils");s.i18nToNode(t)}},s.bindingHandlers.i18nUpdate={update:function(t,i){var o=e("Utils");s.utils.unwrapObservable(i()),o.i18nToNode(t)}},s.bindingHandlers.link={update:function(e,t){n(e).attr("href",s.utils.unwrapObservable(t()))}},s.bindingHandlers.title={update:function(e,t){n(e).attr("title",s.utils.unwrapObservable(t()))}},s.bindingHandlers.textF={init:function(e,t){n(e).text(s.utils.unwrapObservable(t()))}},s.bindingHandlers.initDom={init:function(e,t){t()(e)}},s.bindingHandlers.initResizeTrigger={init:function(e,t){var i=s.utils.unwrapObservable(t());n(e).css({height:i[1],"min-height":i[1]})},update:function(t,i){var o=e("Utils"),a=s.utils.unwrapObservable(i()),l=o.pInt(a[1]),c=0,u=n(t).offset().top;u>0&&(u+=o.pInt(a[2]),c=r.height()-u,c>l&&(l=c),n(t).css({height:l,"min-height":l}))}},s.bindingHandlers.appendDom={update:function(e,t){n(e).hide().empty().append(s.utils.unwrapObservable(t())).show()}},s.bindingHandlers.draggable={init:function(t,o,r){var a=e("Globals"),l=e("Utils");if(!a.bMobileDevice){var c=100,u=3,d=r(),p=d&&d.droppableSelector?d.droppableSelector:"",h={distance:20,handle:".dragHandle",cursorAt:{top:22,left:3},refreshPositions:!0,scroll:!0};p&&(h.drag=function(e){n(p).each(function(){var t=null,s=null,o=n(this),r=o.offset(),a=r.top+o.height();i.clearInterval(o.data("timerScroll")),o.data("timerScroll",!1),e.pageX>=r.left&&e.pageX<=r.left+o.width()&&(e.pageY>=a-c&&e.pageY<=a&&(t=function(){o.scrollTop(o.scrollTop()+u),l.windowResize()},o.data("timerScroll",i.setInterval(t,10)),t()),e.pageY>=r.top&&e.pageY<=r.top+c&&(s=function(){o.scrollTop(o.scrollTop()-u),l.windowResize()},o.data("timerScroll",i.setInterval(s,10)),s()))})},h.stop=function(){n(p).each(function(){i.clearInterval(n(this).data("timerScroll")),n(this).data("timerScroll",!1)})}),h.helper=function(e){return o()(e&&e.target?s.dataFor(e.target):null)},n(t).draggable(h).on("mousedown",function(){l.removeInFocus()})}}},s.bindingHandlers.droppable={init:function(t,s,i){var o=e("Globals");if(!o.bMobileDevice){var r=s(),a=i(),l=a&&a.droppableOver?a.droppableOver:null,c=a&&a.droppableOut?a.droppableOut:null,u={tolerance:"pointer",hoverClass:"droppableHover"};r&&(u.drop=function(e,t){r(e,t)},l&&(u.over=function(e,t){l(e,t)}),c&&(u.out=function(e,t){c(e,t)}),n(t).droppable(u))}}},s.bindingHandlers.nano={init:function(t){var s=e("Globals");s.bDisableNanoScroll||n(t).addClass("nano").nanoScroller({iOSNativeScrolling:!1,preventPageScrolling:!0})}},s.bindingHandlers.saveTrigger={init:function(e){var t=n(e);t.data("save-trigger-type",t.is("input[type=text],input[type=email],input[type=password],select,textarea")?"input":"custom"),"custom"===t.data("save-trigger-type")?t.append(' ').addClass("settings-saved-trigger"):t.addClass("settings-saved-trigger-input")},update:function(e,t){var i=s.utils.unwrapObservable(t()),o=n(e);if("custom"===o.data("save-trigger-type"))switch(i.toString()){case"1":o.find(".animated,.error").hide().removeClass("visible").end().find(".success").show().addClass("visible");break;case"0":o.find(".animated,.success").hide().removeClass("visible").end().find(".error").show().addClass("visible");break;case"-2":o.find(".error,.success").hide().removeClass("visible").end().find(".animated").show().addClass("visible");break;default:o.find(".animated").hide().end().find(".error,.success").removeClass("visible")}else switch(i.toString()){case"1":o.addClass("success").removeClass("error");break;case"0":o.addClass("error").removeClass("success");break;case"-2":break;default:o.removeClass("error success")}}},s.bindingHandlers.emailsTags={init:function(t,s,i){var r=e("Utils"),a=e("../Models/EmailModel.js"),l=n(t),c=s(),u=i(),d=u.autoCompleteSource||null,p=function(e){c&&c.focusTrigger&&c.focusTrigger(e)};l.inputosaurus({parseOnBlur:!0,allowDragAndDrop:!0,focusCallback:p,inputDelimiters:[",",";"],autoCompleteSource:d,parseHook:function(e){return o.map(e,function(e){var t=r.trim(e),s=null;return""!==t?(s=new a,s.mailsoParse(t),s.clearDuplicateName(),[s.toLine(!1),s]):[t,null]})},change:o.bind(function(e){l.data("EmailsTagsValue",e.target.value),c(e.target.value)},this)})},update:function(e,t,i){var o=n(e),r=i(),a=r.emailsTagsFilter||null,l=s.utils.unwrapObservable(t());o.data("EmailsTagsValue")!==l&&(o.val(l),o.data("EmailsTagsValue",l),o.inputosaurus("refresh")),a&&s.utils.unwrapObservable(a)&&o.inputosaurus("focus")}},s.bindingHandlers.contactTags={init:function(t,s,i){var r=e("Utils"),a=e("../Models/ContactTagModel.js"),l=n(t),c=s(),u=i(),d=u.autoCompleteSource||null,p=function(e){c&&c.focusTrigger&&c.focusTrigger(e)};l.inputosaurus({parseOnBlur:!0,allowDragAndDrop:!1,focusCallback:p,inputDelimiters:[",",";"],outputDelimiter:",",autoCompleteSource:d,parseHook:function(e){return o.map(e,function(e){var t=r.trim(e),s=null;return""!==t?(s=new a,s.name(t),[s.toLine(!1),s]):[t,null]})},change:o.bind(function(e){l.data("ContactTagsValue",e.target.value),c(e.target.value)},this)})},update:function(e,t,i){var o=n(e),r=i(),a=r.contactTagsFilter||null,l=s.utils.unwrapObservable(t());o.data("ContactTagsValue")!==l&&(o.val(l),o.data("ContactTagsValue",l),o.inputosaurus("refresh")),a&&s.utils.unwrapObservable(a)&&o.inputosaurus("focus")}},s.bindingHandlers.command={init:function(e,t,i,o){var r=n(e),a=t();if(!a||!a.enabled||!a.canExecute)throw new Error("You are not using command function");r.addClass("command"),s.bindingHandlers[r.is("form")?"submit":"click"].init.apply(o,arguments)},update:function(e,t){var s=!0,i=n(e),o=t();s=o.enabled(),i.toggleClass("command-not-enabled",!s),s&&(s=o.canExecute(),i.toggleClass("command-can-not-be-execute",!s)),i.toggleClass("command-disabled disable disabled",!s).toggleClass("no-disabled",!!s),(i.is("input")||i.is("button"))&&i.prop("disabled",!s)}},s.extenders.trimmer=function(t){var i=e("Utils"),o=s.computed({read:t,write:function(e){t(i.trim(e.toString()))},owner:this});return o(t()),o},s.extenders.posInterer=function(t,i){var o=e("Utils"),n=s.computed({read:t,write:function(e){var s=o.pInt(e.toString(),i);0>=s&&(s=i),s===t()&&""+s!=""+e&&t(s+1),t(s)}});return n(t()),n},s.extenders.reversible=function(e){var t=e();return e.commit=function(){t=e()},e.reverse=function(){e(t)},e.commitedValue=function(){return t},e},s.extenders.toggleSubscribe=function(e,t){return e.subscribe(t[1],t[0],"beforeChange"),e.subscribe(t[2],t[0]),e},s.extenders.falseTimeout=function(t,s){var o=e("Utils");return t.iTimeout=0,t.subscribe(function(e){e&&(i.clearTimeout(t.iTimeout),t.iTimeout=i.setTimeout(function(){t(!1),t.iTimeout=0},o.pInt(s)))}),t},s.observable.fn.validateNone=function(){return this.hasError=s.observable(!1),this},s.observable.fn.validateEmail=function(){var t=e("Utils");return this.hasError=s.observable(!1),this.subscribe(function(e){e=t.trim(e),this.hasError(""!==e&&!/^[^@\s]+@[^@\s]+$/.test(e))},this),this.valueHasMutated(),this},s.observable.fn.validateSimpleEmail=function(){var t=e("Utils");return this.hasError=s.observable(!1),this.subscribe(function(e){e=t.trim(e),this.hasError(""!==e&&!/^.+@.+$/.test(e))},this),this.valueHasMutated(),this},s.observable.fn.validateFunc=function(t){var i=e("Utils");return this.hasFuncError=s.observable(!1),i.isFunc(t)&&(this.subscribe(function(e){this.hasFuncError(!t(e))},this),this.valueHasMutated()),this},t.exports=s}(t,ko)},{$:26,$doc:16,$window:18,"../Models/ContactTagModel.js":42,"../Models/EmailModel.js":43,Globals:9,Utils:14,_:31,window:32}],29:[function(e,t){t.exports=moment},{}],30:[function(e,t){t.exports=ssm},{}],31:[function(e,t){t.exports=_},{}],32:[function(e,t){t.exports=window},{}],33:[function(e,t){!function(e,t){"use strict";function s(){this.sDefaultScreenName="",this.oScreens={},this.oCurrentScreen=null}var i=t("$"),o=t("_"),n=t("ko"),r=t("hasher"),a=t("crossroads"),l=t("$html"),c=t("Globals"),u=t("Plugins"),d=t("Utils"),p=t("KnoinAbstractViewModel");s.prototype.sDefaultScreenName="",s.prototype.oScreens={},s.prototype.oCurrentScreen=null,s.prototype.hideLoading=function(){i("#rl-loading").hide()},s.prototype.constructorEnd=function(e){d.isFunc(e.__constructor_end)&&e.__constructor_end.call(e)},s.prototype.extendAsViewModel=function(e,t,s){t&&(s||(s=p),t.__name=e,u.regViewModelHook(e,t),o.extend(t.prototype,s.prototype))},s.prototype.addSettingsViewModel=function(e,t,s,i,o){e.__rlSettingsData={Label:s,Template:t,Route:i,IsDefault:!!o},c.aViewModels.settings.push(e)},s.prototype.removeSettingsViewModel=function(e){c.aViewModels["settings-removed"].push(e)},s.prototype.disableSettingsViewModel=function(e){c.aViewModels["settings-disabled"].push(e)},s.prototype.routeOff=function(){r.changed.active=!1},s.prototype.routeOn=function(){r.changed.active=!0},s.prototype.screen=function(e){return""===e||d.isUnd(this.oScreens[e])?null:this.oScreens[e]},s.prototype.buildViewModel=function(e,t){if(e&&!e.__builded){var s=this,r=new e(t),a=r.viewModelPosition(),l=i("#rl-content #rl-"+a.toLowerCase()),p=null;e.__builded=!0,e.__vm=r,r.viewModelName=e.__name,l&&1===l.length?(p=i("").addClass("rl-view-model").addClass("RL-"+r.viewModelTemplate()).hide(),p.appendTo(l),r.viewModelDom=p,e.__dom=p,"Popups"===a&&(r.cancelCommand=r.closeCommand=d.createCommand(r,function(){s.hideScreenPopup(e)}),r.modalVisibility.subscribe(function(e){var t=this;e?(this.viewModelDom.show(),this.storeAndSetKeyScope(),c.popupVisibilityNames.push(this.viewModelName),r.viewModelDom.css("z-index",3e3+c.popupVisibilityNames().length+10),d.delegateRun(this,"onFocus",[],500)):(d.delegateRun(this,"onHide"),this.restoreKeyScope(),c.popupVisibilityNames.remove(this.viewModelName),r.viewModelDom.css("z-index",2e3),c.tooltipTrigger(!c.tooltipTrigger()),o.delay(function(){t.viewModelDom.hide()},300))},r)),u.runHook("view-model-pre-build",[e.__name,r,p]),n.applyBindingAccessorsToNode(p[0],{i18nInit:!0,template:function(){return{name:r.viewModelTemplate()}}},r),d.delegateRun(r,"onBuild",[p]),r&&"Popups"===a&&r.registerPopupKeyDown(),u.runHook("view-model-post-build",[e.__name,r,p])):d.log("Cannot find view model position: "+a)}return e?e.__vm:null},s.prototype.hideScreenPopup=function(e){e&&e.__vm&&e.__dom&&(e.__vm.modalVisibility(!1),u.runHook("view-model-on-hide",[e.__name,e.__vm]))},s.prototype.showScreenPopup=function(e,t){e&&(this.buildViewModel(e),e.__vm&&e.__dom&&(e.__vm.modalVisibility(!0),d.delegateRun(e.__vm,"onShow",t||[]),u.runHook("view-model-on-show",[e.__name,e.__vm,t||[]])))},s.prototype.isPopupVisible=function(e){return e&&e.__vm?e.__vm.modalVisibility():!1},s.prototype.screenOnRoute=function(e,t){var s=this,i=null,n=null;""===d.pString(e)&&(e=this.sDefaultScreenName),""!==e&&(i=this.screen(e),i||(i=this.screen(this.sDefaultScreenName),i&&(t=e+"/"+t,e=this.sDefaultScreenName)),i&&i.__started&&(i.__builded||(i.__builded=!0,d.isNonEmptyArray(i.viewModels())&&o.each(i.viewModels(),function(e){this.buildViewModel(e,i)},this),d.delegateRun(i,"onBuild")),o.defer(function(){s.oCurrentScreen&&(d.delegateRun(s.oCurrentScreen,"onHide"),d.isNonEmptyArray(s.oCurrentScreen.viewModels())&&o.each(s.oCurrentScreen.viewModels(),function(e){e.__vm&&e.__dom&&"Popups"!==e.__vm.viewModelPosition()&&(e.__dom.hide(),e.__vm.viewModelVisibility(!1),d.delegateRun(e.__vm,"onHide"))})),s.oCurrentScreen=i,s.oCurrentScreen&&(d.delegateRun(s.oCurrentScreen,"onShow"),u.runHook("screen-on-show",[s.oCurrentScreen.screenName(),s.oCurrentScreen]),d.isNonEmptyArray(s.oCurrentScreen.viewModels())&&o.each(s.oCurrentScreen.viewModels(),function(e){e.__vm&&e.__dom&&"Popups"!==e.__vm.viewModelPosition()&&(e.__dom.show(),e.__vm.viewModelVisibility(!0),d.delegateRun(e.__vm,"onShow"),d.delegateRun(e.__vm,"onFocus",[],200),u.runHook("view-model-on-show",[e.__name,e.__vm]))},s)),n=i.__cross(),n&&n.parse(t)})))},s.prototype.startScreens=function(e){i("#rl-content").css({visibility:"hidden"}),o.each(e,function(e){var t=new e,s=t?t.screenName():"";t&&""!==s&&(""===this.sDefaultScreenName&&(this.sDefaultScreenName=s),this.oScreens[s]=t)},this),o.each(this.oScreens,function(e){e&&!e.__started&&e.__start&&(e.__started=!0,e.__start(),u.runHook("screen-pre-start",[e.screenName(),e]),d.delegateRun(e,"onStart"),u.runHook("screen-post-start",[e.screenName(),e]))
-},this);var t=a.create();t.addRoute(/^([a-zA-Z0-9\-]*)\/?(.*)$/,o.bind(this.screenOnRoute,this)),r.initialized.add(t.parse,t),r.changed.add(t.parse,t),r.init(),i("#rl-content").css({visibility:"visible"}),o.delay(function(){l.removeClass("rl-started-trigger").addClass("rl-started")},50)},s.prototype.setHash=function(e,t,s){e="#"===e.substr(0,1)?e.substr(1):e,e="/"===e.substr(0,1)?e.substr(1):e,s=d.isUnd(s)?!1:!!s,(d.isUnd(t)?1:!t)?(r.changed.active=!0,r[s?"replaceHash":"setHash"](e),r.setHash(e)):(r.changed.active=!1,r[s?"replaceHash":"setHash"](e),r.changed.active=!0)},e.exports=new s}(t,e)},{$:26,$html:17,Globals:9,KnoinAbstractViewModel:36,Plugins:12,Utils:14,_:31,crossroads:23,hasher:24,ko:28}],34:[function(e,t){!function(e){"use strict";function t(){}t.prototype.bootstart=function(){},e.exports=t}(t,e)},{}],35:[function(e,t){!function(e,t){"use strict";function s(e,t){this.sScreenName=e,this.aViewModels=o.isArray(t)?t:[]}var i=t("crossroads"),o=t("Utils");s.prototype.oCross=null,s.prototype.sScreenName="",s.prototype.aViewModels=[],s.prototype.viewModels=function(){return this.aViewModels},s.prototype.screenName=function(){return this.sScreenName},s.prototype.routes=function(){return null},s.prototype.__cross=function(){return this.oCross},s.prototype.__start=function(){var e=this.routes(),t=null,s=null;o.isNonEmptyArray(e)&&(s=_.bind(this.onRoute||o.emptyFunction,this),t=i.create(),_.each(e,function(e){t.addRoute(e[0],s).rules=e[1]}),this.oCross=t)},e.exports=s}(t,e)},{Utils:14,crossroads:23}],36:[function(e,t){!function(e,t){"use strict";function s(e,t){this.bDisabeCloseOnEsc=!1,this.sPosition=a.pString(e),this.sTemplate=a.pString(t),this.sDefaultKeyScope=n.KeyState.None,this.sCurrentKeyScope=this.sDefaultKeyScope,this.viewModelName="",this.viewModelVisibility=i.observable(!1),this.modalVisibility=i.observable(!1).extend({rateLimit:0}),this.viewModelDom=null}var i=t("ko"),o=t("$window"),n=t("Enums"),r=t("Globals"),a=t("Utils");s.prototype.sPosition="",s.prototype.sTemplate="",s.prototype.viewModelName="",s.prototype.viewModelDom=null,s.prototype.viewModelTemplate=function(){return this.sTemplate},s.prototype.viewModelPosition=function(){return this.sPosition},s.prototype.cancelCommand=function(){},s.prototype.closeCommand=function(){},s.prototype.storeAndSetKeyScope=function(){this.sCurrentKeyScope=r.keyScope(),r.keyScope(this.sDefaultKeyScope)},s.prototype.restoreKeyScope=function(){r.keyScope(this.sCurrentKeyScope)},s.prototype.registerPopupKeyDown=function(){var e=this;o.on("keydown",function(t){if(t&&e.modalVisibility&&e.modalVisibility()){if(!this.bDisabeCloseOnEsc&&n.EventKeyCode.Esc===t.keyCode)return a.delegateRun(e,"cancelCommand"),!1;if(n.EventKeyCode.Backspace===t.keyCode&&!a.inFocus())return!1}return!0})},e.exports=s}(t,e)},{$window:18,Enums:7,Globals:9,Utils:14,ko:28}],37:[function(e,t){!function(e,t){"use strict";function s(e,t){this.email=e,this.deleteAccess=i.observable(!1),this.canBeDalete=i.observable(t)}var i=t("ko");s.prototype.email="",s.prototype.changeAccountLink=function(){return t("LinkBuilder").change(this.email)},e.exports=s}(t,e)},{LinkBuilder:10,ko:28}],38:[function(e,t){!function(e,t){"use strict";function s(){this.mimeType="",this.fileName="",this.estimatedSize=0,this.friendlySize="",this.isInline=!1,this.isLinked=!1,this.cid="",this.cidWithOutTags="",this.contentLocation="",this.download="",this.folder="",this.uid="",this.mimeIndex=""}var i=t("window"),o=t("Globals"),n=t("Utils"),r=t("LinkBuilder");s.newInstanceFromJson=function(e){var t=new s;return t.initByJson(e)?t:null},s.prototype.mimeType="",s.prototype.fileName="",s.prototype.estimatedSize=0,s.prototype.friendlySize="",s.prototype.isInline=!1,s.prototype.isLinked=!1,s.prototype.cid="",s.prototype.cidWithOutTags="",s.prototype.contentLocation="",s.prototype.download="",s.prototype.folder="",s.prototype.uid="",s.prototype.mimeIndex="",s.prototype.initByJson=function(e){var t=!1;return e&&"Object/Attachment"===e["@Object"]&&(this.mimeType=(e.MimeType||"").toLowerCase(),this.fileName=e.FileName,this.estimatedSize=n.pInt(e.EstimatedSize),this.isInline=!!e.IsInline,this.isLinked=!!e.IsLinked,this.cid=e.CID,this.contentLocation=e.ContentLocation,this.download=e.Download,this.folder=e.Folder,this.uid=e.Uid,this.mimeIndex=e.MimeIndex,this.friendlySize=n.friendlySize(this.estimatedSize),this.cidWithOutTags=this.cid.replace(/^<+/,"").replace(/>+$/,""),t=!0),t},s.prototype.isImage=function(){return-1,]+)>?,? ?/g,s=t.exec(e);s?(this.name=s[1]||"",this.email=s[2]||"",this.clearDuplicateName()):/^[^@]+@[^@]+$/.test(e)&&(this.name="",this.email=e)},s.prototype.initByJson=function(e){var t=!1;return e&&"Object/Email"===e["@Object"]&&(this.name=o.trim(e.Name),this.email=o.trim(e.Email),t=""!==this.email,this.clearDuplicateName()),t},s.prototype.toLine=function(e,t,s){var i="";return""!==this.email&&(t=o.isUnd(t)?!1:!!t,s=o.isUnd(s)?!1:!!s,e&&""!==this.name?i=t?'")+'" target="_blank" tabindex="-1">'+o.encodeHtml(this.name)+"":s?o.encodeHtml(this.name):this.name:(i=this.email,""!==this.name?t?i=o.encodeHtml('"'+this.name+'" <')+'")+'" target="_blank" tabindex="-1">'+o.encodeHtml(i)+""+o.encodeHtml(">"):(i='"'+this.name+'" <'+i+">",s&&(i=o.encodeHtml(i))):t&&(i=''+o.encodeHtml(this.email)+""))),i},s.prototype.mailsoParse=function(e){if(e=o.trim(e),""===e)return!1;for(var t=function(e,t,s){e+="";var i=e.length;return 0>t&&(t+=i),i="undefined"==typeof s?i:0>s?s+i:s+t,t>=e.length||0>t||t>i?!1:e.slice(t,i)},s=function(e,t,s,i){return 0>s&&(s+=e.length),i=void 0!==i?i:e.length,0>i&&(i=i+e.length-s),e.slice(0,s)+t.substr(0,i)+t.slice(i)+e.slice(s+i)},i="",n="",r="",a=!1,l=!1,c=!1,u=null,d=0,p=0,h=0;h0&&0===i.length&&(i=t(e,0,h)),l=!0,d=h);break;case">":l&&(p=h,n=t(e,d+1,p-d-1),e=s(e,"",d,p-d+1),p=0,h=0,d=0,l=!1);break;case"(":a||l||c||(c=!0,d=h);break;case")":c&&(p=h,r=t(e,d+1,p-d-1),e=s(e,"",d,p-d+1),p=0,h=0,d=0,c=!1);break;case"\\":h++}h++}return 0===n.length&&(u=e.match(/[^@\s]+@\S+/i),u&&u[0]?n=u[0]:i=e),n.length>0&&0===i.length&&0===r.length&&(i=e.replace(n,"")),n=o.trim(n).replace(/^[<]+/,"").replace(/[>]+$/,""),i=o.trim(i).replace(/^["']+/,"").replace(/["']+$/,""),r=o.trim(r).replace(/^[(]+/,"").replace(/[)]+$/,""),i=i.replace(/\\\\(.)/,"$1"),r=r.replace(/\\\\(.)/,"$1"),this.name=i,this.email=n,this.clearDuplicateName(),!0},s.prototype.inputoTagLine=function(){return 00){if(r.FolderType.Draft===s)return""+e;if(t>0&&r.FolderType.Trash!==s&&r.FolderType.Archive!==s&&r.FolderType.SentItems!==s)return""+t}return""},this),this.canBeDeleted=o.computed(function(){var e=this.isSystemFolder();return!e&&0===this.subFolders().length&&"INBOX"!==this.fullNameRaw},this),this.canBeSubScribed=o.computed(function(){return!this.isSystemFolder()&&this.selectable&&"INBOX"!==this.fullNameRaw},this),this.visible.subscribe(function(){l.timeOutAction("folder-list-folder-visibility-change",function(){n.trigger("folder-list-folder-visibility-change")},100)}),this.localName=o.computed(function(){a.langChangeTrigger();var e=this.type(),t=this.name();if(this.isSystemFolder())switch(e){case r.FolderType.Inbox:t=l.i18n("FOLDER_LIST/INBOX_NAME");break;case r.FolderType.SentItems:t=l.i18n("FOLDER_LIST/SENT_NAME");break;case r.FolderType.Draft:t=l.i18n("FOLDER_LIST/DRAFTS_NAME");break;case r.FolderType.Spam:t=l.i18n("FOLDER_LIST/SPAM_NAME");break;case r.FolderType.Trash:t=l.i18n("FOLDER_LIST/TRASH_NAME");break;case r.FolderType.Archive:t=l.i18n("FOLDER_LIST/ARCHIVE_NAME")}return t},this),this.manageFolderSystemName=o.computed(function(){a.langChangeTrigger();var e="",t=this.type(),s=this.name();if(this.isSystemFolder())switch(t){case r.FolderType.Inbox:e="("+l.i18n("FOLDER_LIST/INBOX_NAME")+")";break;case r.FolderType.SentItems:e="("+l.i18n("FOLDER_LIST/SENT_NAME")+")";break;case r.FolderType.Draft:e="("+l.i18n("FOLDER_LIST/DRAFTS_NAME")+")";break;case r.FolderType.Spam:e="("+l.i18n("FOLDER_LIST/SPAM_NAME")+")";break;case r.FolderType.Trash:e="("+l.i18n("FOLDER_LIST/TRASH_NAME")+")";break;case r.FolderType.Archive:e="("+l.i18n("FOLDER_LIST/ARCHIVE_NAME")+")"}return(""!==e&&"("+s+")"===e||"(inbox)"===e.toLowerCase())&&(e=""),e},this),this.collapsed=o.computed({read:function(){return!this.hidden()&&this.collapsedPrivate()},write:function(e){this.collapsedPrivate(e)},owner:this}),this.hasUnreadMessages=o.computed(function(){return 0"},s.prototype.formattedNameForCompose=function(){var e=this.name();return""===e?this.email():e+" ("+this.email()+")"},s.prototype.formattedNameForEmail=function(){var e=this.name();return""===e?this.email():'"'+o.quoteName(e)+'" <'+this.email()+">"},e.exports=s}(t,e)},{Utils:14,ko:28}],48:[function(e,t){!function(e,t){"use strict";function s(){this.folderFullNameRaw="",this.uid="",this.hash="",this.requestHash="",this.subject=r.observable(""),this.subjectPrefix=r.observable(""),this.subjectSuffix=r.observable(""),this.size=r.observable(0),this.dateTimeStampInUTC=r.observable(0),this.priority=r.observable(u.MessagePriority.Normal),this.proxy=!1,this.fromEmailString=r.observable(""),this.fromClearEmailString=r.observable(""),this.toEmailsString=r.observable(""),this.toClearEmailsString=r.observable(""),this.senderEmailsString=r.observable(""),this.senderClearEmailsString=r.observable(""),this.emails=[],this.from=[],this.to=[],this.cc=[],this.bcc=[],this.replyTo=[],this.deliveredTo=[],this.newForAnimation=r.observable(!1),this.deleted=r.observable(!1),this.unseen=r.observable(!1),this.flagged=r.observable(!1),this.answered=r.observable(!1),this.forwarded=r.observable(!1),this.isReadReceipt=r.observable(!1),this.focused=r.observable(!1),this.selected=r.observable(!1),this.checked=r.observable(!1),this.hasAttachments=r.observable(!1),this.attachmentsMainType=r.observable(""),this.moment=r.observable(a(a.unix(0))),this.attachmentIconClass=r.computed(function(){var e="";if(this.hasAttachments())switch(e="icon-attachment",this.attachmentsMainType()){case"image":e="icon-image";break;case"archive":e="icon-file-zip";break;case"doc":e="icon-file-text"}return e},this),this.fullFormatDateValue=r.computed(function(){return s.calculateFullFromatDateValue(this.dateTimeStampInUTC())},this),this.momentDate=d.createMomentDate(this),this.momentShortDate=d.createMomentShortDate(this),this.dateTimeStampInUTC.subscribe(function(e){var t=a().unix();this.moment(a.unix(e>t?t:e))},this),this.body=null,this.plainRaw="",this.isHtml=r.observable(!1),this.hasImages=r.observable(!1),this.attachments=r.observableArray([]),this.isPgpSigned=r.observable(!1),this.isPgpEncrypted=r.observable(!1),this.pgpSignedVerifyStatus=r.observable(u.SignedVerifyStatus.None),this.pgpSignedVerifyUser=r.observable(""),this.priority=r.observable(u.MessagePriority.Normal),this.readReceipt=r.observable(""),this.aDraftInfo=[],this.sMessageId="",this.sInReplyTo="",this.sReferences="",this.parentUid=r.observable(0),this.threads=r.observableArray([]),this.threadsLen=r.observable(0),this.hasUnseenSubMessage=r.observable(!1),this.hasFlaggedSubMessage=r.observable(!1),this.lastInCollapsedThread=r.observable(!1),this.lastInCollapsedThreadLoading=r.observable(!1),this.threadsLenResult=r.computed(function(){var e=this.threadsLen();return 0===this.parentUid()&&e>0?e+1:""},this)}var i=t("window"),o=t("$"),n=t("_"),r=t("ko"),a=t("moment"),l=t("$window"),c=t("$div"),u=t("Enums"),d=t("Utils"),p=t("LinkBuilder"),h=t("./EmailModel.js"),g=t("./AttachmentModel.js");s.newInstanceFromJson=function(e){var t=new s;return t.initByJson(e)?t:null},s.calculateFullFromatDateValue=function(e){return e>0?a.unix(e).format("LLL"):""},s.emailsToLine=function(e,t,s){var i=[],o=0,n=0;if(d.isNonEmptyArray(e))for(o=0,n=e.length;n>o;o++)i.push(e[o].toLine(t,s));return i.join(", ")},s.emailsToLineClear=function(e){var t=[],s=0,i=0;if(d.isNonEmptyArray(e))for(s=0,i=e.length;i>s;s++)e[s]&&e[s].email&&""!==e[s].name&&t.push(e[s].email);return t.join(", ")},s.initEmailsFromJson=function(e){var t=0,s=0,i=null,o=[];if(d.isNonEmptyArray(e))for(t=0,s=e.length;s>t;t++)i=h.newInstanceFromJson(e[t]),i&&o.push(i);return o},s.replyHelper=function(e,t,s){if(e&&0i;i++)d.isUnd(t[e[i].email])&&(t[e[i].email]=!0,s.push(e[i]))},s.prototype.clear=function(){this.folderFullNameRaw="",this.uid="",this.hash="",this.requestHash="",this.subject(""),this.subjectPrefix(""),this.subjectSuffix(""),this.size(0),this.dateTimeStampInUTC(0),this.priority(u.MessagePriority.Normal),this.proxy=!1,this.fromEmailString(""),this.fromClearEmailString(""),this.toEmailsString(""),this.toClearEmailsString(""),this.senderEmailsString(""),this.senderClearEmailsString(""),this.emails=[],this.from=[],this.to=[],this.cc=[],this.bcc=[],this.replyTo=[],this.deliveredTo=[],this.newForAnimation(!1),this.deleted(!1),this.unseen(!1),this.flagged(!1),this.answered(!1),this.forwarded(!1),this.isReadReceipt(!1),this.selected(!1),this.checked(!1),this.hasAttachments(!1),this.attachmentsMainType(""),this.body=null,this.isHtml(!1),this.hasImages(!1),this.attachments([]),this.isPgpSigned(!1),this.isPgpEncrypted(!1),this.pgpSignedVerifyStatus(u.SignedVerifyStatus.None),this.pgpSignedVerifyUser(""),this.priority(u.MessagePriority.Normal),this.readReceipt(""),this.aDraftInfo=[],this.sMessageId="",this.sInReplyTo="",this.sReferences="",this.parentUid(0),this.threads([]),this.threadsLen(0),this.hasUnseenSubMessage(!1),this.hasFlaggedSubMessage(!1),this.lastInCollapsedThread(!1),this.lastInCollapsedThreadLoading(!1)},s.prototype.computeSenderEmail=function(){var e=t("../Storages/WebMailDataStorage.js"),s=e.sentFolder(),i=e.draftFolder();this.senderEmailsString(this.folderFullNameRaw===s||this.folderFullNameRaw===i?this.toEmailsString():this.fromEmailString()),this.senderClearEmailsString(this.folderFullNameRaw===s||this.folderFullNameRaw===i?this.toClearEmailsString():this.fromClearEmailString())},s.prototype.initByJson=function(e){var t=!1;return e&&"Object/Message"===e["@Object"]&&(this.folderFullNameRaw=e.Folder,this.uid=e.Uid,this.hash=e.Hash,this.requestHash=e.RequestHash,this.proxy=!!e.ExternalProxy,this.size(d.pInt(e.Size)),this.from=s.initEmailsFromJson(e.From),this.to=s.initEmailsFromJson(e.To),this.cc=s.initEmailsFromJson(e.Cc),this.bcc=s.initEmailsFromJson(e.Bcc),this.replyTo=s.initEmailsFromJson(e.ReplyTo),this.deliveredTo=s.initEmailsFromJson(e.DeliveredTo),this.subject(e.Subject),d.isArray(e.SubjectParts)?(this.subjectPrefix(e.SubjectParts[0]),this.subjectSuffix(e.SubjectParts[1])):(this.subjectPrefix(""),this.subjectSuffix(this.subject())),this.dateTimeStampInUTC(d.pInt(e.DateTimeStampInUTC)),this.hasAttachments(!!e.HasAttachments),this.attachmentsMainType(e.AttachmentsMainType),this.fromEmailString(s.emailsToLine(this.from,!0)),this.fromClearEmailString(s.emailsToLineClear(this.from)),this.toEmailsString(s.emailsToLine(this.to,!0)),this.toClearEmailsString(s.emailsToLineClear(this.to)),this.parentUid(d.pInt(e.ParentThread)),this.threads(d.isArray(e.Threads)?e.Threads:[]),this.threadsLen(d.pInt(e.ThreadsLen)),this.initFlagsByJson(e),this.computeSenderEmail(),t=!0),t},s.prototype.initUpdateByMessageJson=function(e){var s=t("../Storages/WebMailDataStorage.js"),i=!1,o=u.MessagePriority.Normal;return e&&"Object/Message"===e["@Object"]&&(o=d.pInt(e.Priority),this.priority(-1t;t++)i=g.newInstanceFromJson(e["@Collection"][t]),i&&(""!==i.cidWithOutTags&&0+$/,""),t=n.find(s,function(t){return e===t.cidWithOutTags})),t||null},s.prototype.findAttachmentByContentLocation=function(e){var t=null,s=this.attachments();return d.isNonEmptyArray(s)&&(t=n.find(s,function(t){return e===t.contentLocation})),t||null},s.prototype.messageId=function(){return this.sMessageId},s.prototype.inReplyTo=function(){return this.sInReplyTo},s.prototype.references=function(){return this.sReferences},s.prototype.fromAsSingleEmail=function(){return d.isArray(this.from)&&this.from[0]?this.from[0].email:""},s.prototype.viewLink=function(){return p.messageViewLink(this.requestHash)},s.prototype.downloadLink=function(){return p.messageDownloadLink(this.requestHash)},s.prototype.replyEmails=function(e){var t=[],i=d.isUnd(e)?{}:e;return s.replyHelper(this.replyTo,i,t),0===t.length&&s.replyHelper(this.from,i,t),t},s.prototype.replyAllEmails=function(e){var t=[],i=[],o=d.isUnd(e)?{}:e;return s.replyHelper(this.replyTo,o,t),0===t.length&&s.replyHelper(this.from,o,t),s.replyHelper(this.to,o,t),s.replyHelper(this.cc,o,i),[t,i]},s.prototype.textBodyToString=function(){return this.body?this.body.html():""},s.prototype.attachmentsToStringLine=function(){var e=n.map(this.attachments(),function(e){return e.fileName+" ("+e.friendlySize+")"});return e&&0=0&&i&&!n&&s.attr("src",i)}),e&&i.setTimeout(function(){t.print()},100))})},s.prototype.printMessage=function(){this.viewPopupMessage(!0)},s.prototype.generateUid=function(){return this.folderFullNameRaw+"/"+this.uid},s.prototype.populateByMessageListItem=function(e){return this.folderFullNameRaw=e.folderFullNameRaw,this.uid=e.uid,this.hash=e.hash,this.requestHash=e.requestHash,this.subject(e.subject()),this.subjectPrefix(this.subjectPrefix()),this.subjectSuffix(this.subjectSuffix()),this.size(e.size()),this.dateTimeStampInUTC(e.dateTimeStampInUTC()),this.priority(e.priority()),this.proxy=e.proxy,this.fromEmailString(e.fromEmailString()),this.fromClearEmailString(e.fromClearEmailString()),this.toEmailsString(e.toEmailsString()),this.toClearEmailsString(e.toClearEmailsString()),this.emails=e.emails,this.from=e.from,this.to=e.to,this.cc=e.cc,this.bcc=e.bcc,this.replyTo=e.replyTo,this.deliveredTo=e.deliveredTo,this.unseen(e.unseen()),this.flagged(e.flagged()),this.answered(e.answered()),this.forwarded(e.forwarded()),this.isReadReceipt(e.isReadReceipt()),this.selected(e.selected()),this.checked(e.checked()),this.hasAttachments(e.hasAttachments()),this.attachmentsMainType(e.attachmentsMainType()),this.moment(e.moment()),this.body=null,this.priority(u.MessagePriority.Normal),this.aDraftInfo=[],this.sMessageId="",this.sInReplyTo="",this.sReferences="",this.parentUid(e.parentUid()),this.threads(e.threads()),this.threadsLen(e.threadsLen()),this.computeSenderEmail(),this},s.prototype.showExternalImages=function(e){if(this.body&&this.body.data("rl-has-images")){var t="";e=d.isUnd(e)?!1:e,this.hasImages(!1),this.body.data("rl-has-images",!1),t=this.proxy?"data-x-additional-src":"data-x-src",o("["+t+"]",this.body).each(function(){e&&o(this).is("img")?o(this).addClass("lazy").attr("data-original",o(this).attr(t)).removeAttr(t):o(this).attr("src",o(this).attr(t)).removeAttr(t)}),t=this.proxy?"data-x-additional-style-url":"data-x-style-url",o("["+t+"]",this.body).each(function(){var e=d.trim(o(this).attr("style"));e=""===e?"":";"===e.substr(-1)?e+" ":e+"; ",o(this).attr("style",e+o(this).attr(t)).removeAttr(t)}),e&&(o("img.lazy",this.body).addClass("lazy-inited").lazyload({threshold:400,effect:"fadeIn",skip_invisible:!1,container:o(".RL-MailMessageView .messageView .messageItem .content")[0]}),l.resize()),d.windowResize(500)}},s.prototype.showInternalImages=function(e){if(this.body&&!this.body.data("rl-init-internal-images")){this.body.data("rl-init-internal-images",!0),e=d.isUnd(e)?!1:e;var t=this;o("[data-x-src-cid]",this.body).each(function(){var s=t.findAttachmentByCid(o(this).attr("data-x-src-cid"));s&&s.download&&(e&&o(this).is("img")?o(this).addClass("lazy").attr("data-original",s.linkPreview()):o(this).attr("src",s.linkPreview()))}),o("[data-x-src-location]",this.body).each(function(){var s=t.findAttachmentByContentLocation(o(this).attr("data-x-src-location"));s||(s=t.findAttachmentByCid(o(this).attr("data-x-src-location"))),s&&s.download&&(e&&o(this).is("img")?o(this).addClass("lazy").attr("data-original",s.linkPreview()):o(this).attr("src",s.linkPreview()))}),o("[data-x-style-cid]",this.body).each(function(){var e="",s="",i=t.findAttachmentByCid(o(this).attr("data-x-style-cid"));i&&i.linkPreview&&(s=o(this).attr("data-x-style-cid-name"),""!==s&&(e=d.trim(o(this).attr("style")),e=""===e?"":";"===e.substr(-1)?e+" ":e+"; ",o(this).attr("style",e+s+": url('"+i.linkPreview()+"')")))}),e&&!function(e,t){n.delay(function(){e.addClass("lazy-inited").lazyload({threshold:400,effect:"fadeIn",skip_invisible:!1,container:t})},300)}(o("img.lazy",t.body),o(".RL-MailMessageView .messageView .messageItem .content")[0]),d.windowResize(500)}},s.prototype.storeDataToDom=function(){if(this.body){this.body.data("rl-is-html",!!this.isHtml()),this.body.data("rl-has-images",!!this.hasImages()),this.body.data("rl-plain-raw",this.plainRaw);var e=t("../Storages/WebMailDataStorage.js");e.capaOpenPGP()&&(this.body.data("rl-plain-pgp-signed",!!this.isPgpSigned()),this.body.data("rl-plain-pgp-encrypted",!!this.isPgpEncrypted()),this.body.data("rl-pgp-verify-status",this.pgpSignedVerifyStatus()),this.body.data("rl-pgp-verify-user",this.pgpSignedVerifyUser()))}},s.prototype.storePgpVerifyDataToDom=function(){var e=t("../Storages/WebMailDataStorage.js");this.body&&e.capaOpenPGP()&&(this.body.data("rl-pgp-verify-status",this.pgpSignedVerifyStatus()),this.body.data("rl-pgp-verify-user",this.pgpSignedVerifyUser()))},s.prototype.fetchDataToDom=function(){if(this.body){this.isHtml(!!this.body.data("rl-is-html")),this.hasImages(!!this.body.data("rl-has-images")),this.plainRaw=d.pString(this.body.data("rl-plain-raw"));var e=t("../Storages/WebMailDataStorage.js");e.capaOpenPGP()?(this.isPgpSigned(!!this.body.data("rl-plain-pgp-signed")),this.isPgpEncrypted(!!this.body.data("rl-plain-pgp-encrypted")),this.pgpSignedVerifyStatus(this.body.data("rl-pgp-verify-status")),this.pgpSignedVerifyUser(this.body.data("rl-pgp-verify-user"))):(this.isPgpSigned(!1),this.isPgpEncrypted(!1),this.pgpSignedVerifyStatus(u.SignedVerifyStatus.None),this.pgpSignedVerifyUser(""))}},s.prototype.verifyPgpSignedClearMessage=function(){if(this.isPgpSigned()){var e=[],s=null,r=t("../Storages/WebMailDataStorage.js"),a=this.from&&this.from[0]&&this.from[0].email?this.from[0].email:"",l=r.findPublicKeysByEmail(a),d=null,p=null,h="";this.pgpSignedVerifyStatus(u.SignedVerifyStatus.Error),this.pgpSignedVerifyUser("");try{s=i.openpgp.cleartext.readArmored(this.plainRaw),s&&s.getText&&(this.pgpSignedVerifyStatus(l.length?u.SignedVerifyStatus.Unverified:u.SignedVerifyStatus.UnknownPublicKeys),e=s.verify(l),e&&0').text(h)).html(),c.empty(),this.replacePlaneTextBody(h)))))}catch(g){}this.storePgpVerifyDataToDom()}},s.prototype.decryptPgpEncryptedMessage=function(e){if(this.isPgpEncrypted()){var s=[],r=null,a=null,l=t("../Storages/WebMailDataStorage.js"),d=this.from&&this.from[0]&&this.from[0].email?this.from[0].email:"",p=l.findPublicKeysByEmail(d),h=l.findSelfPrivateKey(e),g=null,m=null,f="";this.pgpSignedVerifyStatus(u.SignedVerifyStatus.Error),this.pgpSignedVerifyUser(""),h||this.pgpSignedVerifyStatus(u.SignedVerifyStatus.UnknownPrivateKey);try{r=i.openpgp.message.readArmored(this.plainRaw),r&&h&&r.decrypt&&(this.pgpSignedVerifyStatus(u.SignedVerifyStatus.Unverified),a=r.decrypt(h),a&&(s=a.verify(p),s&&0').text(f)).html(),c.empty(),this.replacePlaneTextBody(f)))}catch(b){}this.storePgpVerifyDataToDom()}},s.prototype.replacePlaneTextBody=function(e){this.body&&this.body.html(e).addClass("b-text-part plain")},s.prototype.flagHash=function(){return[this.deleted(),this.unseen(),this.flagged(),this.answered(),this.forwarded(),this.isReadReceipt()].join("")},e.exports=s}(t,e)},{$:26,$div:15,$window:18,"../Storages/WebMailDataStorage.js":74,"./AttachmentModel.js":38,"./EmailModel.js":43,Enums:7,LinkBuilder:10,Utils:14,_:31,ko:28,moment:29,window:32}],49:[function(e,t){!function(e,t){"use strict";function s(e,t,s,o,n,r,a){this.index=e,this.id=s,this.guid=t,this.user=o,this.email=n,this.armor=a,this.isPrivate=!!r,this.deleteAccess=i.observable(!1)}var i=t("ko");s.prototype.index=0,s.prototype.id="",s.prototype.guid="",s.prototype.user="",s.prototype.email="",s.prototype.armor="",s.prototype.isPrivate=!1,e.exports=s}(t,e)},{ko:28}],50:[function(e,t){!function(e,t){"use strict";function s(e){u.call(this,"settings",e),this.menu=n.observableArray([]),this.oCurrentSubScreen=null,this.oViewModelPlace=null}var i=t("$"),o=t("_"),n=t("ko"),r=t("Globals"),a=t("Utils"),l=t("LinkBuilder"),c=t("kn"),u=t("KnoinAbstractScreen");o.extend(s.prototype,u.prototype),s.prototype.onRoute=function(e){var t=this,s=null,u=null,d=null,p=null;u=o.find(r.aViewModels.settings,function(t){return t&&t.__rlSettingsData&&e===t.__rlSettingsData.Route}),u&&(o.find(r.aViewModels["settings-removed"],function(e){return e&&e===u})&&(u=null),u&&o.find(r.aViewModels["settings-disabled"],function(e){return e&&e===u})&&(u=null)),u?(u.__builded&&u.__vm?s=u.__vm:(d=this.oViewModelPlace,d&&1===d.length?(s=new u,p=i("").addClass("rl-settings-view-model").hide(),p.appendTo(d),s.viewModelDom=p,s.__rlSettingsData=u.__rlSettingsData,u.__dom=p,u.__builded=!0,u.__vm=s,n.applyBindingAccessorsToNode(p[0],{i18nInit:!0,template:function(){return{name:u.__rlSettingsData.Template}}},s),a.delegateRun(s,"onBuild",[p])):a.log("Cannot find sub settings view model position: SettingsSubScreen")),s&&o.defer(function(){t.oCurrentSubScreen&&(a.delegateRun(t.oCurrentSubScreen,"onHide"),t.oCurrentSubScreen.viewModelDom.hide()),t.oCurrentSubScreen=s,t.oCurrentSubScreen&&(t.oCurrentSubScreen.viewModelDom.show(),a.delegateRun(t.oCurrentSubScreen,"onShow"),a.delegateRun(t.oCurrentSubScreen,"onFocus",[],200),o.each(t.menu(),function(e){e.selected(s&&s.__rlSettingsData&&e.route===s.__rlSettingsData.Route)}),i("#rl-content .b-settings .b-content .content").scrollTop(0)),a.windowResize()})):c.setHash(l.settings(),!1,!0)},s.prototype.onHide=function(){this.oCurrentSubScreen&&this.oCurrentSubScreen.viewModelDom&&(a.delegateRun(this.oCurrentSubScreen,"onHide"),this.oCurrentSubScreen.viewModelDom.hide())},s.prototype.onBuild=function(){o.each(r.aViewModels.settings,function(e){e&&e.__rlSettingsData&&!o.find(r.aViewModels["settings-removed"],function(t){return t&&t===e})&&this.menu.push({route:e.__rlSettingsData.Route,label:e.__rlSettingsData.Label,selected:n.observable(!1),disabled:!!o.find(r.aViewModels["settings-disabled"],function(t){return t&&t===e})})},this),this.oViewModelPlace=i("#rl-content #rl-settings-subscreen")},s.prototype.routes=function(){var e=o.find(r.aViewModels.settings,function(e){return e&&e.__rlSettingsData&&e.__rlSettingsData.IsDefault}),t=e?e.__rlSettingsData.Route:"general",s={subname:/^(.*)$/,normalize_:function(e,s){return s.subname=a.isUnd(s.subname)?t:a.pString(s.subname),[s.subname]}};return[["{subname}/",s],["{subname}",s],["",s]]},e.exports=s}(t,e)},{$:26,Globals:9,KnoinAbstractScreen:35,LinkBuilder:10,Utils:14,_:31,kn:33,ko:28}],51:[function(e,t){!function(e,t){"use strict";function s(){var e=t("../ViewModels/LoginViewModel.js");o.call(this,"login",[e])}var i=t("_"),o=t("KnoinAbstractScreen");i.extend(s.prototype,o.prototype),s.prototype.onShow=function(){var e=t("../Apps/RainLoopApp.js");e.setTitle("")},e.exports=s}(t,e)},{"../Apps/RainLoopApp.js":3,"../ViewModels/LoginViewModel.js":76,KnoinAbstractScreen:35,_:31}],52:[function(e,t){!function(e,t){"use strict";function s(){var e=t("../ViewModels/MailBoxSystemDropDownViewModel.js"),s=t("../ViewModels/MailBoxFolderListViewModel.js"),i=t("../ViewModels/MailBoxMessageListViewModel.js"),o=t("../ViewModels/MailBoxMessageViewViewModel.js");c.call(this,"mailbox",[e,s,i,o]),this.oLastRoute={}}var i=t("_"),o=t("$html"),n=t("Enums"),r=t("Globals"),a=t("Utils"),l=t("Events"),c=t("KnoinAbstractScreen"),u=t("../Storages/AppSettings.js"),d=t("../Storages/WebMailDataStorage.js"),p=t("../Storages/WebMailCacheStorage.js"),h=t("../Storages/WebMailAjaxRemoteStorage.js");i.extend(s.prototype,c.prototype),s.prototype.oLastRoute={},s.prototype.setNewTitle=function(){var e=t("../Apps/RainLoopApp.js"),s=d.accountEmail(),i=d.foldersInboxUnreadCount();e.setTitle((""===s?"":(i>0?"("+i+") ":" ")+s+" - ")+a.i18n("TITLES/MAILBOX"))},s.prototype.onShow=function(){this.setNewTitle(),r.keyScope(n.KeyState.MessageList)},s.prototype.onRoute=function(e,s,i,o){var r=t("../Apps/RainLoopApp.js");if(a.isUnd(o)?1:!o){var l=p.getFolderFullNameRaw(e),c=p.getFolderFromCacheList(l);c&&(d.currentFolder(c).messageListPage(s).messageListSearch(i),n.Layout.NoPreview===d.layout()&&d.message()&&d.message(null),r.reloadMessageList())}else n.Layout.NoPreview!==d.layout()||d.message()||r.historyBack()},s.prototype.onStart=function(){var e=t("../Apps/RainLoopApp.js"),s=function(){a.windowResize()};(u.capa(n.Capa.AdditionalAccounts)||u.capa(n.Capa.AdditionalIdentities))&&e.accountsAndIdentities(),i.delay(function(){"INBOX"!==d.currentFolderFullNameRaw()&&e.folderInformation("INBOX")},1e3),i.delay(function(){e.quota()},5e3),i.delay(function(){h.appDelayStart(a.emptyFunction)},35e3),o.toggleClass("rl-no-preview-pane",n.Layout.NoPreview===d.layout()),d.folderList.subscribe(s),d.messageList.subscribe(s),d.message.subscribe(s),d.layout.subscribe(function(e){o.toggleClass("rl-no-preview-pane",n.Layout.NoPreview===e)}),l.sub("mailbox.inbox-unread-count",function(e){d.foldersInboxUnreadCount(e)}),d.foldersInboxUnreadCount.subscribe(function(){this.setNewTitle()},this)},s.prototype.routes=function(){var e=function(){return["Inbox",1,"",!0]},t=function(e,t){return t[0]=a.pString(t[0]),t[1]=a.pInt(t[1]),t[1]=0>=t[1]?1:t[1],t[2]=a.pString(t[2]),""===e&&(t[0]="Inbox",t[1]=1),[decodeURI(t[0]),t[1],decodeURI(t[2]),!1]},s=function(e,t){return t[0]=a.pString(t[0]),t[1]=a.pString(t[1]),""===e&&(t[0]="Inbox"),[decodeURI(t[0]),1,decodeURI(t[1]),!1]};return[[/^([a-zA-Z0-9]+)\/p([1-9][0-9]*)\/(.+)\/?$/,{normalize_:t}],[/^([a-zA-Z0-9]+)\/p([1-9][0-9]*)$/,{normalize_:t}],[/^([a-zA-Z0-9]+)\/(.+)\/?$/,{normalize_:s}],[/^message-preview$/,{normalize_:e}],[/^([^\/]*)$/,{normalize_:t}]]},e.exports=s}(t,e)},{$html:17,"../Apps/RainLoopApp.js":3,"../Storages/AppSettings.js":68,"../Storages/WebMailAjaxRemoteStorage.js":72,"../Storages/WebMailCacheStorage.js":73,"../Storages/WebMailDataStorage.js":74,"../ViewModels/MailBoxFolderListViewModel.js":77,"../ViewModels/MailBoxMessageListViewModel.js":78,"../ViewModels/MailBoxMessageViewViewModel.js":79,"../ViewModels/MailBoxSystemDropDownViewModel.js":80,Enums:7,Events:8,Globals:9,KnoinAbstractScreen:35,Utils:14,_:31}],53:[function(e,t){!function(e,t){"use strict";function s(){var e=t("../Apps/RainLoopApp.js"),s=t("../ViewModels/SettingsSystemDropDownViewModel.js"),i=t("../ViewModels/SettingsMenuViewModel.js"),o=t("../ViewModels/SettingsPaneViewModel.js");a.call(this,[s,i,o]),n.initOnStartOrLangChange(function(){this.sSettingsTitle=n.i18n("TITLES/SETTINGS")},this,function(){e.setTitle(this.sSettingsTitle)})}var i=t("_"),o=t("Enums"),n=t("Utils"),r=t("Globals"),a=t("./AbstractSettings.js");i.extend(s.prototype,a.prototype),s.prototype.onShow=function(){var e=t("../Apps/RainLoopApp.js");e.setTitle(this.sSettingsTitle),r.keyScope(o.KeyState.Settings)},e.exports=s}(t,e)},{"../Apps/RainLoopApp.js":3,"../ViewModels/SettingsMenuViewModel.js":98,"../ViewModels/SettingsPaneViewModel.js":99,"../ViewModels/SettingsSystemDropDownViewModel.js":100,"./AbstractSettings.js":50,Enums:7,Globals:9,Utils:14,_:31}],54:[function(e,t){!function(e,t){"use strict";function s(){this.accounts=c.accounts,this.processText=n.computed(function(){return c.accountsLoading()?a.i18n("SETTINGS_ACCOUNTS/LOADING_PROCESS"):""},this),this.visibility=n.computed(function(){return""===this.processText()?"hidden":"visible"},this),this.accountForDeletion=n.observable(null).extend({falseTimeout:3e3}).extend({toggleSubscribe:[this,function(e){e&&e.deleteAccess(!1)},function(e){e&&e.deleteAccess(!0)}]})}var i=t("window"),o=t("_"),n=t("ko"),r=t("Enums"),a=t("Utils"),l=t("LinkBuilder"),c=t("../../Storages/WebMailDataStorage.js"),u=t("../../Storages/WebMailAjaxRemoteStorage.js"),d=t("kn"),p=t("../../ViewModels/Popups/PopupsAddAccountViewModel.js");s.prototype.addNewAccount=function(){d.showScreenPopup(p)},s.prototype.deleteAccount=function(e){if(e&&e.deleteAccess()){this.accountForDeletion(null);var s=t("../../Apps/RainLoopApp.js"),n=function(t){return e===t};e&&(this.accounts.remove(n),u.accountDelete(function(e,t){r.StorageResultType.Success===e&&t&&t.Result&&t.Reload?(d.routeOff(),d.setHash(l.root(),!0),d.routeOff(),o.defer(function(){i.location.reload()})):s.accountsAndIdentities()},e.email))}},e.exports=s}(t,e)},{"../../Apps/RainLoopApp.js":3,"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../Storages/WebMailDataStorage.js":74,"../../ViewModels/Popups/PopupsAddAccountViewModel.js":81,Enums:7,LinkBuilder:10,Utils:14,_:31,kn:33,ko:28,window:32}],55:[function(e,t){!function(e,t){"use strict";function s(){this.changeProcess=o.observable(!1),this.errorDescription=o.observable(""),this.passwordMismatch=o.observable(!1),this.passwordUpdateError=o.observable(!1),this.passwordUpdateSuccess=o.observable(!1),this.currentPassword=o.observable(""),this.currentPassword.error=o.observable(!1),this.newPassword=o.observable(""),this.newPassword2=o.observable(""),this.currentPassword.subscribe(function(){this.passwordUpdateError(!1),this.passwordUpdateSuccess(!1),this.currentPassword.error(!1)},this),this.newPassword.subscribe(function(){this.passwordUpdateError(!1),this.passwordUpdateSuccess(!1),this.passwordMismatch(!1)},this),this.newPassword2.subscribe(function(){this.passwordUpdateError(!1),this.passwordUpdateSuccess(!1),this.passwordMismatch(!1)},this),this.saveNewPasswordCommand=r.createCommand(this,function(){this.newPassword()!==this.newPassword2()?(this.passwordMismatch(!0),this.errorDescription(r.i18n("SETTINGS_CHANGE_PASSWORD/ERROR_PASSWORD_MISMATCH"))):(this.changeProcess(!0),this.passwordUpdateError(!1),this.passwordUpdateSuccess(!1),this.currentPassword.error(!1),this.passwordMismatch(!1),this.errorDescription(""),a.changePassword(this.onChangePasswordResponse,this.currentPassword(),this.newPassword()))},function(){return!this.changeProcess()&&""!==this.currentPassword()&&""!==this.newPassword()&&""!==this.newPassword2()}),this.onChangePasswordResponse=i.bind(this.onChangePasswordResponse,this)}var i=t("_"),o=t("ko"),n=t("Enums"),r=t("Utils"),a=t("../../Storages/WebMailAjaxRemoteStorage.js");s.prototype.onHide=function(){this.changeProcess(!1),this.currentPassword(""),this.newPassword(""),this.newPassword2(""),this.errorDescription(""),this.passwordMismatch(!1),this.currentPassword.error(!1)},s.prototype.onChangePasswordResponse=function(e,t){this.changeProcess(!1),this.passwordMismatch(!1),this.errorDescription(""),this.currentPassword.error(!1),n.StorageResultType.Success===e&&t&&t.Result?(this.currentPassword(""),this.newPassword(""),this.newPassword2(""),this.passwordUpdateSuccess(!0),this.currentPassword.error(!1)):(t&&n.Notification.CurrentPasswordIncorrect===t.ErrorCode&&this.currentPassword.error(!0),this.passwordUpdateError(!0),this.errorDescription(r.getNotification(t&&t.ErrorCode?t.ErrorCode:n.Notification.CouldNotSaveNewPassword)))},e.exports=s}(t,e)},{"../../Storages/WebMailAjaxRemoteStorage.js":72,Enums:7,Utils:14,_:31,ko:28}],56:[function(e,t){!function(e,t){"use strict";function s(){this.contactsAutosave=r.contactsAutosave,this.allowContactsSync=r.allowContactsSync,this.enableContactsSync=r.enableContactsSync,this.contactsSyncUrl=r.contactsSyncUrl,this.contactsSyncUser=r.contactsSyncUser,this.contactsSyncPass=r.contactsSyncPass,this.saveTrigger=i.computed(function(){return[this.enableContactsSync()?"1":"0",this.contactsSyncUrl(),this.contactsSyncUser(),this.contactsSyncPass()].join("|")},this).extend({throttle:500}),this.saveTrigger.subscribe(function(){n.saveContactsSyncData(null,this.enableContactsSync(),this.contactsSyncUrl(),this.contactsSyncUser(),this.contactsSyncPass())},this)}var i=t("ko"),o=t("Utils"),n=t("../../Storages/WebMailAjaxRemoteStorage.js"),r=t("../../Storages/WebMailDataStorage.js");s.prototype.onBuild=function(){r.contactsAutosave.subscribe(function(e){n.saveSettings(o.emptyFunction,{ContactsAutosave:e?"1":"0"})})},e.exports=s}(t,e)},{"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../Storages/WebMailDataStorage.js":74,Utils:14,ko:28}],57:[function(e,t){!function(e,t){"use strict";function s(){this.filters=i.observableArray([]),this.filters.loading=i.observable(!1),this.filters.subscribe(function(){o.windowResize()})}var i=t("ko"),o=t("Utils");s.prototype.deleteFilter=function(e){this.filters.remove(e)},s.prototype.addFilter=function(){var e=t("kn"),s=t("../../Models/FilterModel.js"),i=t("../../ViewModels/Popups/PopupsFilterViewModel.js");e.showScreenPopup(i,[new s])},e.exports=s}(t,e)},{"../../Models/FilterModel.js":45,"../../ViewModels/Popups/PopupsFilterViewModel.js":88,Utils:14,kn:33,ko:28}],58:[function(e,t){!function(e,t){"use strict";function s(){this.foldersListError=c.foldersListError,this.folderList=c.folderList,this.processText=i.computed(function(){var e=c.foldersLoading(),t=c.foldersCreating(),s=c.foldersDeleting(),i=c.foldersRenaming();return t?n.i18n("SETTINGS_FOLDERS/CREATING_PROCESS"):s?n.i18n("SETTINGS_FOLDERS/DELETING_PROCESS"):i?n.i18n("SETTINGS_FOLDERS/RENAMING_PROCESS"):e?n.i18n("SETTINGS_FOLDERS/LOADING_PROCESS"):""},this),this.visibility=i.computed(function(){return""===this.processText()?"hidden":"visible"},this),this.folderForDeletion=i.observable(null).extend({falseTimeout:3e3}).extend({toggleSubscribe:[this,function(e){e&&e.deleteAccess(!1)},function(e){e&&e.deleteAccess(!0)}]}),this.folderForEdit=i.observable(null).extend({toggleSubscribe:[this,function(e){e&&e.edited(!1)},function(e){e&&e.canBeEdited()&&e.edited(!0)}]}),this.useImapSubscribe=!!a.settingsGet("UseImapSubscribe")}var i=t("ko"),o=t("Enums"),n=t("Utils"),r=t("kn"),a=t("../../Storages/AppSettings.js"),l=t("../../Storages/LocalStorage.js"),c=t("../../Storages/WebMailDataStorage.js"),u=t("../../Storages/WebMailCacheStorage.js"),d=t("../../Storages/WebMailAjaxRemoteStorage.js"),p=t("../../ViewModels/Popups/PopupsFolderCreateViewModel.js"),h=t("../../ViewModels/Popups/PopupsFolderSystemViewModel.js");s.prototype.folderEditOnEnter=function(e){var s=t("../../Apps/RainLoopApp.js"),i=e?n.trim(e.nameForEdit()):"";""!==i&&e.name()!==i&&(l.set(o.ClientSideKeyName.FoldersLashHash,""),c.foldersRenaming(!0),d.folderRename(function(e,t){c.foldersRenaming(!1),o.StorageResultType.Success===e&&t&&t.Result||c.foldersListError(t&&t.ErrorCode?n.getNotification(t.ErrorCode):n.i18n("NOTIFICATIONS/CANT_RENAME_FOLDER")),s.folders()},e.fullNameRaw,i),u.removeFolderFromCacheList(e.fullNameRaw),e.name(i)),e.edited(!1)},s.prototype.folderEditOnEsc=function(e){e&&e.edited(!1)},s.prototype.onShow=function(){c.foldersListError("")},s.prototype.createFolder=function(){r.showScreenPopup(p)},s.prototype.systemFolder=function(){r.showScreenPopup(h)},s.prototype.deleteFolder=function(e){if(e&&e.canBeDeleted()&&e.deleteAccess()&&0===e.privateMessageCountAll()){this.folderForDeletion(null);var s=t("../../Apps/RainLoopApp.js"),i=function(t){return e===t?!0:(t.subFolders.remove(i),!1)};e&&(l.set(o.ClientSideKeyName.FoldersLashHash,""),c.folderList.remove(i),c.foldersDeleting(!0),d.folderDelete(function(e,t){c.foldersDeleting(!1),o.StorageResultType.Success===e&&t&&t.Result||c.foldersListError(t&&t.ErrorCode?n.getNotification(t.ErrorCode):n.i18n("NOTIFICATIONS/CANT_DELETE_FOLDER")),s.folders()},e.fullNameRaw),u.removeFolderFromCacheList(e.fullNameRaw))}else 0"},s.prototype.addNewIdentity=function(){u.showScreenPopup(d)},s.prototype.editIdentity=function(e){u.showScreenPopup(d,[e])},s.prototype.deleteIdentity=function(e){if(e&&e.deleteAccess()){this.identityForDeletion(null);var s=t("../../Apps/RainLoopApp.js"),i=function(t){return e===t};e&&(this.identities.remove(i),c.identityDelete(function(){s.accountsAndIdentities()},e.id))}},s.prototype.onFocus=function(){if(!this.editor&&this.signatureDom()){var e=this,t=l.signature();this.editor=new a(e.signatureDom(),function(){l.signature((e.editor.isHtml()?":HTML:":"")+e.editor.getData())},function(){":HTML:"===t.substr(0,6)?e.editor.setHtml(t.substr(6),!1):e.editor.setPlain(t,!1)})}},s.prototype.onBuild=function(e){var t=this;
-e.on("click",".identity-item .e-action",function(){var e=i.dataFor(this);e&&t.editIdentity(e)}),o.delay(function(){var e=r.settingsSaveHelperSimpleFunction(t.displayNameTrigger,t),s=r.settingsSaveHelperSimpleFunction(t.replyTrigger,t),i=r.settingsSaveHelperSimpleFunction(t.signatureTrigger,t),o=r.settingsSaveHelperSimpleFunction(t.defaultIdentityIDTrigger,t);l.defaultIdentityID.subscribe(function(e){c.saveSettings(o,{DefaultIdentityID:e})}),l.displayName.subscribe(function(t){c.saveSettings(e,{DisplayName:t})}),l.replyTo.subscribe(function(e){c.saveSettings(s,{ReplyTo:e})}),l.signature.subscribe(function(e){c.saveSettings(i,{Signature:e})}),l.signatureToAll.subscribe(function(e){c.saveSettings(null,{SignatureToAll:e?"1":"0"})})},50)},e.exports=s}(t,e)},{"../../Apps/RainLoopApp.js":3,"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../Storages/WebMailDataStorage.js":74,"../../ViewModels/Popups/PopupsIdentityViewModel.js":93,Enums:7,NewHtmlEditorWrapper:11,Utils:14,_:31,kn:33,ko:28}],61:[function(e,t){!function(e,t){"use strict";function s(){this.editor=null,this.displayName=l.displayName,this.signature=l.signature,this.signatureToAll=l.signatureToAll,this.replyTo=l.replyTo,this.signatureDom=i.observable(null),this.displayNameTrigger=i.observable(n.SaveSettingsStep.Idle),this.replyTrigger=i.observable(n.SaveSettingsStep.Idle),this.signatureTrigger=i.observable(n.SaveSettingsStep.Idle)}var i=t("ko"),o=t("_"),n=t("Enums"),r=t("Utils"),a=t("NewHtmlEditorWrapper"),l=t("../../Storages/WebMailDataStorage.js"),c=t("../../Storages/WebMailAjaxRemoteStorage.js");s.prototype.onFocus=function(){if(!this.editor&&this.signatureDom()){var e=this,t=l.signature();this.editor=new a(e.signatureDom(),function(){l.signature((e.editor.isHtml()?":HTML:":"")+e.editor.getData())},function(){":HTML:"===t.substr(0,6)?e.editor.setHtml(t.substr(6),!1):e.editor.setPlain(t,!1)})}},s.prototype.onBuild=function(){var e=this;o.delay(function(){var t=r.settingsSaveHelperSimpleFunction(e.displayNameTrigger,e),s=r.settingsSaveHelperSimpleFunction(e.replyTrigger,e),i=r.settingsSaveHelperSimpleFunction(e.signatureTrigger,e);l.displayName.subscribe(function(e){c.saveSettings(t,{DisplayName:e})}),l.replyTo.subscribe(function(e){c.saveSettings(s,{ReplyTo:e})}),l.signature.subscribe(function(e){c.saveSettings(i,{Signature:e})}),l.signatureToAll.subscribe(function(e){c.saveSettings(null,{SignatureToAll:e?"1":"0"})})},50)},e.exports=s}(t,e)},{"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../Storages/WebMailDataStorage.js":74,Enums:7,NewHtmlEditorWrapper:11,Utils:14,_:31,ko:28}],62:[function(e,t){!function(e,t){"use strict";function s(){this.openpgpkeys=n.openpgpkeys,this.openpgpkeysPublic=n.openpgpkeysPublic,this.openpgpkeysPrivate=n.openpgpkeysPrivate,this.openPgpKeyForDeletion=i.observable(null).extend({falseTimeout:3e3}).extend({toggleSubscribe:[this,function(e){e&&e.deleteAccess(!1)},function(e){e&&e.deleteAccess(!0)}]})}var i=t("ko"),o=t("kn"),n=t("../../Storages/WebMailDataStorage.js"),r=t("../../ViewModels/Popups/PopupsAddOpenPgpKeyViewModel.js"),a=t("../../ViewModels/Popups/PopupsGenerateNewOpenPgpKeyViewModel.js"),l=t("../../ViewModels/Popups/PopupsViewOpenPgpKeyViewModel.js");s.prototype.addOpenPgpKey=function(){o.showScreenPopup(r)},s.prototype.generateOpenPgpKey=function(){o.showScreenPopup(a)},s.prototype.viewOpenPgpKey=function(e){e&&o.showScreenPopup(l,[e])},s.prototype.deleteOpenPgpKey=function(e){if(e&&e.deleteAccess()&&(this.openPgpKeyForDeletion(null),e&&n.openpgpKeyring)){this.openpgpkeys.remove(function(t){return e===t}),n.openpgpKeyring[e.isPrivate?"privateKeys":"publicKeys"].removeForId(e.guid),n.openpgpKeyring.store();var s=t("../../Apps/RainLoopApp.js");s.reloadOpenPgpKeys()}},e.exports=s}(t,e)},{"../../Apps/RainLoopApp.js":3,"../../Storages/WebMailDataStorage.js":74,"../../ViewModels/Popups/PopupsAddOpenPgpKeyViewModel.js":82,"../../ViewModels/Popups/PopupsGenerateNewOpenPgpKeyViewModel.js":92,"../../ViewModels/Popups/PopupsViewOpenPgpKeyViewModel.js":97,kn:33,ko:28}],63:[function(e,t){!function(e,t){"use strict";function s(){this.processing=i.observable(!1),this.clearing=i.observable(!1),this.secreting=i.observable(!1),this.viewUser=i.observable(""),this.viewEnable=i.observable(!1),this.viewEnable.subs=!0,this.twoFactorStatus=i.observable(!1),this.viewSecret=i.observable(""),this.viewBackupCodes=i.observable(""),this.viewUrl=i.observable(""),this.bFirst=!0,this.viewTwoFactorStatus=i.computed(function(){return n.langChangeTrigger(),r.i18n(this.twoFactorStatus()?"SETTINGS_SECURITY/TWO_FACTOR_SECRET_CONFIGURED_DESC":"SETTINGS_SECURITY/TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC")},this),this.onResult=_.bind(this.onResult,this),this.onSecretResult=_.bind(this.onSecretResult,this)}var i=t("ko"),o=t("Enums"),n=t("Globals"),r=t("Utils"),a=t("../../Storages/WebMailAjaxRemoteStorage.js"),l=t("kn"),c=t("../../ViewModels/Popups/PopupsTwoFactorTestViewModel.js");s.prototype.showSecret=function(){this.secreting(!0),a.showTwoFactorSecret(this.onSecretResult)},s.prototype.hideSecret=function(){this.viewSecret(""),this.viewBackupCodes(""),this.viewUrl("")},s.prototype.createTwoFactor=function(){this.processing(!0),a.createTwoFactor(this.onResult)},s.prototype.enableTwoFactor=function(){this.processing(!0),a.enableTwoFactor(this.onResult,this.viewEnable())},s.prototype.testTwoFactor=function(){l.showScreenPopup(c)},s.prototype.clearTwoFactor=function(){this.viewSecret(""),this.viewBackupCodes(""),this.viewUrl(""),this.clearing(!0),a.clearTwoFactor(this.onResult)},s.prototype.onShow=function(){this.viewSecret(""),this.viewBackupCodes(""),this.viewUrl("")},s.prototype.onResult=function(e,t){if(this.processing(!1),this.clearing(!1),o.StorageResultType.Success===e&&t&&t.Result?(this.viewUser(r.pString(t.Result.User)),this.viewEnable(!!t.Result.Enable),this.twoFactorStatus(!!t.Result.IsSet),this.viewSecret(r.pString(t.Result.Secret)),this.viewBackupCodes(r.pString(t.Result.BackupCodes).replace(/[\s]+/g," ")),this.viewUrl(r.pString(t.Result.Url))):(this.viewUser(""),this.viewEnable(!1),this.twoFactorStatus(!1),this.viewSecret(""),this.viewBackupCodes(""),this.viewUrl("")),this.bFirst){this.bFirst=!1;var s=this;this.viewEnable.subscribe(function(e){this.viewEnable.subs&&a.enableTwoFactor(function(e,t){o.StorageResultType.Success===e&&t&&t.Result||(s.viewEnable.subs=!1,s.viewEnable(!1),s.viewEnable.subs=!0)},e)},this)}},s.prototype.onSecretResult=function(e,t){this.secreting(!1),o.StorageResultType.Success===e&&t&&t.Result?(this.viewSecret(r.pString(t.Result.Secret)),this.viewUrl(r.pString(t.Result.Url))):(this.viewSecret(""),this.viewUrl(""))},s.prototype.onBuild=function(){this.processing(!0),a.getTwoFactor(this.onResult)},e.exports=s}(t,e)},{"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../ViewModels/Popups/PopupsTwoFactorTestViewModel.js":96,Enums:7,Globals:9,Utils:14,kn:33,ko:28}],64:[function(e,t){!function(e,t){"use strict";function s(){var e=t("Utils"),s=t("../../Apps/RainLoopApp.js"),i=t("../../Storages/WebMailDataStorage.js");this.googleEnable=i.googleEnable,this.googleActions=i.googleActions,this.googleLoggined=i.googleLoggined,this.googleUserName=i.googleUserName,this.facebookEnable=i.facebookEnable,this.facebookActions=i.facebookActions,this.facebookLoggined=i.facebookLoggined,this.facebookUserName=i.facebookUserName,this.twitterEnable=i.twitterEnable,this.twitterActions=i.twitterActions,this.twitterLoggined=i.twitterLoggined,this.twitterUserName=i.twitterUserName,this.connectGoogle=e.createCommand(this,function(){this.googleLoggined()||s.googleConnect()},function(){return!this.googleLoggined()&&!this.googleActions()}),this.disconnectGoogle=e.createCommand(this,function(){s.googleDisconnect()}),this.connectFacebook=e.createCommand(this,function(){this.facebookLoggined()||s.facebookConnect()},function(){return!this.facebookLoggined()&&!this.facebookActions()}),this.disconnectFacebook=e.createCommand(this,function(){s.facebookDisconnect()}),this.connectTwitter=e.createCommand(this,function(){this.twitterLoggined()||s.twitterConnect()},function(){return!this.twitterLoggined()&&!this.twitterActions()}),this.disconnectTwitter=e.createCommand(this,function(){s.twitterDisconnect()})}e.exports=s}(t,e)},{"../../Apps/RainLoopApp.js":3,"../../Storages/WebMailDataStorage.js":74,Utils:14}],65:[function(e,t){!function(e,t){"use strict";function s(){var e=this;this.mainTheme=u.mainTheme,this.themesObjects=n.observableArray([]),this.themeTrigger=n.observable(a.SaveSettingsStep.Idle).extend({throttle:100}),this.oLastAjax=null,this.iTimer=0,u.theme.subscribe(function(t){r.each(this.themesObjects(),function(e){e.selected(t===e.name)});var s=o("#rlThemeLink"),n=o("#rlThemeStyle"),c=s.attr("href");c||(c=n.attr("data-href")),c&&(c=c.toString().replace(/\/-\/[^\/]+\/\-\//,"/-/"+t+"/-/"),c=c.toString().replace(/\/Css\/[^\/]+\/User\//,"/Css/0/User/"),"Json/"!==c.substring(c.length-5,c.length)&&(c+="Json/"),i.clearTimeout(e.iTimer),e.themeTrigger(a.SaveSettingsStep.Animate),this.oLastAjax&&this.oLastAjax.abort&&this.oLastAjax.abort(),this.oLastAjax=o.ajax({url:c,dataType:"json"}).done(function(t){t&&l.isArray(t)&&2===t.length&&(!s||!s[0]||n&&n[0]||(n=o(''),s.after(n),s.remove()),n&&n[0]&&(n.attr("data-href",c).attr("data-theme",t[0]),n&&n[0]&&n[0].styleSheet&&!l.isUnd(n[0].styleSheet.cssText)?n[0].styleSheet.cssText=t[1]:n.text(t[1])),e.themeTrigger(a.SaveSettingsStep.TrueResult))}).always(function(){e.iTimer=i.setTimeout(function(){e.themeTrigger(a.SaveSettingsStep.Idle)},1e3),e.oLastAjax=null})),d.saveSettings(null,{Theme:t})},this)}var i=t("window"),o=t("$"),n=t("ko"),r=t("_"),a=t("Enums"),l=t("Utils"),c=t("LinkBuilder"),u=t("../../Storages/WebMailDataStorage.js"),d=t("../../Storages/WebMailAjaxRemoteStorage.js");s.prototype.onBuild=function(){var e=u.theme();this.themesObjects(r.map(u.themes(),function(t){return{name:t,nameDisplay:l.convertThemeName(t),selected:n.observable(t===e),themePreviewSrc:c.themePreviewLink(t)}}))},e.exports=s}(t,e)},{$:26,"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../Storages/WebMailDataStorage.js":74,Enums:7,LinkBuilder:10,Utils:14,_:31,ko:28,window:32}],66:[function(e,t){!function(e,t){"use strict";function s(){this.oRequests={}}var i=t("window"),o=t("$"),n=t("Consts"),r=t("Enums"),a=t("Globals"),l=t("Utils"),c=t("Plugins"),u=t("LinkBuilder"),d=t("./AppSettings.js");s.prototype.oRequests={},s.prototype.defaultResponse=function(e,t,s,o,u,d){var p=function(){r.StorageResultType.Success!==s&&a.bUnload&&(s=r.StorageResultType.Unload),r.StorageResultType.Success===s&&o&&!o.Result?(o&&-1(new i.Date).getTime()-h),m&&a.oRequests[m]&&(a.oRequests[m].__aborted&&(o="abort"),a.oRequests[m]=null),a.defaultResponse(e,m,o,s,n,t)}),m&&00?(this.defaultRequest(e,"Message",{},null,"Message/"+a.urlsafe_encode([t,s,u.projectHash(),u.threading()&&u.useThreads()?"1":"0"].join(String.fromCharCode(0))),["Message"]),!0):!1},s.prototype.composeUploadExternals=function(e,t){this.defaultRequest(e,"ComposeUploadExternals",{Externals:t},999e3)},s.prototype.composeUploadDrive=function(e,t,s){this.defaultRequest(e,"ComposeUploadDrive",{AccessToken:s,Url:t},999e3)},s.prototype.folderInformation=function(e,t,s){var n=!0,a=[];o.isArray(s)&&0=e?1:e},this),this.mainMessageListSearch=r.computed({read:this.messageListSearch,write:function(e){b.setHash(g.mailBox(this.currentFolderFullNameHash(),1,h.trim(e.toString())))},owner:this}),this.messageListError=r.observable(""),this.messageListLoading=r.observable(!1),this.messageListIsNotCompleted=r.observable(!1),this.messageListCompleteLoadingThrottle=r.observable(!1).extend({throttle:200}),this.messageListCompleteLoading=r.computed(function(){var e=this.messageListLoading(),t=this.messageListIsNotCompleted();return e||t},this),this.messageListCompleteLoading.subscribe(function(e){this.messageListCompleteLoadingThrottle(e)},this),this.messageList.subscribe(n.debounce(function(e){n.each(e,function(e){e.newForAnimation()&&e.newForAnimation(!1)})},500)),this.staticMessageList=new S,this.message=r.observable(null),this.messageLoading=r.observable(!1),this.messageLoadingThrottle=r.observable(!1).extend({throttle:50}),this.message.focused=r.observable(!1),this.message.subscribe(function(e){e?d.Layout.NoPreview===this.layout()&&this.message.focused(!0):(this.message.focused(!1),this.messageFullScreenMode(!1),this.hideMessageBodies(),d.Layout.NoPreview===this.layout()&&-10?i.Math.ceil(t/e*100):0},this),this.capaOpenPGP=r.observable(!1),this.openpgpkeys=r.observableArray([]),this.openpgpKeyring=null,this.openpgpkeysPublic=this.openpgpkeys.filter(function(e){return!(!e||e.isPrivate)}),this.openpgpkeysPrivate=this.openpgpkeys.filter(function(e){return!(!e||!e.isPrivate)}),this.googleActions=r.observable(!1),this.googleLoggined=r.observable(!1),this.googleUserName=r.observable(""),this.facebookActions=r.observable(!1),this.facebookLoggined=r.observable(!1),this.facebookUserName=r.observable(""),this.twitterActions=r.observable(!1),this.twitterLoggined=r.observable(!1),this.twitterUserName=r.observable(""),this.customThemeType=r.observable(d.CustomThemeType.Light),this.purgeMessageBodyCacheThrottle=n.throttle(this.purgeMessageBodyCache,3e4)}var i=t("window"),o=t("$"),n=t("_"),r=t("ko"),a=t("moment"),l=t("$div"),c=t("NotificationClass"),u=t("Consts"),d=t("Enums"),p=t("Globals"),h=t("Utils"),g=t("LinkBuilder"),m=t("./AppSettings.js"),f=t("./WebMailCacheStorage.js"),b=t("kn"),S=t("../Models/MessageModel.js"),y=t("./LocalStorage.js"),v=t("./AbstractData.js");n.extend(s.prototype,v.prototype),s.prototype.purgeMessageBodyCache=function(){var e=0,t=null,s=p.iMessageBodyCacheCount-u.Values.MessageBodyCacheLimit;s>0&&(t=this.messagesBodiesDom(),t&&(t.find(".rl-cache-class").each(function(){var t=o(this);s>t.data("rl-cache-count")&&(t.addClass("rl-cache-purge"),e++)}),e>0&&n.delay(function(){t.find(".rl-cache-purge").remove()},300)))},s.prototype.populateDataOnStart=function(){v.prototype.populateDataOnStart.call(this),this.accountEmail(m.settingsGet("Email")),this.accountIncLogin(m.settingsGet("IncLogin")),this.accountOutLogin(m.settingsGet("OutLogin")),this.projectHash(m.settingsGet("ProjectHash")),this.defaultIdentityID(m.settingsGet("DefaultIdentityID")),this.displayName(m.settingsGet("DisplayName")),this.replyTo(m.settingsGet("ReplyTo")),this.signature(m.settingsGet("Signature")),this.signatureToAll(!!m.settingsGet("SignatureToAll")),this.enableTwoFactor(!!m.settingsGet("EnableTwoFactor")),this.lastFoldersHash=y.get(d.ClientSideKeyName.FoldersLashHash)||"",this.remoteSuggestions=!!m.settingsGet("RemoteSuggestions"),this.devEmail=m.settingsGet("DevEmail"),this.devPassword=m.settingsGet("DevPassword")},s.prototype.initUidNextAndNewMessages=function(e,t,s){if("INBOX"===e&&h.isNormal(t)&&""!==t){if(h.isArray(s)&&03)l(g.notificationMailIcon(),this.accountEmail(),h.i18n("MESSAGE_LIST/NEW_MESSAGE_NOTIFICATION",{COUNT:a}));else for(;a>r;r++)l(g.notificationMailIcon(),S.emailsToLine(S.initEmailsFromJson(s[r].From),!1),s[r].Subject)}f.setFolderUidNext(e,t)}},s.prototype.hideMessageBodies=function(){var e=this.messagesBodiesDom();e&&e.find(".b-text-part").hide()},s.prototype.getNextFolderNames=function(e){e=h.isUnd(e)?!1:!!e;var t=[],s=10,i=a().unix(),o=i-300,r=[],l=function(t){n.each(t,function(t){t&&"INBOX"!==t.fullNameRaw&&t.selectable&&t.existen&&o>t.interval&&(!e||t.subScribed())&&r.push([t.interval,t.fullNameRaw]),t&&0t[0]?1:0}),n.find(r,function(e){var o=f.getFolderFromCacheList(e[1]);return o&&(o.interval=i,t.push(e[1])),s<=t.length}),n.uniq(t)},s.prototype.removeMessagesFromList=function(e,t,s,i){s=h.isNormal(s)?s:"",i=h.isUnd(i)?!1:!!i,t=n.map(t,function(e){return h.pInt(e)});var o=this,r=0,a=this.messageList(),l=f.getFolderFromCacheList(e),c=""===s?null:f.getFolderFromCacheList(s||""),u=this.currentFolderFullNameRaw(),d=this.message(),p=u===e?n.filter(a,function(e){return e&&-10&&l.messageCountUnread(0<=l.messageCountUnread()-r?l.messageCountUnread()-r:0)),c&&(c.messageCountAll(c.messageCountAll()+t.length),r>0&&c.messageCountUnread(c.messageCountUnread()+r),c.actionBlink(!0)),0').hide().addClass("rl-cache-class"),r.data("rl-cache-count",++p.iMessageBodyCacheCount),h.isNormal(e.Result.Html)&&""!==e.Result.Html?(s=!0,u=e.Result.Html.toString()):h.isNormal(e.Result.Plain)&&""!==e.Result.Plain?(s=!1,u=h.plainToHtml(e.Result.Plain.toString(),!1),(S.isPgpSigned()||S.isPgpEncrypted())&&this.capaOpenPGP()&&(S.plainRaw=h.pString(e.Result.Plain),m=/---BEGIN PGP MESSAGE---/.test(S.plainRaw),m||(g=/-----BEGIN PGP SIGNED MESSAGE-----/.test(S.plainRaw)&&/-----BEGIN PGP SIGNATURE-----/.test(S.plainRaw)),l.empty(),g&&S.isPgpSigned()?u=l.append(o('').text(S.plainRaw)).html():m&&S.isPgpEncrypted()&&(u=l.append(o('').text(S.plainRaw)).html()),l.empty(),S.isPgpSigned(g),S.isPgpEncrypted(m))):s=!1,r.html(h.linkify(u)).addClass("b-text-part "+(s?"html":"plain")),S.isHtml(!!s),S.hasImages(!!i),S.pgpSignedVerifyStatus(d.SignedVerifyStatus.None),S.pgpSignedVerifyUser(""),S.body=r,S.body&&b.append(S.body),S.storeDataToDom(),n&&S.showInternalImages(!0),S.hasImages()&&this.showImages()&&S.showExternalImages(!0),this.purgeMessageBodyCacheThrottle()),this.messageActiveDom(S.body),this.hideMessageBodies(),S.body.show(),r&&h.initBlockquoteSwitcher(r)),f.initMessageFlagsFromCache(S),S.unseen()&&p.__APP&&p.__APP.setMessageSeen(S),h.windowResize())},s.prototype.calculateMessageListHash=function(e){return n.map(e,function(e){return""+e.hash+"_"+e.threadsLen()+"_"+e.flagHash()}).join("|")},s.prototype.findPublicKeyByHex=function(e){return n.find(this.openpgpkeysPublic(),function(t){return t&&e===t.id})},s.prototype.findPublicKeysByEmail=function(e){return n.compact(n.map(this.openpgpkeysPublic(),function(t){var s=null;if(t&&e===t.email)try{if(s=i.openpgp.key.readArmored(t.armor),s&&!s.err&&s.keys&&s.keys[0])return s.keys[0]}catch(o){}return null}))},s.prototype.findPrivateKeyByEmail=function(e,t){var s=null,o=n.find(this.openpgpkeysPrivate(),function(t){return t&&e===t.email});if(o)try{s=i.openpgp.key.readArmored(o.armor),s&&!s.err&&s.keys&&s.keys[0]?(s=s.keys[0],s.decrypt(h.pString(t))):s=null}catch(r){s=null}return s},s.prototype.findSelfPrivateKey=function(e){return this.findPrivateKeyByEmail(this.accountEmail(),e)},e.exports=new s}(t,e)},{$:26,$div:15,"../Models/MessageModel.js":48,"./AbstractData.js":67,"./AppSettings.js":68,"./LocalStorage.js":69,"./WebMailCacheStorage.js":73,Consts:6,Enums:7,Globals:9,LinkBuilder:10,NotificationClass:22,Utils:14,_:31,kn:33,ko:28,moment:29,window:32}],75:[function(e,t){!function(e,t){"use strict";function s(){f.call(this,"Right","SystemDropDown"),this.accounts=d.accounts,this.accountEmail=d.accountEmail,this.accountsLoading=d.accountsLoading,this.accountMenuDropdownTrigger=o.observable(!1),this.capaAdditionalAccounts=u.capa(a.Capa.AdditionalAccounts),this.loading=o.computed(function(){return this.accountsLoading()},this),this.accountClick=i.bind(this.accountClick,this)}var i=t("_"),o=t("ko"),n=t("window"),r=t("key"),a=t("Enums"),l=t("Utils"),c=t("LinkBuilder"),u=t("../Storages/AppSettings.js"),d=t("../Storages/WebMailDataStorage.js"),p=t("../Storages/WebMailAjaxRemoteStorage.js"),h=t("../ViewModels/Popups/PopupsKeyboardShortcutsHelpViewModel.js"),g=t("../ViewModels/Popups/PopupsKeyboardShortcutsHelpViewModel.js"),m=t("kn"),f=t("KnoinAbstractViewModel");i.extend(s.prototype,f.prototype),s.prototype.accountClick=function(e,t){if(e&&t&&!l.isUnd(t.which)&&1===t.which){var s=this;this.accountsLoading(!0),i.delay(function(){s.accountsLoading(!1)},1e3)}return!0},s.prototype.emailTitle=function(){return d.accountEmail()},s.prototype.settingsClick=function(){m.setHash(c.settings())},s.prototype.settingsHelp=function(){m.showScreenPopup(h)},s.prototype.addAccountClick=function(){this.capaAdditionalAccounts&&m.showScreenPopup(g)},s.prototype.logoutClick=function(){var e=t("../Apps/RainLoopApp.js");p.logout(function(){n.__rlah_clear&&n.__rlah_clear(),e.loginAndLogoutReload(!0,u.settingsGet("ParentEmail")&&0-1&&a.eq(n).removeClass("focused"),38===r&&n>0?n--:40===r&&ni)?(this.oContentScrollable.scrollTop(s.top<0?this.oContentScrollable.scrollTop()+s.top-e:this.oContentScrollable.scrollTop()+s.top-i+n+e),!0):!1},s.prototype.messagesDrop=function(e,s){if(e&&s&&s.helper){var i=t("../Apps/RainLoopApp.js"),o=s.helper.data("rl-folder"),n=a.hasClass("rl-ctrl-key-pressed"),r=s.helper.data("rl-uids");l.isNormal(o)&&""!==o&&l.isArray(r)&&i.moveMessagesToFolder(o,r,e.fullNameRaw,n)}},s.prototype.composeClick=function(){S.showScreenPopup(m)},s.prototype.createFolder=function(){S.showScreenPopup(f)},s.prototype.configureFolders=function(){S.setHash(d.settings("folders"))},s.prototype.contactsClick=function(){this.allowContacts&&S.showScreenPopup(b)},e.exports=s}(t,e)},{$:26,$html:17,"../Apps/RainLoopApp.js":3,"../Storages/AppSettings.js":68,"../Storages/WebMailCacheStorage.js":73,"../Storages/WebMailDataStorage.js":74,"./Popups/PopupsComposeViewModel.js":86,"./Popups/PopupsContactsViewModel.js":87,"./Popups/PopupsFolderCreateViewModel.js":90,Enums:7,Globals:9,KnoinAbstractViewModel:36,LinkBuilder:10,Utils:14,key:27,kn:33,ko:28,window:32}],78:[function(e,t){!function(e,t){"use strict";function s(){var e=t("../Apps/RainLoopApp.js");w.call(this,"Right","MailMessageList"),this.sLastUid=null,this.bPrefetch=!1,this.emptySubjectValue="",this.hideDangerousActions=!!f.settingsGet("HideDangerousActions"),this.popupVisibility=d.popupVisibility,this.message=S.message,this.messageList=S.messageList,this.folderList=S.folderList,this.currentMessage=S.currentMessage,this.isMessageSelected=S.isMessageSelected,this.messageListSearch=S.messageListSearch,this.messageListError=S.messageListError,this.folderMenuForMove=S.folderMenuForMove,this.useCheckboxesInList=S.useCheckboxesInList,this.mainMessageListSearch=S.mainMessageListSearch,this.messageListEndFolder=S.messageListEndFolder,this.messageListChecked=S.messageListChecked,this.messageListCheckedOrSelected=S.messageListCheckedOrSelected,this.messageListCheckedOrSelectedUidsWithSubMails=S.messageListCheckedOrSelectedUidsWithSubMails,this.messageListCompleteLoadingThrottle=S.messageListCompleteLoadingThrottle,p.initOnStartOrLangChange(function(){this.emptySubjectValue=p.i18n("MESSAGE_LIST/EMPTY_SUBJECT_TEXT")},this),this.userQuota=S.userQuota,this.userUsageSize=S.userUsageSize,this.userUsageProc=S.userUsageProc,this.moveDropdownTrigger=n.observable(!1),this.moreDropdownTrigger=n.observable(!1),this.dragOver=n.observable(!1).extend({throttle:1}),this.dragOverEnter=n.observable(!1).extend({throttle:1}),this.dragOverArea=n.observable(null),this.dragOverBodyArea=n.observable(null),this.messageListItemTemplate=n.computed(function(){return c.Layout.NoPreview!==S.layout()?"MailMessageListItem":"MailMessageListItemNoPreviewPane"}),this.messageListSearchDesc=n.computed(function(){var e=S.messageListEndSearch();return""===e?"":p.i18n("MESSAGE_LIST/SEARCH_RESULT_FOR",{SEARCH:e})}),this.messageListPagenator=n.computed(p.computedPagenatorHelper(S.messageListPage,S.messageListPageCount)),this.checkAll=n.computed({read:function(){return 00&&t>0&&e>t},this),this.hasMessages=n.computed(function(){return 01?" ("+(100>e?e:"99+")+")":""},s.prototype.cancelSearch=function(){this.mainMessageListSearch(""),this.inputMessageListSearchFocus(!1)},s.prototype.moveSelectedMessagesToFolder=function(e,s){if(this.canBeMoved()){var i=t("../Apps/RainLoopApp.js");i.moveMessagesToFolder(S.currentFolderFullNameRaw(),S.messageListCheckedOrSelectedUidsWithSubMails(),e,s)}return!1},s.prototype.dragAndDronHelper=function(e){e&&e.checked(!0);var t=p.draggeblePlace(),s=S.messageListCheckedOrSelectedUidsWithSubMails();return t.data("rl-folder",S.currentFolderFullNameRaw()),t.data("rl-uids",s),t.find(".text").text(""+s.length),o.defer(function(){var e=S.messageListCheckedOrSelectedUidsWithSubMails();t.data("rl-uids",e),t.find(".text").text(""+e.length)}),t},s.prototype.onMessageResponse=function(e,t,s){S.hideMessageBodies(),S.messageLoading(!1),c.StorageResultType.Success===e&&t&&t.Result?S.setMessage(t,s):c.StorageResultType.Unload===e?(S.message(null),S.messageError("")):c.StorageResultType.Abort!==e&&(S.message(null),S.messageError(p.getNotification(t&&t.ErrorCode?t.ErrorCode:c.Notification.UnknownError)))},s.prototype.populateMessageBody=function(e){e&&(y.message(this.onMessageResponse,e.folderFullNameRaw,e.uid)?S.messageLoading(!0):p.log("Error: Unknown message request: "+e.folderFullNameRaw+" ~ "+e.uid+" [e-101]"))},s.prototype.setAction=function(e,s,i){var n=[],r=null,a=0,l=t("../Apps/RainLoopApp.js");if(p.isUnd(i)&&(i=S.messageListChecked()),n=o.map(i,function(e){return e.uid}),""!==e&&00?100>e?e:"99+":""},s.prototype.verifyPgpSignedClearMessage=function(e){e&&e.verifyPgpSignedClearMessage()},s.prototype.decryptPgpEncryptedMessage=function(e){e&&e.decryptPgpEncryptedMessage(this.viewPgpPassword())},s.prototype.readReceipt=function(e){if(e&&""!==e.readReceipt()){g.sendReadReceiptMessage(u.emptyFunction,e.folderFullNameRaw,e.uid,e.readReceipt(),u.i18n("READ_RECEIPT/SUBJECT",{SUBJECT:e.subject()}),u.i18n("READ_RECEIPT/BODY",{"READ-RECEIPT":h.accountEmail()})),e.isReadReceipt(!0),p.storeMessageFlagsToCache(e);var s=t("../Apps/RainLoopApp.js");s.reloadFlagsCurrentMessageListAndMessageFromCache()}},e.exports=s}(t,e)},{$:26,$html:17,"../Apps/RainLoopApp.js":3,"../Storages/WebMailAjaxRemoteStorage.js":72,"../Storages/WebMailCacheStorage.js":73,"../Storages/WebMailDataStorage.js":74,"./Popups/PopupsComposeViewModel.js":86,Consts:6,Enums:7,Events:8,Globals:9,KnoinAbstractViewModel:36,Utils:14,key:27,kn:33,ko:28}],80:[function(e,t){!function(e,t){"use strict";function s(){o.call(this),i.constructorEnd(this)}var i=t("kn"),o=t("./AbstractSystemDropDownViewModel.js");i.extendAsViewModel("MailBoxSystemDropDownViewModel",s,o),e.exports=s}(t,e)},{"./AbstractSystemDropDownViewModel.js":75,kn:33}],81:[function(e,t){!function(e,t){"use strict";function s(){c.call(this,"Popups","PopupsAddAccount");var e=t("../../Apps/RainLoopApp.js");this.email=o.observable(""),this.password=o.observable(""),this.emailError=o.observable(!1),this.passwordError=o.observable(!1),this.email.subscribe(function(){this.emailError(!1)},this),this.password.subscribe(function(){this.passwordError(!1)},this),this.submitRequest=o.observable(!1),this.submitError=o.observable(""),this.emailFocus=o.observable(!1),this.addAccountCommand=r.createCommand(this,function(){return this.emailError(""===r.trim(this.email())),this.passwordError(""===r.trim(this.password())),this.emailError()||this.passwordError()?!1:(this.submitRequest(!0),a.accountAdd(i.bind(function(t,s){this.submitRequest(!1),n.StorageResultType.Success===t&&s&&"AccountAdd"===s.Action?s.Result?(e.accountsAndIdentities(),this.cancelCommand()):s.ErrorCode&&this.submitError(r.getNotification(s.ErrorCode)):this.submitError(r.getNotification(n.Notification.UnknownError))},this),this.email(),"",this.password()),!0)},function(){return!this.submitRequest()}),l.constructorEnd(this)}var i=t("_"),o=t("ko"),n=t("Enums"),r=t("Utils"),a=t("../../Storages/WebMailAjaxRemoteStorage.js"),l=t("kn"),c=t("KnoinAbstractViewModel");l.extendAsViewModel("PopupsAddAccountViewModel",s),s.prototype.clearPopup=function(){this.email(""),this.password(""),this.emailError(!1),this.passwordError(!1),this.submitRequest(!1),this.submitError("")},s.prototype.onShow=function(){this.clearPopup()},s.prototype.onFocus=function(){this.emailFocus(!0)},e.exports=s}(t,e)},{"../../Apps/RainLoopApp.js":3,"../../Storages/WebMailAjaxRemoteStorage.js":72,Enums:7,KnoinAbstractViewModel:36,Utils:14,_:31,kn:33,ko:28}],82:[function(e,t){!function(e,t){"use strict";function s(){a.call(this,"Popups","PopupsAddOpenPgpKey");var e=t("../../Apps/RainLoopApp.js");this.key=i.observable(""),this.key.error=i.observable(!1),this.key.focus=i.observable(!1),this.key.subscribe(function(){this.key.error(!1)},this),this.addOpenPgpKeyCommand=o.createCommand(this,function(){var t=30,s=null,i=o.trim(this.key()),r=/[\-]{3,6}BEGIN[\s]PGP[\s](PRIVATE|PUBLIC)[\s]KEY[\s]BLOCK[\-]{3,6}[\s\S]+?[\-]{3,6}END[\s]PGP[\s](PRIVATE|PUBLIC)[\s]KEY[\s]BLOCK[\-]{3,6}/gi,a=n.openpgpKeyring;if(i=i.replace(/[\r\n]([a-zA-Z0-9]{2,}:[^\r\n]+)[\r\n]+([a-zA-Z0-9\/\\+=]{10,})/g,"\n$1!-!N!-!$2").replace(/[\n\r]+/g,"\n").replace(/!-!N!-!/g,"\n\n"),this.key.error(""===i),!a||this.key.error())return!1;for(;;){if(s=r.exec(i),!s||0>t)break;s[0]&&s[1]&&s[2]&&s[1]===s[2]&&("PRIVATE"===s[1]?a.privateKeys.importKey(s[0]):"PUBLIC"===s[1]&&a.publicKeys.importKey(s[0])),t--}return a.store(),e.reloadOpenPgpKeys(),o.delegateRun(this,"cancelCommand"),!0}),r.constructorEnd(this)}var i=t("ko"),o=t("Utils"),n=t("../../Storages/WebMailDataStorage.js"),r=t("kn"),a=t("KnoinAbstractViewModel");r.extendAsViewModel("PopupsAddOpenPgpKeyViewModel",s),s.prototype.clearPopup=function(){this.key(""),this.key.error(!1)},s.prototype.onShow=function(){this.clearPopup()},s.prototype.onFocus=function(){this.key.focus(!0)},e.exports=s}(t,e)},{"../../Apps/RainLoopApp.js":3,"../../Storages/WebMailDataStorage.js":74,KnoinAbstractViewModel:36,Utils:14,kn:33,ko:28}],83:[function(e,t){!function(e,t){"use strict";function s(){l.call(this,"Popups","PopupsAdvancedSearch"),this.fromFocus=i.observable(!1),this.from=i.observable(""),this.to=i.observable(""),this.subject=i.observable(""),this.text=i.observable(""),this.selectedDateValue=i.observable(-1),this.hasAttachment=i.observable(!1),this.starred=i.observable(!1),this.unseen=i.observable(!1),this.searchCommand=n.createCommand(this,function(){var e=this.buildSearchString();""!==e&&r.mainMessageListSearch(e),this.cancelCommand()}),a.constructorEnd(this)}var i=t("ko"),o=t("moment"),n=t("Utils"),r=t("../../Storages/WebMailDataStorage.js"),a=t("kn"),l=t("KnoinAbstractViewModel");a.extendAsViewModel("PopupsAdvancedSearchViewModel",s),s.prototype.buildSearchStringValue=function(e){return-1"},s.prototype.sendMessageResponse=function(e,t){var s=!1,o="";this.sending(!1),d.StorageResultType.Success===e&&t&&t.Result&&(s=!0,this.modalVisibility()&&h.delegateRun(this,"closeCommand")),this.modalVisibility()&&!s&&(t&&d.Notification.CantSaveMessage===t.ErrorCode?(this.sendSuccessButSaveError(!0),i.alert(h.trim(h.i18n("COMPOSE/SAVED_ERROR_ON_SEND")))):(o=h.getNotification(t&&t.ErrorCode?t.ErrorCode:d.Notification.CantSendMessage,t&&t.ErrorMessage?t.ErrorMessage:""),this.sendError(!0),i.alert(o||h.getNotification(d.Notification.CantSendMessage)))),this.reloadDraftFolder()},s.prototype.saveMessageResponse=function(e,t){var s=!1,o=null;this.saving(!1),d.StorageResultType.Success===e&&t&&t.Result&&t.Result.NewFolder&&t.Result.NewUid&&(this.bFromDraft&&(o=y.message(),o&&this.draftFolder()===o.folderFullNameRaw&&this.draftUid()===o.uid&&y.message(null)),this.draftFolder(t.Result.NewFolder),this.draftUid(t.Result.NewUid),this.modalVisibility()&&(this.savedTime(i.Math.round((new i.Date).getTime()/1e3)),this.savedOrSendingText(0"+e;break;default:e=e+"
"+s}return e},s.prototype.editor=function(e){if(e){var t=this;!this.oEditor&&this.composeEditorArea()?n.delay(function(){t.oEditor=new b(t.composeEditorArea(),null,function(){e(t.oEditor)},function(e){t.isHtml(!!e)})},300):this.oEditor&&e(this.oEditor)}},s.prototype.onShow=function(e,t,s,i,r){E.routeOff();var a=this,l="",c="",u="",p="",g="",m=null,f=null,b="",S="",v=[],C={},A=y.accountEmail(),T=y.signature(),F=y.signatureToAll(),M=[],N=null,R=null,L=e||d.ComposeType.Empty,P=function(e,t){for(var s=0,i=e.length,o=[];i>s;s++)o.push(e[s].toLine(!!t));return o.join(", ")};if(t=t||null,t&&h.isNormal(t)&&(R=h.isArray(t)&&1===t.length?t[0]:h.isArray(t)?null:t),null!==A&&(C[A]=!0),this.currentIdentityID(this.findIdentityIdByMessage(L,R)),this.reset(),h.isNonEmptyArray(s)&&this.to(P(s)),""!==L&&R){switch(p=R.fullFormatDateValue(),g=R.subject(),N=R.aDraftInfo,m=o(R.body).clone(),h.removeBlockquoteSwitcher(m),f=m.find("[data-html-editor-font-wrapper=true]"),b=f&&f[0]?f.html():m.html(),L){case d.ComposeType.Empty:break;case d.ComposeType.Reply:this.to(P(R.replyEmails(C))),this.subject(h.replySubjectAdd("Re",g)),this.prepearMessageAttachments(R,L),this.aDraftInfo=["reply",R.uid,R.folderFullNameRaw],this.sInReplyTo=R.sMessageId,this.sReferences=h.trim(this.sInReplyTo+" "+R.sReferences);break;case d.ComposeType.ReplyAll:v=R.replyAllEmails(C),this.to(P(v[0])),this.cc(P(v[1])),this.subject(h.replySubjectAdd("Re",g)),this.prepearMessageAttachments(R,L),this.aDraftInfo=["reply",R.uid,R.folderFullNameRaw],this.sInReplyTo=R.sMessageId,this.sReferences=h.trim(this.sInReplyTo+" "+R.references());break;case d.ComposeType.Forward:this.subject(h.replySubjectAdd("Fwd",g)),this.prepearMessageAttachments(R,L),this.aDraftInfo=["forward",R.uid,R.folderFullNameRaw],this.sInReplyTo=R.sMessageId,this.sReferences=h.trim(this.sInReplyTo+" "+R.sReferences);break;case d.ComposeType.ForwardAsAttachment:this.subject(h.replySubjectAdd("Fwd",g)),this.prepearMessageAttachments(R,L),this.aDraftInfo=["forward",R.uid,R.folderFullNameRaw],this.sInReplyTo=R.sMessageId,this.sReferences=h.trim(this.sInReplyTo+" "+R.sReferences);break;case d.ComposeType.Draft:this.to(P(R.to)),this.cc(P(R.cc)),this.bcc(P(R.bcc)),this.bFromDraft=!0,this.draftFolder(R.folderFullNameRaw),this.draftUid(R.uid),this.subject(g),this.prepearMessageAttachments(R,L),this.aDraftInfo=h.isNonEmptyArray(N)&&3===N.length?N:null,this.sInReplyTo=R.sInReplyTo,this.sReferences=R.sReferences;break;case d.ComposeType.EditAsNew:this.to(P(R.to)),this.cc(P(R.cc)),this.bcc(P(R.bcc)),this.subject(g),this.prepearMessageAttachments(R,L),this.aDraftInfo=h.isNonEmptyArray(N)&&3===N.length?N:null,this.sInReplyTo=R.sInReplyTo,this.sReferences=R.sReferences}switch(L){case d.ComposeType.Reply:case d.ComposeType.ReplyAll:l=R.fromToLine(!1,!0),S=h.i18n("COMPOSE/REPLY_MESSAGE_TITLE",{DATETIME:p,EMAIL:l}),b="
"+S+":"+b+"
";break;case d.ComposeType.Forward:l=R.fromToLine(!1,!0),c=R.toToLine(!1,!0),u=R.ccToLine(!1,!0),b="
"+h.i18n("COMPOSE/FORWARD_MESSAGE_TOP_TITLE")+"
"+h.i18n("COMPOSE/FORWARD_MESSAGE_TOP_FROM")+": "+l+"
"+h.i18n("COMPOSE/FORWARD_MESSAGE_TOP_TO")+": "+c+(0"+h.i18n("COMPOSE/FORWARD_MESSAGE_TOP_CC")+": "+u:"")+"
"+h.i18n("COMPOSE/FORWARD_MESSAGE_TOP_SENT")+": "+h.encodeHtml(p)+"
"+h.i18n("COMPOSE/FORWARD_MESSAGE_TOP_SUBJECT")+": "+h.encodeHtml(g)+"
"+b;break;case d.ComposeType.ForwardAsAttachment:b=""}F&&""!==T&&d.ComposeType.EditAsNew!==L&&d.ComposeType.Draft!==L&&(b=this.convertSignature(T,P(R.from,!0),b,L)),this.editor(function(e){e.setHtml(b,!1),R.isHtml()||e.modeToggle(!1)})}else d.ComposeType.Empty===L?(this.subject(h.isNormal(i)?""+i:""),b=h.isNormal(r)?""+r:"",F&&""!==T&&(b=this.convertSignature(T,"",h.convertPlainTextToHtml(b),L)),this.editor(function(e){e.setHtml(b,!1),d.EditorDefaultType.Html!==y.editorDefaultType()&&e.modeToggle(!1)})):h.isNonEmptyArray(t)&&n.each(t,function(e){a.addMessageAsAttachment(e)});M=this.getAttachmentsDownloadsForUpload(),h.isNonEmptyArray(M)&&w.messageUploadAttachments(function(e,t){if(d.StorageResultType.Success===e&&t&&t.Result){var s=null,i="";if(!a.viewModelVisibility())for(i in t.Result)t.Result.hasOwnProperty(i)&&(s=a.getAttachmentById(t.Result[i]),s&&s.tempName(i))}else a.setMessageAttachmentFailedDowbloadText()},M),this.triggerForResize()},s.prototype.onFocus=function(){""===this.to()?this.to.focusTrigger(!this.to.focusTrigger()):this.oEditor&&this.oEditor.focus(),this.triggerForResize()},s.prototype.editorResize=function(){this.oEditor&&this.oEditor.resize()},s.prototype.tryToClosePopup=function(){var e=this;E.isPopupVisible(F)||E.showScreenPopup(F,[h.i18n("POPUPS_ASK/DESC_WANT_CLOSE_THIS_WINDOW"),function(){e.modalVisibility()&&h.delegateRun(e,"closeCommand")}])},s.prototype.onBuild=function(){this.initUploader();var e=this,t=null;key("ctrl+q, command+q",d.KeyState.Compose,function(){return e.identitiesDropdownTrigger(!0),!1}),key("ctrl+s, command+s",d.KeyState.Compose,function(){return e.saveCommand(),!1}),key("ctrl+enter, command+enter",d.KeyState.Compose,function(){return e.sendCommand(),!1}),key("esc",d.KeyState.Compose,function(){return e.modalVisibility()&&e.tryToClosePopup(),!1}),l.on("resize",function(){e.triggerForResize()}),this.dropboxEnabled()&&(t=i.document.createElement("script"),t.type="text/javascript",t.src="https://www.dropbox.com/static/api/1/dropins.js",o(t).attr("id","dropboxjs").attr("data-app-key",S.settingsGet("DropboxApiKey")),i.document.body.appendChild(t)),this.driveEnabled()&&o.getScript("https://apis.google.com/js/api.js",function(){i.gapi&&e.driveVisible(!0)})},s.prototype.driveCallback=function(e,t){if(t&&i.XMLHttpRequest&&i.google&&t[i.google.picker.Response.ACTION]===i.google.picker.Action.PICKED&&t[i.google.picker.Response.DOCUMENTS]&&t[i.google.picker.Response.DOCUMENTS][0]&&t[i.google.picker.Response.DOCUMENTS][0].id){var s=this,o=new i.XMLHttpRequest;o.open("GET","https://www.googleapis.com/drive/v2/files/"+t[i.google.picker.Response.DOCUMENTS][0].id),o.setRequestHeader("Authorization","Bearer "+e),o.addEventListener("load",function(){if(o&&o.responseText){var t=c.parse(o.responseText),i=function(e,t,s){e&&e.exportLinks&&(e.exportLinks[t]?(e.downloadUrl=e.exportLinks[t],e.title=e.title+"."+s,e.mimeType=t):e.exportLinks["application/pdf"]&&(e.downloadUrl=e.exportLinks["application/pdf"],e.title=e.title+".pdf",e.mimeType="application/pdf"))};if(t&&!t.downloadUrl&&t.mimeType&&t.exportLinks)switch(t.mimeType.toString().toLowerCase()){case"application/vnd.google-apps.document":i(t,"application/vnd.openxmlformats-officedocument.wordprocessingml.document","docx");break;case"application/vnd.google-apps.spreadsheet":i(t,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","xlsx");break;case"application/vnd.google-apps.drawing":i(t,"image/png","png");break;case"application/vnd.google-apps.presentation":i(t,"application/vnd.openxmlformats-officedocument.presentationml.presentation","pptx");break;default:i(t,"application/pdf","pdf")}t&&t.downloadUrl&&s.addDriveAttachment(t,e)}}),o.send()}},s.prototype.driveCreatePiker=function(e){if(i.gapi&&e&&e.access_token){var t=this;i.gapi.load("picker",{callback:function(){if(i.google&&i.google.picker){var s=(new i.google.picker.PickerBuilder).addView((new i.google.picker.DocsView).setIncludeFolders(!0)).setAppId(S.settingsGet("GoogleClientID")).setOAuthToken(e.access_token).setCallback(n.bind(t.driveCallback,t,e.access_token)).enableFeature(i.google.picker.Feature.NAV_HIDDEN).build();s.setVisible(!0)}}})}},s.prototype.driveOpenPopup=function(){if(i.gapi){var e=this;i.gapi.load("auth",{callback:function(){var t=i.gapi.auth.getToken();t?e.driveCreatePiker(t):i.gapi.auth.authorize({client_id:S.settingsGet("GoogleClientID"),scope:"https://www.googleapis.com/auth/drive.readonly",immediate:!0},function(t){if(t&&!t.error){var s=i.gapi.auth.getToken();s&&e.driveCreatePiker(s)}else i.gapi.auth.authorize({client_id:S.settingsGet("GoogleClientID"),scope:"https://www.googleapis.com/auth/drive.readonly",immediate:!1},function(t){if(t&&!t.error){var s=i.gapi.auth.getToken();s&&e.driveCreatePiker(s)}})})}})}},s.prototype.getAttachmentById=function(e){for(var t=this.attachments(),s=0,i=t.length;i>s;s++)if(t[s]&&e===t[s].id)return t[s];return null},s.prototype.initUploader=function(){if(this.composeUploaderButton()){var e={},t=h.pInt(S.settingsGet("AttachmentLimit")),s=new u({action:m.upload(),name:"uploader",queueSize:2,multipleSizeLimit:50,disableFolderDragAndDrop:!1,clickElement:this.composeUploaderButton(),dragAndDropElement:this.composeUploaderDropPlace()});s?(s.on("onDragEnter",n.bind(function(){this.dragAndDropOver(!0)},this)).on("onDragLeave",n.bind(function(){this.dragAndDropOver(!1)},this)).on("onBodyDragEnter",n.bind(function(){this.dragAndDropVisible(!0)},this)).on("onBodyDragLeave",n.bind(function(){this.dragAndDropVisible(!1)},this)).on("onProgress",n.bind(function(t,s,o){var n=null;h.isUnd(e[t])?(n=this.getAttachmentById(t),n&&(e[t]=n)):n=e[t],n&&n.progress(" - "+i.Math.floor(s/o*100)+"%")},this)).on("onSelect",n.bind(function(e,i){this.dragAndDropOver(!1);var o=this,n=h.isUnd(i.FileName)?"":i.FileName.toString(),r=h.isNormal(i.Size)?h.pInt(i.Size):null,a=new C(e,n,r);return a.cancel=function(e){return function(){o.attachments.remove(function(t){return t&&t.id===e}),s&&s.cancel(e)}}(e),this.attachments.push(a),r>0&&t>0&&r>t?(a.error(h.i18n("UPLOAD/ERROR_FILE_IS_TOO_BIG")),!1):!0},this)).on("onStart",n.bind(function(t){var s=null;h.isUnd(e[t])?(s=this.getAttachmentById(t),s&&(e[t]=s)):s=e[t],s&&(s.waiting(!1),s.uploading(!0))},this)).on("onComplete",n.bind(function(t,s,i){var o="",n=null,r=null,a=this.getAttachmentById(t);r=s&&i&&i.Result&&i.Result.Attachment?i.Result.Attachment:null,n=i&&i.Result&&i.Result.ErrorCode?i.Result.ErrorCode:null,null!==n?o=h.getUploadErrorDescByCode(n):r||(o=h.i18n("UPLOAD/ERROR_UNKNOWN")),a&&(""!==o&&00&&o>0&&n>o?(s.uploading(!1),s.error(h.i18n("UPLOAD/ERROR_FILE_IS_TOO_BIG")),!1):(w.composeUploadExternals(function(e,t){var i=!1;s.uploading(!1),d.StorageResultType.Success===e&&t&&t.Result&&t.Result[s.id]&&(i=!0,s.tempName(t.Result[s.id])),i||s.error(h.getUploadErrorDescByCode(d.UploadErrorCode.FileNoUploaded))},[e.link]),!0)},s.prototype.addDriveAttachment=function(e,t){var s=this,i=function(e){return function(){s.attachments.remove(function(t){return t&&t.id===e})}},o=h.pInt(S.settingsGet("AttachmentLimit")),n=null,r=e.fileSize?h.pInt(e.fileSize):0;return n=new C(e.downloadUrl,e.title,r),n.fromMessage=!1,n.cancel=i(e.downloadUrl),n.waiting(!1).uploading(!0),this.attachments.push(n),r>0&&o>0&&r>o?(n.uploading(!1),n.error(h.i18n("UPLOAD/ERROR_FILE_IS_TOO_BIG")),!1):(w.composeUploadDrive(function(e,t){var s=!1;n.uploading(!1),d.StorageResultType.Success===e&&t&&t.Result&&t.Result[n.id]&&(s=!0,n.tempName(t.Result[n.id][0]),n.size(h.pInt(t.Result[n.id][1]))),s||n.error(h.getUploadErrorDescByCode(d.UploadErrorCode.FileNoUploaded))},e.downloadUrl,t),!0)},s.prototype.prepearMessageAttachments=function(e,t){if(e){var s=this,i=h.isNonEmptyArray(e.attachments())?e.attachments():[],o=0,n=i.length,r=null,a=null,l=!1,c=function(e){return function(){s.attachments.remove(function(t){return t&&t.id===e})}};if(d.ComposeType.ForwardAsAttachment===t)this.addMessageAsAttachment(e);else for(;n>o;o++){switch(a=i[o],l=!1,t){case d.ComposeType.Reply:case d.ComposeType.ReplyAll:l=a.isLinked;break;case d.ComposeType.Forward:case d.ComposeType.Draft:case d.ComposeType.EditAsNew:l=!0}l&&(r=new C(a.download,a.fileName,a.estimatedSize,a.isInline,a.isLinked,a.cid,a.contentLocation),r.fromMessage=!0,r.cancel=c(a.download),r.waiting(!1).uploading(!0),this.attachments.push(r))}}},s.prototype.removeLinkedAttachments=function(){this.attachments.remove(function(e){return e&&e.isLinked})},s.prototype.setMessageAttachmentFailedDowbloadText=function(){n.each(this.attachments(),function(e){e&&e.fromMessage&&e.waiting(!1).uploading(!1).error(h.getUploadErrorDescByCode(d.UploadErrorCode.FileNoUploaded))},this)},s.prototype.isEmptyForm=function(e){e=h.isUnd(e)?!0:!!e;var t=e?0===this.attachments().length:0===this.attachmentsInReady().length;return 0===this.to().length&&0===this.cc().length&&0===this.bcc().length&&0===this.subject().length&&t&&(!this.oEditor||""===this.oEditor.getData())},s.prototype.reset=function(){this.to(""),this.cc(""),this.bcc(""),this.replyTo(""),this.subject(""),this.requestReadReceipt(!1),this.aDraftInfo=null,this.sInReplyTo="",this.bFromDraft=!1,this.sReferences="",this.sendError(!1),this.sendSuccessButSaveError(!1),this.savedError(!1),this.savedTime(0),this.savedOrSendingText(""),this.emptyToError(!1),this.attachmentsInProcessError(!1),this.showCcAndBcc(!1),this.attachments([]),this.dragAndDropOver(!1),this.dragAndDropVisible(!1),this.draftFolder(""),this.draftUid(""),this.sending(!1),this.saving(!1),this.oEditor&&this.oEditor.clear(!1)},s.prototype.getAttachmentsDownloadsForUpload=function(){return n.map(n.filter(this.attachments(),function(e){return e&&""===e.tempName()}),function(e){return e.id})},s.prototype.triggerForResize=function(){this.resizer(!this.resizer()),this.editorResizeThrottle()},e.exports=s}(t,e)},{$:26,$window:18,"../../Apps/RainLoopApp.js":3,"../../Models/ComposeAttachmentModel.js":39,"../../Storages/AppSettings.js":68,"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../Storages/WebMailCacheStorage.js":73,"../../Storages/WebMailDataStorage.js":74,"./PopupsAskViewModel.js":84,"./PopupsComposeOpenPgpViewModel.js":85,"./PopupsFolderSystemViewModel.js":91,Consts:6,Enums:7,Events:8,Globals:9,JSON:20,Jua:21,KnoinAbstractViewModel:36,LinkBuilder:10,NewHtmlEditorWrapper:11,Utils:14,_:31,kn:33,ko:28,moment:29,window:32}],87:[function(e,t){!function(e,t){"use strict";function s(){C.call(this,"Popups","PopupsContacts");var e=this,o=function(t){t&&0=e?1:e},this),this.contactsPagenator=r.computed(d.computedPagenatorHelper(this.contactsPage,this.contactsPageCount)),this.emptySelection=r.observable(!0),this.viewClearSearch=r.observable(!1),this.viewID=r.observable(""),this.viewReadOnly=r.observable(!1),this.viewProperties=r.observableArray([]),this.viewTags=r.observable(""),this.viewTags.visibility=r.observable(!1),this.viewTags.focusTrigger=r.observable(!1),this.viewTags.focusTrigger.subscribe(function(e){e||""!==this.viewTags()?e&&this.viewTags.visibility(!0):this.viewTags.visibility(!1)},this),this.viewSaveTrigger=r.observable(l.SaveSettingsStep.Idle),this.viewPropertiesNames=this.viewProperties.filter(function(e){return-1=i&&(this.bDropPageAfterDelete=!0),n.delay(function(){n.each(o,function(e){t.remove(e)})},500))},s.prototype.deleteSelectedContacts=function(){00?i:0),d.isNonEmptyArray(s.Result.Tags)&&(r=n.map(s.Result.Tags,function(e){var t=new S;return t.parse(e)?t:null}),r=n.compact(r))),t.contactsCount(i),t.contacts(o),t.contacts.loading(!1),t.contactTags(r),t.viewClearSearch(""!==t.search())},s,c.Defaults.ContactsPerPage,this.search())},s.prototype.onBuild=function(e){this.oContentVisible=o(".b-list-content",e),this.oContentScrollable=o(".content",this.oContentVisible),this.selector.init(this.oContentVisible,this.oContentScrollable,l.KeyState.ContactList);var t=this;a("delete",l.KeyState.ContactList,function(){return t.deleteCommand(),!1}),e.on("click",".e-pagenator .e-page",function(){var e=r.dataFor(this);e&&(t.contactsPage(d.pInt(e.value)),t.reloadContactList())}),this.initUploader()},s.prototype.onShow=function(){w.routeOff(),this.reloadContactList(!0)},s.prototype.onHide=function(){w.routeOn(),this.currentContact(null),this.emptySelection(!0),this.search(""),this.contactsCount(0),this.contacts([])},e.exports=s}(t,e)},{$:26,"../../Apps/RainLoopApp.js":3,"../../Models/ContactModel.js":40,"../../Models/ContactPropertyModel.js":41,"../../Models/ContactTagModel.js":42,"../../Models/EmailModel.js":43,"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../Storages/WebMailDataStorage.js":74,"./PopupsComposeViewModel.js":86,Consts:6,Enums:7,Globals:9,KnoinAbstractViewModel:36,LinkBuilder:10,Selector:13,Utils:14,_:31,key:27,kn:33,ko:28,window:32}],88:[function(e,t){!function(e,t){"use strict";function s(){l.call(this,"Popups","PopupsFilter"),this.filter=i.observable(null),this.selectedFolderValue=i.observable(o.Values.UnuseOptionValue),this.folderSelectList=r.folderMenuForMove,this.defautOptionsAfterRender=n.defautOptionsAfterRender,a.constructorEnd(this)}var i=t("ko"),o=t("Consts"),n=t("Utils"),r=t("../../Storages/WebMailDataStorage.js"),a=t("kn"),l=t("KnoinAbstractViewModel");a.extendAsViewModel("PopupsFilterViewModel",s),s.prototype.clearPopup=function(){},s.prototype.onShow=function(e){this.clearPopup(),this.filter(e)},e.exports=s}(t,e)},{"../../Storages/WebMailDataStorage.js":74,Consts:6,KnoinAbstractViewModel:36,Utils:14,kn:33,ko:28}],89:[function(e,t){!function(e,t){"use strict";function s(){u.call(this,"Popups","PopupsFolderClear");var e=t("../../Apps/RainLoopApp.js");this.selectedFolder=i.observable(null),this.clearingProcess=i.observable(!1),this.clearingError=i.observable(""),this.folderFullNameForClear=i.computed(function(){var e=this.selectedFolder();return e?e.printableFullName():""},this),this.folderNameForClear=i.computed(function(){var e=this.selectedFolder();return e?e.localName():""},this),this.dangerDescHtml=i.computed(function(){return n.i18n("POPUPS_CLEAR_FOLDER/DANGER_DESC_HTML_1",{FOLDER:this.folderNameForClear()})},this),this.clearCommand=n.createCommand(this,function(){var t=this,s=this.selectedFolder();s&&(r.message(null),r.messageList([]),this.clearingProcess(!0),s.messageCountAll(0),s.messageCountUnread(0),a.setFolderHash(s.fullNameRaw,""),l.folderClear(function(s,i){t.clearingProcess(!1),o.StorageResultType.Success===s&&i&&i.Result?(e.reloadMessageList(!0),t.cancelCommand()):t.clearingError(i&&i.ErrorCode?n.getNotification(i.ErrorCode):n.getNotification(o.Notification.MailServerError))},s.fullNameRaw))},function(){var e=this.selectedFolder(),t=this.clearingProcess();return!t&&null!==e}),c.constructorEnd(this)}var i=t("ko"),o=t("Enums"),n=t("Utils"),r=t("../../Storages/WebMailDataStorage.js"),a=t("../../Storages/WebMailCacheStorage.js"),l=t("../../Storages/WebMailAjaxRemoteStorage.js"),c=t("kn"),u=t("KnoinAbstractViewModel");c.extendAsViewModel("PopupsFolderClearViewModel",s),s.prototype.clearPopup=function(){this.clearingProcess(!1),this.selectedFolder(null)},s.prototype.onShow=function(e){this.clearPopup(),e&&this.selectedFolder(e)},e.exports=s}(t,e)},{"../../Apps/RainLoopApp.js":3,"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../Storages/WebMailCacheStorage.js":73,"../../Storages/WebMailDataStorage.js":74,Enums:7,KnoinAbstractViewModel:36,Utils:14,kn:33,ko:28}],90:[function(e,t){!function(e,t){"use strict";function s(){u.call(this,"Popups","PopupsFolderCreate"),r.initOnStartOrLangChange(function(){this.sNoParentText=r.i18n("POPUPS_CREATE_FOLDER/SELECT_NO_PARENT")},this),this.folderName=i.observable(""),this.folderName.focused=i.observable(!1),this.selectedParentValue=i.observable(n.Values.UnuseOptionValue),this.parentFolderSelectList=i.computed(function(){var e=[],t=null,s=null,i=a.folderList(),o=function(e){return e?e.isSystemFolder()?e.name()+" "+e.manageFolderSystemName():e.name():""};return e.push(["",this.sNoParentText]),""!==a.namespace&&(t=function(e){return a.namespace!==e.fullNameRaw.substr(0,a.namespace.length)}),r.folderListOptionsBuilder([],i,[],e,null,t,s,o)},this),this.createFolder=r.createCommand(this,function(){var e=t("../../Apps/RainLoopApp.js"),s=this.selectedParentValue();""===s&&1"),this.submitRequest(!0),o.delay(function(){n=i.openpgp.generateKeyPair({userId:s,numBits:r.pInt(t.keyBitLength()),passphrase:r.trim(t.password())}),n&&n.privateKeyArmored&&(l.privateKeys.importKey(n.privateKeyArmored),l.publicKeys.importKey(n.publicKeyArmored),l.store(),e.reloadOpenPgpKeys(),r.delegateRun(t,"cancelCommand")),t.submitRequest(!1)},100),!0)}),l.constructorEnd(this)}var i=t("window"),o=t("_"),n=t("ko"),r=t("Utils"),a=t("../../Storages/WebMailDataStorage.js"),l=t("kn"),c=t("KnoinAbstractViewModel");l.extendAsViewModel("PopupsGenerateNewOpenPgpKeyViewModel",s),s.prototype.clearPopup=function(){this.name(""),this.password(""),this.email(""),this.email.error(!1),this.keyBitLength(2048)},s.prototype.onShow=function(){this.clearPopup()},s.prototype.onFocus=function(){this.email.focus(!0)},e.exports=s}(t,e)},{"../../Apps/RainLoopApp.js":3,"../../Storages/WebMailDataStorage.js":74,KnoinAbstractViewModel:36,Utils:14,_:31,kn:33,ko:28,window:32}],93:[function(e,t){!function(e,t){"use strict";function s(){c.call(this,"Popups","PopupsIdentity");var e=t("../../Apps/RainLoopApp.js");this.id="",this.edit=i.observable(!1),this.owner=i.observable(!1),this.email=i.observable("").validateEmail(),this.email.focused=i.observable(!1),this.name=i.observable(""),this.name.focused=i.observable(!1),this.replyTo=i.observable("").validateSimpleEmail(),this.replyTo.focused=i.observable(!1),this.bcc=i.observable("").validateSimpleEmail(),this.bcc.focused=i.observable(!1),this.submitRequest=i.observable(!1),this.submitError=i.observable(""),this.addOrEditIdentityCommand=n.createCommand(this,function(){return this.email.hasError()||this.email.hasError(""===n.trim(this.email())),this.email.hasError()?(this.owner()||this.email.focused(!0),!1):this.replyTo.hasError()?(this.replyTo.focused(!0),!1):this.bcc.hasError()?(this.bcc.focused(!0),!1):(this.submitRequest(!0),a.identityUpdate(_.bind(function(t,s){this.submitRequest(!1),o.StorageResultType.Success===t&&s?s.Result?(e.accountsAndIdentities(),this.cancelCommand()):s.ErrorCode&&this.submitError(n.getNotification(s.ErrorCode)):this.submitError(n.getNotification(o.Notification.UnknownError))},this),this.id,this.email(),this.name(),this.replyTo(),this.bcc()),!0)},function(){return!this.submitRequest()}),this.label=i.computed(function(){return n.i18n("POPUPS_IDENTITIES/"+(this.edit()?"TITLE_UPDATE_IDENTITY":"TITLE_ADD_IDENTITY"))},this),this.button=i.computed(function(){return n.i18n("POPUPS_IDENTITIES/"+(this.edit()?"BUTTON_UPDATE_IDENTITY":"BUTTON_ADD_IDENTITY"))},this),r.constructorEnd(this)}var i=t("ko"),o=t("Enums"),n=t("Utils"),r=t("kn"),a=t("../../Storages/WebMailAjaxRemoteStorage.js"),l=t("../../Storages/WebMailDataStorage.js"),c=t("KnoinAbstractViewModel");r.extendAsViewModel("PopupsIdentityViewModel",s),s.prototype.clearPopup=function(){this.id="",this.edit(!1),this.owner(!1),this.name(""),this.email(""),this.replyTo(""),this.bcc(""),this.email.hasError(!1),this.replyTo.hasError(!1),this.bcc.hasError(!1),this.submitRequest(!1),this.submitError("")},s.prototype.onShow=function(e){this.clearPopup(),e&&(this.edit(!0),this.id=e.id,this.name(e.name()),this.email(e.email()),this.replyTo(e.replyTo()),this.bcc(e.bcc()),this.owner(this.id===l.accountEmail()))},s.prototype.onFocus=function(){this.owner()||this.email.focused(!0)},e.exports=s}(t,e)},{"../../Apps/RainLoopApp.js":3,"../../Storages/WebMailAjaxRemoteStorage.js":72,"../../Storages/WebMailDataStorage.js":74,Enums:7,KnoinAbstractViewModel:36,Utils:14,kn:33,ko:28}],94:[function(e,t){!function(e,t){"use strict";function s(){a.call(this,"Popups","PopupsKeyboardShortcutsHelp"),this.sDefaultKeyScope=n.KeyState.PopupKeyboardShortcutsHelp,r.constructorEnd(this)}var i=t("_"),o=t("key"),n=t("Enums"),r=t("kn"),a=t("KnoinAbstractViewModel");r.extendAsViewModel("PopupsKeyboardShortcutsHelpViewModel",s),s.prototype.onBuild=function(e){o("tab, shift+tab, left, right",n.KeyState.PopupKeyboardShortcutsHelp,i.bind(function(t,s){if(t&&s){var i=e.find(".nav.nav-tabs > li"),o=s&&("tab"===s.shortcut||"right"===s.shortcut),n=i.index(i.filter(".active"));return!o&&n>0?n--:o&&n').appendTo("body"),r.on("error",function(t){t&&t.originalEvent&&t.originalEvent.message&&-1===u.inArray(t.originalEvent.message,["Script error.","Uncaught Error: Error calling method on NPObject."])&&e.jsError(u.emptyFunction,t.originalEvent.message,t.originalEvent.filename,t.originalEvent.lineno,n.location&&n.location.toString?n.location.toString():"",a.attr("class"),u.microtime()-c.now)}),l.on("keydown",function(e){e&&e.ctrlKey&&a.addClass("rl-ctrl-key-pressed")}).on("keyup",function(e){e&&!e.ctrlKey&&a.removeClass("rl-ctrl-key-pressed")})}var s=t("$"),o=t("_"),n=t("window"),a=t("$html"),r=t("$win"),l=t("$doc"),c=t("Globals"),u=t("Utils"),d=t("LinkBuilder"),p=t("Events"),h=t("Storage:Settings"),g=t("Knoin:AbstractBoot");o.extend(i.prototype,g.prototype),i.prototype.remote=function(){return null},i.prototype.data=function(){return null},i.prototype.setupSettings=function(){return!0},i.prototype.download=function(e){var t=null,i=null,s=n.navigator.userAgent.toLowerCase();return s&&(s.indexOf("chrome")>-1||s.indexOf("chrome")>-1)&&(i=n.document.createElement("a"),i.href=e,n.document.createEvent&&(t=n.document.createEvent("MouseEvents"),t&&t.initEvent&&i.dispatchEvent))?(t.initEvent("click",!0,!0),i.dispatchEvent(t),!0):(c.bMobileDevice?(n.open(e,"_self"),n.focus()):this.iframe.attr("src",e),!0)},i.prototype.setTitle=function(e){e=(u.isNormal(e)&&0o;o++)g=e.Result["@Collection"][o],g&&"Object/Message"===g["@Object"]&&(m=h[o],m&&m.initByJson(g)||(m=C.newInstanceFromJson(g)),m&&(S.hasNewMessageAndRemoveFromCache(m.folderFullNameRaw,m.uid)&&5>=y&&(y++,m.newForAnimation(!0)),m.deleted(!1),t?S.initMessageFlagsFromCache(m):S.storeMessageFlagsToCache(m),m.lastInCollapsedThread(i&&-1s;s++)n=t[s],n&&(r=n.FullNameRaw,a=S.getFolderFromCacheList(r),a||(a=w.newInstanceFromJson(n),a&&(S.setFolderToCacheList(r,a),S.setFolderFullNameRaw(a.fullNameHash,r))),a&&(a.collapsed(!i.isFolderExpanded(a.fullNameHash)),n.Extended&&(n.Extended.Hash&&S.setFolderHash(a.fullNameRaw,n.Extended.Hash),d.isNormal(n.Extended.MessageCount)&&a.messageCountAll(n.Extended.MessageCount),d.isNormal(n.Extended.MessageUnseenCount)&&a.messageCountUnread(n.Extended.MessageUnseenCount)),l=n.SubFolders,l&&"Collection/FolderCollection"===l["@Object"]&&l["@Collection"]&&d.isArray(l["@Collection"])&&a.subFolders(this.folderResponseParseRec(e,l["@Collection"])),c.push(a)));return c},i.prototype.setFolders=function(e){var t=[],i=!1,s=function(e){return""===e||c.Values.UnuseOptionValue===e||null!==S.getFolderFromCacheList(e)?e:""};e&&e.Result&&"Collection/FolderCollection"===e.Result["@Object"]&&e.Result["@Collection"]&&d.isArray(e.Result["@Collection"])&&(d.isUnd(e.Result.Namespace)||(b.namespace=e.Result.Namespace),b.threading(!!f.settingsGet("UseImapThread")&&e.Result.IsThreadsSupported&&!0),t=this.folderResponseParseRec(b.namespace,e.Result["@Collection"]),b.folderList(t),e.Result.SystemFolders&&""==""+f.settingsGet("SentFolder")+f.settingsGet("DraftFolder")+f.settingsGet("SpamFolder")+f.settingsGet("TrashFolder")+f.settingsGet("ArchiveFolder")+f.settingsGet("NullFolder")&&(f.settingsSet("SentFolder",e.Result.SystemFolders[2]||null),f.settingsSet("DraftFolder",e.Result.SystemFolders[3]||null),f.settingsSet("SpamFolder",e.Result.SystemFolders[4]||null),f.settingsSet("TrashFolder",e.Result.SystemFolders[5]||null),f.settingsSet("ArchiveFolder",e.Result.SystemFolders[12]||null),i=!0),b.sentFolder(s(f.settingsGet("SentFolder"))),b.draftFolder(s(f.settingsGet("DraftFolder"))),b.spamFolder(s(f.settingsGet("SpamFolder"))),b.trashFolder(s(f.settingsGet("TrashFolder"))),b.archiveFolder(s(f.settingsGet("ArchiveFolder"))),i&&y.saveSystemFolders(d.emptyFunction,{SentFolder:b.sentFolder(),DraftFolder:b.draftFolder(),SpamFolder:b.spamFolder(),TrashFolder:b.trashFolder(),ArchiveFolder:b.archiveFolder(),NullFolder:"NullFolder"}),m.set(r.ClientSideKeyName.FoldersLashHash,e.Result.FoldersHash))},i.prototype.isFolderExpanded=function(e){var t=m.get(r.ClientSideKeyName.ExpandedFolders);return n.isArray(t)&&-1!==n.indexOf(t,e)},i.prototype.setExpandedFolder=function(e,t){var i=m.get(r.ClientSideKeyName.ExpandedFolders);n.isArray(i)||(i=[]),t?(i.push(e),i=n.uniq(i)):i=n.without(i,e),m.set(r.ClientSideKeyName.ExpandedFolders,i)},i.prototype.initLayoutResizer=function(e,t,i){var s=60,n=155,a=o(e),r=o(t),l=m.get(i)||null,c=function(e){e&&(a.css({width:""+e+"px"}),r.css({left:""+e+"px"}))},u=function(e){if(e)a.resizable("disable"),c(s);else{a.resizable("enable");var t=d.pInt(m.get(i))||n;c(t>n?t:n)}},p=function(e,t){t&&t.size&&t.size.width&&(m.set(i,t.size.width),r.css({left:""+t.size.width+"px"}))};null!==l&&c(l>n?l:n),a.resizable({helper:"ui-resizable-helper",minWidth:n,maxWidth:350,handles:"e",stop:p}),h.sub("left-panel.off",function(){u(!0)}),h.sub("left-panel.on",function(){u(!1)})},i.prototype.mailToHelper=function(e){if(e&&"mailto:"===e.toString().substr(0,7).toLowerCase()){e=e.toString().substr(7);var i={},o=null,n=e.replace(/\?.+$/,""),a=e.replace(/^[^\?]*\?/,"");return o=new v,o.parse(s.decodeURIComponent(n)),o&&o.email&&(i=d.simpleQueryParser(a),g.showScreenPopup(t("View:Popup:Compose"),[r.ComposeType.Empty,null,[o],d.isUnd(i.subject)?null:d.pString(i.subject),d.isUnd(i.body)?null:d.plainToHtml(d.pString(i.body))])),!0}return!1},i.prototype.bootstartLoginScreen=function(){var e=d.pString(f.settingsGet("CustomLoginLink"));e?(g.routeOff(),g.setHash(p.root(),!0),g.routeOff(),n.defer(function(){s.location.href=e})):(g.hideLoading(),g.startScreens([t("Screen:RainLoop:Login")]),u.runHook("rl-start-login-screens"),h.pub("rl.bootstart-login-screens"))},i.prototype.bootstart=function(){R.prototype.bootstart.call(this),b.populateDataOnStart();var e=this,i=f.settingsGet("JsHash"),a=d.pInt(f.settingsGet("ContactsSyncInterval")),c=f.settingsGet("AllowGoogleSocial"),m=f.settingsGet("AllowFacebookSocial"),S=f.settingsGet("AllowTwitterSocial");d.initOnStartOrLangChange(function(){o.extend(!0,o.magnificPopup.defaults,{tClose:d.i18n("MAGNIFIC_POPUP/CLOSE"),tLoading:d.i18n("MAGNIFIC_POPUP/LOADING"),gallery:{tPrev:d.i18n("MAGNIFIC_POPUP/GALLERY_PREV"),tNext:d.i18n("MAGNIFIC_POPUP/GALLERY_NEXT"),tCounter:d.i18n("MAGNIFIC_POPUP/GALLERY_COUNTER")},image:{tError:d.i18n("MAGNIFIC_POPUP/IMAGE_ERROR")},ajax:{tError:d.i18n("MAGNIFIC_POPUP/AJAX_ERROR")}})},this),s.SimplePace&&(s.SimplePace.set(70),s.SimplePace.sleep()),l.leftPanelDisabled.subscribe(function(e){h.pub("left-panel."+(e?"off":"on"))}),f.settingsGet("Auth")?(this.setTitle(d.i18n("TITLES/LOADING")),this.folders(n.bind(function(i){g.hideLoading(),i?(s.$LAB&&s.crypto&&s.crypto.getRandomValues&&f.capa(r.Capa.OpenPGP)?s.$LAB.script(s.openpgp?"":p.openPgpJs()).wait(function(){s.openpgp&&(b.openpgpKeyring=new s.openpgp.Keyring,b.capaOpenPGP(!0),h.pub("openpgp.init"),e.reloadOpenPgpKeys())}):b.capaOpenPGP(!1),g.startScreens([t("Screen:RainLoop:MailBox"),t("Screen:RainLoop:Settings"),t("Screen:RainLoop:About")]),(c||m||S)&&e.socialUsers(!0),h.sub("interval.2m",function(){e.folderInformation("INBOX")}),h.sub("interval.2m",function(){var t=b.currentFolderFullNameRaw();"INBOX"!==t&&e.folderInformation(t)}),h.sub("interval.3m",function(){e.folderInformationMultiply()}),h.sub("interval.5m",function(){e.quota()}),h.sub("interval.10m",function(){e.folders()}),a=a>=5?a:20,a=320>=a?a:320,s.setInterval(function(){e.contactsSync()},6e4*a+5e3),n.delay(function(){e.contactsSync()},5e3),n.delay(function(){e.folderInformationMultiply(!0)},500),u.runHook("rl-start-user-screens"),h.pub("rl.bootstart-user-screens"),f.settingsGet("AccountSignMe")&&s.navigator.registerProtocolHandler&&n.delay(function(){try{s.navigator.registerProtocolHandler("mailto",s.location.protocol+"//"+s.location.host+s.location.pathname+"?mailto&to=%s",""+(f.settingsGet("Title")||"RainLoop"))}catch(t){}f.settingsGet("MailToEmail")&&e.mailToHelper(f.settingsGet("MailToEmail"))},500),l.bMobileDevice||n.defer(function(){e.initLayoutResizer("#rl-left","#rl-right",r.ClientSideKeyName.FolderListSize)})):e.bootstartLoginScreen(),s.SimplePace&&s.SimplePace.set(100)},this))):(this.bootstartLoginScreen(),s.SimplePace&&s.SimplePace.set(100)),c&&(s["rl_"+i+"_google_service"]=function(){b.googleActions(!0),e.socialUsers()}),m&&(s["rl_"+i+"_facebook_service"]=function(){b.facebookActions(!0),e.socialUsers()}),S&&(s["rl_"+i+"_twitter_service"]=function(){b.twitterActions(!0),e.socialUsers()}),h.sub("interval.1m",function(){l.momentTrigger(!l.momentTrigger())}),u.runHook("rl-start-screens"),h.pub("rl.bootstart-end")},e.exports=new i}(t,e)},{$:26,"App:Abstract":2,"App:Knoin":33,Consts:6,Enums:7,Events:8,Globals:9,LinkBuilder:11,"Model:Account":37,"Model:Email":43,"Model:Folder":46,"Model:Identity":47,"Model:Message":48,"Model:OpenPgpKey":49,Plugins:12,"Screen:RainLoop:About":50,"Screen:RainLoop:Login":52,"Screen:RainLoop:MailBox":53,"Screen:RainLoop:Settings":54,"Settings:RainLoop:Accounts":55,"Settings:RainLoop:ChangePassword":56,"Settings:RainLoop:Contacts":57,"Settings:RainLoop:Filters":58,"Settings:RainLoop:Folders":59,"Settings:RainLoop:General":60,"Settings:RainLoop:Identities":61,"Settings:RainLoop:Identity":62,"Settings:RainLoop:OpenPGP":63,"Settings:RainLoop:Security":64,"Settings:RainLoop:Social":65,"Settings:RainLoop:Themes":66,"Storage:LocalStorage":71,"Storage:RainLoop:Cache":69,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,"Storage:Settings":75,Utils:14,"View:Popup:Ask":86,"View:Popup:Compose":88,"View:Popup:FolderSystem":93,_:31,moment:29,window:32}],4:[function(e,t){!function(e,t){"use strict";e.exports=function(e){var i=t("window"),s=t("_"),o=t("$"),n=t("$win"),a=t("$html"),r=t("Globals"),l=t("Plugins"),c=t("Utils"),u=t("Enums"),d=t("Model:Email");r.__APP=e,e.setupSettings(),l.__boot=e,l.__remote=e.remote(),l.__data=e.data(),a.addClass(r.bMobileDevice?"mobile":"no-mobile"),n.keydown(c.killCtrlAandS).keyup(c.killCtrlAandS),n.unload(function(){r.bUnload=!0}),a.on("click.dropdown.data-api",function(){c.detectDropdownVisibility()}),i.rl=i.rl||{},i.rl.addHook=l.addHook,i.rl.settingsGet=l.mainSettingsGet,i.rl.remoteRequest=l.remoteRequest,i.rl.pluginSettingsGet=l.settingsGet,i.rl.createCommand=c.createCommand,i.rl.EmailModel=d,i.rl.Enums=u,i.__APP_BOOT=function(t){o(function(){i.rainloopTEMPLATES&&i.rainloopTEMPLATES[0]?(o("#rl-templates").html(i.rainloopTEMPLATES[0]),s.delay(function(){e.bootstart(),a.removeClass("no-js rl-booted-trigger").addClass("rl-booted")},10)):t(!1),i.__APP_BOOT=null})}}}(t,e)},{$:26,$html:17,$win:18,Enums:7,Globals:9,"Model:Email":43,Plugins:12,Utils:14,_:31,window:32}],5:[function(e,t){!function(e){"use strict";var t={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",urlsafe_encode:function(e){return t.encode(e).replace(/[+]/g,"-").replace(/[\/]/g,"_").replace(/[=]/g,".")},encode:function(e){var i,s,o,n,a,r,l,c="",u=0;for(e=t._utf8_encode(e);u>2,a=(3&i)<<4|s>>4,r=(15&s)<<2|o>>6,l=63&o,isNaN(s)?r=l=64:isNaN(o)&&(l=64),c=c+this._keyStr.charAt(n)+this._keyStr.charAt(a)+this._keyStr.charAt(r)+this._keyStr.charAt(l);return c},decode:function(e){var i,s,o,n,a,r,l,c="",u=0;for(e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");u>4,s=(15&a)<<4|r>>2,o=(3&r)<<6|l,c+=String.fromCharCode(i),64!==r&&(c+=String.fromCharCode(s)),64!==l&&(c+=String.fromCharCode(o));return t._utf8_decode(c)},_utf8_encode:function(e){e=e.replace(/\r\n/g,"\n");for(var t="",i=0,s=e.length,o=0;s>i;i++)o=e.charCodeAt(i),128>o?t+=String.fromCharCode(o):o>127&&2048>o?(t+=String.fromCharCode(o>>6|192),t+=String.fromCharCode(63&o|128)):(t+=String.fromCharCode(o>>12|224),t+=String.fromCharCode(o>>6&63|128),t+=String.fromCharCode(63&o|128));return t},_utf8_decode:function(e){for(var t="",i=0,s=0,o=0,n=0;is?(t+=String.fromCharCode(s),i++):s>191&&224>s?(o=e.charCodeAt(i+1),t+=String.fromCharCode((31&s)<<6|63&o),i+=2):(o=e.charCodeAt(i+1),n=e.charCodeAt(i+2),t+=String.fromCharCode((15&s)<<12|(63&o)<<6|63&n),i+=3);return t}};e.exports=t}(t,e)},{}],6:[function(e,t){!function(e){"use strict";var t={};t.Values={},t.DataImages={},t.Defaults={},t.Defaults.MessagesPerPage=20,t.Defaults.ContactsPerPage=50,t.Defaults.MessagesPerPageArray=[10,20,30,50,100],t.Defaults.DefaultAjaxTimeout=3e4,t.Defaults.SearchAjaxTimeout=3e5,t.Defaults.SendMessageAjaxTimeout=3e5,t.Defaults.SaveMessageAjaxTimeout=2e5,t.Defaults.ContactsSyncAjaxTimeout=2e5,t.Values.UnuseOptionValue="__UNUSE__",t.Values.ClientSideCookieIndexName="rlcsc",t.Values.ImapDefaulPort=143,t.Values.ImapDefaulSecurePort=993,t.Values.SmtpDefaulPort=25,t.Values.SmtpDefaulSecurePort=465,t.Values.MessageBodyCacheLimit=15,t.Values.AjaxErrorLimit=7,t.Values.TokenErrorLimit=10,t.DataImages.UserDotPic="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQIW2P8DwQACgAD/il4QJ8AAAAASUVORK5CYII=",t.DataImages.TranspPic="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQIW2NkAAIAAAoAAggA9GkAAAAASUVORK5CYII=",e.exports=t}(t,e)},{}],7:[function(e,t){!function(e){"use strict";var t={};t.StorageResultType={Success:"success",Abort:"abort",Error:"error",Unload:"unload"},t.State={Empty:10,Login:20,Auth:30},t.StateType={Webmail:0,Admin:1},t.Capa={Prem:"PREM",TwoFactor:"TWO_FACTOR",OpenPGP:"OPEN_PGP",Prefetch:"PREFETCH",Gravatar:"GRAVATAR",Themes:"THEMES",Filters:"FILTERS",AdditionalAccounts:"ADDITIONAL_ACCOUNTS",AdditionalIdentities:"ADDITIONAL_IDENTITIES"},t.KeyState={All:"all",None:"none",ContactList:"contact-list",MessageList:"message-list",FolderList:"folder-list",MessageView:"message-view",Compose:"compose",Settings:"settings",Menu:"menu",PopupComposeOpenPGP:"compose-open-pgp",PopupKeyboardShortcutsHelp:"popup-keyboard-shortcuts-help",PopupAsk:"popup-ask"},t.FolderType={Inbox:10,SentItems:11,Draft:12,Trash:13,Spam:14,Archive:15,NotSpam:80,User:99},t.LoginSignMeTypeAsString={DefaultOff:"defaultoff",DefaultOn:"defaulton",Unused:"unused"},t.LoginSignMeType={DefaultOff:0,DefaultOn:1,Unused:2},t.ComposeType={Empty:"empty",Reply:"reply",ReplyAll:"replyall",Forward:"forward",ForwardAsAttachment:"forward-as-attachment",Draft:"draft",EditAsNew:"editasnew"},t.UploadErrorCode={Normal:0,FileIsTooBig:1,FilePartiallyUploaded:2,FileNoUploaded:3,MissingTempFolder:4,FileOnSaveingError:5,FileType:98,Unknown:99},t.SetSystemFoldersNotification={None:0,Sent:1,Draft:2,Spam:3,Trash:4,Archive:5},t.ClientSideKeyName={FoldersLashHash:0,MessagesInboxLastHash:1,MailBoxListSize:2,ExpandedFolders:3,FolderListSize:4},t.EventKeyCode={Backspace:8,Tab:9,Enter:13,Esc:27,PageUp:33,PageDown:34,Left:37,Right:39,Up:38,Down:40,End:35,Home:36,Space:32,Insert:45,Delete:46,A:65,S:83},t.MessageSetAction={SetSeen:0,UnsetSeen:1,SetFlag:2,UnsetFlag:3},t.MessageSelectAction={All:0,None:1,Invert:2,Unseen:3,Seen:4,Flagged:5,Unflagged:6},t.DesktopNotifications={Allowed:0,NotAllowed:1,Denied:2,NotSupported:9},t.MessagePriority={Low:5,Normal:3,High:1},t.EditorDefaultType={Html:"Html",Plain:"Plain"},t.CustomThemeType={Light:"Light",Dark:"Dark"},t.ServerSecure={None:0,SSL:1,TLS:2},t.SearchDateType={All:-1,Days3:3,Days7:7,Month:30},t.EmailType={Defailt:0,Facebook:1,Google:2},t.SaveSettingsStep={Animate:-2,Idle:-1,TrueResult:1,FalseResult:0},t.InterfaceAnimation={None:"None",Normal:"Normal",Full:"Full"},t.Layout={NoPreview:0,SidePreview:1,BottomPreview:2},t.FilterConditionField={From:"From",To:"To",Recipient:"Recipient",Subject:"Subject"},t.FilterConditionType={Contains:"Contains",NotContains:"NotContains",EqualTo:"EqualTo",NotEqualTo:"NotEqualTo"},t.FiltersAction={None:"None",Move:"Move",Discard:"Discard",Forward:"Forward"},t.FilterRulesType={And:"And",Or:"Or"},t.SignedVerifyStatus={UnknownPublicKeys:-4,UnknownPrivateKey:-3,Unverified:-2,Error:-1,None:0,Success:1},t.ContactPropertyType={Unknown:0,FullName:10,FirstName:15,LastName:16,MiddleName:16,Nick:18,NamePrefix:20,NameSuffix:21,Email:30,Phone:31,Web:32,Birthday:40,Facebook:90,Skype:91,GitHub:92,Note:110,Custom:250},t.Notification={InvalidToken:101,AuthError:102,AccessError:103,ConnectionError:104,CaptchaError:105,SocialFacebookLoginAccessDisable:106,SocialTwitterLoginAccessDisable:107,SocialGoogleLoginAccessDisable:108,DomainNotAllowed:109,AccountNotAllowed:110,AccountTwoFactorAuthRequired:120,AccountTwoFactorAuthError:121,CouldNotSaveNewPassword:130,CurrentPasswordIncorrect:131,NewPasswordShort:132,NewPasswordWeak:133,NewPasswordForbidden:134,ContactsSyncError:140,CantGetMessageList:201,CantGetMessage:202,CantDeleteMessage:203,CantMoveMessage:204,CantCopyMessage:205,CantSaveMessage:301,CantSendMessage:302,InvalidRecipients:303,CantCreateFolder:400,CantRenameFolder:401,CantDeleteFolder:402,CantSubscribeFolder:403,CantUnsubscribeFolder:404,CantDeleteNonEmptyFolder:405,CantSaveSettings:501,CantSavePluginSettings:502,DomainAlreadyExists:601,CantInstallPackage:701,CantDeletePackage:702,InvalidPluginPackage:703,UnsupportedPluginPackage:704,LicensingServerIsUnavailable:710,LicensingExpired:711,LicensingBanned:712,DemoSendMessageError:750,AccountAlreadyExists:801,MailServerError:901,ClientViewError:902,InvalidInputArgument:903,UnknownNotification:999,UnknownError:999},e.exports=t
+}(t,e)},{}],8:[function(e,t){!function(e,t){"use strict";function i(){this.oSubs={}}var s=t("_"),o=t("Utils"),n=t("Plugins");i.prototype.oSubs={},i.prototype.sub=function(e,t,i){return o.isUnd(this.oSubs[e])&&(this.oSubs[e]=[]),this.oSubs[e].push([t,i]),this},i.prototype.pub=function(e,t){return n.runHook("rl-pub",[e,t]),o.isUnd(this.oSubs[e])||s.each(this.oSubs[e],function(e){e[0]&&e[0].apply(e[1]||null,t||[])}),this},e.exports=new i}(t,e)},{Plugins:12,Utils:14,_:31}],9:[function(e,t){!function(e,t){"use strict";var i={},s=t("window"),o=t("ko"),n=t("key"),a=t("$html"),r=t("Enums");i.now=(new s.Date).getTime(),i.momentTrigger=o.observable(!0),i.dropdownVisibility=o.observable(!1).extend({rateLimit:0}),i.tooltipTrigger=o.observable(!1).extend({rateLimit:0}),i.langChangeTrigger=o.observable(!0),i.useKeyboardShortcuts=o.observable(!0),i.iAjaxErrorCount=0,i.iTokenErrorCount=0,i.iMessageBodyCacheCount=0,i.bUnload=!1,i.sUserAgent=(s.navigator.userAgent||"").toLowerCase(),i.bIsiOSDevice=-1'+this.editor.getData()+" ":this.editor.getData():""},i.prototype.modeToggle=function(e){this.editor&&(e?"plain"===this.editor.mode&&this.editor.setMode("wysiwyg"):"wysiwyg"===this.editor.mode&&this.editor.setMode("plain"),this.resize())},i.prototype.setHtml=function(e,t){this.editor&&(this.modeToggle(!0),this.editor.setData(e),t&&this.focus())},i.prototype.setPlain=function(e,t){if(this.editor){if(this.modeToggle(!1),"plain"===this.editor.mode&&this.editor.plugins.plain&&this.editor.__plain)return this.editor.__plain.setRawData(e);this.editor.setData(e),t&&this.focus()}},i.prototype.init=function(){if(this.$element&&this.$element[0]){var e=this,t=function(){var t=n.oHtmlEditorDefaultConfig,i=a.settingsGet("Language"),o=!!a.settingsGet("AllowHtmlEditorSourceButton");o&&t.toolbarGroups&&!t.toolbarGroups.__SourceInited&&(t.toolbarGroups.__SourceInited=!0,t.toolbarGroups.push({name:"document",groups:["mode","document","doctools"]})),t.enterMode=s.CKEDITOR.ENTER_BR,t.shiftEnterMode=s.CKEDITOR.ENTER_BR,t.language=n.oHtmlEditorLangsMap[i]||"en",s.CKEDITOR.env&&(s.CKEDITOR.env.isCompatible=!0),e.editor=s.CKEDITOR.appendTo(e.$element[0],t),e.editor.on("key",function(e){return e&&e.data&&9===e.data.keyCode?!1:void 0}),e.editor.on("blur",function(){e.blurTrigger()}),e.editor.on("mode",function(){e.blurTrigger(),e.fOnModeChange&&e.fOnModeChange("plain"!==e.editor.mode)}),e.editor.on("focus",function(){e.focusTrigger()}),e.fOnReady&&e.editor.on("instanceReady",function(){e.editor.setKeystroke(s.CKEDITOR.CTRL+65,"selectAll"),e.fOnReady(),e.__resizable=!0,e.resize()})};s.CKEDITOR?t():s.__initEditor=t}},i.prototype.focus=function(){this.editor&&this.editor.focus()},i.prototype.blur=function(){this.editor&&this.editor.focusManager.blur(!0)},i.prototype.resize=function(){if(this.editor&&this.__resizable)try{this.editor.resize(this.$element.width(),this.$element.innerHeight())}catch(e){}},i.prototype.clear=function(e){this.setHtml("",e)},e.exports=i}(t,e)},{Globals:9,"Storage:Settings":75,_:31,window:32}],11:[function(e,t){!function(e,t){"use strict";function i(){var e=t("Storage:Settings");this.sBase="#/",this.sServer="./?",this.sVersion=e.settingsGet("Version"),this.sSpecSuffix=e.settingsGet("AuthAccountHash")||"0",this.sStaticPrefix=e.settingsGet("StaticPrefix")||"rainloop/v/"+this.sVersion+"/static/"}var s=t("window"),o=t("Utils");i.prototype.root=function(){return this.sBase},i.prototype.attachmentDownload=function(e){return this.sServer+"/Raw/"+this.sSpecSuffix+"/Download/"+e},i.prototype.attachmentPreview=function(e){return this.sServer+"/Raw/"+this.sSpecSuffix+"/View/"+e},i.prototype.attachmentPreviewAsPlain=function(e){return this.sServer+"/Raw/"+this.sSpecSuffix+"/ViewAsPlain/"+e},i.prototype.upload=function(){return this.sServer+"/Upload/"+this.sSpecSuffix+"/"},i.prototype.uploadContacts=function(){return this.sServer+"/UploadContacts/"+this.sSpecSuffix+"/"},i.prototype.uploadBackground=function(){return this.sServer+"/UploadBackground/"+this.sSpecSuffix+"/"},i.prototype.append=function(){return this.sServer+"/Append/"+this.sSpecSuffix+"/"},i.prototype.change=function(e){return this.sServer+"/Change/"+this.sSpecSuffix+"/"+s.encodeURIComponent(e)+"/"},i.prototype.ajax=function(e){return this.sServer+"/Ajax/"+this.sSpecSuffix+"/"+e},i.prototype.messageViewLink=function(e){return this.sServer+"/Raw/"+this.sSpecSuffix+"/ViewAsPlain/"+e},i.prototype.messageDownloadLink=function(e){return this.sServer+"/Raw/"+this.sSpecSuffix+"/Download/"+e},i.prototype.avatarLink=function(e){return this.sServer+"/Raw/0/Avatar/"+s.encodeURIComponent(e)+"/"},i.prototype.inbox=function(){return this.sBase+"mailbox/Inbox"},i.prototype.messagePreview=function(){return this.sBase+"mailbox/message-preview"},i.prototype.settings=function(e){var t=this.sBase+"settings";return o.isUnd(e)||""===e||(t+="/"+e),t},i.prototype.about=function(){return this.sBase+"about"},i.prototype.admin=function(e){var t=this.sBase;switch(e){case"AdminDomains":t+="domains";break;case"AdminSecurity":t+="security";break;case"AdminLicensing":t+="licensing"}return t},i.prototype.mailBox=function(e,t,i){t=o.isNormal(t)?o.pInt(t):1,i=o.pString(i);var s=this.sBase+"mailbox/";return""!==e&&(s+=encodeURI(e)),t>1&&(s=s.replace(/[\/]+$/,""),s+="/p"+t),""!==i&&(s=s.replace(/[\/]+$/,""),s+="/"+encodeURI(i)),s},i.prototype.phpInfo=function(){return this.sServer+"Info"},i.prototype.langLink=function(e){return this.sServer+"/Lang/0/"+encodeURI(e)+"/"+this.sVersion+"/"},i.prototype.exportContactsVcf=function(){return this.sServer+"/Raw/"+this.sSpecSuffix+"/ContactsVcf/"},i.prototype.exportContactsCsv=function(){return this.sServer+"/Raw/"+this.sSpecSuffix+"/ContactsCsv/"},i.prototype.emptyContactPic=function(){return this.sStaticPrefix+"css/images/empty-contact.png"},i.prototype.sound=function(e){return this.sStaticPrefix+"sounds/"+e},i.prototype.themePreviewLink=function(e){var t="rainloop/v/"+this.sVersion+"/";return"@custom"===e.substr(-7)&&(e=o.trim(e.substring(0,e.length-7)),t=""),t+"themes/"+encodeURI(e)+"/images/preview.png"},i.prototype.notificationMailIcon=function(){return this.sStaticPrefix+"css/images/icom-message-notification.png"},i.prototype.openPgpJs=function(){return this.sStaticPrefix+"js/openpgp.min.js"},i.prototype.socialGoogle=function(){return this.sServer+"SocialGoogle"+(""!==this.sSpecSuffix?"/"+this.sSpecSuffix+"/":"")},i.prototype.socialTwitter=function(){return this.sServer+"SocialTwitter"+(""!==this.sSpecSuffix?"/"+this.sSpecSuffix+"/":"")},i.prototype.socialFacebook=function(){return this.sServer+"SocialFacebook"+(""!==this.sSpecSuffix?"/"+this.sSpecSuffix+"/":"")},e.exports=new i}(t,e)},{"Storage:Settings":75,Utils:14,window:32}],12:[function(e,t){!function(e,t){"use strict";var i={__boot:null,__remote:null,__data:null},s=t("_"),o=t("Utils"),n=t("Storage:Settings");i.oViewModelsHooks={},i.oSimpleHooks={},i.regViewModelHook=function(e,t){t&&(t.__hookName=e)},i.addHook=function(e,t){o.isFunc(t)&&(o.isArray(i.oSimpleHooks[e])||(i.oSimpleHooks[e]=[]),i.oSimpleHooks[e].push(t))},i.runHook=function(e,t){o.isArray(i.oSimpleHooks[e])&&(t=t||[],s.each(i.oSimpleHooks[e],function(e){e.apply(null,t)}))},i.mainSettingsGet=function(e){return n.settingsGet(e)},i.remoteRequest=function(e,t,s,o,n,a){i.__remote&&i.__remote.defaultRequest(e,t,s,o,n,a)},i.settingsGet=function(e,t){var i=n.settingsGet("Plugins");return i=i&&!o.isUnd(i[e])?i[e]:null,i?o.isUnd(i[t])?null:i[t]:null},e.exports=i}(t,e)},{"Storage:Settings":75,Utils:14,_:31}],13:[function(e,t){!function(e,t){"use strict";function i(e,t,i,s,a,r){this.list=e,this.listChecked=n.computed(function(){return o.filter(this.list(),function(e){return e.checked()})},this).extend({rateLimit:0}),this.isListChecked=n.computed(function(){return 00&&-10)return o.newSelectPosition(i,a.shift),!1}})}},i.prototype.autoSelect=function(e){this.bAutoSelect=!!e},i.prototype.getItemUid=function(e){var t="",i=this.oCallbacks.onItemGetUid||null;return i&&e&&(t=i(e)),t.toString()},i.prototype.newSelectPosition=function(e,t,i){var s=0,n=10,a=!1,l=!1,c=null,u=this.list(),d=u?u.length:0,p=this.focusedItem();if(d>0)if(p){if(p)if(r.EventKeyCode.Down===e||r.EventKeyCode.Up===e||r.EventKeyCode.Insert===e||r.EventKeyCode.Space===e)o.each(u,function(t){if(!l)switch(e){case r.EventKeyCode.Up:p===t?l=!0:c=t;break;case r.EventKeyCode.Down:case r.EventKeyCode.Insert:a?(c=t,l=!0):p===t&&(a=!0)}});else if(r.EventKeyCode.Home===e||r.EventKeyCode.End===e)r.EventKeyCode.Home===e?c=u[0]:r.EventKeyCode.End===e&&(c=u[u.length-1]);else if(r.EventKeyCode.PageDown===e){for(;d>s;s++)if(p===u[s]){s+=n,s=s>d-1?d-1:s,c=u[s];break}}else if(r.EventKeyCode.PageUp===e)for(s=d;s>=0;s--)if(p===u[s]){s-=n,s=0>s?0:s,c=u[s];break}}else r.EventKeyCode.Down===e||r.EventKeyCode.Insert===e||r.EventKeyCode.Space===e||r.EventKeyCode.Home===e||r.EventKeyCode.PageUp===e?c=u[0]:(r.EventKeyCode.Up===e||r.EventKeyCode.End===e||r.EventKeyCode.PageDown===e)&&(c=u[u.length-1]);c?(this.focusedItem(c),p&&(t?(r.EventKeyCode.Up===e||r.EventKeyCode.Down===e)&&p.checked(!p.checked()):(r.EventKeyCode.Insert===e||r.EventKeyCode.Space===e)&&p.checked(!p.checked())),!this.bAutoSelect&&!i||this.isListChecked()||r.EventKeyCode.Space===e||this.selectedItem(c),this.scrollToFocused()):p&&(!t||r.EventKeyCode.Up!==e&&r.EventKeyCode.Down!==e?(r.EventKeyCode.Insert===e||r.EventKeyCode.Space===e)&&p.checked(!p.checked()):p.checked(!p.checked()),this.focusedItem(p))},i.prototype.scrollToFocused=function(){if(!this.oContentVisible||!this.oContentScrollable)return!1;var e=20,t=s(this.sItemFocusedSelector,this.oContentScrollable),i=t.position(),o=this.oContentVisible.height(),n=t.outerHeight();return i&&(i.top<0||i.top+n>o)?(this.oContentScrollable.scrollTop(i.top<0?this.oContentScrollable.scrollTop()+i.top-e:this.oContentScrollable.scrollTop()+i.top-o+n+e),!0):!1},i.prototype.scrollToTop=function(e){return this.oContentVisible&&this.oContentScrollable?(e?this.oContentScrollable.scrollTop(0):this.oContentScrollable.stop().animate({scrollTop:0},200),!0):!1},i.prototype.eventClickFunction=function(e,t){var i=this.getItemUid(e),s=0,o=0,n=null,a="",r=!1,l=!1,c=[],u=!1;if(t&&t.shiftKey&&""!==i&&""!==this.sLastUid&&i!==this.sLastUid)for(c=this.list(),u=e.checked(),s=0,o=c.length;o>s;s++)n=c[s],a=this.getItemUid(n),r=!1,(a===this.sLastUid||a===i)&&(r=!0),r&&(l=!l),(l||r)&&n.checked(u);this.sLastUid=""===i?"":i},i.prototype.actionClick=function(e,t){if(e){var i=!0,s=this.getItemUid(e);t&&(!t.shiftKey||t.ctrlKey||t.altKey?!t.ctrlKey||t.shiftKey||t.altKey||(i=!1,this.focusedItem(e),this.selectedItem()&&e!==this.selectedItem()&&this.selectedItem().checked(!0),e.checked(!e.checked())):(i=!1,""===this.sLastUid&&(this.sLastUid=s),e.checked(!e.checked()),this.eventClickFunction(e,t),this.focusedItem(e))),i&&(this.focusedItem(e),this.selectedItem(e),this.scrollToFocused())}},i.prototype.on=function(e,t){this.oCallbacks[e]=t},e.exports=i}(t,e)},{$:26,Enums:7,Utils:14,_:31,key:27,ko:28}],14:[function(e,t){!function(e,t){"use strict";var i={},s=t("$"),o=t("_"),n=t("ko"),a=t("window"),r=t("$win"),l=t("$html"),c=t("$div"),u=t("$doc"),d=t("NotificationClass"),p=t("Enums"),h=t("Consts"),g=t("Globals");i.trim=s.trim,i.inArray=s.inArray,i.isArray=o.isArray,i.isFunc=o.isFunction,i.isUnd=o.isUndefined,i.isNull=o.isNull,i.emptyFunction=function(){},i.isNormal=function(e){return!i.isUnd(e)&&!i.isNull(e)},i.windowResize=o.debounce(function(e){i.isUnd(e)?r.resize():a.setTimeout(function(){r.resize()},e)},50),i.isPosNumeric=function(e,t){return i.isNormal(e)?(i.isUnd(t)?0:!t)?/^[1-9]+[0-9]*$/.test(e.toString()):/^[0-9]*$/.test(e.toString()):!1},i.pInt=function(e,t){var s=i.isNormal(e)&&""!==e?a.parseInt(e,10):t||0;return a.isNaN(s)?t||0:s},i.pString=function(e){return i.isNormal(e)?""+e:""},i.isNonEmptyArray=function(e){return i.isArray(e)&&0o;o++)s=i[o].split("="),t[a.decodeURIComponent(s[0])]=a.decodeURIComponent(s[1]);return t},i.rsaEncode=function(e,t,s,o){if(a.crypto&&a.crypto.getRandomValues&&a.RSAKey&&t&&s&&o){var n=new a.RSAKey;if(n.setPublic(o,s),e=n.encrypt(i.fakeMd5()+":"+e+":"+i.fakeMd5()),!1!==e)return"rsa:"+t+":"+e}return!1},i.rsaEncode.supported=!!(a.crypto&&a.crypto.getRandomValues&&a.RSAKey),i.exportPath=function(e,t,s){for(var o=null,n=e.split("."),r=s||a;n.length&&(o=n.shift());)n.length||i.isUnd(t)?r=r[o]?r[o]:r[o]={}:r[o]=t},i.pImport=function(e,t,i){e[t]=i},i.pExport=function(e,t,s){return i.isUnd(e[t])?s:e[t]},i.encodeHtml=function(e){return i.isNormal(e)?e.toString().replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'"):""},i.splitPlainText=function(e,t){var s="",o="",n=e,a=0,r=0;for(t=i.isUnd(t)?100:t;n.length>t;)o=n.substring(0,t),a=o.lastIndexOf(" "),r=o.lastIndexOf("\n"),-1!==r&&(a=r),-1===a&&(a=t),s+=o.substring(0,a)+"\n",n=n.substring(a+1);return s+n},i.timeOutAction=function(){var e={};return function(t,s,o){i.isUnd(e[t])&&(e[t]=0),a.clearTimeout(e[t]),e[t]=a.setTimeout(s,o)}}(),i.timeOutActionSecond=function(){var e={};return function(t,i,s){e[t]||(e[t]=a.setTimeout(function(){i(),e[t]=0},s))}}(),i.audio=function(){var e=!1;return function(t,i){if(!1===e)if(g.bIsiOSDevice)e=null;else{var s=!1,o=!1,n=a.Audio?new a.Audio:null;n&&n.canPlayType&&n.play?(s=""!==n.canPlayType('audio/mpeg; codecs="mp3"'),s||(o=""!==n.canPlayType('audio/ogg; codecs="vorbis"')),s||o?(e=n,e.preload="none",e.loop=!1,e.autoplay=!1,e.muted=!1,e.src=s?t:i):e=null):e=null}return e}}(),i.hos=function(e,t){return e&&a.Object&&a.Object.hasOwnProperty?a.Object.hasOwnProperty.call(e,t):!1},i.i18n=function(e,t,s){var o="",n=i.isUnd(g.oI18N[e])?i.isUnd(s)?e:s:g.oI18N[e];if(!i.isUnd(t)&&!i.isNull(t))for(o in t)i.hos(t,o)&&(n=n.replace("%"+o+"%",t[o]));return n},i.i18nToNode=function(e){o.defer(function(){s(".i18n",e).each(function(){var e=s(this),t="";t=e.data("i18n-text"),t?e.text(i.i18n(t)):(t=e.data("i18n-html"),t&&e.html(i.i18n(t)),t=e.data("i18n-placeholder"),t&&e.attr("placeholder",i.i18n(t)),t=e.data("i18n-title"),t&&e.attr("title",i.i18n(t)))})})},i.i18nReload=function(){a.rainloopI18N&&(g.oI18N=a.rainloopI18N||{},i.i18nToNode(u),g.langChangeTrigger(!g.langChangeTrigger())),a.rainloopI18N=null},i.initOnStartOrLangChange=function(e,t,i){e&&e.call(t),i?g.langChangeTrigger.subscribe(function(){e&&e.call(t),i.call(t)}):e&&g.langChangeTrigger.subscribe(e,t)},i.inFocus=function(){return a.document.activeElement?(i.isUnd(a.document.activeElement.__inFocusCache)&&(a.document.activeElement.__inFocusCache=s(a.document.activeElement).is("input,textarea,iframe,.cke_editable")),!!a.document.activeElement.__inFocusCache):!1},i.removeInFocus=function(){if(a.document&&a.document.activeElement&&a.document.activeElement.blur){var e=s(a.document.activeElement);e.is("input,textarea")&&a.document.activeElement.blur()}},i.removeSelection=function(){if(a&&a.getSelection){var e=a.getSelection();e&&e.removeAllRanges&&e.removeAllRanges()}else a.document&&a.document.selection&&a.document.selection.empty&&a.document.selection.empty()},i.replySubjectAdd=function(e,t){e=i.trim(e.toUpperCase()),t=i.trim(t.replace(/[\s]+/," "));var s=0,o="",n=!1,a="",r=[],l=[],c="RE"===e,u="FWD"===e,d=!u;if(""!==t){for(n=!1,l=t.split(":"),s=0;s0);return e.replace(/[\s]+/," ")},i._replySubjectAdd_=function(e,t,s){var o=null,n=i.trim(t);return n=null===(o=new a.RegExp("^"+e+"[\\s]?\\:(.*)$","gi").exec(t))||i.isUnd(o[1])?null===(o=new a.RegExp("^("+e+"[\\s]?[\\[\\(]?)([\\d]+)([\\]\\)]?[\\s]?\\:.*)$","gi").exec(t))||i.isUnd(o[1])||i.isUnd(o[2])||i.isUnd(o[3])?e+": "+t:o[1]+(i.pInt(o[2])+1)+o[3]:e+"[2]: "+o[1],n=n.replace(/[\s]+/g," "),n=(i.isUnd(s)?!0:s)?i.fixLongSubject(n):n},i._fixLongSubject_=function(e){var t=0,s=null;e=i.trim(e.replace(/[\s]+/," "));do s=/^Re(\[([\d]+)\]|):[\s]{0,3}Re(\[([\d]+)\]|):/gi.exec(e),(!s||i.isUnd(s[0]))&&(s=null),s&&(t=0,t+=i.isUnd(s[2])?1:0+i.pInt(s[2]),t+=i.isUnd(s[4])?1:0+i.pInt(s[4]),e=e.replace(/^Re(\[[\d]+\]|):[\s]{0,3}Re(\[[\d]+\]|):/gi,"Re"+(t>0?"["+t+"]":"")+":"));while(s);return e=e.replace(/[\s]+/," ")},i.roundNumber=function(e,t){return a.Math.round(e*a.Math.pow(10,t))/a.Math.pow(10,t)},i.friendlySize=function(e){return e=i.pInt(e),e>=1073741824?i.roundNumber(e/1073741824,1)+"GB":e>=1048576?i.roundNumber(e/1048576,1)+"MB":e>=1024?i.roundNumber(e/1024,0)+"KB":e+"B"},i.log=function(e){a.console&&a.console.log&&a.console.log(e)},i.getNotification=function(e,t){return e=i.pInt(e),p.Notification.ClientViewError===e&&t?t:i.isUnd(g.oNotificationI18N[e])?"":g.oNotificationI18N[e]},i.initNotificationLanguage=function(){var e=g.oNotificationI18N||{};e[p.Notification.InvalidToken]=i.i18n("NOTIFICATIONS/INVALID_TOKEN"),e[p.Notification.AuthError]=i.i18n("NOTIFICATIONS/AUTH_ERROR"),e[p.Notification.AccessError]=i.i18n("NOTIFICATIONS/ACCESS_ERROR"),e[p.Notification.ConnectionError]=i.i18n("NOTIFICATIONS/CONNECTION_ERROR"),e[p.Notification.CaptchaError]=i.i18n("NOTIFICATIONS/CAPTCHA_ERROR"),e[p.Notification.SocialFacebookLoginAccessDisable]=i.i18n("NOTIFICATIONS/SOCIAL_FACEBOOK_LOGIN_ACCESS_DISABLE"),e[p.Notification.SocialTwitterLoginAccessDisable]=i.i18n("NOTIFICATIONS/SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE"),e[p.Notification.SocialGoogleLoginAccessDisable]=i.i18n("NOTIFICATIONS/SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE"),e[p.Notification.DomainNotAllowed]=i.i18n("NOTIFICATIONS/DOMAIN_NOT_ALLOWED"),e[p.Notification.AccountNotAllowed]=i.i18n("NOTIFICATIONS/ACCOUNT_NOT_ALLOWED"),e[p.Notification.AccountTwoFactorAuthRequired]=i.i18n("NOTIFICATIONS/ACCOUNT_TWO_FACTOR_AUTH_REQUIRED"),e[p.Notification.AccountTwoFactorAuthError]=i.i18n("NOTIFICATIONS/ACCOUNT_TWO_FACTOR_AUTH_ERROR"),e[p.Notification.CouldNotSaveNewPassword]=i.i18n("NOTIFICATIONS/COULD_NOT_SAVE_NEW_PASSWORD"),e[p.Notification.CurrentPasswordIncorrect]=i.i18n("NOTIFICATIONS/CURRENT_PASSWORD_INCORRECT"),e[p.Notification.NewPasswordShort]=i.i18n("NOTIFICATIONS/NEW_PASSWORD_SHORT"),e[p.Notification.NewPasswordWeak]=i.i18n("NOTIFICATIONS/NEW_PASSWORD_WEAK"),e[p.Notification.NewPasswordForbidden]=i.i18n("NOTIFICATIONS/NEW_PASSWORD_FORBIDDENT"),e[p.Notification.ContactsSyncError]=i.i18n("NOTIFICATIONS/CONTACTS_SYNC_ERROR"),e[p.Notification.CantGetMessageList]=i.i18n("NOTIFICATIONS/CANT_GET_MESSAGE_LIST"),e[p.Notification.CantGetMessage]=i.i18n("NOTIFICATIONS/CANT_GET_MESSAGE"),e[p.Notification.CantDeleteMessage]=i.i18n("NOTIFICATIONS/CANT_DELETE_MESSAGE"),e[p.Notification.CantMoveMessage]=i.i18n("NOTIFICATIONS/CANT_MOVE_MESSAGE"),e[p.Notification.CantCopyMessage]=i.i18n("NOTIFICATIONS/CANT_MOVE_MESSAGE"),e[p.Notification.CantSaveMessage]=i.i18n("NOTIFICATIONS/CANT_SAVE_MESSAGE"),e[p.Notification.CantSendMessage]=i.i18n("NOTIFICATIONS/CANT_SEND_MESSAGE"),e[p.Notification.InvalidRecipients]=i.i18n("NOTIFICATIONS/INVALID_RECIPIENTS"),e[p.Notification.CantCreateFolder]=i.i18n("NOTIFICATIONS/CANT_CREATE_FOLDER"),e[p.Notification.CantRenameFolder]=i.i18n("NOTIFICATIONS/CANT_RENAME_FOLDER"),e[p.Notification.CantDeleteFolder]=i.i18n("NOTIFICATIONS/CANT_DELETE_FOLDER"),e[p.Notification.CantDeleteNonEmptyFolder]=i.i18n("NOTIFICATIONS/CANT_DELETE_NON_EMPTY_FOLDER"),e[p.Notification.CantSubscribeFolder]=i.i18n("NOTIFICATIONS/CANT_SUBSCRIBE_FOLDER"),e[p.Notification.CantUnsubscribeFolder]=i.i18n("NOTIFICATIONS/CANT_UNSUBSCRIBE_FOLDER"),e[p.Notification.CantSaveSettings]=i.i18n("NOTIFICATIONS/CANT_SAVE_SETTINGS"),e[p.Notification.CantSavePluginSettings]=i.i18n("NOTIFICATIONS/CANT_SAVE_PLUGIN_SETTINGS"),e[p.Notification.DomainAlreadyExists]=i.i18n("NOTIFICATIONS/DOMAIN_ALREADY_EXISTS"),e[p.Notification.CantInstallPackage]=i.i18n("NOTIFICATIONS/CANT_INSTALL_PACKAGE"),e[p.Notification.CantDeletePackage]=i.i18n("NOTIFICATIONS/CANT_DELETE_PACKAGE"),e[p.Notification.InvalidPluginPackage]=i.i18n("NOTIFICATIONS/INVALID_PLUGIN_PACKAGE"),e[p.Notification.UnsupportedPluginPackage]=i.i18n("NOTIFICATIONS/UNSUPPORTED_PLUGIN_PACKAGE"),e[p.Notification.LicensingServerIsUnavailable]=i.i18n("NOTIFICATIONS/LICENSING_SERVER_IS_UNAVAILABLE"),e[p.Notification.LicensingExpired]=i.i18n("NOTIFICATIONS/LICENSING_EXPIRED"),e[p.Notification.LicensingBanned]=i.i18n("NOTIFICATIONS/LICENSING_BANNED"),e[p.Notification.DemoSendMessageError]=i.i18n("NOTIFICATIONS/DEMO_SEND_MESSAGE_ERROR"),e[p.Notification.AccountAlreadyExists]=i.i18n("NOTIFICATIONS/ACCOUNT_ALREADY_EXISTS"),e[p.Notification.MailServerError]=i.i18n("NOTIFICATIONS/MAIL_SERVER_ERROR"),e[p.Notification.InvalidInputArgument]=i.i18n("NOTIFICATIONS/INVALID_INPUT_ARGUMENT"),e[p.Notification.UnknownNotification]=i.i18n("NOTIFICATIONS/UNKNOWN_ERROR"),e[p.Notification.UnknownError]=i.i18n("NOTIFICATIONS/UNKNOWN_ERROR")},i.getUploadErrorDescByCode=function(e){var t="";switch(i.pInt(e)){case p.UploadErrorCode.FileIsTooBig:t=i.i18n("UPLOAD/ERROR_FILE_IS_TOO_BIG");break;case p.UploadErrorCode.FilePartiallyUploaded:t=i.i18n("UPLOAD/ERROR_FILE_PARTIALLY_UPLOADED");break;case p.UploadErrorCode.FileNoUploaded:t=i.i18n("UPLOAD/ERROR_NO_FILE_UPLOADED");break;case p.UploadErrorCode.MissingTempFolder:t=i.i18n("UPLOAD/ERROR_MISSING_TEMP_FOLDER");break;case p.UploadErrorCode.FileOnSaveingError:t=i.i18n("UPLOAD/ERROR_ON_SAVING_FILE");break;case p.UploadErrorCode.FileType:t=i.i18n("UPLOAD/ERROR_FILE_TYPE");break;default:t=i.i18n("UPLOAD/ERROR_UNKNOWN")}return t},i.delegateRun=function(e,t,s,n){e&&e[t]&&(n=i.pInt(n),0>=n?e[t].apply(e,i.isArray(s)?s:[]):o.delay(function(){e[t].apply(e,i.isArray(s)?s:[])},n))},i.killCtrlAandS=function(e){if(e=e||a.event,e&&e.ctrlKey&&!e.shiftKey&&!e.altKey){var t=e.target||e.srcElement,i=e.keyCode||e.which;if(i===p.EventKeyCode.S)return void e.preventDefault();if(t&&t.tagName&&t.tagName.match(/INPUT|TEXTAREA/i))return;i===p.EventKeyCode.A&&(a.getSelection?a.getSelection().removeAllRanges():a.document.selection&&a.document.selection.clear&&a.document.selection.clear(),e.preventDefault())}},i.createCommand=function(e,t,s){var o=t?function(){return o&&o.canExecute&&o.canExecute()&&t.apply(e,Array.prototype.slice.call(arguments)),!1}:function(){};return o.enabled=n.observable(!0),s=i.isUnd(s)?!0:s,o.canExecute=n.computed(i.isFunc(s)?function(){return o.enabled()&&s.call(e)}:function(){return o.enabled()&&!!s}),o},i.initDataConstructorBySettings=function(e){e.editorDefaultType=n.observable(p.EditorDefaultType.Html),e.showImages=n.observable(!1),e.interfaceAnimation=n.observable(p.InterfaceAnimation.Full),e.contactsAutosave=n.observable(!1),g.sAnimationType=p.InterfaceAnimation.Full,e.capaThemes=n.observable(!1),e.allowLanguagesOnSettings=n.observable(!0),e.allowLanguagesOnLogin=n.observable(!0),e.useLocalProxyForExternalImages=n.observable(!1),e.desktopNotifications=n.observable(!1),e.useThreads=n.observable(!0),e.replySameFolder=n.observable(!0),e.useCheckboxesInList=n.observable(!0),e.layout=n.observable(p.Layout.SidePreview),e.usePreviewPane=n.computed(function(){return p.Layout.NoPreview!==e.layout()}),e.interfaceAnimation.subscribe(function(e){if(g.bMobileDevice||e===p.InterfaceAnimation.None)l.removeClass("rl-anim rl-anim-full").addClass("no-rl-anim"),g.sAnimationType=p.InterfaceAnimation.None;else switch(e){case p.InterfaceAnimation.Full:l.removeClass("no-rl-anim").addClass("rl-anim rl-anim-full"),g.sAnimationType=e;break;case p.InterfaceAnimation.Normal:l.removeClass("no-rl-anim rl-anim-full").addClass("rl-anim"),g.sAnimationType=e}}),e.interfaceAnimation.valueHasMutated(),e.desktopNotificationsPermisions=n.computed(function(){e.desktopNotifications();var t=p.DesktopNotifications.NotSupported;if(d&&d.permission)switch(d.permission.toLowerCase()){case"granted":t=p.DesktopNotifications.Allowed;break;case"denied":t=p.DesktopNotifications.Denied;break;case"default":t=p.DesktopNotifications.NotAllowed}else a.webkitNotifications&&a.webkitNotifications.checkPermission&&(t=a.webkitNotifications.checkPermission());return t}),e.useDesktopNotifications=n.computed({read:function(){return e.desktopNotifications()&&p.DesktopNotifications.Allowed===e.desktopNotificationsPermisions()
+},write:function(t){if(t){var i=e.desktopNotificationsPermisions();p.DesktopNotifications.Allowed===i?e.desktopNotifications(!0):p.DesktopNotifications.NotAllowed===i?d.requestPermission(function(){e.desktopNotifications.valueHasMutated(),p.DesktopNotifications.Allowed===e.desktopNotificationsPermisions()?e.desktopNotifications()?e.desktopNotifications.valueHasMutated():e.desktopNotifications(!0):e.desktopNotifications()?e.desktopNotifications(!1):e.desktopNotifications.valueHasMutated()}):e.desktopNotifications(!1)}else e.desktopNotifications(!1)}}),e.language=n.observable(""),e.languages=n.observableArray([]),e.mainLanguage=n.computed({read:e.language,write:function(t){t!==e.language()?-1=t.diff(s,"hours")?o:t.format("L")===s.format("L")?i.i18n("MESSAGE_LIST/TODAY_AT",{TIME:s.format("LT")}):t.clone().subtract("days",1).format("L")===s.format("L")?i.i18n("MESSAGE_LIST/YESTERDAY_AT",{TIME:s.format("LT")}):s.format(t.year()===s.year()?"D MMM.":"LL")},e)},i.initBlockquoteSwitcher=function(e){if(e){var t=s("blockquote:not(.rl-bq-switcher)",e).filter(function(){return 0===s(this).parent().closest("blockquote",e).length});t&&0100)&&(e.addClass("rl-bq-switcher hidden-bq"),s('').insertBefore(e).click(function(){e.toggleClass("hidden-bq"),i.windowResize()}).after("
").before("
"))})}},i.removeBlockquoteSwitcher=function(e){e&&(s(e).find("blockquote.rl-bq-switcher").each(function(){s(this).removeClass("rl-bq-switcher hidden-bq")}),s(e).find(".rlBlockquoteSwitcher").each(function(){s(this).remove()}))},i.toggleMessageBlockquote=function(e){e&&e.find(".rlBlockquoteSwitcher").click()},i.convertThemeName=function(e){return"@custom"===e.substr(-7)&&(e=i.trim(e.substring(0,e.length-7))),i.trim(e.replace(/[^a-zA-Z]+/g," ").replace(/([A-Z])/g," $1").replace(/[\s]+/g," "))},i.quoteName=function(e){return e.replace(/["]/g,'\\"')},i.microtime=function(){return(new Date).getTime()},i.convertLangName=function(e,t){return i.i18n("LANGS_NAMES"+(!0===t?"_EN":"")+"/LANG_"+e.toUpperCase().replace(/[^a-zA-Z0-9]+/,"_"),null,e)},i.fakeMd5=function(e){var t="",s="0123456789abcdefghijklmnopqrstuvwxyz";for(e=i.isUnd(e)?32:i.pInt(e);t.length>>32-t}function i(e,t){var i,s,o,n,a;return o=2147483648&e,n=2147483648&t,i=1073741824&e,s=1073741824&t,a=(1073741823&e)+(1073741823&t),i&s?2147483648^a^o^n:i|s?1073741824&a?3221225472^a^o^n:1073741824^a^o^n:a^o^n}function s(e,t,i){return e&t|~e&i}function o(e,t,i){return e&i|t&~i}function n(e,t,i){return e^t^i}function a(e,t,i){return t^(e|~i)}function r(e,o,n,a,r,l,c){return e=i(e,i(i(s(o,n,a),r),c)),i(t(e,l),o)}function l(e,s,n,a,r,l,c){return e=i(e,i(i(o(s,n,a),r),c)),i(t(e,l),s)}function c(e,s,o,a,r,l,c){return e=i(e,i(i(n(s,o,a),r),c)),i(t(e,l),s)}function u(e,s,o,n,r,l,c){return e=i(e,i(i(a(s,o,n),r),c)),i(t(e,l),s)}function d(e){for(var t,i=e.length,s=i+8,o=(s-s%64)/64,n=16*(o+1),a=Array(n-1),r=0,l=0;i>l;)t=(l-l%4)/4,r=l%4*8,a[t]=a[t]|e.charCodeAt(l)<>>29,a}function p(e){var t,i,s="",o="";for(i=0;3>=i;i++)t=e>>>8*i&255,o="0"+t.toString(16),s+=o.substr(o.length-2,2);return s}function h(e){e=e.replace(/rn/g,"n");for(var t="",i=0;is?t+=String.fromCharCode(s):s>127&&2048>s?(t+=String.fromCharCode(s>>6|192),t+=String.fromCharCode(63&s|128)):(t+=String.fromCharCode(s>>12|224),t+=String.fromCharCode(s>>6&63|128),t+=String.fromCharCode(63&s|128))}return t}var g,m,f,b,S,y,v,w,C,A=Array(),T=7,F=12,R=17,L=22,E=5,N=9,P=14,I=20,M=4,k=11,D=16,_=23,U=6,O=10,x=15,V=21;for(e=h(e),A=d(e),y=1732584193,v=4023233417,w=2562383102,C=271733878,g=0;g/g,">").replace(/")},i.draggeblePlace=function(){return s('
').appendTo("#rl-hidden")},i.defautOptionsAfterRender=function(e,t){t&&!i.isUnd(t.disabled)&&e&&s(e).toggleClass("disabled",t.disabled).prop("disabled",t.disabled)},i.windowPopupKnockout=function(e,t,o,r){var l=null,c=a.open(""),u="__OpenerApplyBindingsUid"+i.fakeMd5()+"__",d=s("#"+t);a[u]=function(){if(c&&c.document.body&&d&&d[0]){var t=s(c.document.body);s("#rl-content",t).html(d.html()),s("html",c.document).addClass("external "+s("html").attr("class")),i.i18nToNode(t),e&&s("#rl-content",t)[0]&&n.applyBindings(e,s("#rl-content",t)[0]),a[u]=null,r(c)}},c.document.open(),c.document.write(''+i.encodeHtml(o)+''),c.document.close(),l=c.document.createElement("script"),l.type="text/javascript",l.innerHTML="if(window&&window.opener&&window.opener['"+u+"']){window.opener['"+u+"']();window.opener['"+u+"']=null}",c.document.getElementsByTagName("head")[0].appendChild(l)},i.settingsSaveHelperFunction=function(e,t,s,n){return s=s||null,n=i.isUnd(n)?1e3:i.pInt(n),function(i,a,r,l,c){t.call(s,a&&a.Result?p.SaveSettingsStep.TrueResult:p.SaveSettingsStep.FalseResult),e&&e.call(s,i,a,r,l,c),o.delay(function(){t.call(s,p.SaveSettingsStep.Idle)},n)}},i.settingsSaveHelperSimpleFunction=function(e,t){return i.settingsSaveHelperFunction(null,e,t,1e3)},i.htmlToPlain=function(e){var t=0,i=0,o=0,n=0,a=0,r="",l=function(e){for(var t=100,i="",s="",o=e,n=0,a=0;o.length>t;)s=o.substring(0,t),n=s.lastIndexOf(" "),a=s.lastIndexOf("\n"),-1!==a&&(n=a),-1===n&&(n=t),i+=s.substring(0,n)+"\n",o=o.substring(n+1);return i+o},u=function(e){return e=l(s.trim(e)),e="> "+e.replace(/\n/gm,"\n> "),e.replace(/(^|\n)([> ]+)/gm,function(){return arguments&&2]*>([\s\S\r\n]*)<\/div>/gim,d),e="\n"+s.trim(e)+"\n"),e}return""},p=function(){return arguments&&1"):""},h=function(){return arguments&&1/g,">"):""},g=function(){return arguments&&1]*>([\s\S\r\n]*)<\/pre>/gim,p).replace(/[\s]+/gm," ").replace(/((?:href|data)\s?=\s?)("[^"]+?"|'[^']+?')/gim,h).replace(/
]*>/gim,"\n").replace(/<\/h[\d]>/gi,"\n").replace(/<\/p>/gi,"\n\n").replace(/<\/li>/gi,"\n").replace(/<\/td>/gi,"\n").replace(/<\/tr>/gi,"\n").replace(/
]*>/gim,"\n_______________________________\n\n").replace(/]*>([\s\S\r\n]*)<\/div>/gim,d).replace(/
]*>/gim,"\n__bq__start__\n").replace(/<\/blockquote>/gim,"\n__bq__end__\n").replace(/]*>([\s\S\r\n]*?)<\/a>/gim,g).replace(/<\/div>/gi,"\n").replace(/ /gi," ").replace(/"/gi,'"').replace(/<[^>]*>/gm,""),r=c.html(r).text(),r=r.replace(/\n[ \t]+/gm,"\n").replace(/[\n]{3,}/gm,"\n\n").replace(/>/gi,">").replace(/</gi,"<").replace(/&/gi,"&"),t=0,a=100;a>0&&(a--,i=r.indexOf("__bq__start__",t),i>-1);)o=r.indexOf("__bq__start__",i+5),n=r.indexOf("__bq__end__",i+5),(-1===o||o>n)&&n>i?(r=r.substring(0,i)+u(r.substring(i+13,n))+r.substring(n+11),t=0):t=o>-1&&n>o?o-1:0;return r=r.replace(/__bq__start__/gm,"").replace(/__bq__end__/gm,"")},i.plainToHtml=function(e,t){e=e.toString().replace(/\r/g,"");var s=!1,o=!0,n=!0,a=[],r="",l=0,c=e.split("\n");do{for(o=!1,a=[],l=0;l"===r.substr(0,1),n&&!s?(o=!0,s=!0,a.push("~~~blockquote~~~"),a.push(r.substr(1))):!n&&s?(s=!1,a.push("~~~/blockquote~~~"),a.push(r)):a.push(n&&s?r.substr(1):r);s&&(s=!1,a.push("~~~/blockquote~~~")),c=a}while(o);return e=c.join("\n"),e=e.replace(/&/g,"&").replace(/>/g,">").replace(/").replace(/[\s]*~~~\/blockquote~~~/g,"
").replace(/[\-_~]{10,}/g,"
").replace(/\n/g,"
"),t?i.linkify(e):e},a.rainloop_Utils_htmlToPlain=i.htmlToPlain,a.rainloop_Utils_plainToHtml=i.plainToHtml,i.linkify=function(e){return s.fn&&s.fn.linkify&&(e=c.html(e.replace(/&/gi,"amp_amp_12345_amp_amp")).linkify().find(".linkified").removeClass("linkified").end().html().replace(/amp_amp_12345_amp_amp/g,"&")),e},i.resizeAndCrop=function(e,t,i){var s=new a.Image;s.onload=function(){var e=[0,0],s=a.document.createElement("canvas"),o=s.getContext("2d");s.width=t,s.height=t,e=this.width>this.height?[this.width-this.height,0]:[0,this.height-this.width],o.fillStyle="#fff",o.fillRect(0,0,t,t),o.drawImage(this,e[0]/2,e[1]/2,this.width-e[0],this.height-e[1],0,0,t,t),i(s.toDataURL("image/jpeg"))},s.src=e},i.folderListOptionsBuilder=function(e,t,s,o,n,r,l,c,u,d){var h=null,g=!1,m=0,f=0,b=" ",S=[];for(u=i.isNormal(u)?u:0
m;m++)S.push({id:o[m][0],name:o[m][1],system:!1,seporator:!1,disabled:!1});for(g=!0,m=0,f=e.length;f>m;m++)h=e[m],(l?l.call(null,h):!0)&&(g&&0m;m++)h=t[m],(h.subScribed()||!h.existen)&&(l?l.call(null,h):!0)&&(p.FolderType.User===h.type()||!u||01||c>0&&l>c){for(l>c?(u(c),s=c,o=c):((3>=l||l>=c-2)&&(n+=2),u(l),s=l,o=l);n>0;)if(s-=1,o+=1,s>0&&(u(s,!1),n--),c>=o)u(o,!0),n--;else if(0>=s)break;3===s?u(2,!1):s>3&&u(a.Math.round((s-1)/2),!1,"..."),c-2===o?u(c-1,!0):c-2>o&&u(a.Math.round((c+o)/2),!0,"..."),s>1&&u(1,!1),c>o&&u(c,!0)}return r}},i.selectElement=function(e){if(a.getSelection){var t=a.getSelection();t.removeAllRanges();var i=a.document.createRange();i.selectNodeContents(e),t.addRange(i)}else if(a.document.selection){var s=a.document.body.createTextRange();s.moveToElementText(e),s.select()}},i.detectDropdownVisibility=o.debounce(function(){g.dropdownVisibility(!!o.find(g.aBootstrapDropdowns,function(e){return e.hasClass("open")}))},50),i.triggerAutocompleteInputChange=function(e){var t=function(){s(".checkAutocomplete").trigger("change")};e?o.delay(t,100):t()},e.exports=i}(t,e)},{$:26,$div:15,$doc:16,$html:17,$win:18,Consts:6,Enums:7,Globals:9,NotificationClass:22,_:31,ko:28,window:32}],15:[function(e,t){t.exports=e("$")("")},{$:26}],16:[function(e,t){t.exports=e("$")(window.document)},{$:26}],17:[function(e,t){t.exports=e("$")("html")},{$:26}],18:[function(e,t){t.exports=e("$")(window)},{$:26}],19:[function(e,t){t.exports=e("window").rainloopAppData||{}},{window:32}],20:[function(e,t){t.exports=JSON},{}],21:[function(e,t){t.exports=Jua},{}],22:[function(e,t){var i=e("window");t.exports=i.Notification&&i.Notification.requestPermission?i.Notification:null},{window:32}],23:[function(e,t){t.exports=crossroads},{}],24:[function(e,t){t.exports=hasher},{}],25:[function(e,t){t.exports=ifvisible},{}],26:[function(e,t){t.exports=$},{}],27:[function(e,t){t.exports=key},{}],28:[function(e,t){!function(t,i){"use strict";var s=e("window"),o=e("_"),n=e("$"),a=e("$win"),r=e("$doc");i.bindingHandlers.tooltip={init:function(t,s){var o=e("Globals"),a=e("Utils");if(!o.bMobileDevice){var r=n(t),l=r.data("tooltip-class")||"",c=r.data("tooltip-placement")||"top";r.tooltip({delay:{show:500,hide:100},html:!0,container:"body",placement:c,trigger:"hover",title:function(){return r.is(".disabled")||o.dropdownVisibility()?"":''+a.i18n(i.utils.unwrapObservable(s()))+""}}).click(function(){r.tooltip("hide")}),o.tooltipTrigger.subscribe(function(){r.tooltip("hide")})}}},i.bindingHandlers.tooltip2={init:function(t,i){var s=e("Globals"),o=n(t),a=o.data("tooltip-class")||"",r=o.data("tooltip-placement")||"top";o.tooltip({delay:{show:500,hide:100},html:!0,container:"body",placement:r,title:function(){return o.is(".disabled")||s.dropdownVisibility()?"":''+i()()+""}}).click(function(){o.tooltip("hide")}),s.tooltipTrigger.subscribe(function(){o.tooltip("hide")})}},i.bindingHandlers.tooltip3={init:function(t){var i=n(t),s=e("Globals");i.tooltip({container:"body",trigger:"hover manual",title:function(){return i.data("tooltip3-data")||""}}),r.click(function(){i.tooltip("hide")}),s.tooltipTrigger.subscribe(function(){i.tooltip("hide")})},update:function(e,t){var s=i.utils.unwrapObservable(t());""===s?n(e).data("tooltip3-data","").tooltip("hide"):n(e).data("tooltip3-data",s).tooltip("show")}},i.bindingHandlers.registrateBootstrapDropdown={init:function(t){var i=e("Globals");i.aBootstrapDropdowns.push(n(t))}},i.bindingHandlers.openDropdownTrigger={update:function(t,s){if(i.utils.unwrapObservable(s())){var o=n(t),a=e("Utils");o.hasClass("open")||(o.find(".dropdown-toggle").dropdown("toggle"),a.detectDropdownVisibility()),s()(!1)}}},i.bindingHandlers.dropdownCloser={init:function(e){n(e).closest(".dropdown").on("click",".e-item",function(){n(e).dropdown("toggle")})}},i.bindingHandlers.popover={init:function(e,t){n(e).popover(i.utils.unwrapObservable(t()))}},i.bindingHandlers.csstext={init:function(t,s){var o=e("Utils");t&&t.styleSheet&&!o.isUnd(t.styleSheet.cssText)?t.styleSheet.cssText=i.utils.unwrapObservable(s()):n(t).text(i.utils.unwrapObservable(s()))},update:function(t,s){var o=e("Utils");t&&t.styleSheet&&!o.isUnd(t.styleSheet.cssText)?t.styleSheet.cssText=i.utils.unwrapObservable(s()):n(t).text(i.utils.unwrapObservable(s()))}},i.bindingHandlers.resizecrop={init:function(e){n(e).addClass("resizecrop").resizecrop({width:"100",height:"100",wrapperCSS:{"border-radius":"10px"}})},update:function(e,t){t()(),n(e).resizecrop({width:"100",height:"100"})}},i.bindingHandlers.onEnter={init:function(e,t,i,o){n(e).on("keypress",function(i){i&&13===s.parseInt(i.keyCode,10)&&(n(e).trigger("change"),t().call(o))})}},i.bindingHandlers.onEsc={init:function(e,t,i,o){n(e).on("keypress",function(i){i&&27===s.parseInt(i.keyCode,10)&&(n(e).trigger("change"),t().call(o))})}},i.bindingHandlers.clickOnTrue={update:function(e,t){i.utils.unwrapObservable(t())&&n(e).click()}},i.bindingHandlers.modal={init:function(t,s){var o=e("Globals"),a=e("Utils");n(t).toggleClass("fade",!o.bMobileDevice).modal({keyboard:!1,show:i.utils.unwrapObservable(s())}).on("shown",function(){a.windowResize()}).find(".close").click(function(){s()(!1)})},update:function(e,t){n(e).modal(i.utils.unwrapObservable(t())?"show":"hide")}},i.bindingHandlers.i18nInit={init:function(t){var i=e("Utils");i.i18nToNode(t)}},i.bindingHandlers.i18nUpdate={update:function(t,s){var o=e("Utils");i.utils.unwrapObservable(s()),o.i18nToNode(t)}},i.bindingHandlers.link={update:function(e,t){n(e).attr("href",i.utils.unwrapObservable(t()))}},i.bindingHandlers.title={update:function(e,t){n(e).attr("title",i.utils.unwrapObservable(t()))}},i.bindingHandlers.textF={init:function(e,t){n(e).text(i.utils.unwrapObservable(t()))}},i.bindingHandlers.initDom={init:function(e,t){t()(e)}},i.bindingHandlers.initResizeTrigger={init:function(e,t){var s=i.utils.unwrapObservable(t());n(e).css({height:s[1],"min-height":s[1]})},update:function(t,s){var o=e("Utils"),r=i.utils.unwrapObservable(s()),l=o.pInt(r[1]),c=0,u=n(t).offset().top;u>0&&(u+=o.pInt(r[2]),c=a.height()-u,c>l&&(l=c),n(t).css({height:l,"min-height":l}))}},i.bindingHandlers.appendDom={update:function(e,t){n(e).hide().empty().append(i.utils.unwrapObservable(t())).show()}},i.bindingHandlers.draggable={init:function(t,o,a){var r=e("Globals"),l=e("Utils");if(!r.bMobileDevice){var c=100,u=3,d=a(),p=d&&d.droppableSelector?d.droppableSelector:"",h={distance:20,handle:".dragHandle",cursorAt:{top:22,left:3},refreshPositions:!0,scroll:!0};p&&(h.drag=function(e){n(p).each(function(){var t=null,i=null,o=n(this),a=o.offset(),r=a.top+o.height();s.clearInterval(o.data("timerScroll")),o.data("timerScroll",!1),e.pageX>=a.left&&e.pageX<=a.left+o.width()&&(e.pageY>=r-c&&e.pageY<=r&&(t=function(){o.scrollTop(o.scrollTop()+u),l.windowResize()},o.data("timerScroll",s.setInterval(t,10)),t()),e.pageY>=a.top&&e.pageY<=a.top+c&&(i=function(){o.scrollTop(o.scrollTop()-u),l.windowResize()},o.data("timerScroll",s.setInterval(i,10)),i()))})},h.stop=function(){n(p).each(function(){s.clearInterval(n(this).data("timerScroll")),n(this).data("timerScroll",!1)})}),h.helper=function(e){return o()(e&&e.target?i.dataFor(e.target):null)},n(t).draggable(h).on("mousedown",function(){l.removeInFocus()})}}},i.bindingHandlers.droppable={init:function(t,i,s){var o=e("Globals");if(!o.bMobileDevice){var a=i(),r=s(),l=r&&r.droppableOver?r.droppableOver:null,c=r&&r.droppableOut?r.droppableOut:null,u={tolerance:"pointer",hoverClass:"droppableHover"};a&&(u.drop=function(e,t){a(e,t)},l&&(u.over=function(e,t){l(e,t)}),c&&(u.out=function(e,t){c(e,t)}),n(t).droppable(u))}}},i.bindingHandlers.nano={init:function(t){var i=e("Globals");i.bDisableNanoScroll||n(t).addClass("nano").nanoScroller({iOSNativeScrolling:!1,preventPageScrolling:!0})}},i.bindingHandlers.saveTrigger={init:function(e){var t=n(e);t.data("save-trigger-type",t.is("input[type=text],input[type=email],input[type=password],select,textarea")?"input":"custom"),"custom"===t.data("save-trigger-type")?t.append(' ').addClass("settings-saved-trigger"):t.addClass("settings-saved-trigger-input")},update:function(e,t){var s=i.utils.unwrapObservable(t()),o=n(e);if("custom"===o.data("save-trigger-type"))switch(s.toString()){case"1":o.find(".animated,.error").hide().removeClass("visible").end().find(".success").show().addClass("visible");break;case"0":o.find(".animated,.success").hide().removeClass("visible").end().find(".error").show().addClass("visible");break;case"-2":o.find(".error,.success").hide().removeClass("visible").end().find(".animated").show().addClass("visible");break;default:o.find(".animated").hide().end().find(".error,.success").removeClass("visible")}else switch(s.toString()){case"1":o.addClass("success").removeClass("error");break;case"0":o.addClass("error").removeClass("success");break;case"-2":break;default:o.removeClass("error success")}}},i.bindingHandlers.emailsTags={init:function(t,i,s){var a=e("Utils"),r=e("Model:Email"),l=n(t),c=i(),u=s(),d=u.autoCompleteSource||null,p=function(e){c&&c.focusTrigger&&c.focusTrigger(e)};l.inputosaurus({parseOnBlur:!0,allowDragAndDrop:!0,focusCallback:p,inputDelimiters:[",",";"],autoCompleteSource:d,parseHook:function(e){return o.map(e,function(e){var t=a.trim(e),i=null;return""!==t?(i=new r,i.mailsoParse(t),i.clearDuplicateName(),[i.toLine(!1),i]):[t,null]})},change:o.bind(function(e){l.data("EmailsTagsValue",e.target.value),c(e.target.value)},this)})},update:function(e,t,s){var o=n(e),a=s(),r=a.emailsTagsFilter||null,l=i.utils.unwrapObservable(t());o.data("EmailsTagsValue")!==l&&(o.val(l),o.data("EmailsTagsValue",l),o.inputosaurus("refresh")),r&&i.utils.unwrapObservable(r)&&o.inputosaurus("focus")}},i.bindingHandlers.contactTags={init:function(t,i,s){var a=e("Utils"),r=e("Model:ContactTag"),l=n(t),c=i(),u=s(),d=u.autoCompleteSource||null,p=function(e){c&&c.focusTrigger&&c.focusTrigger(e)};l.inputosaurus({parseOnBlur:!0,allowDragAndDrop:!1,focusCallback:p,inputDelimiters:[",",";"],outputDelimiter:",",autoCompleteSource:d,parseHook:function(e){return o.map(e,function(e){var t=a.trim(e),i=null;return""!==t?(i=new r,i.name(t),[i.toLine(!1),i]):[t,null]})},change:o.bind(function(e){l.data("ContactTagsValue",e.target.value),c(e.target.value)},this)})},update:function(e,t,s){var o=n(e),a=s(),r=a.contactTagsFilter||null,l=i.utils.unwrapObservable(t());o.data("ContactTagsValue")!==l&&(o.val(l),o.data("ContactTagsValue",l),o.inputosaurus("refresh")),r&&i.utils.unwrapObservable(r)&&o.inputosaurus("focus")}},i.bindingHandlers.command={init:function(e,t,s,o){var a=n(e),r=t();if(!r||!r.enabled||!r.canExecute)throw new Error("You are not using command function");a.addClass("command"),i.bindingHandlers[a.is("form")?"submit":"click"].init.apply(o,arguments)},update:function(e,t){var i=!0,s=n(e),o=t();i=o.enabled(),s.toggleClass("command-not-enabled",!i),i&&(i=o.canExecute(),s.toggleClass("command-can-not-be-execute",!i)),s.toggleClass("command-disabled disable disabled",!i).toggleClass("no-disabled",!!i),(s.is("input")||s.is("button"))&&s.prop("disabled",!i)}},i.extenders.trimmer=function(t){var s=e("Utils"),o=i.computed({read:t,write:function(e){t(s.trim(e.toString()))},owner:this});return o(t()),o},i.extenders.posInterer=function(t,s){var o=e("Utils"),n=i.computed({read:t,write:function(e){var i=o.pInt(e.toString(),s);0>=i&&(i=s),i===t()&&""+i!=""+e&&t(i+1),t(i)}});return n(t()),n},i.extenders.reversible=function(e){var t=e();return e.commit=function(){t=e()},e.reverse=function(){e(t)},e.commitedValue=function(){return t},e},i.extenders.toggleSubscribe=function(e,t){return e.subscribe(t[1],t[0],"beforeChange"),e.subscribe(t[2],t[0]),e},i.extenders.falseTimeout=function(t,i){var o=e("Utils");return t.iTimeout=0,t.subscribe(function(e){e&&(s.clearTimeout(t.iTimeout),t.iTimeout=s.setTimeout(function(){t(!1),t.iTimeout=0},o.pInt(i)))}),t},i.observable.fn.validateNone=function(){return this.hasError=i.observable(!1),this},i.observable.fn.validateEmail=function(){var t=e("Utils");return this.hasError=i.observable(!1),this.subscribe(function(e){e=t.trim(e),this.hasError(""!==e&&!/^[^@\s]+@[^@\s]+$/.test(e))},this),this.valueHasMutated(),this},i.observable.fn.validateSimpleEmail=function(){var t=e("Utils");return this.hasError=i.observable(!1),this.subscribe(function(e){e=t.trim(e),this.hasError(""!==e&&!/^.+@.+$/.test(e))},this),this.valueHasMutated(),this},i.observable.fn.validateFunc=function(t){var s=e("Utils");return this.hasFuncError=i.observable(!1),s.isFunc(t)&&(this.subscribe(function(e){this.hasFuncError(!t(e))},this),this.valueHasMutated()),this},t.exports=i}(t,ko)},{$:26,$doc:16,$win:18,Globals:9,"Model:ContactTag":42,"Model:Email":43,Utils:14,_:31,window:32}],29:[function(e,t){t.exports=moment},{}],30:[function(e,t){t.exports=ssm},{}],31:[function(e,t){t.exports=_},{}],32:[function(e,t){t.exports=window},{}],33:[function(e,t){!function(e,t){"use strict";function i(){this.oScreens={},this.sDefaultScreenName="",this.oCurrentScreen=null}var s=t("$"),o=t("_"),n=t("ko"),a=t("hasher"),r=t("crossroads"),l=t("$html"),c=t("Globals"),u=t("Plugins"),d=t("Utils"),p=t("Knoin:AbstractViewModel");i.prototype.oScreens={},i.prototype.sDefaultScreenName="",i.prototype.oCurrentScreen=null,i.prototype.hideLoading=function(){s("#rl-loading").hide()},i.prototype.constructorEnd=function(e){d.isFunc(e.__constructor_end)&&e.__constructor_end.call(e)},i.prototype.extendAsViewModel=function(e,t,i){t&&(i||(i=p),t.__name=e,u.regViewModelHook(e,t),o.extend(t.prototype,i.prototype))},i.prototype.addSettingsViewModel=function(e,t,i,s,o){e.__rlSettingsData={Label:i,Template:t,Route:s,IsDefault:!!o},c.aViewModels.settings.push(e)},i.prototype.removeSettingsViewModel=function(e){c.aViewModels["settings-removed"].push(e)},i.prototype.disableSettingsViewModel=function(e){c.aViewModels["settings-disabled"].push(e)},i.prototype.routeOff=function(){a.changed.active=!1},i.prototype.routeOn=function(){a.changed.active=!0},i.prototype.screen=function(e){return""===e||d.isUnd(this.oScreens[e])?null:this.oScreens[e]},i.prototype.buildViewModel=function(e,t){if(e&&!e.__builded){var i=this,a=new e(t),r=a.viewModelPosition(),l=s("#rl-content #rl-"+r.toLowerCase()),p=null;e.__builded=!0,e.__vm=a,a.viewModelName=e.__name,l&&1===l.length?(p=s("").addClass("rl-view-model").addClass("RL-"+a.viewModelTemplate()).hide(),p.appendTo(l),a.viewModelDom=p,e.__dom=p,"Popups"===r&&(a.cancelCommand=a.closeCommand=d.createCommand(a,function(){i.hideScreenPopup(e)}),a.modalVisibility.subscribe(function(e){var t=this;e?(this.viewModelDom.show(),this.storeAndSetKeyScope(),c.popupVisibilityNames.push(this.viewModelName),a.viewModelDom.css("z-index",3e3+c.popupVisibilityNames().length+10),d.delegateRun(this,"onFocus",[],500)):(d.delegateRun(this,"onHide"),this.restoreKeyScope(),c.popupVisibilityNames.remove(this.viewModelName),a.viewModelDom.css("z-index",2e3),c.tooltipTrigger(!c.tooltipTrigger()),o.delay(function(){t.viewModelDom.hide()},300))},a)),u.runHook("view-model-pre-build",[e.__name,a,p]),n.applyBindingAccessorsToNode(p[0],{i18nInit:!0,template:function(){return{name:a.viewModelTemplate()}}},a),d.delegateRun(a,"onBuild",[p]),a&&"Popups"===r&&a.registerPopupKeyDown(),u.runHook("view-model-post-build",[e.__name,a,p])):d.log("Cannot find view model position: "+r)}return e?e.__vm:null},i.prototype.hideScreenPopup=function(e){e&&e.__vm&&e.__dom&&(e.__vm.modalVisibility(!1),u.runHook("view-model-on-hide",[e.__name,e.__vm]))},i.prototype.showScreenPopup=function(e,t){e&&(this.buildViewModel(e),e.__vm&&e.__dom&&(e.__vm.modalVisibility(!0),d.delegateRun(e.__vm,"onShow",t||[]),u.runHook("view-model-on-show",[e.__name,e.__vm,t||[]])))},i.prototype.isPopupVisible=function(e){return e&&e.__vm?e.__vm.modalVisibility():!1},i.prototype.screenOnRoute=function(e,t){var i=this,s=null,n=null;""===d.pString(e)&&(e=this.sDefaultScreenName),""!==e&&(s=this.screen(e),s||(s=this.screen(this.sDefaultScreenName),s&&(t=e+"/"+t,e=this.sDefaultScreenName)),s&&s.__started&&(s.__builded||(s.__builded=!0,d.isNonEmptyArray(s.viewModels())&&o.each(s.viewModels(),function(e){this.buildViewModel(e,s)},this),d.delegateRun(s,"onBuild")),o.defer(function(){i.oCurrentScreen&&(d.delegateRun(i.oCurrentScreen,"onHide"),d.isNonEmptyArray(i.oCurrentScreen.viewModels())&&o.each(i.oCurrentScreen.viewModels(),function(e){e.__vm&&e.__dom&&"Popups"!==e.__vm.viewModelPosition()&&(e.__dom.hide(),e.__vm.viewModelVisibility(!1),d.delegateRun(e.__vm,"onHide"))})),i.oCurrentScreen=s,i.oCurrentScreen&&(d.delegateRun(i.oCurrentScreen,"onShow"),u.runHook("screen-on-show",[i.oCurrentScreen.screenName(),i.oCurrentScreen]),d.isNonEmptyArray(i.oCurrentScreen.viewModels())&&o.each(i.oCurrentScreen.viewModels(),function(e){e.__vm&&e.__dom&&"Popups"!==e.__vm.viewModelPosition()&&(e.__dom.show(),e.__vm.viewModelVisibility(!0),d.delegateRun(e.__vm,"onShow"),d.delegateRun(e.__vm,"onFocus",[],200),u.runHook("view-model-on-show",[e.__name,e.__vm]))},i)),n=s.__cross?s.__cross():null,n&&n.parse(t)})))},i.prototype.startScreens=function(e){s("#rl-content").css({visibility:"hidden"}),o.each(e,function(e){var t=new e,i=t?t.screenName():"";t&&""!==i&&(""===this.sDefaultScreenName&&(this.sDefaultScreenName=i),this.oScreens[i]=t)},this),o.each(this.oScreens,function(e){e&&!e.__started&&e.__start&&(e.__started=!0,e.__start(),u.runHook("screen-pre-start",[e.screenName(),e]),d.delegateRun(e,"onStart"),u.runHook("screen-post-start",[e.screenName(),e]))
+},this);var t=r.create();t.addRoute(/^([a-zA-Z0-9\-]*)\/?(.*)$/,o.bind(this.screenOnRoute,this)),a.initialized.add(t.parse,t),a.changed.add(t.parse,t),a.init(),s("#rl-content").css({visibility:"visible"}),o.delay(function(){l.removeClass("rl-started-trigger").addClass("rl-started")},50)},i.prototype.setHash=function(e,t,i){e="#"===e.substr(0,1)?e.substr(1):e,e="/"===e.substr(0,1)?e.substr(1):e,i=d.isUnd(i)?!1:!!i,(d.isUnd(t)?1:!t)?(a.changed.active=!0,a[i?"replaceHash":"setHash"](e),a.setHash(e)):(a.changed.active=!1,a[i?"replaceHash":"setHash"](e),a.changed.active=!0)},e.exports=new i}(t,e)},{$:26,$html:17,Globals:9,"Knoin:AbstractViewModel":36,Plugins:12,Utils:14,_:31,crossroads:23,hasher:24,ko:28}],34:[function(e,t){!function(e){"use strict";function t(){}t.prototype.bootstart=function(){},e.exports=t}(t,e)},{}],35:[function(e,t){!function(e,t){"use strict";function i(e,t){this.sScreenName=e,this.aViewModels=o.isArray(t)?t:[]}var s=t("crossroads"),o=t("Utils");i.prototype.oCross=null,i.prototype.sScreenName="",i.prototype.aViewModels=[],i.prototype.viewModels=function(){return this.aViewModels},i.prototype.screenName=function(){return this.sScreenName},i.prototype.routes=function(){return null},i.prototype.__cross=function(){return this.oCross},i.prototype.__start=function(){var e=this.routes(),t=null,i=null;o.isNonEmptyArray(e)&&(i=_.bind(this.onRoute||o.emptyFunction,this),t=s.create(),_.each(e,function(e){t.addRoute(e[0],i).rules=e[1]}),this.oCross=t)},e.exports=i}(t,e)},{Utils:14,crossroads:23}],36:[function(e,t){!function(e,t){"use strict";function i(e,t){this.bDisabeCloseOnEsc=!1,this.sPosition=r.pString(e),this.sTemplate=r.pString(t),this.sDefaultKeyScope=n.KeyState.None,this.sCurrentKeyScope=this.sDefaultKeyScope,this.viewModelName="",this.viewModelVisibility=s.observable(!1),this.modalVisibility=s.observable(!1).extend({rateLimit:0}),this.viewModelDom=null}var s=t("ko"),o=t("$win"),n=t("Enums"),a=t("Globals"),r=t("Utils");i.prototype.sPosition="",i.prototype.sTemplate="",i.prototype.viewModelName="",i.prototype.viewModelDom=null,i.prototype.viewModelTemplate=function(){return this.sTemplate},i.prototype.viewModelPosition=function(){return this.sPosition},i.prototype.cancelCommand=function(){},i.prototype.closeCommand=function(){},i.prototype.storeAndSetKeyScope=function(){this.sCurrentKeyScope=a.keyScope(),a.keyScope(this.sDefaultKeyScope)},i.prototype.restoreKeyScope=function(){a.keyScope(this.sCurrentKeyScope)},i.prototype.registerPopupKeyDown=function(){var e=this;o.on("keydown",function(t){if(t&&e.modalVisibility&&e.modalVisibility()){if(!this.bDisabeCloseOnEsc&&n.EventKeyCode.Esc===t.keyCode)return r.delegateRun(e,"cancelCommand"),!1;if(n.EventKeyCode.Backspace===t.keyCode&&!r.inFocus())return!1}return!0})},e.exports=i}(t,e)},{$win:18,Enums:7,Globals:9,Utils:14,ko:28}],37:[function(e,t){!function(e,t){"use strict";function i(e,t){this.email=e,this.deleteAccess=s.observable(!1),this.canBeDalete=s.observable(t)}var s=t("ko");i.prototype.email="",i.prototype.changeAccountLink=function(){return t("LinkBuilder").change(this.email)},e.exports=i}(t,e)},{LinkBuilder:11,ko:28}],38:[function(e,t){!function(e,t){"use strict";function i(){this.mimeType="",this.fileName="",this.estimatedSize=0,this.friendlySize="",this.isInline=!1,this.isLinked=!1,this.cid="",this.cidWithOutTags="",this.contentLocation="",this.download="",this.folder="",this.uid="",this.mimeIndex=""}var s=t("window"),o=t("Globals"),n=t("Utils"),a=t("LinkBuilder");i.newInstanceFromJson=function(e){var t=new i;return t.initByJson(e)?t:null},i.prototype.mimeType="",i.prototype.fileName="",i.prototype.estimatedSize=0,i.prototype.friendlySize="",i.prototype.isInline=!1,i.prototype.isLinked=!1,i.prototype.cid="",i.prototype.cidWithOutTags="",i.prototype.contentLocation="",i.prototype.download="",i.prototype.folder="",i.prototype.uid="",i.prototype.mimeIndex="",i.prototype.initByJson=function(e){var t=!1;return e&&"Object/Attachment"===e["@Object"]&&(this.mimeType=(e.MimeType||"").toLowerCase(),this.fileName=e.FileName,this.estimatedSize=n.pInt(e.EstimatedSize),this.isInline=!!e.IsInline,this.isLinked=!!e.IsLinked,this.cid=e.CID,this.contentLocation=e.ContentLocation,this.download=e.Download,this.folder=e.Folder,this.uid=e.Uid,this.mimeIndex=e.MimeIndex,this.friendlySize=n.friendlySize(this.estimatedSize),this.cidWithOutTags=this.cid.replace(/^<+/,"").replace(/>+$/,""),t=!0),t},i.prototype.isImage=function(){return-1,]+)>?,? ?/g,i=t.exec(e);i?(this.name=i[1]||"",this.email=i[2]||"",this.clearDuplicateName()):/^[^@]+@[^@]+$/.test(e)&&(this.name="",this.email=e)},i.prototype.initByJson=function(e){var t=!1;return e&&"Object/Email"===e["@Object"]&&(this.name=o.trim(e.Name),this.email=o.trim(e.Email),t=""!==this.email,this.clearDuplicateName()),t},i.prototype.toLine=function(e,t,i){var s="";return""!==this.email&&(t=o.isUnd(t)?!1:!!t,i=o.isUnd(i)?!1:!!i,e&&""!==this.name?s=t?'")+'" target="_blank" tabindex="-1">'+o.encodeHtml(this.name)+"":i?o.encodeHtml(this.name):this.name:(s=this.email,""!==this.name?t?s=o.encodeHtml('"'+this.name+'" <')+'")+'" target="_blank" tabindex="-1">'+o.encodeHtml(s)+""+o.encodeHtml(">"):(s='"'+this.name+'" <'+s+">",i&&(s=o.encodeHtml(s))):t&&(s=''+o.encodeHtml(this.email)+""))),s},i.prototype.mailsoParse=function(e){if(e=o.trim(e),""===e)return!1;for(var t=function(e,t,i){e+="";var s=e.length;return 0>t&&(t+=s),s="undefined"==typeof i?s:0>i?i+s:i+t,t>=e.length||0>t||t>s?!1:e.slice(t,s)},i=function(e,t,i,s){return 0>i&&(i+=e.length),s=void 0!==s?s:e.length,0>s&&(s=s+e.length-i),e.slice(0,i)+t.substr(0,s)+t.slice(s)+e.slice(i+s)},s="",n="",a="",r=!1,l=!1,c=!1,u=null,d=0,p=0,h=0;h0&&0===s.length&&(s=t(e,0,h)),l=!0,d=h);break;case">":l&&(p=h,n=t(e,d+1,p-d-1),e=i(e,"",d,p-d+1),p=0,h=0,d=0,l=!1);break;case"(":r||l||c||(c=!0,d=h);break;case")":c&&(p=h,a=t(e,d+1,p-d-1),e=i(e,"",d,p-d+1),p=0,h=0,d=0,c=!1);break;case"\\":h++}h++}return 0===n.length&&(u=e.match(/[^@\s]+@\S+/i),u&&u[0]?n=u[0]:s=e),n.length>0&&0===s.length&&0===a.length&&(s=e.replace(n,"")),n=o.trim(n).replace(/^[<]+/,"").replace(/[>]+$/,""),s=o.trim(s).replace(/^["']+/,"").replace(/["']+$/,""),a=o.trim(a).replace(/^[(]+/,"").replace(/[)]+$/,""),s=s.replace(/\\\\(.)/,"$1"),a=a.replace(/\\\\(.)/,"$1"),this.name=s,this.email=n,this.clearDuplicateName(),!0},i.prototype.inputoTagLine=function(){return 00){if(n.FolderType.Draft===i)return""+e;if(t>0&&n.FolderType.Trash!==i&&n.FolderType.Archive!==i&&n.FolderType.SentItems!==i)return""+t}return""},this),this.canBeDeleted=o.computed(function(){var e=this.isSystemFolder();return!e&&0===this.subFolders().length&&"INBOX"!==this.fullNameRaw},this),this.canBeSubScribed=o.computed(function(){return!this.isSystemFolder()&&this.selectable&&"INBOX"!==this.fullNameRaw},this),this.localName=o.computed(function(){a.langChangeTrigger();var e=this.type(),t=this.name();if(this.isSystemFolder())switch(e){case n.FolderType.Inbox:t=r.i18n("FOLDER_LIST/INBOX_NAME");break;case n.FolderType.SentItems:t=r.i18n("FOLDER_LIST/SENT_NAME");break;case n.FolderType.Draft:t=r.i18n("FOLDER_LIST/DRAFTS_NAME");break;case n.FolderType.Spam:t=r.i18n("FOLDER_LIST/SPAM_NAME");break;case n.FolderType.Trash:t=r.i18n("FOLDER_LIST/TRASH_NAME");break;case n.FolderType.Archive:t=r.i18n("FOLDER_LIST/ARCHIVE_NAME")}return t},this),this.manageFolderSystemName=o.computed(function(){a.langChangeTrigger();var e="",t=this.type(),i=this.name();if(this.isSystemFolder())switch(t){case n.FolderType.Inbox:e="("+r.i18n("FOLDER_LIST/INBOX_NAME")+")";break;case n.FolderType.SentItems:e="("+r.i18n("FOLDER_LIST/SENT_NAME")+")";break;case n.FolderType.Draft:e="("+r.i18n("FOLDER_LIST/DRAFTS_NAME")+")";break;case n.FolderType.Spam:e="("+r.i18n("FOLDER_LIST/SPAM_NAME")+")";break;case n.FolderType.Trash:e="("+r.i18n("FOLDER_LIST/TRASH_NAME")+")";break;case n.FolderType.Archive:e="("+r.i18n("FOLDER_LIST/ARCHIVE_NAME")+")"}return(""!==e&&"("+i+")"===e||"(inbox)"===e.toLowerCase())&&(e=""),e},this),this.collapsed=o.computed({read:function(){return!this.hidden()&&this.collapsedPrivate()},write:function(e){this.collapsedPrivate(e)},owner:this}),this.hasUnreadMessages=o.computed(function(){return 0"},i.prototype.formattedNameForCompose=function(){var e=this.name();return""===e?this.email():e+" ("+this.email()+")"},i.prototype.formattedNameForEmail=function(){var e=this.name();return""===e?this.email():'"'+o.quoteName(e)+'" <'+this.email()+">"},e.exports=i}(t,e)},{Utils:14,ko:28}],48:[function(e,t){!function(e,t){"use strict";function i(){this.folderFullNameRaw="",this.uid="",this.hash="",this.requestHash="",this.subject=a.observable(""),this.subjectPrefix=a.observable(""),this.subjectSuffix=a.observable(""),this.size=a.observable(0),this.dateTimeStampInUTC=a.observable(0),this.priority=a.observable(u.MessagePriority.Normal),this.proxy=!1,this.fromEmailString=a.observable(""),this.fromClearEmailString=a.observable(""),this.toEmailsString=a.observable(""),this.toClearEmailsString=a.observable(""),this.senderEmailsString=a.observable(""),this.senderClearEmailsString=a.observable(""),this.emails=[],this.from=[],this.to=[],this.cc=[],this.bcc=[],this.replyTo=[],this.deliveredTo=[],this.newForAnimation=a.observable(!1),this.deleted=a.observable(!1),this.unseen=a.observable(!1),this.flagged=a.observable(!1),this.answered=a.observable(!1),this.forwarded=a.observable(!1),this.isReadReceipt=a.observable(!1),this.focused=a.observable(!1),this.selected=a.observable(!1),this.checked=a.observable(!1),this.hasAttachments=a.observable(!1),this.attachmentsMainType=a.observable(""),this.moment=a.observable(r(r.unix(0))),this.attachmentIconClass=a.computed(function(){var e="";if(this.hasAttachments())switch(e="icon-attachment",this.attachmentsMainType()){case"image":e="icon-image";break;case"archive":e="icon-file-zip";break;case"doc":e="icon-file-text"}return e},this),this.fullFormatDateValue=a.computed(function(){return i.calculateFullFromatDateValue(this.dateTimeStampInUTC())},this),this.momentDate=d.createMomentDate(this),this.momentShortDate=d.createMomentShortDate(this),this.dateTimeStampInUTC.subscribe(function(e){var t=r().unix();this.moment(r.unix(e>t?t:e))},this),this.body=null,this.plainRaw="",this.isHtml=a.observable(!1),this.hasImages=a.observable(!1),this.attachments=a.observableArray([]),this.isPgpSigned=a.observable(!1),this.isPgpEncrypted=a.observable(!1),this.pgpSignedVerifyStatus=a.observable(u.SignedVerifyStatus.None),this.pgpSignedVerifyUser=a.observable(""),this.priority=a.observable(u.MessagePriority.Normal),this.readReceipt=a.observable(""),this.aDraftInfo=[],this.sMessageId="",this.sInReplyTo="",this.sReferences="",this.parentUid=a.observable(0),this.threads=a.observableArray([]),this.threadsLen=a.observable(0),this.hasUnseenSubMessage=a.observable(!1),this.hasFlaggedSubMessage=a.observable(!1),this.lastInCollapsedThread=a.observable(!1),this.lastInCollapsedThreadLoading=a.observable(!1),this.threadsLenResult=a.computed(function(){var e=this.threadsLen();return 0===this.parentUid()&&e>0?e+1:""},this)}var s=t("window"),o=t("$"),n=t("_"),a=t("ko"),r=t("moment"),l=t("$win"),c=t("$div"),u=t("Enums"),d=t("Utils"),p=t("LinkBuilder"),h=t("Model:Email"),g=t("Model:Attachment");i.newInstanceFromJson=function(e){var t=new i;return t.initByJson(e)?t:null},i.calculateFullFromatDateValue=function(e){return e>0?r.unix(e).format("LLL"):""},i.emailsToLine=function(e,t,i){var s=[],o=0,n=0;if(d.isNonEmptyArray(e))for(o=0,n=e.length;n>o;o++)s.push(e[o].toLine(t,i));return s.join(", ")},i.emailsToLineClear=function(e){var t=[],i=0,s=0;if(d.isNonEmptyArray(e))for(i=0,s=e.length;s>i;i++)e[i]&&e[i].email&&""!==e[i].name&&t.push(e[i].email);return t.join(", ")},i.initEmailsFromJson=function(e){var t=0,i=0,s=null,o=[];if(d.isNonEmptyArray(e))for(t=0,i=e.length;i>t;t++)s=h.newInstanceFromJson(e[t]),s&&o.push(s);return o},i.replyHelper=function(e,t,i){if(e&&0s;s++)d.isUnd(t[e[s].email])&&(t[e[s].email]=!0,i.push(e[s]))},i.prototype.clear=function(){this.folderFullNameRaw="",this.uid="",this.hash="",this.requestHash="",this.subject(""),this.subjectPrefix(""),this.subjectSuffix(""),this.size(0),this.dateTimeStampInUTC(0),this.priority(u.MessagePriority.Normal),this.proxy=!1,this.fromEmailString(""),this.fromClearEmailString(""),this.toEmailsString(""),this.toClearEmailsString(""),this.senderEmailsString(""),this.senderClearEmailsString(""),this.emails=[],this.from=[],this.to=[],this.cc=[],this.bcc=[],this.replyTo=[],this.deliveredTo=[],this.newForAnimation(!1),this.deleted(!1),this.unseen(!1),this.flagged(!1),this.answered(!1),this.forwarded(!1),this.isReadReceipt(!1),this.selected(!1),this.checked(!1),this.hasAttachments(!1),this.attachmentsMainType(""),this.body=null,this.isHtml(!1),this.hasImages(!1),this.attachments([]),this.isPgpSigned(!1),this.isPgpEncrypted(!1),this.pgpSignedVerifyStatus(u.SignedVerifyStatus.None),this.pgpSignedVerifyUser(""),this.priority(u.MessagePriority.Normal),this.readReceipt(""),this.aDraftInfo=[],this.sMessageId="",this.sInReplyTo="",this.sReferences="",this.parentUid(0),this.threads([]),this.threadsLen(0),this.hasUnseenSubMessage(!1),this.hasFlaggedSubMessage(!1),this.lastInCollapsedThread(!1),this.lastInCollapsedThreadLoading(!1)},i.prototype.computeSenderEmail=function(){var e=t("Storage:RainLoop:Data"),i=e.sentFolder(),s=e.draftFolder();this.senderEmailsString(this.folderFullNameRaw===i||this.folderFullNameRaw===s?this.toEmailsString():this.fromEmailString()),this.senderClearEmailsString(this.folderFullNameRaw===i||this.folderFullNameRaw===s?this.toClearEmailsString():this.fromClearEmailString())},i.prototype.initByJson=function(e){var t=!1;return e&&"Object/Message"===e["@Object"]&&(this.folderFullNameRaw=e.Folder,this.uid=e.Uid,this.hash=e.Hash,this.requestHash=e.RequestHash,this.proxy=!!e.ExternalProxy,this.size(d.pInt(e.Size)),this.from=i.initEmailsFromJson(e.From),this.to=i.initEmailsFromJson(e.To),this.cc=i.initEmailsFromJson(e.Cc),this.bcc=i.initEmailsFromJson(e.Bcc),this.replyTo=i.initEmailsFromJson(e.ReplyTo),this.deliveredTo=i.initEmailsFromJson(e.DeliveredTo),this.subject(e.Subject),d.isArray(e.SubjectParts)?(this.subjectPrefix(e.SubjectParts[0]),this.subjectSuffix(e.SubjectParts[1])):(this.subjectPrefix(""),this.subjectSuffix(this.subject())),this.dateTimeStampInUTC(d.pInt(e.DateTimeStampInUTC)),this.hasAttachments(!!e.HasAttachments),this.attachmentsMainType(e.AttachmentsMainType),this.fromEmailString(i.emailsToLine(this.from,!0)),this.fromClearEmailString(i.emailsToLineClear(this.from)),this.toEmailsString(i.emailsToLine(this.to,!0)),this.toClearEmailsString(i.emailsToLineClear(this.to)),this.parentUid(d.pInt(e.ParentThread)),this.threads(d.isArray(e.Threads)?e.Threads:[]),this.threadsLen(d.pInt(e.ThreadsLen)),this.initFlagsByJson(e),this.computeSenderEmail(),t=!0),t},i.prototype.initUpdateByMessageJson=function(e){var i=t("Storage:RainLoop:Data"),s=!1,o=u.MessagePriority.Normal;return e&&"Object/Message"===e["@Object"]&&(o=d.pInt(e.Priority),this.priority(-1t;t++)s=g.newInstanceFromJson(e["@Collection"][t]),s&&(""!==s.cidWithOutTags&&0+$/,""),t=n.find(i,function(t){return e===t.cidWithOutTags})),t||null},i.prototype.findAttachmentByContentLocation=function(e){var t=null,i=this.attachments();
+return d.isNonEmptyArray(i)&&(t=n.find(i,function(t){return e===t.contentLocation})),t||null},i.prototype.messageId=function(){return this.sMessageId},i.prototype.inReplyTo=function(){return this.sInReplyTo},i.prototype.references=function(){return this.sReferences},i.prototype.fromAsSingleEmail=function(){return d.isArray(this.from)&&this.from[0]?this.from[0].email:""},i.prototype.viewLink=function(){return p.messageViewLink(this.requestHash)},i.prototype.downloadLink=function(){return p.messageDownloadLink(this.requestHash)},i.prototype.replyEmails=function(e){var t=[],s=d.isUnd(e)?{}:e;return i.replyHelper(this.replyTo,s,t),0===t.length&&i.replyHelper(this.from,s,t),t},i.prototype.replyAllEmails=function(e){var t=[],s=[],o=d.isUnd(e)?{}:e;return i.replyHelper(this.replyTo,o,t),0===t.length&&i.replyHelper(this.from,o,t),i.replyHelper(this.to,o,t),i.replyHelper(this.cc,o,s),[t,s]},i.prototype.textBodyToString=function(){return this.body?this.body.html():""},i.prototype.attachmentsToStringLine=function(){var e=n.map(this.attachments(),function(e){return e.fileName+" ("+e.friendlySize+")"});return e&&0=0&&s&&!n&&i.attr("src",s)}),e&&s.setTimeout(function(){t.print()},100))})},i.prototype.printMessage=function(){this.viewPopupMessage(!0)},i.prototype.generateUid=function(){return this.folderFullNameRaw+"/"+this.uid},i.prototype.populateByMessageListItem=function(e){return this.folderFullNameRaw=e.folderFullNameRaw,this.uid=e.uid,this.hash=e.hash,this.requestHash=e.requestHash,this.subject(e.subject()),this.subjectPrefix(this.subjectPrefix()),this.subjectSuffix(this.subjectSuffix()),this.size(e.size()),this.dateTimeStampInUTC(e.dateTimeStampInUTC()),this.priority(e.priority()),this.proxy=e.proxy,this.fromEmailString(e.fromEmailString()),this.fromClearEmailString(e.fromClearEmailString()),this.toEmailsString(e.toEmailsString()),this.toClearEmailsString(e.toClearEmailsString()),this.emails=e.emails,this.from=e.from,this.to=e.to,this.cc=e.cc,this.bcc=e.bcc,this.replyTo=e.replyTo,this.deliveredTo=e.deliveredTo,this.unseen(e.unseen()),this.flagged(e.flagged()),this.answered(e.answered()),this.forwarded(e.forwarded()),this.isReadReceipt(e.isReadReceipt()),this.selected(e.selected()),this.checked(e.checked()),this.hasAttachments(e.hasAttachments()),this.attachmentsMainType(e.attachmentsMainType()),this.moment(e.moment()),this.body=null,this.priority(u.MessagePriority.Normal),this.aDraftInfo=[],this.sMessageId="",this.sInReplyTo="",this.sReferences="",this.parentUid(e.parentUid()),this.threads(e.threads()),this.threadsLen(e.threadsLen()),this.computeSenderEmail(),this},i.prototype.showExternalImages=function(e){if(this.body&&this.body.data("rl-has-images")){var t="";e=d.isUnd(e)?!1:e,this.hasImages(!1),this.body.data("rl-has-images",!1),t=this.proxy?"data-x-additional-src":"data-x-src",o("["+t+"]",this.body).each(function(){e&&o(this).is("img")?o(this).addClass("lazy").attr("data-original",o(this).attr(t)).removeAttr(t):o(this).attr("src",o(this).attr(t)).removeAttr(t)}),t=this.proxy?"data-x-additional-style-url":"data-x-style-url",o("["+t+"]",this.body).each(function(){var e=d.trim(o(this).attr("style"));e=""===e?"":";"===e.substr(-1)?e+" ":e+"; ",o(this).attr("style",e+o(this).attr(t)).removeAttr(t)}),e&&(o("img.lazy",this.body).addClass("lazy-inited").lazyload({threshold:400,effect:"fadeIn",skip_invisible:!1,container:o(".RL-MailMessageView .messageView .messageItem .content")[0]}),l.resize()),d.windowResize(500)}},i.prototype.showInternalImages=function(e){if(this.body&&!this.body.data("rl-init-internal-images")){this.body.data("rl-init-internal-images",!0),e=d.isUnd(e)?!1:e;var t=this;o("[data-x-src-cid]",this.body).each(function(){var i=t.findAttachmentByCid(o(this).attr("data-x-src-cid"));i&&i.download&&(e&&o(this).is("img")?o(this).addClass("lazy").attr("data-original",i.linkPreview()):o(this).attr("src",i.linkPreview()))}),o("[data-x-src-location]",this.body).each(function(){var i=t.findAttachmentByContentLocation(o(this).attr("data-x-src-location"));i||(i=t.findAttachmentByCid(o(this).attr("data-x-src-location"))),i&&i.download&&(e&&o(this).is("img")?o(this).addClass("lazy").attr("data-original",i.linkPreview()):o(this).attr("src",i.linkPreview()))}),o("[data-x-style-cid]",this.body).each(function(){var e="",i="",s=t.findAttachmentByCid(o(this).attr("data-x-style-cid"));s&&s.linkPreview&&(i=o(this).attr("data-x-style-cid-name"),""!==i&&(e=d.trim(o(this).attr("style")),e=""===e?"":";"===e.substr(-1)?e+" ":e+"; ",o(this).attr("style",e+i+": url('"+s.linkPreview()+"')")))}),e&&!function(e,t){n.delay(function(){e.addClass("lazy-inited").lazyload({threshold:400,effect:"fadeIn",skip_invisible:!1,container:t})},300)}(o("img.lazy",t.body),o(".RL-MailMessageView .messageView .messageItem .content")[0]),d.windowResize(500)}},i.prototype.storeDataToDom=function(){if(this.body){this.body.data("rl-is-html",!!this.isHtml()),this.body.data("rl-has-images",!!this.hasImages()),this.body.data("rl-plain-raw",this.plainRaw);var e=t("Storage:RainLoop:Data");e.capaOpenPGP()&&(this.body.data("rl-plain-pgp-signed",!!this.isPgpSigned()),this.body.data("rl-plain-pgp-encrypted",!!this.isPgpEncrypted()),this.body.data("rl-pgp-verify-status",this.pgpSignedVerifyStatus()),this.body.data("rl-pgp-verify-user",this.pgpSignedVerifyUser()))}},i.prototype.storePgpVerifyDataToDom=function(){var e=t("Storage:RainLoop:Data");this.body&&e.capaOpenPGP()&&(this.body.data("rl-pgp-verify-status",this.pgpSignedVerifyStatus()),this.body.data("rl-pgp-verify-user",this.pgpSignedVerifyUser()))},i.prototype.fetchDataToDom=function(){if(this.body){this.isHtml(!!this.body.data("rl-is-html")),this.hasImages(!!this.body.data("rl-has-images")),this.plainRaw=d.pString(this.body.data("rl-plain-raw"));var e=t("Storage:RainLoop:Data");e.capaOpenPGP()?(this.isPgpSigned(!!this.body.data("rl-plain-pgp-signed")),this.isPgpEncrypted(!!this.body.data("rl-plain-pgp-encrypted")),this.pgpSignedVerifyStatus(this.body.data("rl-pgp-verify-status")),this.pgpSignedVerifyUser(this.body.data("rl-pgp-verify-user"))):(this.isPgpSigned(!1),this.isPgpEncrypted(!1),this.pgpSignedVerifyStatus(u.SignedVerifyStatus.None),this.pgpSignedVerifyUser(""))}},i.prototype.verifyPgpSignedClearMessage=function(){if(this.isPgpSigned()){var e=[],i=null,a=t("Storage:RainLoop:Data"),r=this.from&&this.from[0]&&this.from[0].email?this.from[0].email:"",l=a.findPublicKeysByEmail(r),d=null,p=null,h="";this.pgpSignedVerifyStatus(u.SignedVerifyStatus.Error),this.pgpSignedVerifyUser("");try{i=s.openpgp.cleartext.readArmored(this.plainRaw),i&&i.getText&&(this.pgpSignedVerifyStatus(l.length?u.SignedVerifyStatus.Unverified:u.SignedVerifyStatus.UnknownPublicKeys),e=i.verify(l),e&&0').text(h)).html(),c.empty(),this.replacePlaneTextBody(h)))))}catch(g){}this.storePgpVerifyDataToDom()}},i.prototype.decryptPgpEncryptedMessage=function(e){if(this.isPgpEncrypted()){var i=[],a=null,r=null,l=t("Storage:RainLoop:Data"),d=this.from&&this.from[0]&&this.from[0].email?this.from[0].email:"",p=l.findPublicKeysByEmail(d),h=l.findSelfPrivateKey(e),g=null,m=null,f="";this.pgpSignedVerifyStatus(u.SignedVerifyStatus.Error),this.pgpSignedVerifyUser(""),h||this.pgpSignedVerifyStatus(u.SignedVerifyStatus.UnknownPrivateKey);try{a=s.openpgp.message.readArmored(this.plainRaw),a&&h&&a.decrypt&&(this.pgpSignedVerifyStatus(u.SignedVerifyStatus.Unverified),r=a.decrypt(h),r&&(i=r.verify(p),i&&0').text(f)).html(),c.empty(),this.replacePlaneTextBody(f)))}catch(b){}this.storePgpVerifyDataToDom()}},i.prototype.replacePlaneTextBody=function(e){this.body&&this.body.html(e).addClass("b-text-part plain")},i.prototype.flagHash=function(){return[this.deleted(),this.unseen(),this.flagged(),this.answered(),this.forwarded(),this.isReadReceipt()].join("")},e.exports=i}(t,e)},{$:26,$div:15,$win:18,Enums:7,LinkBuilder:11,"Model:Attachment":38,"Model:Email":43,"Storage:RainLoop:Data":70,Utils:14,_:31,ko:28,moment:29,window:32}],49:[function(e,t){!function(e,t){"use strict";function i(e,t,i,o,n,a,r){this.index=e,this.id=i,this.guid=t,this.user=o,this.email=n,this.armor=r,this.isPrivate=!!a,this.deleteAccess=s.observable(!1)}var s=t("ko");i.prototype.index=0,i.prototype.id="",i.prototype.guid="",i.prototype.user="",i.prototype.email="",i.prototype.armor="",i.prototype.isPrivate=!1,e.exports=i}(t,e)},{ko:28}],50:[function(e,t){!function(e,t){"use strict";function i(){o.call(this,"about",[t("View:RainLoop:About")])}var s=t("_"),o=t("Knoin:AbstractScreen");s.extend(i.prototype,o.prototype),i.prototype.onShow=function(){t("App:RainLoop").setTitle("RainLoop")},e.exports=i}(t,e)},{"App:RainLoop":3,"Knoin:AbstractScreen":35,"View:RainLoop:About":76,_:31}],51:[function(e,t){!function(e,t){"use strict";function i(e){u.call(this,"settings",e),this.menu=n.observableArray([]),this.oCurrentSubScreen=null,this.oViewModelPlace=null}var s=t("$"),o=t("_"),n=t("ko"),a=t("Globals"),r=t("Utils"),l=t("LinkBuilder"),c=t("App:Knoin"),u=t("Knoin:AbstractScreen");o.extend(i.prototype,u.prototype),i.prototype.onRoute=function(e){var t=this,i=null,u=null,d=null,p=null;u=o.find(a.aViewModels.settings,function(t){return t&&t.__rlSettingsData&&e===t.__rlSettingsData.Route}),u&&(o.find(a.aViewModels["settings-removed"],function(e){return e&&e===u})&&(u=null),u&&o.find(a.aViewModels["settings-disabled"],function(e){return e&&e===u})&&(u=null)),u?(u.__builded&&u.__vm?i=u.__vm:(d=this.oViewModelPlace,d&&1===d.length?(i=new u,p=s("").addClass("rl-settings-view-model").hide(),p.appendTo(d),i.viewModelDom=p,i.__rlSettingsData=u.__rlSettingsData,u.__dom=p,u.__builded=!0,u.__vm=i,n.applyBindingAccessorsToNode(p[0],{i18nInit:!0,template:function(){return{name:u.__rlSettingsData.Template}}},i),r.delegateRun(i,"onBuild",[p])):r.log("Cannot find sub settings view model position: SettingsSubScreen")),i&&o.defer(function(){t.oCurrentSubScreen&&(r.delegateRun(t.oCurrentSubScreen,"onHide"),t.oCurrentSubScreen.viewModelDom.hide()),t.oCurrentSubScreen=i,t.oCurrentSubScreen&&(t.oCurrentSubScreen.viewModelDom.show(),r.delegateRun(t.oCurrentSubScreen,"onShow"),r.delegateRun(t.oCurrentSubScreen,"onFocus",[],200),o.each(t.menu(),function(e){e.selected(i&&i.__rlSettingsData&&e.route===i.__rlSettingsData.Route)}),s("#rl-content .b-settings .b-content .content").scrollTop(0)),r.windowResize()})):c.setHash(l.settings(),!1,!0)},i.prototype.onHide=function(){this.oCurrentSubScreen&&this.oCurrentSubScreen.viewModelDom&&(r.delegateRun(this.oCurrentSubScreen,"onHide"),this.oCurrentSubScreen.viewModelDom.hide())},i.prototype.onBuild=function(){o.each(a.aViewModels.settings,function(e){e&&e.__rlSettingsData&&!o.find(a.aViewModels["settings-removed"],function(t){return t&&t===e})&&this.menu.push({route:e.__rlSettingsData.Route,label:e.__rlSettingsData.Label,selected:n.observable(!1),disabled:!!o.find(a.aViewModels["settings-disabled"],function(t){return t&&t===e})})},this),this.oViewModelPlace=s("#rl-content #rl-settings-subscreen")},i.prototype.routes=function(){var e=o.find(a.aViewModels.settings,function(e){return e&&e.__rlSettingsData&&e.__rlSettingsData.IsDefault}),t=e?e.__rlSettingsData.Route:"general",i={subname:/^(.*)$/,normalize_:function(e,i){return i.subname=r.isUnd(i.subname)?t:r.pString(i.subname),[i.subname]}};return[["{subname}/",i],["{subname}",i],["",i]]},e.exports=i}(t,e)},{$:26,"App:Knoin":33,Globals:9,"Knoin:AbstractScreen":35,LinkBuilder:11,Utils:14,_:31,ko:28}],52:[function(e,t){!function(e,t){"use strict";function i(){o.call(this,"login",[t("View:RainLoop:Login")])}var s=t("_"),o=t("Knoin:AbstractScreen");s.extend(i.prototype,o.prototype),i.prototype.onShow=function(){t("App:RainLoop").setTitle("")},e.exports=i}(t,e)},{"App:RainLoop":3,"Knoin:AbstractScreen":35,"View:RainLoop:Login":78,_:31}],53:[function(e,t){!function(e,t){"use strict";function i(){c.call(this,"mailbox",[t("View:RainLoop:MailBoxSystemDropDown"),t("View:RainLoop:MailBoxFolderList"),t("View:RainLoop:MailBoxMessageList"),t("View:RainLoop:MailBoxMessageView")]),this.oLastRoute={}}var s=t("_"),o=t("$html"),n=t("Enums"),a=t("Globals"),r=t("Utils"),l=t("Events"),c=t("Knoin:AbstractScreen"),u=t("Storage:Settings"),d=t("Storage:RainLoop:Data"),p=t("Storage:RainLoop:Cache"),h=t("Storage:RainLoop:Remote");s.extend(i.prototype,c.prototype),i.prototype.oLastRoute={},i.prototype.setNewTitle=function(){var e=d.accountEmail(),i=d.foldersInboxUnreadCount();t("App:RainLoop").setTitle((""===e?"":(i>0?"("+i+") ":" ")+e+" - ")+r.i18n("TITLES/MAILBOX"))},i.prototype.onShow=function(){this.setNewTitle(),a.keyScope(n.KeyState.MessageList)},i.prototype.onRoute=function(e,i,s,o){if(r.isUnd(o)?1:!o){var a=p.getFolderFullNameRaw(e),l=p.getFolderFromCacheList(a);l&&(d.currentFolder(l).messageListPage(i).messageListSearch(s),n.Layout.NoPreview===d.layout()&&d.message()&&d.message(null),t("App:RainLoop").reloadMessageList())}else n.Layout.NoPreview!==d.layout()||d.message()||t("App:RainLoop").historyBack()},i.prototype.onStart=function(){var e=function(){r.windowResize()};(u.capa(n.Capa.AdditionalAccounts)||u.capa(n.Capa.AdditionalIdentities))&&t("App:RainLoop").accountsAndIdentities(),s.delay(function(){"INBOX"!==d.currentFolderFullNameRaw()&&t("App:RainLoop").folderInformation("INBOX")},1e3),s.delay(function(){t("App:RainLoop").quota()},5e3),s.delay(function(){h.appDelayStart(r.emptyFunction)},35e3),o.toggleClass("rl-no-preview-pane",n.Layout.NoPreview===d.layout()),d.folderList.subscribe(e),d.messageList.subscribe(e),d.message.subscribe(e),d.layout.subscribe(function(e){o.toggleClass("rl-no-preview-pane",n.Layout.NoPreview===e)}),l.sub("mailbox.inbox-unread-count",function(e){d.foldersInboxUnreadCount(e)}),d.foldersInboxUnreadCount.subscribe(function(){this.setNewTitle()},this)},i.prototype.routes=function(){var e=function(){return["Inbox",1,"",!0]},t=function(e,t){return t[0]=r.pString(t[0]),t[1]=r.pInt(t[1]),t[1]=0>=t[1]?1:t[1],t[2]=r.pString(t[2]),""===e&&(t[0]="Inbox",t[1]=1),[decodeURI(t[0]),t[1],decodeURI(t[2]),!1]},i=function(e,t){return t[0]=r.pString(t[0]),t[1]=r.pString(t[1]),""===e&&(t[0]="Inbox"),[decodeURI(t[0]),1,decodeURI(t[1]),!1]};return[[/^([a-zA-Z0-9]+)\/p([1-9][0-9]*)\/(.+)\/?$/,{normalize_:t}],[/^([a-zA-Z0-9]+)\/p([1-9][0-9]*)$/,{normalize_:t}],[/^([a-zA-Z0-9]+)\/(.+)\/?$/,{normalize_:i}],[/^message-preview$/,{normalize_:e}],[/^([^\/]*)$/,{normalize_:t}]]},e.exports=i}(t,e)},{$html:17,"App:RainLoop":3,Enums:7,Events:8,Globals:9,"Knoin:AbstractScreen":35,"Storage:RainLoop:Cache":69,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,"Storage:Settings":75,Utils:14,"View:RainLoop:MailBoxFolderList":79,"View:RainLoop:MailBoxMessageList":80,"View:RainLoop:MailBoxMessageView":81,"View:RainLoop:MailBoxSystemDropDown":82,_:31}],54:[function(e,t){!function(e,t){"use strict";function i(){r.call(this,[t("View:RainLoop:SettingsSystemDropDown"),t("View:RainLoop:SettingsMenu"),t("View:RainLoop:SettingsPane")]),n.initOnStartOrLangChange(function(){this.sSettingsTitle=n.i18n("TITLES/SETTINGS")},this,function(){this.setSettingsTitle()})}var s=t("_"),o=t("Enums"),n=t("Utils"),a=t("Globals"),r=t("Screen:AbstractSettings");s.extend(i.prototype,r.prototype),i.prototype.onShow=function(){this.setSettingsTitle(),a.keyScope(o.KeyState.Settings)},i.prototype.setSettingsTitle=function(){t("App:RainLoop").setTitle(this.sSettingsTitle)},e.exports=i}(t,e)},{"App:RainLoop":3,Enums:7,Globals:9,"Screen:AbstractSettings":51,Utils:14,"View:RainLoop:SettingsMenu":100,"View:RainLoop:SettingsPane":101,"View:RainLoop:SettingsSystemDropDown":102,_:31}],55:[function(e,t){!function(e,t){"use strict";function i(){this.accounts=c.accounts,this.processText=n.computed(function(){return c.accountsLoading()?r.i18n("SETTINGS_ACCOUNTS/LOADING_PROCESS"):""},this),this.visibility=n.computed(function(){return""===this.processText()?"hidden":"visible"},this),this.accountForDeletion=n.observable(null).extend({falseTimeout:3e3}).extend({toggleSubscribe:[this,function(e){e&&e.deleteAccess(!1)},function(e){e&&e.deleteAccess(!0)}]})}var s=t("window"),o=t("_"),n=t("ko"),a=t("Enums"),r=t("Utils"),l=t("LinkBuilder"),c=t("Storage:RainLoop:Data"),u=t("Storage:RainLoop:Remote");i.prototype.addNewAccount=function(){t("App:Knoin").showScreenPopup(t("View:Popup:AddAccount"))},i.prototype.deleteAccount=function(e){if(e&&e.deleteAccess()){this.accountForDeletion(null);var i=t("App:Knoin"),n=function(t){return e===t};e&&(this.accounts.remove(n),u.accountDelete(function(e,n){a.StorageResultType.Success===e&&n&&n.Result&&n.Reload?(i.routeOff(),i.setHash(l.root(),!0),i.routeOff(),o.defer(function(){s.location.reload()})):t("App:RainLoop").accountsAndIdentities()},e.email))}},e.exports=i}(t,e)},{"App:Knoin":33,"App:RainLoop":3,Enums:7,LinkBuilder:11,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,Utils:14,"View:Popup:AddAccount":83,_:31,ko:28,window:32}],56:[function(e,t){!function(e,t){"use strict";function i(){this.changeProcess=o.observable(!1),this.errorDescription=o.observable(""),this.passwordMismatch=o.observable(!1),this.passwordUpdateError=o.observable(!1),this.passwordUpdateSuccess=o.observable(!1),this.currentPassword=o.observable(""),this.currentPassword.error=o.observable(!1),this.newPassword=o.observable(""),this.newPassword2=o.observable(""),this.currentPassword.subscribe(function(){this.passwordUpdateError(!1),this.passwordUpdateSuccess(!1),this.currentPassword.error(!1)},this),this.newPassword.subscribe(function(){this.passwordUpdateError(!1),this.passwordUpdateSuccess(!1),this.passwordMismatch(!1)},this),this.newPassword2.subscribe(function(){this.passwordUpdateError(!1),this.passwordUpdateSuccess(!1),this.passwordMismatch(!1)},this),this.saveNewPasswordCommand=a.createCommand(this,function(){this.newPassword()!==this.newPassword2()?(this.passwordMismatch(!0),this.errorDescription(a.i18n("SETTINGS_CHANGE_PASSWORD/ERROR_PASSWORD_MISMATCH"))):(this.changeProcess(!0),this.passwordUpdateError(!1),this.passwordUpdateSuccess(!1),this.currentPassword.error(!1),this.passwordMismatch(!1),this.errorDescription(""),r.changePassword(this.onChangePasswordResponse,this.currentPassword(),this.newPassword()))},function(){return!this.changeProcess()&&""!==this.currentPassword()&&""!==this.newPassword()&&""!==this.newPassword2()}),this.onChangePasswordResponse=s.bind(this.onChangePasswordResponse,this)}var s=t("_"),o=t("ko"),n=t("Enums"),a=t("Utils"),r=t("Storage:RainLoop:Remote");i.prototype.onHide=function(){this.changeProcess(!1),this.currentPassword(""),this.newPassword(""),this.newPassword2(""),this.errorDescription(""),this.passwordMismatch(!1),this.currentPassword.error(!1)},i.prototype.onChangePasswordResponse=function(e,t){this.changeProcess(!1),this.passwordMismatch(!1),this.errorDescription(""),this.currentPassword.error(!1),n.StorageResultType.Success===e&&t&&t.Result?(this.currentPassword(""),this.newPassword(""),this.newPassword2(""),this.passwordUpdateSuccess(!0),this.currentPassword.error(!1)):(t&&n.Notification.CurrentPasswordIncorrect===t.ErrorCode&&this.currentPassword.error(!0),this.passwordUpdateError(!0),this.errorDescription(a.getNotification(t&&t.ErrorCode?t.ErrorCode:n.Notification.CouldNotSaveNewPassword)))},e.exports=i}(t,e)},{Enums:7,"Storage:RainLoop:Remote":74,Utils:14,_:31,ko:28}],57:[function(e,t){!function(e,t){"use strict";function i(){this.contactsAutosave=a.contactsAutosave,this.allowContactsSync=a.allowContactsSync,this.enableContactsSync=a.enableContactsSync,this.contactsSyncUrl=a.contactsSyncUrl,this.contactsSyncUser=a.contactsSyncUser,this.contactsSyncPass=a.contactsSyncPass,this.saveTrigger=s.computed(function(){return[this.enableContactsSync()?"1":"0",this.contactsSyncUrl(),this.contactsSyncUser(),this.contactsSyncPass()].join("|")},this).extend({throttle:500}),this.saveTrigger.subscribe(function(){n.saveContactsSyncData(null,this.enableContactsSync(),this.contactsSyncUrl(),this.contactsSyncUser(),this.contactsSyncPass())},this)}var s=t("ko"),o=t("Utils"),n=t("Storage:RainLoop:Remote"),a=t("Storage:RainLoop:Data");i.prototype.onBuild=function(){a.contactsAutosave.subscribe(function(e){n.saveSettings(o.emptyFunction,{ContactsAutosave:e?"1":"0"})})},e.exports=i}(t,e)},{"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,Utils:14,ko:28}],58:[function(e,t){!function(e,t){"use strict";function i(){this.filters=s.observableArray([]),this.filters.loading=s.observable(!1),this.filters.subscribe(function(){o.windowResize()})}var s=t("ko"),o=t("Utils");i.prototype.deleteFilter=function(e){this.filters.remove(e)},i.prototype.addFilter=function(){var e=t("Model:Filter");t("App:Knoin").showScreenPopup(t("View:Popup:Filter"),[new e])},e.exports=i}(t,e)},{"App:Knoin":33,"Model:Filter":45,Utils:14,"View:Popup:Filter":90,ko:28}],59:[function(e,t){!function(e,t){"use strict";function i(){this.foldersListError=l.foldersListError,this.folderList=l.folderList,this.processText=s.computed(function(){var e=l.foldersLoading(),t=l.foldersCreating(),i=l.foldersDeleting(),s=l.foldersRenaming();return t?n.i18n("SETTINGS_FOLDERS/CREATING_PROCESS"):i?n.i18n("SETTINGS_FOLDERS/DELETING_PROCESS"):s?n.i18n("SETTINGS_FOLDERS/RENAMING_PROCESS"):e?n.i18n("SETTINGS_FOLDERS/LOADING_PROCESS"):""},this),this.visibility=s.computed(function(){return""===this.processText()?"hidden":"visible"},this),this.folderForDeletion=s.observable(null).extend({falseTimeout:3e3}).extend({toggleSubscribe:[this,function(e){e&&e.deleteAccess(!1)},function(e){e&&e.deleteAccess(!0)}]}),this.folderForEdit=s.observable(null).extend({toggleSubscribe:[this,function(e){e&&e.edited(!1)},function(e){e&&e.canBeEdited()&&e.edited(!0)}]}),this.useImapSubscribe=!!a.settingsGet("UseImapSubscribe")}var s=t("ko"),o=t("Enums"),n=t("Utils"),a=t("Storage:Settings"),r=t("Storage:LocalStorage"),l=t("Storage:RainLoop:Data"),c=t("Storage:RainLoop:Cache"),u=t("Storage:RainLoop:Remote");i.prototype.folderEditOnEnter=function(e){var i=e?n.trim(e.nameForEdit()):"";""!==i&&e.name()!==i&&(r.set(o.ClientSideKeyName.FoldersLashHash,""),l.foldersRenaming(!0),u.folderRename(function(e,i){l.foldersRenaming(!1),o.StorageResultType.Success===e&&i&&i.Result||l.foldersListError(i&&i.ErrorCode?n.getNotification(i.ErrorCode):n.i18n("NOTIFICATIONS/CANT_RENAME_FOLDER")),t("App:RainLoop").folders()},e.fullNameRaw,i),c.removeFolderFromCacheList(e.fullNameRaw),e.name(i)),e.edited(!1)},i.prototype.folderEditOnEsc=function(e){e&&e.edited(!1)},i.prototype.onShow=function(){l.foldersListError("")},i.prototype.createFolder=function(){t("App:Knoin").showScreenPopup(t("View:Popup:FolderCreate"))},i.prototype.systemFolder=function(){t("App:Knoin").showScreenPopup(t("View:Popup:FolderSystem"))},i.prototype.deleteFolder=function(e){if(e&&e.canBeDeleted()&&e.deleteAccess()&&0===e.privateMessageCountAll()){this.folderForDeletion(null);var i=function(t){return e===t?!0:(t.subFolders.remove(i),!1)};e&&(r.set(o.ClientSideKeyName.FoldersLashHash,""),l.folderList.remove(i),l.foldersDeleting(!0),u.folderDelete(function(e,i){l.foldersDeleting(!1),o.StorageResultType.Success===e&&i&&i.Result||l.foldersListError(i&&i.ErrorCode?n.getNotification(i.ErrorCode):n.i18n("NOTIFICATIONS/CANT_DELETE_FOLDER")),t("App:RainLoop").folders()},e.fullNameRaw),c.removeFolderFromCacheList(e.fullNameRaw))}else 0"},i.prototype.addNewIdentity=function(){t("App:Knoin").showScreenPopup(t("View:Popup:Identity"))},i.prototype.editIdentity=function(e){t("App:Knoin").showScreenPopup(t("View:Popup:Identity"),[e])},i.prototype.deleteIdentity=function(e){if(e&&e.deleteAccess()){this.identityForDeletion(null);var i=function(t){return e===t};e&&(this.identities.remove(i),c.identityDelete(function(){t("App:RainLoop").accountsAndIdentities()},e.id))}},i.prototype.onFocus=function(){if(!this.editor&&this.signatureDom()){var e=this,t=l.signature();this.editor=new r(e.signatureDom(),function(){l.signature((e.editor.isHtml()?":HTML:":"")+e.editor.getData())},function(){":HTML:"===t.substr(0,6)?e.editor.setHtml(t.substr(6),!1):e.editor.setPlain(t,!1)})}},i.prototype.onBuild=function(e){var t=this;e.on("click",".identity-item .e-action",function(){var e=s.dataFor(this);e&&t.editIdentity(e)}),o.delay(function(){var e=a.settingsSaveHelperSimpleFunction(t.displayNameTrigger,t),i=a.settingsSaveHelperSimpleFunction(t.replyTrigger,t),s=a.settingsSaveHelperSimpleFunction(t.signatureTrigger,t),o=a.settingsSaveHelperSimpleFunction(t.defaultIdentityIDTrigger,t);l.defaultIdentityID.subscribe(function(e){c.saveSettings(o,{DefaultIdentityID:e})}),l.displayName.subscribe(function(t){c.saveSettings(e,{DisplayName:t})}),l.replyTo.subscribe(function(e){c.saveSettings(i,{ReplyTo:e})}),l.signature.subscribe(function(e){c.saveSettings(s,{Signature:e})}),l.signatureToAll.subscribe(function(e){c.saveSettings(null,{SignatureToAll:e?"1":"0"})})},50)},e.exports=i}(t,e)},{"App:Knoin":33,"App:RainLoop":3,Enums:7,HtmlEditor:10,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,Utils:14,"View:Popup:Identity":94,_:31,ko:28}],62:[function(e,t){!function(e,t){"use strict";function i(){this.editor=null,this.displayName=l.displayName,this.signature=l.signature,this.signatureToAll=l.signatureToAll,this.replyTo=l.replyTo,this.signatureDom=s.observable(null),this.displayNameTrigger=s.observable(n.SaveSettingsStep.Idle),this.replyTrigger=s.observable(n.SaveSettingsStep.Idle),this.signatureTrigger=s.observable(n.SaveSettingsStep.Idle)
+}var s=t("ko"),o=t("_"),n=t("Enums"),a=t("Utils"),r=t("HtmlEditor"),l=t("Storage:RainLoop:Data"),c=t("Storage:RainLoop:Remote");i.prototype.onFocus=function(){if(!this.editor&&this.signatureDom()){var e=this,t=l.signature();this.editor=new r(e.signatureDom(),function(){l.signature((e.editor.isHtml()?":HTML:":"")+e.editor.getData())},function(){":HTML:"===t.substr(0,6)?e.editor.setHtml(t.substr(6),!1):e.editor.setPlain(t,!1)})}},i.prototype.onBuild=function(){var e=this;o.delay(function(){var t=a.settingsSaveHelperSimpleFunction(e.displayNameTrigger,e),i=a.settingsSaveHelperSimpleFunction(e.replyTrigger,e),s=a.settingsSaveHelperSimpleFunction(e.signatureTrigger,e);l.displayName.subscribe(function(e){c.saveSettings(t,{DisplayName:e})}),l.replyTo.subscribe(function(e){c.saveSettings(i,{ReplyTo:e})}),l.signature.subscribe(function(e){c.saveSettings(s,{Signature:e})}),l.signatureToAll.subscribe(function(e){c.saveSettings(null,{SignatureToAll:e?"1":"0"})})},50)},e.exports=i}(t,e)},{Enums:7,HtmlEditor:10,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,Utils:14,_:31,ko:28}],63:[function(e,t){!function(e,t){"use strict";function i(){this.openpgpkeys=n.openpgpkeys,this.openpgpkeysPublic=n.openpgpkeysPublic,this.openpgpkeysPrivate=n.openpgpkeysPrivate,this.openPgpKeyForDeletion=s.observable(null).extend({falseTimeout:3e3}).extend({toggleSubscribe:[this,function(e){e&&e.deleteAccess(!1)},function(e){e&&e.deleteAccess(!0)}]})}var s=t("ko"),o=t("App:Knoin"),n=t("Storage:RainLoop:Data");i.prototype.addOpenPgpKey=function(){o.showScreenPopup(t("View:Popup:AddOpenPgpKey"))},i.prototype.generateOpenPgpKey=function(){o.showScreenPopup(t("View:Popup:NewOpenPgpKey"))},i.prototype.viewOpenPgpKey=function(e){e&&o.showScreenPopup(t("View:Popup:ViewOpenPgpKey"),[e])},i.prototype.deleteOpenPgpKey=function(e){e&&e.deleteAccess()&&(this.openPgpKeyForDeletion(null),e&&n.openpgpKeyring&&(this.openpgpkeys.remove(function(t){return e===t}),n.openpgpKeyring[e.isPrivate?"privateKeys":"publicKeys"].removeForId(e.guid),n.openpgpKeyring.store(),t("App:RainLoop").reloadOpenPgpKeys()))},e.exports=i}(t,e)},{"App:Knoin":33,"App:RainLoop":3,"Storage:RainLoop:Data":70,"View:Popup:AddOpenPgpKey":84,"View:Popup:NewOpenPgpKey":97,"View:Popup:ViewOpenPgpKey":99,ko:28}],64:[function(e,t){!function(e,t){"use strict";function i(){this.processing=s.observable(!1),this.clearing=s.observable(!1),this.secreting=s.observable(!1),this.viewUser=s.observable(""),this.viewEnable=s.observable(!1),this.viewEnable.subs=!0,this.twoFactorStatus=s.observable(!1),this.viewSecret=s.observable(""),this.viewBackupCodes=s.observable(""),this.viewUrl=s.observable(""),this.bFirst=!0,this.viewTwoFactorStatus=s.computed(function(){return n.langChangeTrigger(),a.i18n(this.twoFactorStatus()?"SETTINGS_SECURITY/TWO_FACTOR_SECRET_CONFIGURED_DESC":"SETTINGS_SECURITY/TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC")},this),this.onResult=_.bind(this.onResult,this),this.onSecretResult=_.bind(this.onSecretResult,this)}var s=t("ko"),o=t("Enums"),n=t("Globals"),a=t("Utils"),r=t("Storage:RainLoop:Remote");i.prototype.showSecret=function(){this.secreting(!0),r.showTwoFactorSecret(this.onSecretResult)},i.prototype.hideSecret=function(){this.viewSecret(""),this.viewBackupCodes(""),this.viewUrl("")},i.prototype.createTwoFactor=function(){this.processing(!0),r.createTwoFactor(this.onResult)},i.prototype.enableTwoFactor=function(){this.processing(!0),r.enableTwoFactor(this.onResult,this.viewEnable())},i.prototype.testTwoFactor=function(){t("App:Knoin").showScreenPopup(t("View:Popup:TwoFactorTest"))},i.prototype.clearTwoFactor=function(){this.viewSecret(""),this.viewBackupCodes(""),this.viewUrl(""),this.clearing(!0),r.clearTwoFactor(this.onResult)},i.prototype.onShow=function(){this.viewSecret(""),this.viewBackupCodes(""),this.viewUrl("")},i.prototype.onResult=function(e,t){if(this.processing(!1),this.clearing(!1),o.StorageResultType.Success===e&&t&&t.Result?(this.viewUser(a.pString(t.Result.User)),this.viewEnable(!!t.Result.Enable),this.twoFactorStatus(!!t.Result.IsSet),this.viewSecret(a.pString(t.Result.Secret)),this.viewBackupCodes(a.pString(t.Result.BackupCodes).replace(/[\s]+/g," ")),this.viewUrl(a.pString(t.Result.Url))):(this.viewUser(""),this.viewEnable(!1),this.twoFactorStatus(!1),this.viewSecret(""),this.viewBackupCodes(""),this.viewUrl("")),this.bFirst){this.bFirst=!1;var i=this;this.viewEnable.subscribe(function(e){this.viewEnable.subs&&r.enableTwoFactor(function(e,t){o.StorageResultType.Success===e&&t&&t.Result||(i.viewEnable.subs=!1,i.viewEnable(!1),i.viewEnable.subs=!0)},e)},this)}},i.prototype.onSecretResult=function(e,t){this.secreting(!1),o.StorageResultType.Success===e&&t&&t.Result?(this.viewSecret(a.pString(t.Result.Secret)),this.viewUrl(a.pString(t.Result.Url))):(this.viewSecret(""),this.viewUrl(""))},i.prototype.onBuild=function(){this.processing(!0),r.getTwoFactor(this.onResult)},e.exports=i}(t,e)},{"App:Knoin":33,Enums:7,Globals:9,"Storage:RainLoop:Remote":74,Utils:14,"View:Popup:TwoFactorTest":98,ko:28}],65:[function(e,t){!function(e,t){"use strict";function i(){var e=t("Utils"),i=t("Storage:RainLoop:Data");this.googleEnable=i.googleEnable,this.googleActions=i.googleActions,this.googleLoggined=i.googleLoggined,this.googleUserName=i.googleUserName,this.facebookEnable=i.facebookEnable,this.facebookActions=i.facebookActions,this.facebookLoggined=i.facebookLoggined,this.facebookUserName=i.facebookUserName,this.twitterEnable=i.twitterEnable,this.twitterActions=i.twitterActions,this.twitterLoggined=i.twitterLoggined,this.twitterUserName=i.twitterUserName,this.connectGoogle=e.createCommand(this,function(){this.googleLoggined()||t("App:RainLoop").googleConnect()},function(){return!this.googleLoggined()&&!this.googleActions()}),this.disconnectGoogle=e.createCommand(this,function(){t("App:RainLoop").googleDisconnect()}),this.connectFacebook=e.createCommand(this,function(){this.facebookLoggined()||t("App:RainLoop").facebookConnect()},function(){return!this.facebookLoggined()&&!this.facebookActions()}),this.disconnectFacebook=e.createCommand(this,function(){t("App:RainLoop").facebookDisconnect()}),this.connectTwitter=e.createCommand(this,function(){this.twitterLoggined()||t("App:RainLoop").twitterConnect()},function(){return!this.twitterLoggined()&&!this.twitterActions()}),this.disconnectTwitter=e.createCommand(this,function(){t("App:RainLoop").twitterDisconnect()})}e.exports=i}(t,e)},{"App:RainLoop":3,"Storage:RainLoop:Data":70,Utils:14}],66:[function(e,t){!function(e,t){"use strict";function i(){var e=this;this.mainTheme=u.mainTheme,this.themesObjects=n.observableArray([]),this.themeTrigger=n.observable(r.SaveSettingsStep.Idle).extend({throttle:100}),this.oLastAjax=null,this.iTimer=0,u.theme.subscribe(function(t){a.each(this.themesObjects(),function(e){e.selected(t===e.name)});var i=o("#rlThemeLink"),n=o("#rlThemeStyle"),c=i.attr("href");c||(c=n.attr("data-href")),c&&(c=c.toString().replace(/\/-\/[^\/]+\/\-\//,"/-/"+t+"/-/"),c=c.toString().replace(/\/Css\/[^\/]+\/User\//,"/Css/0/User/"),"Json/"!==c.substring(c.length-5,c.length)&&(c+="Json/"),s.clearTimeout(e.iTimer),e.themeTrigger(r.SaveSettingsStep.Animate),this.oLastAjax&&this.oLastAjax.abort&&this.oLastAjax.abort(),this.oLastAjax=o.ajax({url:c,dataType:"json"}).done(function(t){t&&l.isArray(t)&&2===t.length&&(!i||!i[0]||n&&n[0]||(n=o(''),i.after(n),i.remove()),n&&n[0]&&(n.attr("data-href",c).attr("data-theme",t[0]),n&&n[0]&&n[0].styleSheet&&!l.isUnd(n[0].styleSheet.cssText)?n[0].styleSheet.cssText=t[1]:n.text(t[1])),e.themeTrigger(r.SaveSettingsStep.TrueResult))}).always(function(){e.iTimer=s.setTimeout(function(){e.themeTrigger(r.SaveSettingsStep.Idle)},1e3),e.oLastAjax=null})),d.saveSettings(null,{Theme:t})},this)}var s=t("window"),o=t("$"),n=t("ko"),a=t("_"),r=t("Enums"),l=t("Utils"),c=t("LinkBuilder"),u=t("Storage:RainLoop:Data"),d=t("Storage:RainLoop:Remote");i.prototype.onBuild=function(){var e=u.theme();this.themesObjects(a.map(u.themes(),function(t){return{name:t,nameDisplay:l.convertThemeName(t),selected:n.observable(t===e),themePreviewSrc:c.themePreviewLink(t)}}))},e.exports=i}(t,e)},{$:26,Enums:7,LinkBuilder:11,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,Utils:14,_:31,ko:28,window:32}],67:[function(e,t){!function(e,t){"use strict";function i(){o.initDataConstructorBySettings(this)}var s=t("Enums"),o=t("Utils"),n=t("Storage:Settings");i.prototype.populateDataOnStart=function(){var e=o.pInt(n.settingsGet("Layout")),t=n.settingsGet("Languages"),i=n.settingsGet("Themes");o.isArray(t)&&this.languages(t),o.isArray(i)&&this.themes(i),this.mainLanguage(n.settingsGet("Language")),this.mainTheme(n.settingsGet("Theme")),this.capaAdditionalAccounts(n.capa(s.Capa.AdditionalAccounts)),this.capaAdditionalIdentities(n.capa(s.Capa.AdditionalIdentities)),this.capaGravatar(n.capa(s.Capa.Gravatar)),this.determineUserLanguage(!!n.settingsGet("DetermineUserLanguage")),this.determineUserDomain(!!n.settingsGet("DetermineUserDomain")),this.capaThemes(n.capa(s.Capa.Themes)),this.allowLanguagesOnLogin(!!n.settingsGet("AllowLanguagesOnLogin")),this.allowLanguagesOnSettings(!!n.settingsGet("AllowLanguagesOnSettings")),this.useLocalProxyForExternalImages(!!n.settingsGet("UseLocalProxyForExternalImages")),this.editorDefaultType(n.settingsGet("EditorDefaultType")),this.showImages(!!n.settingsGet("ShowImages")),this.contactsAutosave(!!n.settingsGet("ContactsAutosave")),this.interfaceAnimation(n.settingsGet("InterfaceAnimation")),this.mainMessagesPerPage(n.settingsGet("MPP")),this.desktopNotifications(!!n.settingsGet("DesktopNotifications")),this.useThreads(!!n.settingsGet("UseThreads")),this.replySameFolder(!!n.settingsGet("ReplySameFolder")),this.useCheckboxesInList(!!n.settingsGet("UseCheckboxesInList")),this.layout(s.Layout.SidePreview),-1(new s.Date).getTime()-g),f&&l.oRequests[f]&&(l.oRequests[f].__aborted&&(o="abort"),l.oRequests[f]=null),l.defaultResponse(e,f,o,i,n,t)}),f&&0=e?1:e},this),this.mainMessageListSearch=a.computed({read:this.messageListSearch,write:function(e){b.setHash(g.mailBox(this.currentFolderFullNameHash(),1,h.trim(e.toString())))},owner:this}),this.messageListError=a.observable(""),this.messageListLoading=a.observable(!1),this.messageListIsNotCompleted=a.observable(!1),this.messageListCompleteLoadingThrottle=a.observable(!1).extend({throttle:200}),this.messageListCompleteLoading=a.computed(function(){var e=this.messageListLoading(),t=this.messageListIsNotCompleted();return e||t},this),this.messageListCompleteLoading.subscribe(function(e){this.messageListCompleteLoadingThrottle(e)},this),this.messageList.subscribe(n.debounce(function(e){n.each(e,function(e){e.newForAnimation()&&e.newForAnimation(!1)})},500)),this.staticMessageList=new S,this.message=a.observable(null),this.messageLoading=a.observable(!1),this.messageLoadingThrottle=a.observable(!1).extend({throttle:50}),this.message.focused=a.observable(!1),this.message.subscribe(function(e){e?d.Layout.NoPreview===this.layout()&&this.message.focused(!0):(this.message.focused(!1),this.messageFullScreenMode(!1),this.hideMessageBodies(),d.Layout.NoPreview===this.layout()&&-10?s.Math.ceil(t/e*100):0},this),this.capaOpenPGP=a.observable(!1),this.openpgpkeys=a.observableArray([]),this.openpgpKeyring=null,this.openpgpkeysPublic=this.openpgpkeys.filter(function(e){return!(!e||e.isPrivate)}),this.openpgpkeysPrivate=this.openpgpkeys.filter(function(e){return!(!e||!e.isPrivate)}),this.googleActions=a.observable(!1),this.googleLoggined=a.observable(!1),this.googleUserName=a.observable(""),this.facebookActions=a.observable(!1),this.facebookLoggined=a.observable(!1),this.facebookUserName=a.observable(""),this.twitterActions=a.observable(!1),this.twitterLoggined=a.observable(!1),this.twitterUserName=a.observable(""),this.customThemeType=a.observable(d.CustomThemeType.Light),this.purgeMessageBodyCacheThrottle=n.throttle(this.purgeMessageBodyCache,3e4)}var s=t("window"),o=t("$"),n=t("_"),a=t("ko"),r=t("moment"),l=t("$div"),c=t("NotificationClass"),u=t("Consts"),d=t("Enums"),p=t("Globals"),h=t("Utils"),g=t("LinkBuilder"),m=t("Storage:Settings"),f=t("Storage:RainLoop:Cache"),b=t("App:Knoin"),S=t("Model:Message"),y=t("Storage:LocalStorage"),v=t("Storage:Abstract:Data");n.extend(i.prototype,v.prototype),i.prototype.purgeMessageBodyCache=function(){var e=0,t=null,i=p.iMessageBodyCacheCount-u.Values.MessageBodyCacheLimit;i>0&&(t=this.messagesBodiesDom(),t&&(t.find(".rl-cache-class").each(function(){var t=o(this);i>t.data("rl-cache-count")&&(t.addClass("rl-cache-purge"),e++)}),e>0&&n.delay(function(){t.find(".rl-cache-purge").remove()},300)))},i.prototype.populateDataOnStart=function(){v.prototype.populateDataOnStart.call(this),this.accountEmail(m.settingsGet("Email")),this.accountIncLogin(m.settingsGet("IncLogin")),this.accountOutLogin(m.settingsGet("OutLogin")),this.projectHash(m.settingsGet("ProjectHash")),this.defaultIdentityID(m.settingsGet("DefaultIdentityID")),this.displayName(m.settingsGet("DisplayName")),this.replyTo(m.settingsGet("ReplyTo")),this.signature(m.settingsGet("Signature")),this.signatureToAll(!!m.settingsGet("SignatureToAll")),this.enableTwoFactor(!!m.settingsGet("EnableTwoFactor")),this.lastFoldersHash=y.get(d.ClientSideKeyName.FoldersLashHash)||"",this.remoteSuggestions=!!m.settingsGet("RemoteSuggestions"),this.devEmail=m.settingsGet("DevEmail"),this.devPassword=m.settingsGet("DevPassword")},i.prototype.initUidNextAndNewMessages=function(e,t,i){if("INBOX"===e&&h.isNormal(t)&&""!==t){if(h.isArray(i)&&03)l(g.notificationMailIcon(),this.accountEmail(),h.i18n("MESSAGE_LIST/NEW_MESSAGE_NOTIFICATION",{COUNT:r}));else for(;r>a;a++)l(g.notificationMailIcon(),S.emailsToLine(S.initEmailsFromJson(i[a].From),!1),i[a].Subject)}f.setFolderUidNext(e,t)}},i.prototype.hideMessageBodies=function(){var e=this.messagesBodiesDom();e&&e.find(".b-text-part").hide()},i.prototype.getNextFolderNames=function(e){e=h.isUnd(e)?!1:!!e;var t=[],i=10,s=r().unix(),o=s-300,a=[],l=function(t){n.each(t,function(t){t&&"INBOX"!==t.fullNameRaw&&t.selectable&&t.existen&&o>t.interval&&(!e||t.subScribed())&&a.push([t.interval,t.fullNameRaw]),t&&0t[0]?1:0}),n.find(a,function(e){var o=f.getFolderFromCacheList(e[1]);return o&&(o.interval=s,t.push(e[1])),i<=t.length}),n.uniq(t)},i.prototype.removeMessagesFromList=function(e,t,i,s){i=h.isNormal(i)?i:"",s=h.isUnd(s)?!1:!!s,t=n.map(t,function(e){return h.pInt(e)});var o=this,a=0,r=this.messageList(),l=f.getFolderFromCacheList(e),c=""===i?null:f.getFolderFromCacheList(i||""),u=this.currentFolderFullNameRaw(),d=this.message(),p=u===e?n.filter(r,function(e){return e&&-10&&l.messageCountUnread(0<=l.messageCountUnread()-a?l.messageCountUnread()-a:0)),c&&(c.messageCountAll(c.messageCountAll()+t.length),a>0&&c.messageCountUnread(c.messageCountUnread()+a),c.actionBlink(!0)),0').hide().addClass("rl-cache-class"),a.data("rl-cache-count",++p.iMessageBodyCacheCount),h.isNormal(e.Result.Html)&&""!==e.Result.Html?(i=!0,u=e.Result.Html.toString()):h.isNormal(e.Result.Plain)&&""!==e.Result.Plain?(i=!1,u=h.plainToHtml(e.Result.Plain.toString(),!1),(S.isPgpSigned()||S.isPgpEncrypted())&&this.capaOpenPGP()&&(S.plainRaw=h.pString(e.Result.Plain),m=/---BEGIN PGP MESSAGE---/.test(S.plainRaw),m||(g=/-----BEGIN PGP SIGNED MESSAGE-----/.test(S.plainRaw)&&/-----BEGIN PGP SIGNATURE-----/.test(S.plainRaw)),l.empty(),g&&S.isPgpSigned()?u=l.append(o('').text(S.plainRaw)).html():m&&S.isPgpEncrypted()&&(u=l.append(o('').text(S.plainRaw)).html()),l.empty(),S.isPgpSigned(g),S.isPgpEncrypted(m))):i=!1,a.html(h.linkify(u)).addClass("b-text-part "+(i?"html":"plain")),S.isHtml(!!i),S.hasImages(!!s),S.pgpSignedVerifyStatus(d.SignedVerifyStatus.None),S.pgpSignedVerifyUser(""),S.body=a,S.body&&b.append(S.body),S.storeDataToDom(),n&&S.showInternalImages(!0),S.hasImages()&&this.showImages()&&S.showExternalImages(!0),this.purgeMessageBodyCacheThrottle()),this.messageActiveDom(S.body),this.hideMessageBodies(),S.body.show(),a&&h.initBlockquoteSwitcher(a)),f.initMessageFlagsFromCache(S),S.unseen()&&p.__APP&&p.__APP.setMessageSeen(S),h.windowResize())
+},i.prototype.calculateMessageListHash=function(e){return n.map(e,function(e){return""+e.hash+"_"+e.threadsLen()+"_"+e.flagHash()}).join("|")},i.prototype.findPublicKeyByHex=function(e){return n.find(this.openpgpkeysPublic(),function(t){return t&&e===t.id})},i.prototype.findPublicKeysByEmail=function(e){return n.compact(n.map(this.openpgpkeysPublic(),function(t){var i=null;if(t&&e===t.email)try{if(i=s.openpgp.key.readArmored(t.armor),i&&!i.err&&i.keys&&i.keys[0])return i.keys[0]}catch(o){}return null}))},i.prototype.findPrivateKeyByEmail=function(e,t){var i=null,o=n.find(this.openpgpkeysPrivate(),function(t){return t&&e===t.email});if(o)try{i=s.openpgp.key.readArmored(o.armor),i&&!i.err&&i.keys&&i.keys[0]?(i=i.keys[0],i.decrypt(h.pString(t))):i=null}catch(a){i=null}return i},i.prototype.findSelfPrivateKey=function(e){return this.findPrivateKeyByEmail(this.accountEmail(),e)},e.exports=new i}(t,e)},{$:26,$div:15,"App:Knoin":33,Consts:6,Enums:7,Globals:9,LinkBuilder:11,"Model:Message":48,NotificationClass:22,"Storage:Abstract:Data":67,"Storage:LocalStorage":71,"Storage:RainLoop:Cache":69,"Storage:Settings":75,Utils:14,_:31,ko:28,moment:29,window:32}],71:[function(e,t){!function(e,t){"use strict";function i(){var e=t("_"),i=e.find([t("Storage:LocalStorage:Cookie"),t("Storage:LocalStorage:LocalStorage")],function(e){return e.supported()});this.oDriver=null,i&&(this.oDriver=new i)}i.prototype.oDriver=null,i.prototype.set=function(e,t){return this.oDriver?this.oDriver.set("p"+e,t):!1},i.prototype.get=function(e){return this.oDriver?this.oDriver.get("p"+e):null},e.exports=new i}(t,e)},{"Storage:LocalStorage:Cookie":72,"Storage:LocalStorage:LocalStorage":73,_:31}],72:[function(e,t){!function(e,t){"use strict";function i(){}var s=t("$"),o=t("JSON"),n=t("Consts"),a=t("Utils");i.supported=function(){return!0},i.prototype.set=function(e,t){var i=s.cookie(n.Values.ClientSideCookieIndexName),a=!1,r=null;try{r=null===i?null:o.parse(i),r||(r={}),r[e]=t,s.cookie(n.Values.ClientSideCookieIndexName,o.stringify(r),{expires:30}),a=!0}catch(l){}return a},i.prototype.get=function(e){var t=s.cookie(n.Values.ClientSideCookieIndexName),i=null;try{i=null===t?null:o.parse(t),i=i&&!a.isUnd(i[e])?i[e]:null}catch(r){}return i},e.exports=i}(t,e)},{$:26,Consts:6,JSON:20,Utils:14}],73:[function(e,t){!function(e,t){"use strict";function i(){}var s=t("window"),o=t("JSON"),n=t("Consts"),a=t("Utils");i.supported=function(){return!!s.localStorage},i.prototype.set=function(e,t){var i=s.localStorage[n.Values.ClientSideCookieIndexName]||null,a=!1,r=null;try{r=null===i?null:o.parse(i),r||(r={}),r[e]=t,s.localStorage[n.Values.ClientSideCookieIndexName]=o.stringify(r),a=!0}catch(l){}return a},i.prototype.get=function(e){var t=s.localStorage[n.Values.ClientSideCookieIndexName]||null,i=null;try{i=null===t?null:o.parse(t),i=i&&!a.isUnd(i[e])?i[e]:null}catch(r){}return i},e.exports=i}(t,e)},{Consts:6,JSON:20,Utils:14,window:32}],74:[function(e,t){!function(e,t){"use strict";function i(){d.call(this),this.oRequests={}}var s=t("_"),o=t("Utils"),n=t("Consts"),a=t("Globals"),r=t("Base64"),l=t("Storage:Settings"),c=t("Storage:RainLoop:Cache"),u=t("Storage:RainLoop:Data"),d=t("Storage:Abstract:Remote");s.extend(i.prototype,d.prototype),i.prototype.folders=function(e){this.defaultRequest(e,"Folders",{SentFolder:l.settingsGet("SentFolder"),DraftFolder:l.settingsGet("DraftFolder"),SpamFolder:l.settingsGet("SpamFolder"),TrashFolder:l.settingsGet("TrashFolder"),ArchiveFolder:l.settingsGet("ArchiveFolder")},null,"",["Folders"])},i.prototype.login=function(e,t,i,s,o,n,a,r){this.defaultRequest(e,"Login",{Email:t,Login:i,Password:s,Language:n||"",AdditionalCode:a||"",AdditionalCodeSignMe:r?"1":"0",SignMe:o?"1":"0"})},i.prototype.getTwoFactor=function(e){this.defaultRequest(e,"GetTwoFactorInfo")},i.prototype.createTwoFactor=function(e){this.defaultRequest(e,"CreateTwoFactorSecret")},i.prototype.clearTwoFactor=function(e){this.defaultRequest(e,"ClearTwoFactorInfo")},i.prototype.showTwoFactorSecret=function(e){this.defaultRequest(e,"ShowTwoFactorSecret")},i.prototype.testTwoFactor=function(e,t){this.defaultRequest(e,"TestTwoFactorInfo",{Code:t})},i.prototype.enableTwoFactor=function(e,t){this.defaultRequest(e,"EnableTwoFactor",{Enable:t?"1":"0"})},i.prototype.clearTwoFactorInfo=function(e){this.defaultRequest(e,"ClearTwoFactorInfo")},i.prototype.contactsSync=function(e){this.defaultRequest(e,"ContactsSync",null,n.Defaults.ContactsSyncAjaxTimeout)},i.prototype.saveContactsSyncData=function(e,t,i,s,o){this.defaultRequest(e,"SaveContactsSyncData",{Enable:t?"1":"0",Url:i,User:s,Password:o})},i.prototype.accountAdd=function(e,t,i,s){this.defaultRequest(e,"AccountAdd",{Email:t,Login:i,Password:s})},i.prototype.accountDelete=function(e,t){this.defaultRequest(e,"AccountDelete",{EmailToDelete:t})},i.prototype.identityUpdate=function(e,t,i,s,o,n){this.defaultRequest(e,"IdentityUpdate",{Id:t,Email:i,Name:s,ReplyTo:o,Bcc:n})},i.prototype.identityDelete=function(e,t){this.defaultRequest(e,"IdentityDelete",{IdToDelete:t})},i.prototype.accountsAndIdentities=function(e){this.defaultRequest(e,"AccountsAndIdentities")},i.prototype.messageList=function(e,t,i,s,a,l){t=o.pString(t);var d=c.getFolderHash(t);l=o.isUnd(l)?!1:!!l,i=o.isUnd(i)?0:o.pInt(i),s=o.isUnd(i)?20:o.pInt(s),a=o.pString(a),""===d||""!==a&&-1!==a.indexOf("is:")?this.defaultRequest(e,"MessageList",{Folder:t,Offset:i,Limit:s,Search:a,UidNext:"INBOX"===t?c.getFolderUidNext(t):"",UseThreads:u.threading()&&u.useThreads()?"1":"0",ExpandedThreadUid:u.threading()&&t===u.messageListThreadFolder()?u.messageListThreadUids().join(","):""},""===a?n.Defaults.DefaultAjaxTimeout:n.Defaults.SearchAjaxTimeout,"",l?[]:["MessageList"]):this.defaultRequest(e,"MessageList",{},""===a?n.Defaults.DefaultAjaxTimeout:n.Defaults.SearchAjaxTimeout,"MessageList/"+r.urlsafe_encode([t,i,s,a,u.projectHash(),d,"INBOX"===t?c.getFolderUidNext(t):"",u.threading()&&u.useThreads()?"1":"0",u.threading()&&t===u.messageListThreadFolder()?u.messageListThreadUids().join(","):""].join(String.fromCharCode(0))),l?[]:["MessageList"])},i.prototype.messageUploadAttachments=function(e,t){this.defaultRequest(e,"MessageUploadAttachments",{Attachments:t},999e3)},i.prototype.message=function(e,t,i){return t=o.pString(t),i=o.pInt(i),c.getFolderFromCacheList(t)&&i>0?(this.defaultRequest(e,"Message",{},null,"Message/"+r.urlsafe_encode([t,i,u.projectHash(),u.threading()&&u.useThreads()?"1":"0"].join(String.fromCharCode(0))),["Message"]),!0):!1},i.prototype.composeUploadExternals=function(e,t){this.defaultRequest(e,"ComposeUploadExternals",{Externals:t},999e3)},i.prototype.composeUploadDrive=function(e,t,i){this.defaultRequest(e,"ComposeUploadDrive",{AccessToken:i,Url:t},999e3)},i.prototype.folderInformation=function(e,t,i){var n=!0,r=[];o.isArray(i)&&0-1&&r.eq(n).removeClass("focused"),38===a&&n>0?n--:40===a&&ns)?(this.oContentScrollable.scrollTop(i.top<0?this.oContentScrollable.scrollTop()+i.top-e:this.oContentScrollable.scrollTop()+i.top-s+n+e),!0):!1},i.prototype.messagesDrop=function(e,i){if(e&&i&&i.helper){var s=i.helper.data("rl-folder"),o=r.hasClass("rl-ctrl-key-pressed"),n=i.helper.data("rl-uids");l.isNormal(s)&&""!==s&&l.isArray(n)&&t("App:RainLoop").moveMessagesToFolder(s,n,e.fullNameRaw,o)}},i.prototype.composeClick=function(){m.showScreenPopup(t("View:Popup:Compose"))},i.prototype.createFolder=function(){m.showScreenPopup(t("View:Popup:FolderCreate"))},i.prototype.configureFolders=function(){m.setHash(d.settings("folders"))},i.prototype.contactsClick=function(){this.allowContacts&&m.showScreenPopup(t("View:Popup:Contacts"))},e.exports=i}(t,e)},{$:26,$html:17,"App:Knoin":33,"App:RainLoop":3,Enums:7,Globals:9,"Knoin:AbstractViewModel":36,LinkBuilder:11,"Storage:RainLoop:Cache":69,"Storage:RainLoop:Data":70,"Storage:Settings":75,Utils:14,"View:Popup:Compose":88,"View:Popup:Contacts":89,"View:Popup:FolderCreate":92,key:27,ko:28,window:32}],80:[function(e,t){!function(e,t){"use strict";function i(){w.call(this,"Right","MailMessageList"),this.sLastUid=null,this.bPrefetch=!1,this.emptySubjectValue="",this.hideDangerousActions=!!f.settingsGet("HideDangerousActions"),this.popupVisibility=d.popupVisibility,this.message=S.message,this.messageList=S.messageList,this.folderList=S.folderList,this.currentMessage=S.currentMessage,this.isMessageSelected=S.isMessageSelected,this.messageListSearch=S.messageListSearch,this.messageListError=S.messageListError,this.folderMenuForMove=S.folderMenuForMove,this.useCheckboxesInList=S.useCheckboxesInList,this.mainMessageListSearch=S.mainMessageListSearch,this.messageListEndFolder=S.messageListEndFolder,this.messageListChecked=S.messageListChecked,this.messageListCheckedOrSelected=S.messageListCheckedOrSelected,this.messageListCheckedOrSelectedUidsWithSubMails=S.messageListCheckedOrSelectedUidsWithSubMails,this.messageListCompleteLoadingThrottle=S.messageListCompleteLoadingThrottle,p.initOnStartOrLangChange(function(){this.emptySubjectValue=p.i18n("MESSAGE_LIST/EMPTY_SUBJECT_TEXT")},this),this.userQuota=S.userQuota,this.userUsageSize=S.userUsageSize,this.userUsageProc=S.userUsageProc,this.moveDropdownTrigger=n.observable(!1),this.moreDropdownTrigger=n.observable(!1),this.dragOver=n.observable(!1).extend({throttle:1}),this.dragOverEnter=n.observable(!1).extend({throttle:1}),this.dragOverArea=n.observable(null),this.dragOverBodyArea=n.observable(null),this.messageListItemTemplate=n.computed(function(){return c.Layout.NoPreview!==S.layout()?"MailMessageListItem":"MailMessageListItemNoPreviewPane"}),this.messageListSearchDesc=n.computed(function(){var e=S.messageListEndSearch();return""===e?"":p.i18n("MESSAGE_LIST/SEARCH_RESULT_FOR",{SEARCH:e})}),this.messageListPagenator=n.computed(p.computedPagenatorHelper(S.messageListPage,S.messageListPageCount)),this.checkAll=n.computed({read:function(){return 00&&t>0&&e>t},this),this.hasMessages=n.computed(function(){return 01?" ("+(100>e?e:"99+")+")":""},i.prototype.cancelSearch=function(){this.mainMessageListSearch(""),this.inputMessageListSearchFocus(!1)},i.prototype.moveSelectedMessagesToFolder=function(e,i){return this.canBeMoved()&&t("App:RainLoop").moveMessagesToFolder(S.currentFolderFullNameRaw(),S.messageListCheckedOrSelectedUidsWithSubMails(),e,i),!1},i.prototype.dragAndDronHelper=function(e){e&&e.checked(!0);var t=p.draggeblePlace(),i=S.messageListCheckedOrSelectedUidsWithSubMails();
+return t.data("rl-folder",S.currentFolderFullNameRaw()),t.data("rl-uids",i),t.find(".text").text(""+i.length),o.defer(function(){var e=S.messageListCheckedOrSelectedUidsWithSubMails();t.data("rl-uids",e),t.find(".text").text(""+e.length)}),t},i.prototype.onMessageResponse=function(e,t,i){S.hideMessageBodies(),S.messageLoading(!1),c.StorageResultType.Success===e&&t&&t.Result?S.setMessage(t,i):c.StorageResultType.Unload===e?(S.message(null),S.messageError("")):c.StorageResultType.Abort!==e&&(S.message(null),S.messageError(p.getNotification(t&&t.ErrorCode?t.ErrorCode:c.Notification.UnknownError)))},i.prototype.populateMessageBody=function(e){e&&(y.message(this.onMessageResponse,e.folderFullNameRaw,e.uid)?S.messageLoading(!0):p.log("Error: Unknown message request: "+e.folderFullNameRaw+" ~ "+e.uid+" [e-101]"))},i.prototype.setAction=function(e,i,s){var n=[],a=null,r=0;if(p.isUnd(s)&&(s=S.messageListChecked()),n=o.map(s,function(e){return e.uid}),""!==e&&00?100>e?e:"99+":""},i.prototype.verifyPgpSignedClearMessage=function(e){e&&e.verifyPgpSignedClearMessage()},i.prototype.decryptPgpEncryptedMessage=function(e){e&&e.decryptPgpEncryptedMessage(this.viewPgpPassword())},i.prototype.readReceipt=function(e){e&&""!==e.readReceipt()&&(g.sendReadReceiptMessage(u.emptyFunction,e.folderFullNameRaw,e.uid,e.readReceipt(),u.i18n("READ_RECEIPT/SUBJECT",{SUBJECT:e.subject()}),u.i18n("READ_RECEIPT/BODY",{"READ-RECEIPT":h.accountEmail()})),e.isReadReceipt(!0),p.storeMessageFlagsToCache(e),t("App:RainLoop").reloadFlagsCurrentMessageListAndMessageFromCache())},e.exports=i}(t,e)},{$:26,$html:17,"App:Knoin":33,"App:RainLoop":3,Consts:6,Enums:7,Events:8,Globals:9,"Knoin:AbstractViewModel":36,"Storage:RainLoop:Cache":69,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,Utils:14,"View:Popup:Compose":88,key:27,ko:28}],82:[function(e,t){!function(e,t){"use strict";function i(){o.call(this),s.constructorEnd(this)}var s=t("App:Knoin"),o=t("View:RainLoop:AbstractSystemDropDown");s.extendAsViewModel("MailBoxSystemDropDownViewModel",i,o),e.exports=i}(t,e)},{"App:Knoin":33,"View:RainLoop:AbstractSystemDropDown":77}],83:[function(e,t){!function(e,t){"use strict";function i(){c.call(this,"Popups","PopupsAddAccount"),this.email=o.observable(""),this.password=o.observable(""),this.emailError=o.observable(!1),this.passwordError=o.observable(!1),this.email.subscribe(function(){this.emailError(!1)},this),this.password.subscribe(function(){this.passwordError(!1)},this),this.submitRequest=o.observable(!1),this.submitError=o.observable(""),this.emailFocus=o.observable(!1),this.addAccountCommand=a.createCommand(this,function(){return this.emailError(""===a.trim(this.email())),this.passwordError(""===a.trim(this.password())),this.emailError()||this.passwordError()?!1:(this.submitRequest(!0),r.accountAdd(s.bind(function(e,i){this.submitRequest(!1),n.StorageResultType.Success===e&&i&&"AccountAdd"===i.Action?i.Result?(t("App:RainLoop").accountsAndIdentities(),this.cancelCommand()):i.ErrorCode&&this.submitError(a.getNotification(i.ErrorCode)):this.submitError(a.getNotification(n.Notification.UnknownError))},this),this.email(),"",this.password()),!0)},function(){return!this.submitRequest()}),l.constructorEnd(this)}var s=t("_"),o=t("ko"),n=t("Enums"),a=t("Utils"),r=t("Storage:RainLoop:Remote"),l=t("App:Knoin"),c=t("Knoin:AbstractViewModel");l.extendAsViewModel("PopupsAddAccountViewModel",i),i.prototype.clearPopup=function(){this.email(""),this.password(""),this.emailError(!1),this.passwordError(!1),this.submitRequest(!1),this.submitError("")},i.prototype.onShow=function(){this.clearPopup()},i.prototype.onFocus=function(){this.emailFocus(!0)},e.exports=i}(t,e)},{"App:Knoin":33,"App:RainLoop":3,Enums:7,"Knoin:AbstractViewModel":36,"Storage:RainLoop:Remote":74,Utils:14,_:31,ko:28}],84:[function(e,t){!function(e,t){"use strict";function i(){r.call(this,"Popups","PopupsAddOpenPgpKey"),this.key=s.observable(""),this.key.error=s.observable(!1),this.key.focus=s.observable(!1),this.key.subscribe(function(){this.key.error(!1)},this),this.addOpenPgpKeyCommand=o.createCommand(this,function(){var e=30,i=null,s=o.trim(this.key()),a=/[\-]{3,6}BEGIN[\s]PGP[\s](PRIVATE|PUBLIC)[\s]KEY[\s]BLOCK[\-]{3,6}[\s\S]+?[\-]{3,6}END[\s]PGP[\s](PRIVATE|PUBLIC)[\s]KEY[\s]BLOCK[\-]{3,6}/gi,r=n.openpgpKeyring;if(s=s.replace(/[\r\n]([a-zA-Z0-9]{2,}:[^\r\n]+)[\r\n]+([a-zA-Z0-9\/\\+=]{10,})/g,"\n$1!-!N!-!$2").replace(/[\n\r]+/g,"\n").replace(/!-!N!-!/g,"\n\n"),this.key.error(""===s),!r||this.key.error())return!1;for(;;){if(i=a.exec(s),!i||0>e)break;i[0]&&i[1]&&i[2]&&i[1]===i[2]&&("PRIVATE"===i[1]?r.privateKeys.importKey(i[0]):"PUBLIC"===i[1]&&r.publicKeys.importKey(i[0])),e--}return r.store(),t("App:RainLoop").reloadOpenPgpKeys(),o.delegateRun(this,"cancelCommand"),!0}),a.constructorEnd(this)}var s=t("ko"),o=t("Utils"),n=t("Storage:RainLoop:Data"),a=t("App:Knoin"),r=t("Knoin:AbstractViewModel");a.extendAsViewModel("PopupsAddOpenPgpKeyViewModel",i),i.prototype.clearPopup=function(){this.key(""),this.key.error(!1)},i.prototype.onShow=function(){this.clearPopup()},i.prototype.onFocus=function(){this.key.focus(!0)},e.exports=i}(t,e)},{"App:Knoin":33,"App:RainLoop":3,"Knoin:AbstractViewModel":36,"Storage:RainLoop:Data":70,Utils:14,ko:28}],85:[function(e,t){!function(e,t){"use strict";function i(){l.call(this,"Popups","PopupsAdvancedSearch"),this.fromFocus=s.observable(!1),this.from=s.observable(""),this.to=s.observable(""),this.subject=s.observable(""),this.text=s.observable(""),this.selectedDateValue=s.observable(-1),this.hasAttachment=s.observable(!1),this.starred=s.observable(!1),this.unseen=s.observable(!1),this.searchCommand=n.createCommand(this,function(){var e=this.buildSearchString();""!==e&&a.mainMessageListSearch(e),this.cancelCommand()}),r.constructorEnd(this)}var s=t("ko"),o=t("moment"),n=t("Utils"),a=t("Storage:RainLoop:Data"),r=t("App:Knoin"),l=t("Knoin:AbstractViewModel");r.extendAsViewModel("PopupsAdvancedSearchViewModel",i),i.prototype.buildSearchStringValue=function(e){return-1"},i.prototype.sendMessageResponse=function(e,t){var i=!1,o="";this.sending(!1),d.StorageResultType.Success===e&&t&&t.Result&&(i=!0,this.modalVisibility()&&h.delegateRun(this,"closeCommand")),this.modalVisibility()&&!i&&(t&&d.Notification.CantSaveMessage===t.ErrorCode?(this.sendSuccessButSaveError(!0),s.alert(h.trim(h.i18n("COMPOSE/SAVED_ERROR_ON_SEND")))):(o=h.getNotification(t&&t.ErrorCode?t.ErrorCode:d.Notification.CantSendMessage,t&&t.ErrorMessage?t.ErrorMessage:""),this.sendError(!0),s.alert(o||h.getNotification(d.Notification.CantSendMessage)))),this.reloadDraftFolder()},i.prototype.saveMessageResponse=function(e,t){var i=!1,o=null;this.saving(!1),d.StorageResultType.Success===e&&t&&t.Result&&t.Result.NewFolder&&t.Result.NewUid&&(this.bFromDraft&&(o=y.message(),o&&this.draftFolder()===o.folderFullNameRaw&&this.draftUid()===o.uid&&y.message(null)),this.draftFolder(t.Result.NewFolder),this.draftUid(t.Result.NewUid),this.modalVisibility()&&(this.savedTime(s.Math.round((new s.Date).getTime()/1e3)),this.savedOrSendingText(0"+e;break;default:e=e+"
"+i}return e},i.prototype.editor=function(e){if(e){var t=this;!this.oEditor&&this.composeEditorArea()?n.delay(function(){t.oEditor=new b(t.composeEditorArea(),null,function(){e(t.oEditor)},function(e){t.isHtml(!!e)})},300):this.oEditor&&e(this.oEditor)}},i.prototype.onShow=function(e,t,i,s,a){A.routeOff();var r=this,l="",c="",u="",p="",g="",m=null,f=null,b="",S="",v=[],C={},T=y.accountEmail(),F=y.signature(),R=y.signatureToAll(),L=[],E=null,N=null,P=e||d.ComposeType.Empty,I=function(e,t){for(var i=0,s=e.length,o=[];s>i;i++)o.push(e[i].toLine(!!t));return o.join(", ")};if(t=t||null,t&&h.isNormal(t)&&(N=h.isArray(t)&&1===t.length?t[0]:h.isArray(t)?null:t),null!==T&&(C[T]=!0),this.currentIdentityID(this.findIdentityIdByMessage(P,N)),this.reset(),h.isNonEmptyArray(i)&&this.to(I(i)),""!==P&&N){switch(p=N.fullFormatDateValue(),g=N.subject(),E=N.aDraftInfo,m=o(N.body).clone(),h.removeBlockquoteSwitcher(m),f=m.find("[data-html-editor-font-wrapper=true]"),b=f&&f[0]?f.html():m.html(),P){case d.ComposeType.Empty:break;case d.ComposeType.Reply:this.to(I(N.replyEmails(C))),this.subject(h.replySubjectAdd("Re",g)),this.prepearMessageAttachments(N,P),this.aDraftInfo=["reply",N.uid,N.folderFullNameRaw],this.sInReplyTo=N.sMessageId,this.sReferences=h.trim(this.sInReplyTo+" "+N.sReferences);break;case d.ComposeType.ReplyAll:v=N.replyAllEmails(C),this.to(I(v[0])),this.cc(I(v[1])),this.subject(h.replySubjectAdd("Re",g)),this.prepearMessageAttachments(N,P),this.aDraftInfo=["reply",N.uid,N.folderFullNameRaw],this.sInReplyTo=N.sMessageId,this.sReferences=h.trim(this.sInReplyTo+" "+N.references());break;case d.ComposeType.Forward:this.subject(h.replySubjectAdd("Fwd",g)),this.prepearMessageAttachments(N,P),this.aDraftInfo=["forward",N.uid,N.folderFullNameRaw],this.sInReplyTo=N.sMessageId,this.sReferences=h.trim(this.sInReplyTo+" "+N.sReferences);break;case d.ComposeType.ForwardAsAttachment:this.subject(h.replySubjectAdd("Fwd",g)),this.prepearMessageAttachments(N,P),this.aDraftInfo=["forward",N.uid,N.folderFullNameRaw],this.sInReplyTo=N.sMessageId,this.sReferences=h.trim(this.sInReplyTo+" "+N.sReferences);break;case d.ComposeType.Draft:this.to(I(N.to)),this.cc(I(N.cc)),this.bcc(I(N.bcc)),this.bFromDraft=!0,this.draftFolder(N.folderFullNameRaw),this.draftUid(N.uid),this.subject(g),this.prepearMessageAttachments(N,P),this.aDraftInfo=h.isNonEmptyArray(E)&&3===E.length?E:null,this.sInReplyTo=N.sInReplyTo,this.sReferences=N.sReferences;break;case d.ComposeType.EditAsNew:this.to(I(N.to)),this.cc(I(N.cc)),this.bcc(I(N.bcc)),this.subject(g),this.prepearMessageAttachments(N,P),this.aDraftInfo=h.isNonEmptyArray(E)&&3===E.length?E:null,this.sInReplyTo=N.sInReplyTo,this.sReferences=N.sReferences}switch(P){case d.ComposeType.Reply:case d.ComposeType.ReplyAll:l=N.fromToLine(!1,!0),S=h.i18n("COMPOSE/REPLY_MESSAGE_TITLE",{DATETIME:p,EMAIL:l}),b="
"+S+":"+b+"
";break;case d.ComposeType.Forward:l=N.fromToLine(!1,!0),c=N.toToLine(!1,!0),u=N.ccToLine(!1,!0),b="
"+h.i18n("COMPOSE/FORWARD_MESSAGE_TOP_TITLE")+"
"+h.i18n("COMPOSE/FORWARD_MESSAGE_TOP_FROM")+": "+l+"
"+h.i18n("COMPOSE/FORWARD_MESSAGE_TOP_TO")+": "+c+(0"+h.i18n("COMPOSE/FORWARD_MESSAGE_TOP_CC")+": "+u:"")+"
"+h.i18n("COMPOSE/FORWARD_MESSAGE_TOP_SENT")+": "+h.encodeHtml(p)+"
"+h.i18n("COMPOSE/FORWARD_MESSAGE_TOP_SUBJECT")+": "+h.encodeHtml(g)+"
"+b;break;case d.ComposeType.ForwardAsAttachment:b=""}R&&""!==F&&d.ComposeType.EditAsNew!==P&&d.ComposeType.Draft!==P&&(b=this.convertSignature(F,I(N.from,!0),b,P)),this.editor(function(e){e.setHtml(b,!1),N.isHtml()||e.modeToggle(!1)})}else d.ComposeType.Empty===P?(this.subject(h.isNormal(s)?""+s:""),b=h.isNormal(a)?""+a:"",R&&""!==F&&(b=this.convertSignature(F,"",h.convertPlainTextToHtml(b),P)),this.editor(function(e){e.setHtml(b,!1),d.EditorDefaultType.Html!==y.editorDefaultType()&&e.modeToggle(!1)})):h.isNonEmptyArray(t)&&n.each(t,function(e){r.addMessageAsAttachment(e)});L=this.getAttachmentsDownloadsForUpload(),h.isNonEmptyArray(L)&&w.messageUploadAttachments(function(e,t){if(d.StorageResultType.Success===e&&t&&t.Result){var i=null,s="";if(!r.viewModelVisibility())for(s in t.Result)t.Result.hasOwnProperty(s)&&(i=r.getAttachmentById(t.Result[s]),i&&i.tempName(s))}else r.setMessageAttachmentFailedDowbloadText()},L),this.triggerForResize()},i.prototype.onFocus=function(){""===this.to()?this.to.focusTrigger(!this.to.focusTrigger()):this.oEditor&&this.oEditor.focus(),this.triggerForResize()},i.prototype.editorResize=function(){this.oEditor&&this.oEditor.resize()},i.prototype.tryToClosePopup=function(){var e=this,i=t("View:Popup:Ask");A.isPopupVisible(i)||A.showScreenPopup(i,[h.i18n("POPUPS_ASK/DESC_WANT_CLOSE_THIS_WINDOW"),function(){e.modalVisibility()&&h.delegateRun(e,"closeCommand")}])},i.prototype.onBuild=function(){this.initUploader();var e=this,t=null;key("ctrl+q, command+q",d.KeyState.Compose,function(){return e.identitiesDropdownTrigger(!0),!1}),key("ctrl+s, command+s",d.KeyState.Compose,function(){return e.saveCommand(),!1}),key("ctrl+enter, command+enter",d.KeyState.Compose,function(){return e.sendCommand(),!1}),key("esc",d.KeyState.Compose,function(){return e.modalVisibility()&&e.tryToClosePopup(),!1}),l.on("resize",function(){e.triggerForResize()}),this.dropboxEnabled()&&(t=s.document.createElement("script"),t.type="text/javascript",t.src="https://www.dropbox.com/static/api/1/dropins.js",o(t).attr("id","dropboxjs").attr("data-app-key",S.settingsGet("DropboxApiKey")),s.document.body.appendChild(t)),this.driveEnabled()&&o.getScript("https://apis.google.com/js/api.js",function(){s.gapi&&e.driveVisible(!0)})},i.prototype.driveCallback=function(e,t){if(t&&s.XMLHttpRequest&&s.google&&t[s.google.picker.Response.ACTION]===s.google.picker.Action.PICKED&&t[s.google.picker.Response.DOCUMENTS]&&t[s.google.picker.Response.DOCUMENTS][0]&&t[s.google.picker.Response.DOCUMENTS][0].id){var i=this,o=new s.XMLHttpRequest;o.open("GET","https://www.googleapis.com/drive/v2/files/"+t[s.google.picker.Response.DOCUMENTS][0].id),o.setRequestHeader("Authorization","Bearer "+e),o.addEventListener("load",function(){if(o&&o.responseText){var t=c.parse(o.responseText),s=function(e,t,i){e&&e.exportLinks&&(e.exportLinks[t]?(e.downloadUrl=e.exportLinks[t],e.title=e.title+"."+i,e.mimeType=t):e.exportLinks["application/pdf"]&&(e.downloadUrl=e.exportLinks["application/pdf"],e.title=e.title+".pdf",e.mimeType="application/pdf"))};if(t&&!t.downloadUrl&&t.mimeType&&t.exportLinks)switch(t.mimeType.toString().toLowerCase()){case"application/vnd.google-apps.document":s(t,"application/vnd.openxmlformats-officedocument.wordprocessingml.document","docx");break;case"application/vnd.google-apps.spreadsheet":s(t,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","xlsx");break;case"application/vnd.google-apps.drawing":s(t,"image/png","png");break;case"application/vnd.google-apps.presentation":s(t,"application/vnd.openxmlformats-officedocument.presentationml.presentation","pptx");break;default:s(t,"application/pdf","pdf")}t&&t.downloadUrl&&i.addDriveAttachment(t,e)}}),o.send()}},i.prototype.driveCreatePiker=function(e){if(s.gapi&&e&&e.access_token){var t=this;s.gapi.load("picker",{callback:function(){if(s.google&&s.google.picker){var i=(new s.google.picker.PickerBuilder).addView((new s.google.picker.DocsView).setIncludeFolders(!0)).setAppId(S.settingsGet("GoogleClientID")).setOAuthToken(e.access_token).setCallback(n.bind(t.driveCallback,t,e.access_token)).enableFeature(s.google.picker.Feature.NAV_HIDDEN).build();i.setVisible(!0)}}})}},i.prototype.driveOpenPopup=function(){if(s.gapi){var e=this;s.gapi.load("auth",{callback:function(){var t=s.gapi.auth.getToken();t?e.driveCreatePiker(t):s.gapi.auth.authorize({client_id:S.settingsGet("GoogleClientID"),scope:"https://www.googleapis.com/auth/drive.readonly",immediate:!0},function(t){if(t&&!t.error){var i=s.gapi.auth.getToken();i&&e.driveCreatePiker(i)}else s.gapi.auth.authorize({client_id:S.settingsGet("GoogleClientID"),scope:"https://www.googleapis.com/auth/drive.readonly",immediate:!1},function(t){if(t&&!t.error){var i=s.gapi.auth.getToken();i&&e.driveCreatePiker(i)}})})}})}},i.prototype.getAttachmentById=function(e){for(var t=this.attachments(),i=0,s=t.length;s>i;i++)if(t[i]&&e===t[i].id)return t[i];return null},i.prototype.initUploader=function(){if(this.composeUploaderButton()){var e={},t=h.pInt(S.settingsGet("AttachmentLimit")),i=new u({action:m.upload(),name:"uploader",queueSize:2,multipleSizeLimit:50,disableFolderDragAndDrop:!1,clickElement:this.composeUploaderButton(),dragAndDropElement:this.composeUploaderDropPlace()});i?(i.on("onDragEnter",n.bind(function(){this.dragAndDropOver(!0)},this)).on("onDragLeave",n.bind(function(){this.dragAndDropOver(!1)},this)).on("onBodyDragEnter",n.bind(function(){this.dragAndDropVisible(!0)},this)).on("onBodyDragLeave",n.bind(function(){this.dragAndDropVisible(!1)},this)).on("onProgress",n.bind(function(t,i,o){var n=null;h.isUnd(e[t])?(n=this.getAttachmentById(t),n&&(e[t]=n)):n=e[t],n&&n.progress(" - "+s.Math.floor(i/o*100)+"%")},this)).on("onSelect",n.bind(function(e,s){this.dragAndDropOver(!1);var o=this,n=h.isUnd(s.FileName)?"":s.FileName.toString(),a=h.isNormal(s.Size)?h.pInt(s.Size):null,r=new C(e,n,a);return r.cancel=function(e){return function(){o.attachments.remove(function(t){return t&&t.id===e}),i&&i.cancel(e)}}(e),this.attachments.push(r),a>0&&t>0&&a>t?(r.error(h.i18n("UPLOAD/ERROR_FILE_IS_TOO_BIG")),!1):!0},this)).on("onStart",n.bind(function(t){var i=null;h.isUnd(e[t])?(i=this.getAttachmentById(t),i&&(e[t]=i)):i=e[t],i&&(i.waiting(!1),i.uploading(!0))},this)).on("onComplete",n.bind(function(t,i,s){var o="",n=null,a=null,r=this.getAttachmentById(t);a=i&&s&&s.Result&&s.Result.Attachment?s.Result.Attachment:null,n=s&&s.Result&&s.Result.ErrorCode?s.Result.ErrorCode:null,null!==n?o=h.getUploadErrorDescByCode(n):a||(o=h.i18n("UPLOAD/ERROR_UNKNOWN")),r&&(""!==o&&00&&o>0&&n>o?(i.uploading(!1),i.error(h.i18n("UPLOAD/ERROR_FILE_IS_TOO_BIG")),!1):(w.composeUploadExternals(function(e,t){var s=!1;i.uploading(!1),d.StorageResultType.Success===e&&t&&t.Result&&t.Result[i.id]&&(s=!0,i.tempName(t.Result[i.id])),s||i.error(h.getUploadErrorDescByCode(d.UploadErrorCode.FileNoUploaded))},[e.link]),!0)},i.prototype.addDriveAttachment=function(e,t){var i=this,s=function(e){return function(){i.attachments.remove(function(t){return t&&t.id===e})}},o=h.pInt(S.settingsGet("AttachmentLimit")),n=null,a=e.fileSize?h.pInt(e.fileSize):0;return n=new C(e.downloadUrl,e.title,a),n.fromMessage=!1,n.cancel=s(e.downloadUrl),n.waiting(!1).uploading(!0),this.attachments.push(n),a>0&&o>0&&a>o?(n.uploading(!1),n.error(h.i18n("UPLOAD/ERROR_FILE_IS_TOO_BIG")),!1):(w.composeUploadDrive(function(e,t){var i=!1;n.uploading(!1),d.StorageResultType.Success===e&&t&&t.Result&&t.Result[n.id]&&(i=!0,n.tempName(t.Result[n.id][0]),n.size(h.pInt(t.Result[n.id][1]))),i||n.error(h.getUploadErrorDescByCode(d.UploadErrorCode.FileNoUploaded))},e.downloadUrl,t),!0)},i.prototype.prepearMessageAttachments=function(e,t){if(e){var i=this,s=h.isNonEmptyArray(e.attachments())?e.attachments():[],o=0,n=s.length,a=null,r=null,l=!1,c=function(e){return function(){i.attachments.remove(function(t){return t&&t.id===e})}};if(d.ComposeType.ForwardAsAttachment===t)this.addMessageAsAttachment(e);else for(;n>o;o++){switch(r=s[o],l=!1,t){case d.ComposeType.Reply:case d.ComposeType.ReplyAll:l=r.isLinked;break;case d.ComposeType.Forward:case d.ComposeType.Draft:case d.ComposeType.EditAsNew:l=!0}l&&(a=new C(r.download,r.fileName,r.estimatedSize,r.isInline,r.isLinked,r.cid,r.contentLocation),a.fromMessage=!0,a.cancel=c(r.download),a.waiting(!1).uploading(!0),this.attachments.push(a))}}},i.prototype.removeLinkedAttachments=function(){this.attachments.remove(function(e){return e&&e.isLinked})},i.prototype.setMessageAttachmentFailedDowbloadText=function(){n.each(this.attachments(),function(e){e&&e.fromMessage&&e.waiting(!1).uploading(!1).error(h.getUploadErrorDescByCode(d.UploadErrorCode.FileNoUploaded))},this)},i.prototype.isEmptyForm=function(e){e=h.isUnd(e)?!0:!!e;var t=e?0===this.attachments().length:0===this.attachmentsInReady().length;return 0===this.to().length&&0===this.cc().length&&0===this.bcc().length&&0===this.subject().length&&t&&(!this.oEditor||""===this.oEditor.getData())},i.prototype.reset=function(){this.to(""),this.cc(""),this.bcc(""),this.replyTo(""),this.subject(""),this.requestReadReceipt(!1),this.aDraftInfo=null,this.sInReplyTo="",this.bFromDraft=!1,this.sReferences="",this.sendError(!1),this.sendSuccessButSaveError(!1),this.savedError(!1),this.savedTime(0),this.savedOrSendingText(""),this.emptyToError(!1),this.attachmentsInProcessError(!1),this.showCcAndBcc(!1),this.attachments([]),this.dragAndDropOver(!1),this.dragAndDropVisible(!1),this.draftFolder(""),this.draftUid(""),this.sending(!1),this.saving(!1),this.oEditor&&this.oEditor.clear(!1)},i.prototype.getAttachmentsDownloadsForUpload=function(){return n.map(n.filter(this.attachments(),function(e){return e&&""===e.tempName()}),function(e){return e.id})},i.prototype.triggerForResize=function(){this.resizer(!this.resizer()),this.editorResizeThrottle()},e.exports=i}(t,e)},{$:26,$win:18,"App:Knoin":33,"App:RainLoop":3,Consts:6,Enums:7,Events:8,Globals:9,HtmlEditor:10,JSON:20,Jua:21,"Knoin:AbstractViewModel":36,LinkBuilder:11,"Model:ComposeAttachment":39,"Storage:RainLoop:Cache":69,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,"Storage:Settings":75,Utils:14,"View:Popup:Ask":86,"View:Popup:ComposeOpenPgp":87,"View:Popup:FolderSystem":93,_:31,ko:28,moment:29,window:32}],89:[function(e,t){!function(e,t){"use strict";function i(){w.call(this,"Popups","PopupsContacts");var e=this,i=function(t){t&&0=e?1:e},this),this.contactsPagenator=a.computed(d.computedPagenatorHelper(this.contactsPage,this.contactsPageCount)),this.emptySelection=a.observable(!0),this.viewClearSearch=a.observable(!1),this.viewID=a.observable(""),this.viewReadOnly=a.observable(!1),this.viewProperties=a.observableArray([]),this.viewTags=a.observable(""),this.viewTags.visibility=a.observable(!1),this.viewTags.focusTrigger=a.observable(!1),this.viewTags.focusTrigger.subscribe(function(e){e||""!==this.viewTags()?e&&this.viewTags.visibility(!0):this.viewTags.visibility(!1)},this),this.viewSaveTrigger=a.observable(l.SaveSettingsStep.Idle),this.viewPropertiesNames=this.viewProperties.filter(function(e){return-1=s&&(this.bDropPageAfterDelete=!0),n.delay(function(){n.each(o,function(e){t.remove(e)})},500))},i.prototype.deleteSelectedContacts=function(){00?s:0),d.isNonEmptyArray(i.Result.Tags)&&(a=n.map(i.Result.Tags,function(e){var t=new S;return t.parse(e)?t:null}),a=n.compact(a))),t.contactsCount(s),t.contacts(o),t.contacts.loading(!1),t.contactTags(a),t.viewClearSearch(""!==t.search())},i,c.Defaults.ContactsPerPage,this.search())},i.prototype.onBuild=function(e){this.oContentVisible=o(".b-list-content",e),this.oContentScrollable=o(".content",this.oContentVisible),this.selector.init(this.oContentVisible,this.oContentScrollable,l.KeyState.ContactList);var t=this;r("delete",l.KeyState.ContactList,function(){return t.deleteCommand(),!1}),e.on("click",".e-pagenator .e-page",function(){var e=a.dataFor(this);e&&(t.contactsPage(d.pInt(e.value)),t.reloadContactList())}),this.initUploader()},i.prototype.onShow=function(){v.routeOff(),this.reloadContactList(!0)},i.prototype.onHide=function(){v.routeOn(),this.currentContact(null),this.emptySelection(!0),this.search(""),this.contactsCount(0),this.contacts([])},e.exports=i}(t,e)},{$:26,"App:Knoin":33,"App:RainLoop":3,Consts:6,Enums:7,Globals:9,"Knoin:AbstractViewModel":36,LinkBuilder:11,"Model:Contact":40,"Model:ContactProperty":41,"Model:ContactTag":42,"Model:Email":43,Selector:13,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,Utils:14,"View:Popup:Compose":88,"View:Popup:Contacts":89,_:31,key:27,ko:28,window:32}],90:[function(e,t){!function(e,t){"use strict";function i(){l.call(this,"Popups","PopupsFilter"),this.filter=s.observable(null),this.selectedFolderValue=s.observable(o.Values.UnuseOptionValue),this.folderSelectList=a.folderMenuForMove,this.defautOptionsAfterRender=n.defautOptionsAfterRender,r.constructorEnd(this)}var s=t("ko"),o=t("Consts"),n=t("Utils"),a=t("Storage:RainLoop:Data"),r=t("App:Knoin"),l=t("Knoin:AbstractViewModel");r.extendAsViewModel("PopupsFilterViewModel",i),i.prototype.clearPopup=function(){},i.prototype.onShow=function(e){this.clearPopup(),this.filter(e)},e.exports=i}(t,e)},{"App:Knoin":33,Consts:6,"Knoin:AbstractViewModel":36,"Storage:RainLoop:Data":70,Utils:14,ko:28}],91:[function(e,t){!function(e,t){"use strict";function i(){u.call(this,"Popups","PopupsFolderClear"),this.selectedFolder=s.observable(null),this.clearingProcess=s.observable(!1),this.clearingError=s.observable(""),this.folderFullNameForClear=s.computed(function(){var e=this.selectedFolder();return e?e.printableFullName():""},this),this.folderNameForClear=s.computed(function(){var e=this.selectedFolder();return e?e.localName():""},this),this.dangerDescHtml=s.computed(function(){return n.i18n("POPUPS_CLEAR_FOLDER/DANGER_DESC_HTML_1",{FOLDER:this.folderNameForClear()})},this),this.clearCommand=n.createCommand(this,function(){var e=this,i=this.selectedFolder();i&&(a.message(null),a.messageList([]),this.clearingProcess(!0),i.messageCountAll(0),i.messageCountUnread(0),r.setFolderHash(i.fullNameRaw,""),l.folderClear(function(i,s){e.clearingProcess(!1),o.StorageResultType.Success===i&&s&&s.Result?(t("App:RainLoop").reloadMessageList(!0),e.cancelCommand()):e.clearingError(s&&s.ErrorCode?n.getNotification(s.ErrorCode):n.getNotification(o.Notification.MailServerError))},i.fullNameRaw))},function(){var e=this.selectedFolder(),t=this.clearingProcess();return!t&&null!==e}),c.constructorEnd(this)}var s=t("ko"),o=t("Enums"),n=t("Utils"),a=t("Storage:RainLoop:Data"),r=t("Storage:RainLoop:Cache"),l=t("Storage:RainLoop:Remote"),c=t("App:Knoin"),u=t("Knoin:AbstractViewModel");c.extendAsViewModel("PopupsFolderClearViewModel",i),i.prototype.clearPopup=function(){this.clearingProcess(!1),this.selectedFolder(null)},i.prototype.onShow=function(e){this.clearPopup(),e&&this.selectedFolder(e)},e.exports=i}(t,e)},{"App:Knoin":33,"App:RainLoop":3,Enums:7,"Knoin:AbstractViewModel":36,"Storage:RainLoop:Cache":69,"Storage:RainLoop:Data":70,"Storage:RainLoop:Remote":74,Utils:14,ko:28}],92:[function(e,t){!function(e,t){"use strict";function i(){u.call(this,"Popups","PopupsFolderCreate"),a.initOnStartOrLangChange(function(){this.sNoParentText=a.i18n("POPUPS_CREATE_FOLDER/SELECT_NO_PARENT")},this),this.folderName=s.observable(""),this.folderName.focused=s.observable(!1),this.selectedParentValue=s.observable(n.Values.UnuseOptionValue),this.parentFolderSelectList=s.computed(function(){var e=[],t=null,i=null,s=r.folderList(),o=function(e){return e?e.isSystemFolder()?e.name()+" "+e.manageFolderSystemName():e.name():""};return e.push(["",this.sNoParentText]),""!==r.namespace&&(t=function(e){return r.namespace!==e.fullNameRaw.substr(0,r.namespace.length)}),a.folderListOptionsBuilder([],s,[],e,null,t,i,o)},this),this.createFolder=a.createCommand(this,function(){var e=this.selectedParentValue();""===e&&1 li"),o=i&&("tab"===i.shortcut||"right"===i.shortcut),n=s.index(s.filter(".active"));return!o&&n>0?n--:o&&n"),this.submitRequest(!0),o.delay(function(){n=s.openpgp.generateKeyPair({userId:i,numBits:a.pInt(e.keyBitLength()),passphrase:a.trim(e.password())}),n&&n.privateKeyArmored&&(l.privateKeys.importKey(n.privateKeyArmored),l.publicKeys.importKey(n.publicKeyArmored),l.store(),t("App:RainLoop").reloadOpenPgpKeys(),a.delegateRun(e,"cancelCommand")),e.submitRequest(!1)},100),!0)}),l.constructorEnd(this)}var s=t("window"),o=t("_"),n=t("ko"),a=t("Utils"),r=t("Storage:RainLoop:Data"),l=t("App:Knoin"),c=t("Knoin:AbstractViewModel");l.extendAsViewModel("PopupsNewOpenPgpKeyViewModel",i),i.prototype.clearPopup=function(){this.name(""),this.password(""),this.email(""),this.email.error(!1),this.keyBitLength(2048)},i.prototype.onShow=function(){this.clearPopup()},i.prototype.onFocus=function(){this.email.focus(!0)},e.exports=i}(t,e)},{"App:Knoin":33,"App:RainLoop":3,"Knoin:AbstractViewModel":36,"Storage:RainLoop:Data":70,Utils:14,_:31,ko:28,window:32}],98:[function(e,t){!function(e,t){"use strict";function i(){l.call(this,"Popups","PopupsTwoFactorTest");var e=this;this.code=s.observable(""),this.code.focused=s.observable(!1),this.code.status=s.observable(null),this.testing=s.observable(!1),this.testCode=n.createCommand(this,function(){this.testing(!0),a.testTwoFactor(function(t,i){e.testing(!1),e.code.status(o.StorageResultType.Success===t&&i&&i.Result?!0:!1)},this.code())},function(){return""!==this.code()&&!this.testing()}),r.constructorEnd(this)}var s=t("ko"),o=t("Enums"),n=t("Utils"),a=t("Storage:RainLoop:Remote"),r=t("App:Knoin"),l=t("Knoin:AbstractViewModel");r.extendAsViewModel("PopupsTwoFactorTestViewModel",i),i.prototype.clearPopup=function(){this.code(""),this.code.focused(!1),this.code.status(null),this.testing(!1)},i.prototype.onShow=function(){this.clearPopup()},i.prototype.onFocus=function(){this.code.focused(!0)},e.exports=i}(t,e)},{"App:Knoin":33,Enums:7,"Knoin:AbstractViewModel":36,"Storage:RainLoop:Remote":74,Utils:14,ko:28}],99:[function(e,t){!function(e,t){"use strict";function i(){a.call(this,"Popups","PopupsViewOpenPgpKey"),this.key=s.observable(""),this.keyDom=s.observable(null),n.constructorEnd(this)}var s=t("ko"),o=t("Utils"),n=t("App:Knoin"),a=t("Knoin:AbstractViewModel");n.extendAsViewModel("PopupsViewOpenPgpKeyViewModel",i),i.prototype.clearPopup=function(){this.key("")},i.prototype.selectKey=function(){var e=this.keyDom();e&&o.selectElement(e)},i.prototype.onShow=function(e){this.clearPopup(),e&&this.key(e.armor)},e.exports=i}(t,e)},{"App:Knoin":33,"Knoin:AbstractViewModel":36,Utils:14,ko:28}],100:[function(e,t){!function(e,t){"use strict";function i(e){a.call(this,"Left","SettingsMenu"),this.leftPanelDisabled=o.leftPanelDisabled,this.menu=e.menu,n.constructorEnd(this)}var s=t("LinkBuilder"),o=t("Globals"),n=t("App:Knoin"),a=t("Knoin:AbstractViewModel");n.extendAsViewModel("SettingsMenuViewModel",i),i.prototype.link=function(e){return s.settings(e)},i.prototype.backToMailBoxClick=function(){n.setHash(s.inbox())},e.exports=i}(t,e)},{"App:Knoin":33,Globals:9,"Knoin:AbstractViewModel":36,LinkBuilder:11}],101:[function(e,t){!function(e,t){"use strict";function i(){l.call(this,"Right","SettingsPane"),r.constructorEnd(this)}var s=t("key"),o=t("Enums"),n=t("LinkBuilder"),a=t("Storage:RainLoop:Data"),r=t("App:Knoin"),l=t("Knoin:AbstractViewModel");r.extendAsViewModel("SettingsPaneViewModel",i),i.prototype.onBuild=function(){var e=this;s("esc",o.KeyState.Settings,function(){e.backToMailBoxClick()})},i.prototype.onShow=function(){a.message(null)},i.prototype.backToMailBoxClick=function(){r.setHash(n.inbox())},e.exports=i}(t,e)},{"App:Knoin":33,Enums:7,"Knoin:AbstractViewModel":36,LinkBuilder:11,"Storage:RainLoop:Data":70,key:27}],102:[function(e,t){!function(e,t){"use strict";function i(){o.call(this),s.constructorEnd(this)}var s=t("App:Knoin"),o=t("View:RainLoop:AbstractSystemDropDown");s.extendAsViewModel("SettingsSystemDropDownViewModel",i,o),e.exports=i}(t,e)},{"App:Knoin":33,"View:RainLoop:AbstractSystemDropDown":77}]},{},[1]);
\ No newline at end of file