PageSourceSearch

http://webmail.es/appsuite/v=7.10.5-34.20220503.102501/precore.js

js webmail.es collected 2026-09-28 14:28:18 UTC 648,081 bytes, 1 lines download raw bytes

1define(ox.base+"/precore.js",["io.ox/core/boot/config","io.ox/core/manifests"],function(e){"use strict";var t=$.Deferred();ox.session?e.user().then(t.resolve,t.reject):ox.once("login:success",function(){e.user().then(t.resolve,t.reject)}),t.then(function(){define("io.ox/find/main",["io.ox/find/view-placeholder","io.ox/core/folder/api","io.ox/core/extensions","settings!io.ox/core","gettext!io.ox/core","io.ox/core/api/jobs"],function(t,o,n,a,r,e){function l(e){var t=[e.getName(),e.get("inplace")?"inplace":"standalone",e.getModule()];return _.compact(t).join(":")}var d=$.Deferred().reject("please launch app first");e.on("added:find",function(){require(["io.ox/core/yell"],function(e){e("info",r("Please wait, your search may take a while"))})});function i(e){var s,i;return e=_.extend({},{inplace:!0},e),(s=ox.ui.createApp(_.extend({name:"io.ox/find",title:r("Search"),state:"created"},e))).mediator({props:function(e){e.props=new Backbone.Model},"props-mandatory":function(e){var t=a.get("search/mandatory",{});t.account=t.account||[],t.account.push("drive"),e.props.set("mandatory",t)},"props-default":function(e){e.props.set("default",a.get("search/default","io.ox/mail"))},"props-mapping":function(e){var t=e.props.get("default-app");e.props.set("mapping",{"io.ox/mail/compose":"io.ox/mail","com.voiceworks/ox-messenger":t,"io.ox/drive":"io.ox/files","io.ox/office/text":"io.ox/files","io.ox/office/portal":"io.ox/files","io.ox/office/spreadsheet":"io.ox/files","io.ox/office/presentation":"io.ox/files","io.ox/office/portal/text":"io.ox/files","io.ox/office/portal/spreadsheet":"io.ox/files","io.ox/office/portal/presentation":"io.ox/files","io.ox/portal":t,"io.ox/settings":t})},cid:function(e){e.cid=l(e)},"window-inplace":function(e){e.get("inplace")&&e.set("window",e.get("parent").getWindow())},state:function(e){var t;e.get("inplace")&&(t=e.get("parent"),e.on({"find:query:result":function(){!0===e.isActive()&&t.props.set("find-result",!0)},"find:idle":function(){t.props.set("find-result",!1)}}))},reset:function(e){e.get("inplace")&&(e.listenTo(e.get("parent"),"folder:change folder-virtual:change",e.cancel),e.listenTo(e.get("parent").props,"change:folderview",e.cancel))},"enable-disable-toggle":function(o){o.get("inplace")&&o.listenTo(o.get("parent").treeView,"selection:action",function(e,t){var i=$(e[t]);i.hasClass("selected")||o.updateState(i.attr("data-id"))})},vgrid:function(i){var t,e;!i.get("inplace")||(t=i.get("parent").grid)&&t.addTemplate&&(t.setAllRequest("search",function(){var e={sort:t.prop("sort"),order:t.prop("order")};return i.getSearchResult(e,!0).then(function(e){return e&&e.results?e.results:[]})}),t.setListRequest("search",function(e){var t=[e];return $.Deferred().resolveWith(i,t)}),i.on({"find:query":function(){t.setMode("search"),e=t.getEmptyMessage(),t.setEmptyMessage(function(){return r("No matching items found.")})},"find:idle":function(){"all"!==t.getMode()&&(t.setMode("all"),t.setEmptyMessage(e))}}))},"listview-empty-message":function(e){var t;e.get("parent").listView&&(t=e.get("parent").listView.ref,n.point(t+"/notification/empty").extend({id:"search",index:100,draw:function(e){e.app.props.get("find-result")&&this.text(r("No matching items found."))}}))},"listview-empty-message-action":function(e){var t;e.get("parent").listView&&!e.isMandatory("folder")&&(t=e.get("parent").listView.ref,n.point(t+"/notification/empty").extend({id:"search-action",index:200,draw:function(o){var e;o.app.props.get("find-result")&&((e=o.app.get("find").model.manager).get("folder")&&"disabled"===e.get("folder").get("values").get("custom").getOption().id||this.append($('<button type="button" class="btn btn-link" data-action="search-button">').text(r("Search in all folders")).on("click",function(){e.activate("folder","custom","disabled"),require(["io.ox/metrics/main"],function(e){var t=o.app.get("name")||"unknown",i=_.last(t.split("/"));e.trackEvent({app:i,target:"list/empty/search/filter/folder",action:"remove"})})})))}}))},listview:function(s){s.get("inplace")&&s.on("change:state",function(e,t){var r;
1"launched"!==t||(r=s.get("parent")).listView&&require(["io.ox/core/api/collection-loader"],function(e){var t=s.view.model.manager,i=_.bind(t.getResponseCid,t),o=r.listView.loader,n="default",a=new e({module:"calendar"===s.getModuleParam()?"chronos":s.getModuleParam(),mode:"search",PRIMARY_PAGE_SIZE:o.PRIMARY_SEARCH_PAGE_SIZE||o.PRIMARY_PAGE_SIZE,SECONDARY_PAGE_SIZE:o.SECONDARY_SEARCH_PAGE_SIZE||o.SECONDARY_PAGE_SIZE,isBad:$.noop,fetch:function(e){var n=this,t=e.limit.split(","),i=parseInt(t[0],10),o=parseInt(t[1],10)-i;s.model.set({start:i,size:o,extra:1},{silent:!0});var a={sort:s.props.get("sort"),order:s.props.get("order")};return s.getSearchResult(a,!0).then(function(e){var t=(e=e||{}).results||[],i=e.request||{};if(n.collection.search={next:0!==t.length&&t.length===i.data.size},!t.length)return t;var o=t[0];return o.original_folder_id&&(o.original_folder_id===o.folder_id||t.forEach(function(e){_.extend(e,{id:e.original_id||e.id,folder_id:e.original_folder_id||e.folder_id})})),t})},cid:i});r.listView.on("collection:load",function(){"search"===this.loader.mode&&a.collection&&(a.collection.expired=!0)}),s.trigger("collectionLoader:created",a);s.on({"find:idle":function(){"search"===n&&(r.listView.connect(o),r.listView.load()),n="default"},"find:query":_.debounce(function(){"search"!==r.listView.loader.mode&&(r.listView.connect(a),n="search"),r.listView.load()},10)})})})},quit:function(e){e.get("inplace")&&e.listenTo(e.get("parent"),"quit",e.quit)},"window-standalone":function(e){var t;e.get("inplace")||(e.setWindow(t=ox.ui.createWindow({name:"io.ox/find",chromeless:!0})),t.show())},"file-storages":function(t){if(!("files"===t.getModuleParam()))return t.set("storages",[]);require(["io.ox/core/api/filestorage"],function(e){e.rampup().then(function(){t.set("storages",e.getAccountsCache()),t.get("storages").on({change:$.noop,add:$.noop,remove:$.noop})})})}}),s.cancel=function(){this.view&&this.view.cancel()},s.updateState=function(e){s.trigger(o.isVirtual(e)?"view:disable":"view:enable")},s.getModule=function(){return s.get("parent").get("name")},s.getModuleParam=function(){return s.getModule().split("/")[1]},s.isActive=function(){return!!s.view&&s.view.isActive()},s.isMandatory=function(e){var t=s.props.get("mandatory"),i=s.getModuleParam();return"files"===i&&(i="drive"),0<=(t[e]||[]).indexOf(i)},s.getFolderFacetValue=function(){if(s.isActive())return(_(s.model.manager.getRequest()).findWhere({facet:"folder"})||{}).value},s.prepare=function(){s.set("state","preparing"),s.mediate(),s.placeholder=new t({app:s});var e=s.get("parent").folder.get();s.updateState(e),s.listenToOnce(s.placeholder,"launch",s.launch),s.set("state","prepared")},s.getProxy=function(){var t=$.Deferred();
1return i||(require(["io.ox/find/apiproxy"],function(e){i=t.resolve(e.init(s))}),t)},s.getConfig=function(t){return s.getProxy().then(function(e){return e.config(t)})},s.getSuggestions=function(t){return"launched"!==s.get("state")?d:$.when(s.getProxy(),s.configReady).then(function(e){return e.search(t)})},s.getSearchResult=function(t,i){return"launched"!==s.get("state")?d:s.getProxy().then(function(e){return e.query(t,i)})},s.configReady=$.Deferred(),s.updateConfig=function(){var e;e=s.get("parent"),$.when(e.folder.getData(),e.folder.isDefault()).then(function(e,t){var i=[],o=s.model.manager;if(t&&!s.isMandatory("folder")||i.push({facet:"folder",filter:null,value:e.id}),!s.isMandatory("account")||o.findWhere({id:"account"})&&o.findWhere({id:"account"}).getActive().length||i.push({facet:"account",filter:null,value:e.account_id}),i.length)return{data:{facets:i}}}).then(s.getConfig).then(function(e){e=_.reject(e,function(e){return"contact"===e.id}),s.model.manager.update(e),s.trigger("find:config-updated"),s.configReady.resolve()},function(t){require(["io.ox/core/yell"],function(e){e(t)}),s.cancel()})},s.launch=function(){"prepared"===s.get("state")&&(s.set("state","launching"),s.placeholder&&(s.placeholder.destroy(),delete s.placeholder),require(["io.ox/find/bundle"],function(){require(["io.ox/find/model","io.ox/find/view"],function(e,t){var i,o;s.model=new e({app:s}),s.view=new t({app:s,model:s.model}),i=s.model.manager,o="files"===s.getModuleParam(),s.listenTo(i,{active:_.debounce(function(e){s.model.manager.isFolderOnly()&&(e=0),o&&s.model.manager.isAccountOnly()&&(e=0),s.trigger(e?"find:query":"find:idle")},10)}),s.listenTo(i,{"change:list-of-actives":_.debounce(function(a,e,r){require(["io.ox/metrics/main"],function(e){var t=s.get("parent").get("name")||"unknown",i=_.last(t.split("/")),o=r.get("facet").get("id").split(":")[0],n="deactivate"===a||r.get("facet")&&"disabled"===r.get("facet").getValue().getOption().id;e.trackEvent({app:i,target:"search/filter/"+o,action:n?"remove":"add"})})},10)}),s.listenTo(s.view,{cancel:function(){s.trigger("find:cancel")},show:function(){s.updateConfig()}}),s.view.render(),s.set("state","launched"),ox.trigger("search:load",s)}),require(["io.ox/contacts/api"],function(e){e.on("refresh.all",function(){s.getProxy().done(function(e){e.resetCache()})})})}))},s}return{getApp:i,reuse:function(e){return ox.ui.App.reuse(l(e))||i(e)}}}),define("io.ox/find/view-placeholder",["io.ox/backbone/views/disposable","gettext!io.ox/core"],function(e,t){return e.extend({events:{focusin:"focused",keyup:"showSpinner"},initialize:function(e){var t=e.app.getWindow();this.setElement(t.nodes.sidepanel.find(".io-ox-find")),this.ui={field:this.$el.find(".search-field"),action:this.$el.find(".action-show")},this.options=e,this.listenTo(e.app,"view:disable",this.disable),this.listenTo(e.app,"view:enable",this.enable)},hideSpinner:function(){this.ui.action.idle()},showSpinner:function(){this.ui.action.busy({immediate:!0})},disable:function(){!0!==this.ui.field.prop("disabled")&&(this.ui.field.prop("disabled",!0),this.ui.action.prop("disabled",!0),this.ui.field.find("input.token-input.tt-input").removeAttr("tabindex"),this.$el.find(".arialive").text(t("Search function not supported in this folder")))},enable:function(){!1!==this.ui.field.prop("disabled")&&(this.ui.field.prop("disabled",!1),this.ui.action.prop("disabled",!1),this.ui.field.find("input.token-input.tt-input").attr("tabindex",0),this.$el.find(".arialive").text(""))},focused:function(){this.trigger("launch"),this.destroy()},destroy:function(){this.disposed||(this.hideSpinner(),this.trigger("destroy"),this.dispose())}})}),define("io.ox/core/desktop",["io.ox/core/event","io.ox/backbone/views/window","io.ox/core/extensions","io.ox/core/cache","io.ox/core/notifications","io.ox/core/upsell","io.ox/core/adaptiveLoader","io.ox/core/folder/api","io.ox/core/api/apps","io.ox/find/main","io.ox/core/main/icons","settings!io.ox/core","gettext!io.ox/core","io.ox/core/capabilities"],function(r,s,c,e,a,t,l,p,u,i,o,h,f,n){var g=null,d=0,m=new e.SimpleCache("app-cache",!0);function v(e){var t=h.get("search/modules")||[];return e=e.replace(/^io\.ox\//,"").replace(/files/,"drive"),-1<t.indexOf(e)}var x=Backbone.Model.extend({defaults:{title:""},initialize:function(e){var t=this;this.options=e||{},this.guid=this.options.guid||d++,this.id=this.id||(this.options.refreshable?this.options.name:"")||"app-"+this.guid,this.set("path",this.options.path?this.options.path:this.getName()+"/main"),this.set("id",this.id),this.set("openInTab",this.options.openInTab),this.set("tabUrl",this.options.tabUrl),this.getInstance=function(){return t}},getName:function(){return this.get("name")},setTitle:function(e){if(this.set("title",e),!this.options.floating)return this;this.getWindow().floating&&this.getWindow().floating.setTitle(e)},getTitle:function(){return this.get("title")},getWindow:$.noop,saveRestorePoint:$.noop,call:$.noop});ox.ui.AppPlaceholder=x;var b,w,y,k,C,S,T,D,A,M,N,F={LIMIT:265e3,length:function(e){return JSON.stringify(e).length},crop:function(e,t,i){var o=F.length,n=e[i];return F.LIMIT<o(e)-o(n||"")+o(t)?(n?t=n:t.point.data={},"exceeded"in t||"io.ox/mail/compose"===t.module||(a.yell("warning",f("Failed to automatically save current stage of work. Please save your work to avoid data loss in case the browser closes unexpectedly.")),t.exceeded=!0)):delete t.exceeded,t}};function E(){var e=void 0!==_.url.hash("restore")&&/^(0|false)$/i.test(_.url.hash("restore"));return void 0!==_.url.hash("restore")&&/^(1|true)$/i.test(_.url.hash("restore"))||!e&&h.get("features/storeSavePoints",!0)}function I(a){_(b).each(function(e,t){var i,o,n;i=a,o=t,n=_(i).pluck("id"),i[_(n).indexOf(o)]||delete b[t]})}function P(r){this.main=$(),this.name=r,this.rendered=!1,this.render=$.noop,this.save=$.noop,this.restore=$.noop,this.afterShow=$.noop,this.afterHide=$.noop,this.show=function(e,t){var i=e.getWindow(),o=t.animation?{animation:t.animation}:{},n=this,a=t.perspective.split(":")[0];t.disableAnimations&&(o.disableAnimations=!0),t.perspective!==i.currentPerspective&&(this.main=e.pages.getPage(a),e.pages.getPageObject(a).perspective||(e.pages.getPageObject(a).perspective=this),i.addPerspective(this),"main"!==i.currentPerspective?i.trigger("change:perspective",r,t.perspective):i.trigger("change:initialPerspective",r),_.url.hash("perspective",t.perspective),this.rendered||(this.render(e,t),this.rendered=!0),e.pages.getPage(a).one("pageshow",function(){n.afterShow(e,t),i.currentPerspective=t.perspective,i.updateToolbar()}),e.pages.getCurrentPage().name===a&&(this.afterShow(e,t),i.currentPerspective=t.perspective,i.updateToolbar()),e.pages.changePage(a,o))},this.hide=function(){this.afterHide()}}function L(e){this.options=e||{}
1,this.id=e.id,this.name=e.name||"generic",this.nodes={title:$(),toolbar:$(),controls:$(),closeButton:$(),disabled:$()},this.state={visible:!1,running:!1,open:!1},this.app=null,this.detachable=!1,this.simple=!1,this.page=e.page;var r=this.page?this.page:T,t=!1,i={},s=this,l=!0,d=$.Deferred(),o=this.name;this.updateToolbar=function(){var e=this.app&&this.app.folder?this.app.folder.get():null,t=c.Baton({window:this,$:this.nodes,app:this.app,folder:e});c.point(o+"/toolbar").invoke("draw",this.nodes.toolbar.empty(),t)},c.point(o+"/window-title").extend({id:"default",draw:function(){return $('<h1 class="window-title">').append(c.point(o+"/window-title-label").invoke("draw",this).first().value()||$())}}),c.point(o+"/window-title-label").extend({id:"default",draw:function(){return $('<span class="window-title-label">')}}),c.point(o+"/window-body").extend({id:"default",draw:function(){return this.body.append(this.main=$('<div class="abs window-content">'))}}),this.shown=d.promise(),this.setHeader=function(e,t){var i,o,n;return"top"===(t=t||(_.device("!desktop")?"top":h.get("features/windowHeaderPosition","bottom")))?(this.nodes.header.append(e.addClass("container")),this.nodes.outer.addClass("header-top")):(this.nodes.footer.append(e.addClass("container")),this.nodes.outer.addClass("header-bottom")),i=this.nodes.header,o=$('<div style="width: 100px; visibility: hidden; overflow-y: scroll;">').appendTo("body"),n=100-o[0].clientWidth,o.remove(),i.css("padding-right",n),this.nodes.header},this.resume=function(){this.show(_.noop,!0)},this.show=function(e,t){if(this.app&&this.app.get("startHidden"))return this.app.once("revealApp",function(){s.app.set("startHidden",!1),s.app.get("prefetchDom")&&s.nodes.outer.removeAttr("aria-hidden").css("visibility",""),s.show(e,!0)}),this.app.get("prefetchDom")&&(this.nodes.outer.attr("aria-hidden",!0).css("visibility","hidden"),this.nodes.outer.prependTo(r)),this;var i=!1,o=this.app&&this.app.options.plugged;this.floating||this.app.options.mobilelazyload||o||!g||!_.url.hash("app")||s.name===_.url.hash("app").split(":",1)[0]||(i=!0),ox.trigger("change:document:title",this.app.get("title"));var n=this.nodes.outer,a=n.parent();if(i&&!t||!s||g===this&&0!==a.length)_.call(e);else{if(0===n.parent().length&&(this.floating?this.floating.open(!0):this.simple?(n.insertAfter("#io-ox-appcontrol"),document.body.style.setProperty("overflow-y","auto","important")):n.appendTo(r)),ox.ui.windowManager.trigger("window.beforeshow",s),this.trigger("beforeshow"),this.updateToolbar(),this.floating||o||_.url.hash("app")&&s.app.getName()===_.url.hash("app").split(":",1)[0]||_.url.hash("app",s.app.getName()),n.show(),null===s)return;this.floating||!g||g===s||this.page||g.hide(),this.floating||o||(g=s),_.call(e),s.state.visible=!0,s.state.open=!0,s.trigger("show"),l&&(d.resolve(),s.trigger("show:initial"),s.trigger("open"),s.state.running=!0,ox.ui.windowManager.trigger("window.open",s),ox.trigger("app:ready",s.app),l=!1),ox.ui.windowManager.trigger("window.show",s),u.trigger("resume",s.app)}return this},this.hide=function(){if(!this.floating)return this.trigger&&(this.trigger("beforehide"),this.simple||this.detachable&&0===this.nodes.outer.find("iframe").length?(this.nodes.outer.detach(),$("body").css("overflowY","")):this.nodes.outer.hide(),this.state.visible=!1,this.trigger("hide"),ox.ui.windowManager.trigger("window.hide",this),g===this&&(g=null)),this},this.toggle=function(){return g===this?this.hide():this.show(),this},this.preQuit=function(){return window.cordova||this.hide(),this.state.open=!1,this.floating&&this.floating.minimize(),ox.ui.windowManager.trigger("window.pre-quit",this),this},this.close=function(){var e=this;return this.trigger&&(t&&null!==this.app?(this.trigger("beforequit"),this.app.quit().done(function(){e.state.open=!1,e.state.running=!1,e=null})):(this.hide(),this.state.open=!1,this.trigger("close"),ox.ui.windowManager.trigger("window.close",this))),this},this.busy=function(e,t,i){var o;return s&&(o=s.nodes.blocker,$("body").focus(),s.nodes.disabled=s.nodes.disabled.add(s.nodes.main.find('input:not([type="file"], [type="hidden"]), select, textarea, button').not(":disabled").prop("disabled",!0)),_.isNumber(e)?(e=Math.max(0,Math.min(e,1)),o.idle().find(".progress-bar").eq(0).css("width",100*e+"%").parent().show(),_.isNumber(t)?o.find(".progress-bar").eq(1).css("width",100*t+"%").parent().show():_.isString(t)&&o.find(".footer").text(t),o.show()):(o.find(".progress").hide(),o.busy().show()),_.isFunction(i)&&i.call(o),s.trigger("busy")),this},this.idle=function(){return s&&(s.nodes.blocker.find(".progress").hide().end().idle().hide().find(".header, .footer").empty(),s.nodes.disabled.prop("disabled",!1),s.nodes.disabled=$(),s.trigger("idle")),this},this.destroy=function(){return this.hide(),this.trigger("destroy"),null!==this.app&&(this.app.win=null,this.app=null),this.events.destroy(),this.show=this.busy=this.idle=$.noop,this.nodes.outer.remove(),this.nodes=s=null,this},this.setQuitOnClose=function(e){return t=!!e,this},this.getTitle=function(){return""},this.setTitle=function(e){return ox.trigger("change:document:title",[e,this.app.get("title")]),this},this.addClass=function(){var e=this.nodes.outer;return e.addClass.apply(e,arguments)},this.addButton=function(e){var t=$.extend({label:"Action",action:$.noop},e||{});return $("<div>").addClass("io-ox-toolbar-link").text(String(t.label)).on("click",t.action).appendTo(this.nodes.toolbar)},this.addPerspective=function(e){i[e.name]||(i[e.name]=e)},this.getPerspective=function(){var e=this.currentPerspective.split(":")[0];return i[e]},this.currentPerspective="main",this.setChromeless=function(e){e?(this.nodes.outer.addClass("chromeless-window"),this.nodes.body.css("left","0px")):(this.nodes.outer.removeClass("chromeless-window"),this.nodes.body.css("left",""))}}function q(e){clearTimeout(e),clearTimeout(A),A=e=null,setTimeout(function(){null===e&&ox.idle()},0)}return ox.ui.App=x.extend({defaults:{window:null,state:"ready",saveRestorePointTimer:null,launch:function(){return $.when()},resume:function(){return $.when()},quit:function(){return $.when()}},initialize:function(){var r=this;x.prototype.initialize.apply(this,arguments),this.set("uniqueID",_.now()+"."+String(Math.random()).substr(3,4));var t,i,o,n,s,l,d,c,e=$.proxy(this.saveRestorePoint,this);function u(e,t,i,o,n){var a=_.url.hash("app")!==i;s=String(e),a||(l&&(l.setTitle(t.display_title||t.title||""),l.updateToolbar()),d&&d.prop("folder")!==s&&(d.busy().prop("folder",s),d.refresh(),p.reload(e)),_.url.hash("folder",s),r.trigger("folder:change",s,t,n)),o.resolve(t,a),"resolved"!==c.state()&&c.resolve(s,t)}$(window).on("unload",e),this.disableRestorePointTimer||this.set("saveRestorePointTimer",setInterval(e,1e4)),this.folder=(d=l=s=null,c=$.Deferred(),p.on("after:rename",function(e,t){l&&l.setTitle(t.title||"")}),t={initialized:c.promise(),unset:function(){s=null,_.url.hash("folder",null),l&&l.setTitle(""),d&&d.clear()},set:function(t,i){var o,e,n,a=$.Deferred();return null!=t&&String(t)!==s?(o=_.url.hash("app"),n=(e=p.pool.getModel(t)).toJSON(),e.has("title")?u(t,n,o,a,i):p.get(t).then(function(e){u(t,e,o,a,i)},function(){console.warn("Failed to change folder",t),a.reject()})):String(t)===s?a.resolve(p.pool.getModel(t).toJSON(),!1):a.reject(),a},setType:function(e){return i=e,this},setDefault:function(){return $.when().then(function(){var e=p.getDefaultFolder(i);return e?t.set(e):p.getExistingFolder(i).then(function(e){return t.set(e)},function(){return $.Deferred().reject({error:f("Could not get a default folder for this application.")})})})},isDefault:function(){return $.when().then(function(){var e=p.getDefaultFolder(i);return String(s)===String(e)})},get:function(){return s},getData:function(){if(null===s)return $.Deferred().resolve({});var e=p.pool.getModel(s);return $.Deferred().resolve(e.toJSON())},getModel:function(){return p.pool.getModel(s)}
1,can:function(i){return null===s?$.when(!1):require(["io.ox/core/folder/api"]).then(function(t){return t.get(s).then(function(e){return t.can(i,e)})})},updateTitle:function(e){return l=e,this},updateGrid:function(e){return d=e,this},destroy:function(){t=l=d=null},handleErrors:(o=_.debounce(function(e){var t=p.pool.getModel(r.folder.get());t&&p.list(t.get("folder_id"),{cache:!1}),r.folder.setDefault(),a.yell(e)},1e3,!0),n=new RegExp("(APP-0013|CON-0104|FLD-0003|FLD-0008|FLD-1004|CAL-4060|IMAP-1002|IMAP-2041|IFO-0400|FILE_STORAGE-0005|FILE_STORAGE-0055|TSK-0023)"),function(){r.listenTo(ox,"http:error",function(e,t){var i=t.params.folder||t.data.folder||e.folder||t.params.id;if(i===r.folder.get()&&("IMAP-1002"!==e.code&&"FLD-0008"!==e.code||!p.isBeingDeleted(i))&&n.test(e.code))return/(IMAP-2041|IFO-0400|APP-0013|CON-0104|TSK-0023)/.test(e.code)?p.get(r.folder.get(),{cache:!1}):void o(e)})})})},setLauncher:function(e){return this.set("launch",e),this},setResume:function(e){return this.set("resume",e),this},setQuit:function(e){return this.set("quit",e),this},setWindow:function(t){var e;return this.set("window",t),(t.app=this).options.floating&&(e=this.options.floatingWindowModel||new s.Model(_.extend(_(this.options).pick("closable","displayStyle","size","taskbarIcon","title","name"),{win:t})),t.floating=new s.View({el:t.nodes.outer,model:e}).render(),t.floating.listenTo(e,"quit",function(){t.floating.$header.attr("disabled","disabled").find(".controls button").attr("disabled","disabled"),t.app.quit().done(function(){e.trigger("close")}).fail(function(){t.floating.$header.attr("disabled",!1).find(".controls button").attr("disabled",!1)})}),t.floating.listenTo(e,"change:active change:minimized",function(e){if(t.app.dropZone){if(!(e.get("active")&&!e.get("minimized"))&&t.app.dropZone.remove)return t.app.dropZone.remove();t.app.dropZone.include&&t.app.dropZone.include()}}),t.app.once("quit",function(){e.trigger("close")})),this.has("name")&&t.nodes.outer.attr("data-app-name",this.get("name")),this},getWindow:function(){return this.get("window")},isFindSupported:function(){return v(this.getName())},initFind:function(){if(this.get("find"))return!0;var e=i.getApp({parent:this});return e.prepare(),this.set("find",e),e},getWindowNode:function(){return this.has("window")?this.get("window").nodes.main:$()},getWindowTitle:function(){return this.has("window")?this.get("window").getTitle():""},mediator:function(e){ox.ui.App.mediator(this.getName(),e)},mediate:function(){var e=this;return c.point(this.getName()+"/mediator").each(function(t){try{t.setup&&t.setup(e)}catch(e){console.error("mediate",t.id,e.message,e)}})},registerGlobalEventHandler:function(e,t,i){var o=$(e),n=this.getWindow();function a(){o.on(t,i)}function r(){o.off(t,i)}n.on({show:a,hide:r,quit:r}),n.state.visible&&a()},registerWindowResizeHandler:function(e){var t=this.getWindow();this.registerGlobalEventHandler(window,"resize",e),t.on("show",e),t.state.visible&&e()},setState:function(e){if(!this.options.floating&&!this.options.plugged)for(var t in e)_.url.hash(t,null!==e[t]?String(e[t]):null)},getState:function(){return _.url.hash()},launch:function(e){var t=$.when(),i=this,o=this.getName();if(this.options.floating||this.options.plugged||(o!==_.url.hash("app")&&_.url.hash({folder:null,perspective:null,id:null}),o&&_.url.hash("app",o)),"ready"===this.get("state")){this.set("state","initializing"),ox.trigger("app:init",this),_.extend(this.options,e),o&&c.point(o+"/main").invoke("launch",this,this.options);try{t=this.get("launch").call(this,this.options)||$.when()}catch(e){console.error("Error while launching application:",e.message,e,this)}t.then(function(){u.add(i),i.set("state","running"),i.trigger("launch",i),ox.trigger("app:start",i),!i.get("closable")||i.get("floating")||_.device("smartphone")||s.addNonFloatingApp(i,e)},function(){var e=require("settings!io.ox/core").get("autoStart");throw"none"===e||n.has("guest")||ox.launch(e),arguments})}else if("initializing"!==this.get("state")&&this.has("window")){this.get("window").show(),this.trigger("resume",this),ox.trigger("app:resume",this),o&&c.point(o+"/main").invoke("resume",this,e);try{t=this.get("resume").call(this,e)||$.when()}catch(e){console.error("Error while resuming application:",e.message,e,this)}$(window).trigger("resize.lazyload")}return t.then(function(){return $.Deferred().resolveWith(i,arguments)})},quit:function(t,e){var i,o=!t&&this.get("quit").call(this,e)||$.when(),n=this;return o.done(function(){for(var e in t&&n.destroy&&n.destroy(),n.floating||!n.getWindow()||!n.getWindow().state.visible||_.url.hash("app")&&n.getName()!==_.url.hash("app").split(":",1)[0]||_.url.hash({app:null,folder:null,perspective:null,id:null}),clearInterval(n.get("saveRestorePointTimer")),n.removeRestorePoint(),$(window).off("unload",$.proxy(n.saveRestorePoint,n)),n.folder.destroy(),n.has("window")&&((i=n.get("window")).trigger("quit"),ox.ui.windowManager.trigger("window.quit",i),i.destroy()),n.dropZone&&n.dropZone.remove&&n.dropZone.remove(),u.remove(n),n.trigger("quit"),ox.trigger("app:stop",n),n.set("state","stopped"),n)delete n[e];n=i=null})},saveRestorePoint:function(){var n=this,a=n.get("uniqueID");return this.failSave&&("io.ox/mail/compose"!==this.get("name")||h.get("features/storeMailSavePoints",!0))?ox.ui.App.getSavePoints().then(function(t){var e,i,o;t=t||[];try{e=n.failSave(),i=_(t).pluck("id"),o=_(i).indexOf(a),e&&(e.floating=n.get("floating"),e.id=a,e.cid=n.cid,e.timestamp=_.now(),e.ver
1sion=ox.version,e.ua=navigator.userAgent,e=F.crop(t,e,o),-1<o?t.splice(o,1,e):t.push(e))}catch(e){-1<o&&(t.splice(o,1),delete n.failSave)}return 0<t.length?ox.ui.App.setSavePoints(t):$.when()}):$.when()},removeRestorePoint:function(){var e=this.get("uniqueID");return ox.ui.App.removeRestorePoint(e)}}),_.extend(ox.ui.App,{mediator:function(e,t){var i=c.point(e+"/mediator"),o=0;_(t).each(function(e,t){i.extend({id:t,index:o+=100,setup:e})})},canRestore:function(){return this.getSavePoints().then(function(e){return e&&0<e.length})},cleanupSavepoints:function(){h.get("savepointCleanup",!1)||h.set("savepoints",[]).save().then(function(){h.set("savepointCleanup",ox.version).save()})},getSavePoints:function(){return E()?m.get("savepoints").then(function(e){e=e||[];var t=h.get("savepoints",[]).filter(function(e){return e.restoreById});return e=[].concat(e,t),_(e||[]).filter(function(e){var t="point"in e,i=e.ua===navigator.userAgent;return t&&(i||e.restoreById)})}):$.when([])},storeSavePoints:_.noop,setSavePoints:function(e){if(!E())return $.Deferred().resolve([]);e=e||[];var t=_(e).filter(function(e){return e.restoreById});return e=_(e).filter(function(e){return!e.restoreById}),h.set("savepoints",t),m.add("savepoints",e)},removeAllRestorePoints:function(){return this.setSavePoints([])},removeRestorePoint:(b={},function(e){var t=this;return b[e]=!0,this.getSavePoints().then(function(a){I(a=(a||[]).slice());var r=_(a).pluck("id");return _(b).each(function(e,t){var i,o=_(r).indexOf(t),n=a[o];-1<o&&a.splice(o,1),n&&n.restoreById&&(i=h.get("savepoints",[]),r=_(i).pluck("id"),-1<(o=_(r).indexOf(t))&&(i.splice(o,1),h.set("savepoints",i).save()))}),t.setSavePoints(a).then(function(){return a})})}),restore:function(){return this.cleanupSavepoints(),$.when(this.getSavePoints(),ox.rampup.compositionSpaces).then(function(e,t){return this.restoreLoad({list:e,spaces:t})}.bind(this))},restoreLoad:function(e){var r=this,t=e.list||[],i=e.spaces||[];return $.when.apply($,_([].concat(t,i)).map(function(a){l.stop();var e=l.startAndEnhance(a.module,[a.module+"/main"]);return ox.load(e).then(function(e){var i,t,o=e.getApp(a.passPointOnGetApp?a.point:void 0);if(a.cid&&(o.cid=a.cid),_.device("!smartphone")&&(o.options.floating||o.options.closable))return o.options.floating?(i=new s.Model({cid:a.cid,minimized:!0,id:a.id,title:a.description,closable:!0,lazy:!0,taskbarIcon:o.options.taskbarIcon,name:o.options.name}),t=new s.TaskbarElement({model:i}).render(),s.collection.add(i)):(t=s.addNonFloatingApp(o,{lazyload:!0}),i=t.model),t.listenToOnce(i,"lazyload",function(){var t=a.id;if(a=_.clone(a),o.options.floating)return i.set(_(o.options).pick("closable","displayStyle","size","taskbarIcon","title")),void o.launch({floatingWindowModel:i}).then(function(){return a.id=this.get("uniqueID"),this.failRestore?this.failRestore(a.point):$.when()}).done(function(){r.removeRestorePoint(t).then(r.getSavePoints).then(function(e){e.push(a),!1!==a.keepOnRestore&&r.setSavePoints(e),i.get("quitAfterLaunch")&&i.trigger("quit")})}).fail(function(e){e&&"MSG-0032"===e.code&&_.delay(function(){ox.ui.App.removeRestorePoint(t),i.trigger("close")})});o.launch().then(function(){return a.id=this.get("uniqueID"),this.failRestore?this.failRestore(a.point):$.when()}).done(function(){r.removeRestorePoint(t).then(r.getSavePoints).then(function(e){e.push(a),r.setSavePoints(e)})})}),$.when();var n=a.id;return o.launch().then(function(){return a.id=this.get("uniqueID"),this.failRestore&&"io.ox/mail/compose"===a.module?(o.set("title",a.description||o.get("title")),o.options.mobilelazyload=!0,o.on("mobilelazyload",function(){return(a=_.clone(a)).id=this.get("uniqueID"),this.failRestore(a.point).then(function(){o.set("restored",!0),delete o.options.mobilelazyload,o.launch()})})):this.failRestore?this.failRestore(a.point).then(function(){o.set("restored",!0)}):void 0}).fail(function(e){e&&"MSG-0032"===e.code&&_.delay(function(){ox.ui.App.removeRestorePoint(n)})})})})).done(function(){r.setSavePoints(t)})},get:function(e){return u.where({name:e})},getByCid:function(e){return u.get(e)},reuse:function(t){var e=ox.ui.apps.find(function(e){return e.cid===t});if(e){if("ready"===e.get("state")){var i=s.collection.findWhere({cid:t});if(i)return i.trigger("lazyload"),!0}return e.launch(),!0}return!1},isCurrent:function(e){var t=ox.ui.App.getCurrentApp();return!(!t||t.get("name")!==(_.isString(e)?e:e.model.get("name")))},getCurrentApp:function(){return null!==g?g.app:null},getCurrentFloatingApp:function(){return _.chain(ox.ui.apps.pluck("window")).compact().map(function(e){if("io.ox/help"!==e.app.get("name"))return e.floating&&e.floating.model&&e.floating.model.get("active")?e.app:void 0}
1).compact().first().value()},getCurrentWindow:function(){return g}}),$("#io-ox-core").show(),window.onbeforeunload=function(){var e=u.some(function(e){return _.isFunction(e.hasUnsavedChanges)&&e.hasUnsavedChanges()});if(ox.trigger("beforeunload",e),e)return f("There are unsaved changes.")},ox.ui.createApp=function(e){if(t.visible(e.requires)&&_.device(e.device))return u.add(new ox.ui.App(e))},ox.ui.screens=(w=null,y={add:function(e){return $("<div>",{id:"io-ox-"+e}).addClass("abs").hide().appendTo("#io-ox-screens")},get:function(e){return $("#io-ox-screens").find("#io-ox-"+e)},current:function(){return w},hide:function(e){this.get(e).hide(),this.trigger("hide-"+e)},show:function(i){$("#io-ox-screens").children().each(function(){var e=$(this).attr("id"),t=String(e||"").substr(6);t!==i&&"ad-skyscraper"!==t&&y.hide(t)}),this.get(i).show(),w=i,this.trigger("show-"+i)}},r.extend(y),y),ox.ui.Perspective=(P.show=function(r,s,l){return require([r.get("name")+"/"+s.split(":")[0]+"/perspective"],function(e){var t,i,o,n,a;i=s,o=e,n=l,(a=(t=r).getWindow().getPerspective())&&_.isFunction(a.save)&&a.save(),o&&(o.show(t,_.extend({perspective:i},n)),_.isFunction(o.restore)&&o.restore())})},P),ox.ui.windowManager=(k=r.extend({}),C=[],k.getWindows=function(){return C.slice()},ox.ui.screens.on("hide-windowmanager",function(){g&&g.hide()}),k.hide=function(){ox.ui.screens.hide("windowmanager")},k.show=function(){ox.ui.screens.show("windowmanager")},k.on("window.open window.show",function(e,t){var i;this.show(),C=_(C).without(t),t.options.floating?t.nodes.body.attr("role","region"):(_(C).each(function(e){e.nodes.body.removeAttr("role")}),"io.ox/settings"!==t.options.name&&t.nodes.body.attr("role","main")),C.unshift(t),1<C.length&&(i=_(C).map(function(e){return e.name}),m.add("windows",i||[]))}),k.on("window.beforeshow",function(){k.trigger("empty",!1)}),k.on("window.close window.quit window.pre-quit",function(e,i,t){t=t||e.type+"."+e.namespace;var o,n,a,r=_(C).indexOf(i);if(-1!==r){for("window.quit"===t?C.splice(r,1):"window.close"!==t&&"window.pre-quit"!==t||(C=_(C).without(i)).push(i),o=0,n=C.length;o<n;o++)if((a=C[o])!==i&&a.state.open&&!a.floating){a.resume();break}m.get("windows").done(function(e){var t=_.indexOf(e,i.name);-1<t&&(e.splice(t,1),m.add("windows",e||[]))})}0===_(C).inject(function(e,t){return e+(t.state.open?1:0)},0)?m.get("windows").done(function(e){k.trigger("empty",!0,e&&e[1]||null)}):k.trigger("empty",!1)}),k),ox.ui.createWindow=(S=0,T=$("#io-ox-windowmanager-pane"),function(e){var t=$.extend({chromeless:!1,classic:!1,id:"window-"+S,name:"",title:"",toolbar:!1,width:0,floating:!1},e),i=(String(t.width).match(/^(\d+)(px|%)$/)||["","100","%"]).splice(1),o=i[0],n=i[1],a=new L(t);return a.nodes.outer=$('<div class="window-container">').attr({id:t.id,"data-window-nr":S}),t.simple?(a.simple=!0,a.nodes.outer.addClass("simple-window").append(a.nodes.main=$('<div class="window-content" tabindex="-1">')),a.nodes.blocker=$(),a.nodes.head=$(),a.nodes.body=$()):(a.nodes.outer.append($('<div class="window-container-center">').data({width:o+n}).css({width:o+n}).append(a.nodes.blocker=$('<div class="abs window-blocker">').hide().append($('<div class="abs header">'),$('<div class="progress first"><div class="progress-bar" style="width:0"></div></div>').hide(),$('<div class="progress second"><div class="progress-bar" style="width: 0"></div></div>').hide(),$('<div class="abs footer">')),a.nodes.header=$('<div class="window-header">'),a.nodes.sidepanel=$('<div class="window-sidepanel collapsed">'),a.nodes.body=$('<div class="window-body">'),a.nodes.footer=$('<div class="window-footer">')).on("controller:quit",function(){a.app&&a.app.quit()})),t.classic&&a.nodes.outer.addClass("classic"),t.name&&a.nodes.outer.addClass(t.name.replace(/[./]/g,"-")+"-window"),c.point(t.name+"/window-body").invoke("draw",a.nodes)),r.extend(a),t.search&&console.warn("search is deprecated with 7.6.0. Please use io.ox/find instead"),t.facetedsearch&&console.warn("io.ox/search is deprecated with 7.8.0. Please use io.ox/find instead"),t.find&&v(t.name)&&(c.point("io.ox/find/view").extend({id:"view",index:100,draw:function(e){e.$.viewnode=$('<div class="generic-toolbar top io-ox-find" role="search">'),this.nodes.sidepanel.append(e.$.viewnode).addClass("top-toolbar")}}),c.point("io.ox/find/view").extend({id:"subviews",index:200,draw:function(e){e.$.viewnode.append($('<div class="sr-only arialive" role="status" aria-l
1ive="polite">'),e.$.box=$('<form class="search-box">'),e.$.boxfilter=$('<div class="search-box-filter">'))}}),c.point("io.ox/find/view").extend({id:"form",index:300,draw:function(e){_.extend(e.data,{label:f("Search"),id:_.uniqueId("search")}),e.$.group=$('<div class="form-group has-feedback">').append($('<input type="text" class="form-control has-feedback search-field tokenfield-placeholder f6-target">').attr({"aria-labelledby":e.data.id,placeholder:e.data.label+"..."})),e.$.box.append(e.$.group)}}),c.point("io.ox/find/view").extend({id:"buttons",index:400,draw:function(e){e.$.group.append($('<button type="button" class="btn btn-link form-control-feedback action action-show" data-toggle="tooltip" data-placement="bottom" data-animation="false" data-container="body">').attr({"data-original-title":f("Start search"),"aria-label":f("Start search"),id:e.data.id}).append($('<i class="fa fa-search" aria-hidden="true">')).tooltip(),$('<button type="button" class="btn btn-link form-control-feedback action action-cancel" data-toggle="tooltip" data-placement="bottom" data-animation="false" data-container="body">').attr({"data-original-title":f("Cancel search"),"aria-label":f("Cancel search")}).append($('<i class="fa fa-times-circle" aria-hidden="true">')).tooltip())}}),c.point("io.ox/find/view").invoke("draw",a,c.Baton.ensure({}))),t.chromeless&&a.setChromeless(!0),S++,a}),ox.load=(N=$("#background-loader"),function(i,e){if(assert(arguments.length<=1||2===arguments.length&&!_.isFunction(e),"ox.load does not support callback params."),/\.\./.test(i))throw new Error("module names must not contain relative paths");D=$.Deferred(),M=e&&e.launched?e.launched:$.Deferred().resolve(),N.hasClass("secure")||ox.busy();var t,o,n=t=setTimeout(function(){ox.busy(!0),A=setTimeout(function(){var e;N[0].firstChild||((e=$('<button type="button" class="btn btn-primary">').text(f("Cancel")).fadeIn()).on("click",function(){D.reject(!0),q(t)}),N.append(e),e.focus())},5e3)},1e3);return require(i).always((o=n,void M.always(function(){q(o)}))).then(D.resolve,function(e){if(console.error(e),D.reject(!1),_.isArray(i))for(var t=0;t<i.length;t++)requirejs.undef(i[t])}),D}),ox.launch=function(t,i){var e,o=$.Deferred(),n=Date.now();return _.isString(t)?(l.stop(),e=l.startAndEnhance(t.replace(/\/main$/,""),[t]),ox.load(e,i).then(function(e){return e&&e.getApp?void e.getApp(i).launch(i).done(function(){o.resolveWith(this,arguments),ox.trigger("loadtime",{app:this,id:t,loadStart:n,loadEnd:Date.now()})}):(console.error("Couldn't launch app",t,e),void o.resolve({}))},function(){a.yell("error",f("Failed to start application. Maybe you have connection problems. Please try again.")),requirejs.undef(t)})):o.resolve({}),o},u.on("resume",function(e){l.stop(),l.listen(e.get("name"))}),ox.ui}),define("io.ox/core/api/apps",["io.ox/core/extensions","io.ox/core/manifests","io.ox/core/capabilities","settings!io.ox/core"],function(e,t,i,o){var n=["io.ox/mail","io.ox/calendar","io.ox/contacts","io.ox/files","io.ox/portal","io.ox/tasks","io.ox/office/portal/text","io.ox/office/portal/spreadsheet","io.ox/office/portal/presentation"];function a(e){return e&&!this.blacklist[e.id]}ox.debug&&n.push("io.ox/notes"),_.device("smartphone")&&n.push("io.ox/search"),_.device("smartphone")||n.push("io.ox/chat");var r=Backbone.Model.extend({constructor:function(e,t){Backbone.Model.call(this,{id:e},t)}}),s=Backbone.Collection.extend({model:r}),l=Backbone.Collection.extend({initialize:function(){var e;
1this.blacklist=_.reduce(o.get("apps/blacklist","").split(","),function(e,t){return e[t]=!0,e},{}),this.launcher=new s(n),o.contains("apps/list")?(e=o.get("apps/list").split(","),_.device("smartphone")&&!_(e).contains("io.ox/search")&&e.push("io.ox/search"),_.device("smartphone")||_(e).contains("io.ox/chat")||e.push("io.ox/chat"),this._launcher=new s(e)):this._launcher=this.launcher,this._launcher.on("all",function(){var e=Array.prototype.slice.call(arguments);e[0]="launcher:"+e[0],this.trigger.apply(this,e)},this)},getByCID:function(e){return _.findWhere(this.models,{cid:e})},forLauncher:function(){return _.filter(this._launcher.map(this.get.bind(this)),a,this)}});return ox.ui.apps=new l,ox.ui.apps}),define("io.ox/core/yell",["gettext!io.ox/core"],function(f){var g=/^(busy|error|info|success|warning|screenreader)$/,m={busy:1e4,error:3e4,info:1e4,success:4e3,warning:1e4,screenreader:5e3},v={error:"Error",info:"Info",success:"Success",warning:"Warning"},x={busy:"fa fa-refresh fa-spin",error:"fa fa-exclamation",info:"fa fa-exclamation",success:"fa fa-check",warning:"fa fa-exclamation"},b=null;function w(e,t){var i,o,n=t;this.pause=function(){window.clearTimeout(i),n-=new Date-o},this.resume=function(){o=new Date,window.clearTimeout(i),i=window.setTimeout(e,n)},this.clear=function(){window.clearTimeout(i)},this.resume()}function y(){b&&b.clear(),$(".io-ox-alert").trigger("notification:removed").remove(),$("body").off(".yell")}function k(e){var t=$(".io-ox-alert");
1if(0!==t.length)return _.device("smartphone")?y():"keydown"===e.type?!$(e.target).closest(".close").length&&27!==e.which||13!==e.which&&32!==e.which&&27!==e.which?void 0:y():!$.contains(t.get(0),e.target)||$(e.target).closest(".close").length?y():void 0}function C(){b&&b.pause()}function S(){b&&b.resume()}function e(e,t,i){if("destroy"===e||"close"===e)return y();var o={duration:0,focus:!1,type:"info",closeOnClick:!0},n=!1,a={warnings:[]};if(_.isObject(e))if("error"in e)if(ox.trigger("yell:error",e),"CONFLICT"!==e.categories||"FILE_STORAGE-0045"!==e.code&&"FLD-1038"!==e.code){if(!0===e.handled)return;o.type="error",o.message=e.message||e.error,o.headline=f("Error")}else n=!0,o.type="error",a.title||(a.title=e.error),a.warnings.push(e.warnings.error);else o=_.extend(o,e);else o.type=e||"info",o.message=t,o.focus=i;if(g.test(o.type)){var r,s,l,d=[];if("screenreader"===o.type)return r=o.message,s=$("#sr-alert-text").removeAttr("role").attr("role","alert"),l=$.txt(r),s.contents().filter(function(){return 3===this.nodeType}).remove(),$("#io-ox-alert-screenreader").css("clip","auto"),void s.append(l).hide().css("display","inline");if(!n){if(!o.message)return;b&&b.clear(),b=-1===o.duration?null:new w(y,o.duration||m[o.type]||5e3),d=$(".io-ox-alert"),$("body").off(".yell"),o.closeOnClick&&_.defer(function(){$("body").on(_.device("touch")?"tap.yell":"mousedown.yell keydown.yell",k)});var c,u=$('<div tabindex="-1" class="io-ox-alert">').addClass("io-ox-alert-"+o.type),p=o.message instanceof $?(c=o.message).text():(c=$.parseHTML(_.escape(o.message).replace(/\n/g,"<br>")),o.message),h=0<=p.indexOf("http")?"break-all":"normal";return d.length&&(u.addClass("appear"),d.trigger("notification:removed"),d.remove()),u.append($('<div class="icon">').append($('<i aria-hidden="true">').addClass(x[o.type]||"fa fa-fw"))).mouseover(C).mouseout(S),_.defer(function(){u.append($('<div role="alert" aria-live="polite" class="message user-select-text">').append(v[o.type]&&o.headline&&o.type!==o.headline.toLowerCase()?$('<span class="sr-only">').text(f(v[o.type])):[],o.headline?$('<h2 class="headline">').text(o.headline):[],$("<div>").css("word-break",h).append(c)))}),o.closeOnClick&&u.append($('<button type="button" class="btn btn-link close">').attr("title",f("Close this notification")).append($('<i class="fa fa-times" aria-hidden="true">'))),$(document.body).hasClass("modal-open")||0<$(".wizard-container").length?$(document.body).append(u):$("#io-ox-core").append(u),setTimeout(function(){u.trigger("notification:appear").addClass("appear"),o.focus&&u.attr("tabindex",0).focus()},_.device("touch")?300:2),u}require(["io.ox/core/tk/filestorageUtil"],function(e){e.displayConflicts(a)})}}return e.done=function(){e("success",f("Done"))},e.close=function(){e("close")},e}),define("io.ox/core/notifications",["io.ox/core/extensions","io.ox/backbone/mini-views/dropdown","io.ox/core/yell","io.ox/core/desktopNotifications","io.ox/core/capabilities","settings!io.ox/core","gettext!io.ox/core","io.ox/core/a11y"],function(o,t,e,s,i,l,d,a){var n=Backbone.Model.extend({defaults:{subviews:{},sidepopup:null,markedForRedraw:{},count:0}});return new(Backbone.View.extend({tagName:"a",className:"dropdown-toggle",initialize:function(){var e=this;this.$el.attr("role","menu"),this.$el.attr({"data-toggle":"dropdown",href:"#"}).append($('<span class="badge" aria-hidden="true">').append($('<span class="number">'))),this.listNode=$('<ul href="#" id="io-ox-notifications-display" class="dropdown-menu dropdown-menu-right">').on("focus","*",this.focusHover.bind(this)).on("keydown",this.onKeydown.bind(this)).on("click blur focusout",this.keepOpen),this.dropdown=new t({tagName:"li",attributes:{role:"presentation"},id:"io-ox-notifications-icon",className:"launcher dropdown notifications-icon",$ul:this.listNode,$toggle:this.$el,smart:!1,dontProcessOnMobile:!0}),this.dropdown.$el.on("hidden.bs.dropdown",function(){e.closeSidepopup(),0===e.model.get("count")&&$("#io-ox-launcher .launcher-btn").focus()}),this.sidepopupNode=$('<div id="io-ox-notifications-sidepopup">'),this.delayedRender=_.debounce(this.render,100),this.model.on("change:count",_(this.onChangeCount).bind(this)),this.onChangeCount()},keepOpen:function(e){e.preventDefault(),e.stopPropagation()},registerSubview:function(e){var o=this.model.get("subviews"),n=this;return o[e.model.get("id")]||(o[e.model.get("id")]=e,this.model.get("markedForRedraw")[e.model.get("id")]=!0,e.collection.on("add reset remove",function(e){e.subviewId||(e=e.collection),n.model.set("count",_(o).reduce(function(e,t){return e+t.collection.length},0)),n.model.get("markedForRedraw")[e.subviewId]=!0,n.delayedRender()}),e.on("responsive-remove",function(){var e=_(o).reduce(function(e,t){return e+t.collection.length},0),t=Math.min(e,99),i=parseInt(n.$el.find(".number").text(),10);if(n.model.set("count",e),t!==i)return 0===e?n.render():void n.$el.attr("title",d.ngettext("%1$d notification.","%1$d notifications.",e,e)).find(".number").text(t+(100<e?"+":""))}),e.on("autoopen",_.bind(function(){n.render(),n.dropdown.open()},n)),n.delayedRender()),e},render:function(){var i=this,o=this.model.get("subviews"),e=this.model.get("count"),t=Math.min(e,99),n=this.model.get("markedForRedraw");return this.$el.attr("title",d.ngettext("%1$d notification.","%1$d notifications.",e,e)).find(".number").text(t+(100<e?"+":"")),this.model.set("markedForRedraw",{}),i.listNode.find(".no-news-message,.notification-area-header,.desktop-notification-info").remove(),_(n).each(function(e,t){e&&o[t].render(i.listNode)}),i.listNode.css({"max-height":_.device("smartphone")?"none":$("#io-ox-screens").height()-5}),0===this.listNode.children(".notifications").length?this.listNode.prepend($("<div class=notification-area-header>").append($('<h1 class="section-title no-news-message">').text(d("No notifications")),$('<button type="button" class="btn btn-link clear-area-button fa fa-times">').attr("aria-label",d("Close notification area")).on("click",_(i.dropdown.close).bind(i.dropdown)))):this.listNode.prepend($("<div class=notification-area-header>").append($('<h1 class="notification-area-title">').text(d("Notifications")),$('<button type="button" class="btn btn-link clear-area-button fa fa-times">').attr("aria-label",d("Close notification area")).on("click",_(i.dropdown.close).bind(i.dropdown)),$('<button type="button" class="btn btn-link hide-area-button">').text(d("Notify me again later")).on("click",_(i.hideAll).bind(i)))),this.drawNotificationInfo(),this},onChangeCount:function(){this.$el.toggle(0!==this.model.get("count")),0===this.model.get("count")&&this.dropdown.close()},drawNotificationInfo:function(){var e,t,i,o,n,a,r;
1"default"!==s.getPermissionStatus()||!1===l.get("showDesktopNotifications",!0)||this.handledNotificationInfo||(e=this,t=$("<div>").text(d("Would you like to enable desktop notifications?")),i=$('<button type="button" class="later-button btn btn-warning">').text(d("Later")).on("click",function(e){e.stopPropagation(),a()}),o=$('<button type="button" class="disable-button btn btn-danger">').text(d("Never")).on("click",function(e){l.set("showDesktopNotifications",!1).save(),e.stopPropagation(),a()}),n=$('<button type="button" class="enable-button btn btn-success">').text(d("Decide now")).on("click",function(e){e.stopPropagation(),s.requestPermission(function(e){"granted"===e?l.set("showDesktopNotifications",!0).save():"denied"===e&&l.set("showDesktopNotifications",!1).save()}),a()}),a=function(){t.text(d("You can manage desktop notifications at any time, by visiting your settings")).on("click",function(){var e={id:"io.ox/core"};ox.launch("io.ox/settings/main",e).done(function(){this.setSettingsPane(e)})}),r.addClass("clickable"),i.remove(),n.remove(),o.remove(),e.dropdown.$el.one("hidden.bs.dropdown",function(){r.remove()})},r=$('<div class="desktop-notification-info clearfix">').append(t,$('<div class="button-wrapper">').append(n,o,i)),this.listNode.prepend(r))},openSidepopup:function(o,n,a,r){function e(){require(["io.ox/core/tk/dialogs"],function(e){s.sidepopupNode.attr("data-cid",o).appendTo(_.device("smartphone")?"body":"#io-ox-windowmanager-pane"),s.dropdown.forceOpen(!0);var t=$.Event("click",{target:s.sidepopupNode.empty()}),i=new e.SidePopup({arrow:!1,side:"left",focus:!1}).setTarget(s.sidepopupNode.empty()).show(t,function(i){var e=i.closest(".io-ox-sidepopup");_.device("smartphone")||e.css({right:$("#io-ox-windowmanager-pane").innerWidth()-s.dropdown.$el.position().left+s.dropdown.$ul.outerWidth()-34+"px"}),e.addClass("io-ox-notifications-sidepopup first");function t(e){var t;return e=e&&e.get?e.attributes:e,n.View?(t=new n.View({data:e},r),i.idle().append(t.render().expand().$el.addClass("no-padding"))):i.idle().append(n.draw({data:e},r).addClass("no-padding")),e}a.then?(i.busy(),a.then(t)):t(a)});s.model.set("sidepopup",i),i.on("close",$.proxy(s.onCloseSidepopup,s))})}var s=this;s.model.get("sidepopup")&&s.sidepopupIsClosing?s.model.get("sidepopup").one("close",e):e()},onKeydown:function(e){var t=[],i=null;switch(e.which){case 37:case 38:t=this.listNode.find(".item"),i=$(e.target).closest(".item",this.listNode);var o=t.length-1;i.length&&(o=(_(t).indexOf(i[0])-1+t.length)%t.length),t[o].focus();break;case 39:case 40:t=this.listNode.find(".item");var n=0;(i=$(e.target).closest(".item",this.listNode)).length&&(n=(_(t).indexOf(i[0])+1)%t.length),t[n].focus();break;case 9:t=a.getTabbable(this.listNode),e.shiftKey&&t[0]===e.target&&(e.preventDefault(),t[t.length-1].focus()),!e.shiftKey&&t.length&&t[t.length-1]===e.target&&(e.preventDefault(),t[0].focus())}t=null},focusHover:function(e){this.listNode.find(".item").removeClass("has-focus"),$(e.target).closest(".item",this.listNode).addClass("has-focus")},onCloseSidepopup:function(){this.dropdown.forceOpen(!1),this.sidepopupIsClosing=!1,this.listNode.find(".item:visible")&&(this.listNode.find(".item.has-focus")?this.listNode.find(".item.has-focus").focus():this.sidepopupNode.attr("data-cid")&&this.listNode.find('.item:visible[data-cid="'+this.sidepopupNode.attr("data-cid")+'"]')?this.listNode.find('.item[data-cid="'+this.sidepopupNode.attr("data-cid")+'"]').focus():this.listNode.find(".item").first().focus());var e=this.model.get("sidepopup");e&&(e.off("close"),this.sidepopupNode.attr("data-cid",null).detach()),this.model.set("sidepopup",null)},hideAll:function(){_(this.model.get("subviews")).each(function(e){e.hideAll(l.get("notificationsHidingTimer",18e5))})},closeSidepopup:function(){this.model.get("sidepopup")&&(this.sidepopupIsClosing=!0,this.model.get("sidepopup").close())},attach:function(e,t){var i=this;return this.drawNotificationInfo(),setTimeout(function(){ox.manifests.loadPluginsFor("io.ox/core/notifications").done(function(){o.point("io.ox/core/notifications/register").invoke("register",i,i)}),i.listNode.css({top:i.listNode.css("top")+$("#io-ox-appcontrol")[0].offsetTop,left:i.listNode.css("left")+window.outerWidth-$("#
1io-ox-appcontrol").outerWidth()})},t||5e3),this.render(),this.dropdown.render().$el},yell:e}))({model:new n})}),define("io.ox/core/commons",["io.ox/core/extensions","gettext!io.ox/core","io.ox/core/folder/api","io.ox/core/api/account","io.ox/backbone/mini-views/helplink","settings!io.ox/core","io.ox/backbone/mini-views/upsell","io.ox/backbone/views/actions/util","io.ox/core/capabilities"],function(g,u,m,a,o,r,s,l,d){var t,p={showWindow:function(t){return function(){var e=$.Deferred();return t.show(e.resolve),e}},simpleMultiSelection:function(e,t,i){var o,n,a=t.length;a<=1||(o=u.ngettext("%1$s item selected","%1$s items selected",a),n=_.noI18n.assemble(o,function(){return $('<span class="number">').text(_.noI18n(a))},$.txt),e.idle().empty().append($('<div class="io-ox-center multi-selection-message">').append($('<div class="message" id="'+i.multiselectId+'">').append(n))))},wireGridAndSelectionChange:function(r,e,s,l,t){var d,c="";r.selection.on("change",function(e,t){var i,o,n=t.length,a=JSON.stringify(_([].concat(t)).map(function(e){return{folder_id:String(e.folder_id||e.folder),id:String(e.id),recurrence_position:String(e.recurrence_position||0)}}));a!==c&&(1===n?(l.css("height",""),s(t[0])):1<n?(s.cancel&&s.cancel(),l.css("height","100%"),p.simpleMultiSelection(l,this.unique(this.unfold()),r)):(s.cancel&&s.cancel(),l.css("height","100%").idle().empty().append($('<div class="io-ox-center">').append($('<div class="io-ox-multi-selection">').append($('<div class="summary empty">').text(u("No elements selected"))))),_.device("smartphone")&&((i=l.closest(".vsplit")).hasClass("vsplit-reverse")||i.find(".rightside-navbar a>i").last().trigger("click"))),o=l.parent(),n<=1&&d?o.attr("aria-label",_.escape(d)):1<n&&(d=d||o.attr("aria-label"),o.attr("aria-label",u("Selection Details"))),c=a)}),t&&t.on("change:id",function(e,t,i){var o=r.selection.get();o.length&&o[0].id===i&&r.selection.set({id:t.id,folder_id:t.folder_id})})},wireGridAndAPI:function(n,t,e,i){n.setAllRequest(function(){return t[e||"getAll"]({folder:this.prop("folder")})}),n.setListRequest(function(e){return t[i||"getList"](e)}),t.on("beforedelete",function(e,t){n.selection.removeFromIndex(t);var i,o=n.selection.get();0<o.length&&(_.device("smartphone")?n.selection.clear(!0):(i=n.selection.getIndex(o[0]),n.selection.clear(!0).selectIndex(i+1),n.getIds().length===o.length&&n.selection.trigger("change",[])))})},wireGridAndWindow:function(e,t){function i(){e.keyboard(!0),e.selection.get().length&&e.selection.retriggerUnlessEmpty()}var o=0;e.setApp(t.app),t.on("show idle",i).on("hide busy",function(){e.keyboard(!1)}).on("beforeshow",function(){null!==o&&e.scrollTop(o)}).on("beforehide",function(){o=e.scrollTop()}),t.app&&(t.app.getGrid=function(){return e}),t.state.visible&&i()},addGridToolbarFolder:function(t,n){function a(){return t.getWindow&&t.getWindow().state.visible?n.getToolbar().find(".grid-info"):$()}function o(o){o&&(a().empty().attr("data-folder-id",o).append($('<span class="folder-name">'),$.txt(" "),$('<span class="folder-count">')),m.get(o).done(function(e){var t=!m.supports("count_total",e)?n.getIds().length:e.total,i=n.getToolbar().find('[data-folder-id="'+o+'"]');n.meta={total:t,title:e.title},n.trigger("meta:update"),i.find(".folder-name").text(e.title),0<t&&i.find(".folder-count").text("("+t+")")}))}function e(){var e,t=n.prop("folder"),i=n.getMode();"all"===i?o(t):"search"===i&&((e=a()).find(".folder-name").text(u("Results")),e.find(".folder-count").text("("+n.getIds().length+")"))}g.point(t.get("name")+"/vgrid/toolbar").extend({id:"info",index:200,draw:function(){this.append($('<div class="grid-info">'))}}),n.on("change:prop:folder change:mode change:ids",e),m.on("after:rename",e),m.on("update:total",function(e){e===t.folder.get()&&o(e)}),g.point(t.get("name")+"/vgrid/toolbar").invoke("draw",n.getToolbar()),$.when(t.folder.initialized,t.getWindow().shown).done(function(e){o(e[0])})},wireFirstRefresh:function(e,t){!1!==ox.serverConfig.persistence&&e.getWindow().on("open",function(){t.needsRefresh(e.folder.get())&&t.trigger("refresh^",e.folder.get())})}
1,wireGridAndRefresh:function(e,t,i){function o(){e.refresh(!0),_.device("smartphone")&&e.selection.retrigger()}function n(){e.repaint(),e.selection.retrigger()}function a(){e.pending()}function r(){t.off("refresh.all refresh:all:local",o).off("refresh.pending",a).off("refresh.list",n)}function s(){r(),t.on("refresh.all refresh:all:local",o).on("refresh.pending",a).on("refresh.list",n).trigger("refresh.all")}i.on({show:s,hide:r}),i.state.visible&&s()},wirePerspectiveEvents:function(i){var e=i.getWindow(),o=null;e.on("show",function(){o=e.currentPerspective,e.currentPerspective&&i.trigger("perspective:"+e.currentPerspective+":show")}),e.on("hide",function(){o=e.currentPerspective,e.currentPerspective&&i.trigger("perspective:"+e.currentPerspective+":hide")}),e.on("change:perspective",function(e,t){o&&i.trigger("perspective:"+o+":hide"),o=t,i.trigger("perspective:"+t+":show")}),e.on("change:initialPerspective",function(e,t){o=t,i.trigger("perspective:"+t+":show")})},addFolderSupport:function(t,e,i,o){function n(e){return t.folder.set(e).then(_.identity,function(){return $.when(t.folder.setDefault())})}return t.folder.updateTitle(t.getWindow()).setType(i),e&&t.folder.updateGrid(e),t.getWindow().on("show",function(){e&&e.selection.retriggerUnlessEmpty(),_.url.hash("folder",t.folder.get())}),void 0!==(o=_.url.hash("folder")||o)?n(o):"mail"===i?a.getUnifiedInbox().then(function(e){return null===e?t.folder.setDefault():n(e)}):t.folder.setDefault()},addPropertyCaching:function(n,e){n=n||{prop:$.noop()};var o={},a=n.prop,r=$.extend({keyprop:"folder",props:["sort","order"]},e||{}),s={},l=function(e,t,i){s[e]=s[e]||{},s[e][t]=i},d=function(e,t){return t?(s[e]||{})[t]:s[e]||{}},c=function(e){s[e]={}};r.props=[].concat(r.props),_.each(r.props,function(e){o[e]=!0}),_.isUndefined(n.propcache)&&(n.propcache=function(e,t,i){return i=i||a(r.keyprop),o[e]&&d(i,e)||t},n.prop=function(e,t){var i,o;return i=t,e===r.keyprop&&void 0!==i&&i!==a(r.keyprop)&&(o=a(r.keyprop))&&(c(o),_.each(r.props,function(e){l(o,e,a(e))})),a.call(n,e,t)})},addGridFolderSupport:function(e,t){e.folder.updateGrid(t),e.getWindow().on("show",function(){t.selection.retriggerUnlessEmpty()})},vsplit:(t=!1,function(e,t){var i={};return e.addClass("vsplit").append(i.left=$('<div class="leftside">').attr({role:"complementary","aria-label":u("Item list")}).on("select",c),$('<div class="rightside-navbar">').append($('<div class="rightside-inline-actions">'),$('<a href="#" tabindex="-1">').append($('<i class="fa fa-chevron-left" aria-hidden="true">'),$.txt(" "),$.txt(u("Back"))).on("click",{app:t},n)),i.right=$('<div class="rightside">')),i}),help:function(e){var t,i;_.device("smartphone")||(t=new o({href:"io.ox/mail"===(i=e&&e.app&&e.app.id)?"ox.appsuite.user.sect.email.gui.foldertree.html":"io.ox/files"===i?"ox.appsuite.user.sect.drive.gui.foldertree.html":"io.ox/contacts"===i?"ox.appsuite.user.sect.contacts.gui.foldertree.html":"io.ox/calendar"===i?"ox.appsuite.user.sect.calendar.gui.foldertree.html":"io.ox/tasks"===i?"ox.appsuite.user.sect.tasks.gui.foldertree.html":"ox.appsuite.user.sect.dataorganisation.folder.html"}),this.find(".generic-toolbar.bottom").append(t.render().$el))},mediateFolderView:function(t){function i(e){if(e.data.app.folderView.toggle(e.data.state),e.data.state)e.data.app.folderView.tree.getNodeView(e.data.app.folder.get()).$el.focus();else{var t=e.data.app.grid;if(0===t.getIds().length)return t.getContainer().focus();t.selection.focus()}}function e(e){e.getWindow().nodes.sidepanel.show(),e.getWindow().nodes.main.find(".vgrid").removeClass("bottom-toolbar")}function o(e){e.getWindow().nodes.sidepanel.hide(),e.getWindow().nodes.main.find(".vgrid").addClass("bottom-toolbar")}g.point(t.get("name")+"/vgrid/second-toolbar").extend({id:"default",index:100,draw:function(){this.addClass("visual-focus").append($('<button type="button" class="btn btn-link toolbar-item" data-action="open-folder-view">').attr("aria-label",u("Open folder view")).append($('<i class="fa fa-angle-double-right" aria-hidden="true">').attr("title",u("Open folder view"))).on("click",{app:t,state:!0},i))}}),g.point(t.get("name")+"/sidepanel").extend({id:"toggle-folderview",index:1e3,draw:function(){var e=_.uniqueId("control");this.addClass("bottom-toolbar").append($('<div class="generic-toolbar bottom visual-focus" role="region">').attr("aria-labelledby",e).append($('<button type="button" class="btn btn-link toolbar-item" data-action="close-folder-view">').attr({id:e,"aria-label":u("Close folder view")}).append($('<i class="fa fa-angle-double-left" aria-hidden="true">').attr("title",u("Close folder view"))).on("click",{app:t,state:!1},i)))}}),g.point(t.get("name")+"/sidepanel").extend({id:"help",index:1100,draw:p.help}),t.on({"folderview:open":e.bind(null,t),"folderview:close":o.bind(null,t)});var n=t.getGrid(),a=n.getTopbar();g.point(t.get("name")+"/vgrid/second-toolbar").invoke("draw",a,g.Baton({grid:n})),o(t),t.folderViewIsVisible()&&_.defer(e,t)},addFolderViewToggle:function(t){_.device("smartphone")||(t.toggleFolderView=function(e){e.preventDefault(),t.trigger("before:change:folderview"),t.folderView.toggle(e.data.state),e.data.state?t.folderView.tree.getNodeView(t.folder.get()).$el.focus():require("io.ox/core/a11y").getTabbable(t.getW
1indow().nodes.body.find(".classic-toolbar"))[0].focus()},g.point(t.get("name")+"/sidepanel").extend({id:"toggle-folderview",index:1e3,draw:function(){var e;_.device("smartphone")||(e=_.uniqueId("control"),this.addClass("bottom-toolbar").append($('<div class="generic-toolbar bottom visual-focus" role="region">').attr("aria-labelledby",e).append($('<button type="button" class="btn btn-link toolbar-item" data-action="close-folder-view">').attr({id:e,"aria-label":u("Close folder view")}).append($('<i class="fa fa-angle-double-left" aria-hidden="true">').attr("title",u("Close folder view"))).on("click",{state:!1},t.toggleFolderView))))}}),g.point(t.get("name")+"/sidepanel").extend({id:"help",index:1100,draw:p.help}))},addPremiumFeatures:function(e,t){if(!_.device("smartphone")&&d.has("client-onboarding")&&r.get("upsell/premium/folderView/visible")&&!r.get("upsell/premium/folderView/closedByUser")){var i=$('<div class="premium-toolbar generic-toolbar bottom visual-focus in">').append($('<div class="header">').append(u("Premium features"),$('<a href="#" role="button" class="pull-right">').append($('<i class="fa fa-times" aria-hidden="true">'),$('<span class="sr-only">').text(u("Close premium features"))).on("click",function(e){e.preventDefault(),$(this).closest(".premium-toolbar").collapse("hide"),r.set("upsell/premium/folderView/closedByUser",!0).save()}))),o=l.getBaton([],{app:e,renderActions:function(e,t){return g.point(e).list().map(function(e){return $("<p>").append($('<a href="#" role="button">').attr("data-action",e.action).data({baton:t}).text(e.title))})}});if(g.point(e.get("name")+"/folderview/premium-area").invoke("draw",i,o),0!==i.find("a[data-action]").length){i.on("click","a[data-action]",l.invokeByEvent);var n=new s({id:t.upsellId||"folderview/"+e.get("name")+"/bottom",requires:t.upsellRequires,icon:"",title:u("Try now!"),customize:function(){this.$("a").addClass("btn btn-default")}});return n.visible&&(i.append(n.render().$el),$(".header a",i).remove()),!1!==t.append&&e.getWindow().nodes.sidepanel.append(i),i}}}};function n(e){e.preventDefault(),t=t&&!1,$(this).parent().find(".rightside-inline-actions").empty(),$(this).closest(".vsplit").addClass("vsplit-reverse").removeClass("vsplit-slide"),e.data.app&&e.data.app.getGrid&&(_.device("smartphone")&&e.data.app.getGrid().selection.trigger("changeMobile"),e.data.app.getGrid().selection.clear()),_.device("smartphone")&&$(this).closest(".vsplit").find(".leftside .tree-container").trigger("changeMobile")}function c(){var e=$(this);t=!0,setTimeout(function(){t&&(e.closest(".vsplit").addClass("vsplit-slide").removeClass("vsplit-reverse"),t=!1)},100)}function i(e){$(e).triggerHandler("dispose")}var h=$.cleanData;return $.cleanData=function(e){return _(e).map(i),h.call(this,e)},$.createViewContainer=function(i,o,n,e){function t(e,t){l&&(l.folder_id=t),h&&h()}function a(){p&&p.trigger("view:remove").remove()}function r(e){e===this.folder.toString()&&o&&o.trigger("update:"+this.cid)}var s=(e=e||{}).cidGetter||_.ecid,l=i instanceof g.Baton?i.data:i,d=_.cid(l),c=s(l),u="recurrenceID"in l?s({id:l.id,folder:l.folder_id||l.folder}):null,p=$("<div>").attr("data-cid",_([].concat(l)).map(_.cid).join(",")),h=function(e,t){t&&(t.former_id||t.id&&t.id!==l.id)&&(l=t),(n=n||(o?o.get:null))&&(l.id||(l.id=t.id),n(o.reduce(l)).done(function(e){i instanceof g.Baton?e instanceof Backbone.Model&&i.model instanceof Backbone.Model?(i.model=e,i.data=e.toJSON()):i.data=e:i=e,t&&t.updateData?i.updateData=t.updateData:delete i.updateData,p&&p.triggerHandler("redraw",i)}))},f=_.debounce(function(){p&&p.triggerHandler("redraw",i)},10);return _.isArray(l)?(m.on("update",f),o.on("delete update",f)):(m.on("update",r,{cid:d,folder:l.folder_id||l.folder}),o.on("delete:"+c+(u?" delete:"+u:""),a),o.on("create update:"+c+(u?" update:"+u:""),h),o.on("move:"+c,t)),p.one("dispose",function(){_.isArray(l)?(m.off("update",f),o.off("delete update",f)):(m.off("update",r),o.off("delete:"+c,a),o.off("
1create update:"+c+(u?" update:"+u:""),h),o.off("move:"+c,t)),o=h=l=p=n=d=c=null})},$.fail=function(e,t){var i=$("<div>").addClass("io-ox-fail").append($("<span>").text(e));return t&&i.append($("<span>").text(" ")).append($("<a>",{href:"#"}).text(u("Retry")).on("click",function(e){e.preventDefault(),$(this).closest(".io-ox-center").remove(),t.apply(this,arguments)})),i.center()},p}),define("io.ox/core/upsell",["io.ox/core/capabilities","settings!io.ox/core","gettext!io.ox/core"],function(t,i,o){function n(t){console.debug("upsell:requires-upgrade",t),require(["io.ox/backbone/views/modal"],function(e){new e({title:o("Upgrade required"),description:o("This feature is not available. In order to use it, you need to upgrade your account now.")+" "+o("The first 90 days are free.")}).addCancelButton().addButton({label:o("Get free upgrade"),action:"upgrade"}).on("upgrade",function(){ox.trigger("upsell:upgrade",t)}).on("open",function(){ox.off("upsell:requires-upgrade",n),this.$el.next(".modal-backdrop.in:visible").css({opacity:.7,backgroundColor:"#08C"})}).on("close",function(){ox.on("upsell:requires-upgrade",n)}).open()})}function e(e){console.debug("upsell:upgrade",e),alert("User decided to upgrade! (global event: upsell:upgrade)")}var a=i.get("upsell/enabled")||{},r={},s={},l={trigger:function(e){ox.trigger("upsell:requires-upgrade",e||{})},click:function(e){e.preventDefault(),l.trigger()},any:function(e){return!e||_([].concat(e)).reduce(function(e,t){return e||void 0===t||l.has(t)},!1)},missing:function(e){return e?(e=[].concat(e).join(" "),_(e.match(/!?[a-z_:-]+/gi)).filter(function(e){return!l.has(e)}).join(" ")):""},has:function(e){return!e||(e in r?r[e]:r[e]=t.has(e))},visible:function(e){var t=_.compact([].concat(e));return!t.length||_.reduce(t,function(e,t){return e||d(t)},!1)},enabled:function(){var e=_(arguments).flatten().join(" || ").replace(/([^&|]) ([^&|])/gi,"$1 && $2");return ox.debug&&/,/.test(e)?!!console.error("You can't use a comma in a condition use space instead."):(e=e.replace(/[a-z0-9_:-]+/gi,function(e){return e=e.toLowerCase(),t=e,!!_.isString(t)&&!!a[t];var t}),new Function("return !!("+e+")")())},captureRequiresUpgrade:function(){ox.on("upsell:requires-upgrade",n),l.captureRequiresUpgrade=$.noop},captureUpgrade:function(){ox.on("upsell:upgrade",e),l.captureUpgrade=$.noop},useDefaults:function(){l.captureRequiresUpgrade(),l.captureUpgrade()},debug:function(){console.debug("enabled",a,"capabilityCache",r,"enabledCache",s)},demo:function(e){var t=r;a.portal=a.webmail=a.contacts=a.calendar=a.infostore=a.tasks=a.publication=a.subscription=a.carddav=a.active_sync=!0,t.portal=t.webmail=t.contacts=!0,t.calendar=t.infostore=t.tasks=t.active_sync=t["active_sync || caldav || carddav"]=!1,t.publication=t.subscription=!1,i.set("features/upsell/secondary-launcher",{icon:"fa-star fa-star fa-star",color:"#ff0"}),i.set("features/upsell/portal-widget",{imageURL:"http://lorempixel.com/400/300/"}),i.set("features/upsell/folderview/mail/i18n/en_US",{title:"Custom english title for synchronizing mails."}),i.set("features/upsell/topbar-dropdown",{color:"#df0000"}),i.set("features/upsell/mail-folderview-quota",{upsellLimit:10485760}),console.debug("Disabled inline actions regarding calendar, tasks, and files; enabled upsell instead"),e||l.useDefaults()},setEnabled:function(e){a[e]=!0}};function d(e){var t=e.replace(/([^&|]) ([^&|])/gi,"$1 && $2");return ox.debug&&/,/.test(t)?!!console.error("You can't use a comma in a condition use space instead."):(t=t.replace(/[\w:-]+/gi,function(e){return e=e.toLowerCase(),t=e,!!_.isString(t)&&!!a[t]||l.has(e);var t}),new Function("return !!("+t+")")())}return-1<(_.url.hash("demo")||"").indexOf("upsell")&&l.demo(),l}),define("io.ox/core/ping",["io.ox/core/http","settings!io.ox/core"],function(e,t){var i=t.get("ping/enabled",!1),o=t.get("ping/interval",30),n="none",a=null;function r(){!ox.session||"unset"===ox.session||!ox.online||_.device("phantomjs || karma")||_.now()-ox.t0<1e4||e.ping()}function s(){a&&clearInterval(a)}function l(){"normal"!==n&&(s(),n="normal",ox.reachable=!0,ox.trigger("reachableChange"),i&&(r(),a=setInterval(r,1e3*o)))}e.on("unreachable",function(){"hectic"!==n&&(s(),ox.reachable=!1,ox.trigger("reachableChange"),n="hectic",r(),a=setInterval(r,200*o))}),e.on("reachable",l),l()}),define("io.ox/core/relogin",["io.ox/core/extensions","io.ox/core/session","io.ox/core/notifications","io.ox/core/capabilities","io.ox/core/boot/util","io.ox/backbone/views/modal","gettext!io.ox/core","settings!io.ox/core"],function(r,i,o,n,s,a,l,d){function t(){var e;_.url.redirect((e=n.has("guest")?d.get("customLocations/guestLogin")||ox.serverConfig.guestLoginLocation:d.get("customLocations/login")||ox.serverConfig.loginLocation,_.url.vars(e||ox.loginLocation||"")))}function e(e){var t,i,o=$.Deferred();function n(){t&&!t.disposed&&(t.trigger("relogin:continue"),t.close())}
1return t=new a({async:!0,enter:"relogin",backdrop:"static",focus:"input",title:(i=e)&&"SES-0205"===i.code?l("Your IP address has changed"):l("Your session is expired"),point:"io.ox/core/relogin"}).build(function(){this.$el.addClass("relogin")}).on("open",function(){$("html").addClass("relogin-required"),$("#io-ox-core").addClass("blur")}).on("relogin:continue",function(){o.resolve({reason:"relogin:continue"})}).on("relogin:success",function(){o.resolve({reason:"relogin:success"})}).open(),ox.on("login:success",n),o.done(function(){ox.off("login:success",n),$("html").removeClass("relogin-required"),$("#io-ox-core").removeClass("blur")})}r.point("io.ox/core/relogin").extend({id:"default",render:function(){this.$body.append($("<div>").text(l("You have to sign in again"))),this.addButton({action:"ok",label:l("Ok")}),this.on("ok",function(){this.trigger("relogin:continue")})}},{id:"password",index:100,render:function(e){var t;d.get("features/reloginPopup",!ox.serverConfig.oidcLogin&&!ox.serverConfig.samlLogin)&&(n.has("guest && anonymous")||n.has("guest")&&d.get("password/emptyCurrent")||(t=_.uniqueId("form-control-label-"),this.$header.append($("<div>").text(l("Please sign in again to continue"))),this.$body.append($("<label>").attr("for",t).text(l("Password")),$('<input type="password" name="relogin-password" class="form-control">').attr("id",t)),this.addButton({className:"btn-default",label:l("Cancel"),action:"cancel"}).addButton({action:"relogin",label:l("Sign in")}).on("cancel",function(){ox.trigger("relogin:cancel"),_.url.redirect(function(){var e=n.has("guest")?d.get("customLocations/guestLogout")||ox.serverConfig.guestLogoutLocation:d.get("customLocations/logout")||ox.serverConfig.logoutLocation;return _.url.vars(e||ox.logoutLocation||"")}())}).on("relogin",function(){var t=this.busy();i.login({name:ox.user,password:this.$body.find("input").val(),rampup:!1,staySignedIn:ox.secretCookie}).then(function(){o.yell("close"),t.$body.find("input").val(""),t.trigger("relogin:success"),t.close()},function(e){"LGI-0006"===e.code&&(e.error=l("Please enter correct password")),o.yell({headline:l("Failed to sign in"),type:"error",message:e.error}),t.idle(),t.$body.find("input").focus().select(),t.trigger("relogin:fail",e)})}),e.preventDefault()))}}),r.point("io.ox/core/boot/login").replace({id:"default",relogin:function(e){if("success"!==e.data.reloginState)return t()}}),r.point("io.ox/core/boot/login").extend({id:"userPrompt",index:5e3,relogin:function(t){return e(t.data.error).then(function(e){e&&"relogin:success"===e.reason&&(t.data.reloginState="success")})}});var c=[],u=!1;function p(e,t,i){var o,n,a;ox.online&&(u?e&&t&&c.push({request:e,deferred:t}):(ox.trigger("before:relogin"),s.debugSession("relogin process START"),c=e&&t?[{request:e,deferred:t}]:[],u=!0,o=require("io.ox/core/extPatterns/stage"),n=r.Baton.ensure({error:i,reloginState:"pending"}),a=function(e){s.debugSession("relogin abort with success",_.clone(e),_.clone(n.data)),n.data.reloginState="success",n.data.receivedSession=e?e.session:"",o.abortAll("io.ox/core/boot/login")},ox.on("login:success",a),o.run("io.ox/core/boot/login",n,{methodName:"relogin"}).then(function(){if(ox.off("login:success",a),"success"===n.data.reloginState){ox.session||(s.debugSession("relogin success but no session, trying to repair"),ox.session=n.data.receivedSession),ox.trigger("relogin:success"),s.checkTabHandlingSupport()&&require(["io.ox/core/api/tab"],function(e){s.debugSession("propagateLogin",ox.session),e.propagate("propagateLogin",{session:ox.session,language:ox.language,theme:ox.theme,user:ox.user,user_id:ox.user_id,context_id:ox.context_id,relogin:!0,exceptWindow:e.getWindowName(),storageKey:e.DEFAULT_STORAGE_KEYS.SESSION})});for(var e,t=0,i=require("io.ox/core/http");e=c[t];t++)e.request.noRetry||i.retry(e.request).done(e.deferred.resolve).fail(e.deferred.fail);s.debugSession("relogin process DONE"),u=!1}})))}return ox.off("relogin:required",ox.relogin),ox.on("relogin:required",p),p}),define("io.ox/core/uuids",function(){function t(){return Math.floor(65536*(1+Math.random())).toString(16).substr(1)}
1return{randomUUID:function(){return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},asArray:function(e){return _.range(e).map(t)}}}),define("io.ox/core/tk/wizard",["io.ox/backbone/views/disposable","io.ox/core/tk/hotspot","gettext!io.ox/core"],function(e,t,u){var n=[$('<div class="wizard-overlay abs">'),$('<div class="wizard-overlay abs">'),$('<div class="wizard-overlay abs">'),$('<div class="wizard-overlay abs">'),$('<div class="wizard-overlay wizard-spotlight abs">')],i=$('<div class="wizard-backdrop abs">');function g(e,t){t=t||0;var i=e.offset();return i.width=e.outerWidth()+2*t,i.height=e.outerHeight()+2*t,i.availableWidth=$(window).width(),i.availableHeight=$(window).height(),i.right=i.availableWidth-i.width-i.left+t,i.bottom=i.availableHeight-i.height-i.top+t,i.top-=t,i.left-=t,i}function o(t){return function(){var e=this.$(t);return e.append.apply(e,arguments),this}}function a(i){return function(e,t){return e.append($(i).attr("data-action",t.action).addClass(t.className).text(t.label||"਀")),this}}function m(e){return(e=$(e).filter(":visible")).length?e.first():null}function r(e){this.options=e||{},this.currentStep=0,this.steps=[],this.closed=!1,this.options.model=this.options.model||new Backbone.Model,_.extend(this,Backbone.Events),this.on({"step:next":this.next,"step:back":this.back,"step:close":this.close,"step:done":this.close}),this.on("step:hide",function(){_(n).invoke("detach"),i.detach(),t.removeAll()}),this.containerScaffold=_.device("smartphone")&&!this.options.disableMobileSupport?$('<div class="wizard-container abs">  <div class="wizard-navbar">    <div class="wizard-back"></div>    <div class="wizard-title"></div>    <div class="wizard-next"></div>  </div>  <div class="wizard-pages"></div>  <div class="wizard-animation"></div></div>'):$('<div class="wizard-container abs">'),this.container=this.containerScaffold.clone(),_.device("smartphone")&&!this.options.disableMobileSupport&&function(){this.container.find(".wizard-title").text(this.options.title||u("Welcome")),this.container.on("tap","[data-action]",{parent:this},function(e){e.preventDefault();var t=$(this).attr("data-action");e.data.parent.trigger("step:"+t)}),this.options.model.on("change:paused",function(){l.getCurrentStep().toggleNext(!l.isStepPaused())}),this.shift=function(e){this.setCurrentStep(this.currentStep+e),this.withCurrentStep(function(e){e.renderNavBar()});var t=this.container.find(".wizard-pages"),i=t.position().left/n*100,o=0-100*this.currentStep;return t.stop().velocity({translateX:[o+"%",i+"%"]},500,[150,15]),this};var i,o,n,a,r,s,l=this,d=0,c=0;this.container.find(".wizard-pages").on({touchstart:function(e){var t=e.originalEvent.targetTouches;1===t.length&&($(e.target).is("input")?s=!0:(c=t[0].pageX,o=!1,n=$(window).width(),d=$(this).position().left,r=l.hasBack()?+n:n/3,a=l.hasNext()?-n:-n/3))},touchmove:function(e){var t=e.originalEvent.targetTouches;if(1===t.length&&!s){if(e.preventDefault(),i=t[0].pageX-c,!o){if(Math.abs(i)<20)return;return o=!0,c=t[0].pageX,void(i=0)}i=Math.min(i,r),i=Math.max(i,a),l.isStepPaused()&&(d+i)/n*100<-100||$(this).css("transform","translateX("+(d+i)/n*100+"%)")}},touchend:function(){var e;s=!1,o&&(e=i/n*100,l.isStepPaused()&&e<0||l.shift(e<0?-50<e?0:1:e<50?0:-1))}})}.call(this)}_.extend(r.prototype,{step:function(e){var t=new s(e,this);return this.steps.push(t),t},getCurrentStep:function(){return this.steps[this.currentStep]},withCurrentStep:function(e){var t=this.getCurrentStep();return t&&e.call(this,t),this},setCurrentStep:function(e){this.currentStep!==e&&(e<0||e>=this.steps.length||(this.currentStep=e,this.trigger("change:step")))},get:function(e){return this.steps[e]},getContainer:function(){return this.container},shift:function(e){if(this.withCurrentStep(function(e){e.hide()}),this.isInvalidShift(e))return this.trigger("skip:step"),this.shift(e<0?e-1:e+1);this.setCurrentStep(this.currentStep+e),this.withCurrentStep(function(e){e.show()})},next:function(){return this.hasNext()&&this.shift(1),this},back:function(){return this.hasBack()&&this.shift(-1),this},hasNext:function(){return this.currentStep<this.steps.length-1},hasBack:function(){return 0<this.currentStep},close:function(){if(!this.closed)return this.trigger("before:stop"),this.withCurrentStep(function(e){e.hide()}),_(this.steps).each(function(e){e.dispose()}),this.container.remove().empty(),this.steps=[],this.container=null,this.trigger("stop"),this.off(),this.closed=!0,$("body").removeClass("wizard-open"),this},isInvalidShift:function(e){var t=this.currentStep+(e||0),i=this.get(t);return!!i&&(t!==this.steps.length-1&&i.hasValue())},isStepPaused:function(){var e=this.currentStep;return-1<(this.options.model.get("paused")||[]).indexOf(e)},start:function(){return _.device("smartphone")&&!this.options.disableMobileSupport?(this.trigger("before:start"),_(this.steps).invoke("show"),this.container.appendTo("body"),this.withCurrentStep(function(e){e.renderNavBar()})):(this.trigger("before:start"),this.container.appendTo("body"),this.show
1First()),this.trigger("start"),$("body").addClass("wizard-open"),window.wizard=this},showFirst:function(){this.currentStep=0,this.shift(0)},spotlight:function(e,t){var i,o;e&&(_.isFunction(e)&&(e=e()),(i=$(e).filter(":visible")).length&&(o=g(i,t?t.padding:0),n[0].css({width:o.left,right:"auto"}),n[1].css({left:o.left,height:o.top,bottom:"auto"}),n[2].css({left:o.left+o.width,top:o.top}),n[3].css({left:o.left,top:o.top+o.height,right:o.right}),n[4].css(_(o).pick("top","right","bottom","left")),$("body").append(n)))},toggleBackdrop:function(e,t){i.css("backgroundColor",t||""),$("body").append(i.toggle(!!e))}});var s=e.extend({className:"wizard-step center middle",events:{"click [data-action]":"onAction",keydown:"onKeyDown",keyup:"onKeyUp"},onAction:function(e){e.preventDefault();var t=$(e.currentTarget).attr("data-action");e.stopImmediatePropagation(),this.trigger(t)},onKeyDown:function(e){var t,i,o;9===e.which&&this.$el.is(":visible")&&(t=this.$('button[tabindex!="-1"][disabled!="disabled"]:visible'),i=e.shiftKey&&document.activeElement===t.get(0),o=!e.shiftKey&&document.activeElement===t.get(-1),(i||o)&&(e.preventDefault(),t.get(i?-1:0).focus()))},onKeyUp:function(e){function t(e){return $(e.target).is("input, textarea, select")}switch(e.which){case 27:this.$el.find(".wizard-close").length&&this.trigger("close");break;case 37:!t(e)&&this.$el.find('[data-action="back"]:enabled').length&&this.trigger("back");break;case 39:!t(e)&&this.$el.find('[data-action="next"]:enabled').length&&this.trigger("next")}},initialize:function(e,t){this.parent=t,this.options=_.extend({id:void 0,modal:!0,focusWatcher:!0,back:!0,next:!0,enableBack:!0,labelBack:u("Back"),labelDone:u.pgettext("tour","Finish"),attributes:{}},e),this.on("all",function(e){this.parent.trigger("step:"+e,this.parent.currentStep)}),_(["width","minWidth"]).each(function(e){this.options[e]&&this.$el.css(e,this.options[e])},this),_.device("smartphone")||this.options.disableMobileSupport||this.once("before:show",this.renderButtons),this.$el.attr(this.options.attributes),this.render()},title:o(".wizard-title"),content:o(".wizard-content"),footer:o(".wizard-footer"),getModel:function(){return this.parent.options.model},getId:function(){return this.options.id},setValue:function(e){return this.getModel.set(this.getId(),e)},getValue:function(){return this.getModel().get(this.getId())},hasValue:function(){return void 0!==this.getValue()},render:function(){return this.$el.attr({role:"dialog",tabindex:-1,"aria-labelledby":"dialog-title"}).append($('<div role="document">').append($('<div class="wizard-header">').append($('<h1 class="wizard-title" id="dialog-title">'),$('<button type="button" class="wizard-close close" data-action="close">').attr("aria-label",u("Close")).append($('<i class="fa fa-times" aria-hidden="true">').attr("title",u("Close")))),$('<div class="wizard-content" id="dialog-content">'),$('<div class="wizard-footer">'))),this},renderButtons:function(){var e=this.getDirections(),t=this.$(".wizard-footer").empty();this.parent.options.showStepNumbers&&t.append($('<span class="wizard-step-number">').text(this.parent.currentStep+1+"/"+this.parent.steps.length)),e.back&&this.addButton(t,{action:"back",className:"btn-default",label:this.getLabelBack()}),e.next&&this.addButton(t,{action:"next",className:"btn-primary",label:this.getLabelNext()}),e.done&&this.addButton(t,{action:"done",className:"btn-primary",label:this.getLabelDone()})},renderNavBar:function(){var e=this.getDirections(),t=this.parent.container.find(".wizard-back").empty(),i=this.parent.container.find(".wizard-next").empty();e.back&&this.addLink(t,{action:"back",label:this.getLabelBack()}),e.next&&this.addLink(i,{action:"next",label:this.getLabelNext()}),e.done&&this.addLink(i,{action:"done",label:this.getLabelDone()}),this.parent.isStepPaused()&&this.toggleNext(!1)},addButton:a('<button type="button" class="btn">'),addLink:a('<a href="#" role="button">'),getLabelNext:function(){return void 0===this.options.labelNext?this.isFirst()?u("Start tour"):u("Next"):this.options.labelNext},getLabelBack:function(){return this.options.labelBack},getLabelDone:function(){return this.options.labelDone},getDirections:function(){return{back:this.options.back&&this.parent.hasBack(),next:this.options.next&&this.parent.hasNext(),done:this.options.next&&this.isLast()}},mandatory:function(){return this.$(".wizard-header .wizard-close").remove(),this},toggleNext:function(e){return _.device("smartphone")&&!this.options.disableMobileSupport?this.parent.container.find('[data-action="next"]').attr({disabled:!e,"aria-disabled":!e}):(this.$('.btn[data-action="next"]').prop("disabled",!e),this)},toggleBack:function(e){return this.$('.btn[data-action="back"]').prop("disabled",!e),this},isFirst:function(){return 0===this.parent.currentStep},isLast:function(){return this.parent.currentStep===this.parent.steps.length-1},indexOf:function(){return _(this.parent.steps).indexOf(this)},show:function(){return this.trigger("before:show"),_.device("smartphone")&&!this.options.disableMobileSupport?function(){return this.$el.css("left",100*this.indexOf()+"%").removeClass("center middle").appendTo(this.parent.container.find(".wizard-pages")),this.trigger("show"),this}.call(this):(this.parent.toggleBackdrop(!0),this.options.navigateTo?function(){this.trigger("before:navigate"),ox.launch(this.options.navigateTo.id,this.options.navigateTo.options).done(function(){this.trigger("navigate"),l.call(this,0)}.bind(this))}.call(this):this.options.waitFor?l.call(this,0):d.call(this),this)},hide:function(){return this.trigger("before:hide"),_.device("smartphone")&&!this.options.disableMobileSupport||(this.focusWatcher&&clearInterval(this.focusWatcher),$(window).off("resize.wizard.spotlight resize.wizard.hotspot resize.wizard-step"),this.$el.detach()),this.trigger("hide"),this},beforeShow:function(e){return this.once("before:show",e),this},referTo:function(e,t){return this.options.referTo={selector:e,options:t},this},spotlight:function(e,t){return this.options.spotlight={selector:e,options:t},this},hotspot:function(e,t){return _.isFunction(e)&&(e=e()),this.options.hotspot=_.isArray(e)?e:[[e,t]],this.options.backdropColor="rgba(255, 255, 255, 0.01)",this},modal:function(e){return this.options.modal=!!e,this},backdrop:function(e){return this.options.backdropColor=e,this},waitFor:function(e,t){return this.options.waitFor={selector:e,timeout:t},this},navigateTo:function(e,t){return this.options.navigateTo={id:e,options:t},this},scrollIntoView:function(e){return this.options.scrollIntoView=e,this},align:function(e){if(!this.disposed){if(!e&&this.options)return this.options.referTo?this.align(this.options.referTo):this.options.spotlight?this.align(this.options.spotlight.selector):void 0;var t,i;if(_.isString(e)?t=m(e):_.isObject(e)&&(t=m(e.selector),i=e.options),t){var n=this.$el,o=g(t),a=n.width(),r=n.height();if(!this.options.noAutoAlign){switch(n.removeClass("center middle").css({top:"auto",right:"auto",bottom:"auto",left:"auto"}),i&&i.position||"right"){case"right":c()||p()||u()||h()||f();break;case"left":u()||p()||c()||h()||f();break;case"bottom":p()||h()||c()||u()||f();break;case"top":h()||p()||c()||u()||f();break;default:f()}return this.trigger("align"),this}f()}}function s(e,t,i,o){t=Math.min(Math.max(16,t),o-i-16),n.css(e,t)}function l(e){s("left",e,a,o.availableWidth)}function d(e){s("top",e,r,o.availableHeight)}function c(){return o.left+o.width+a<o.availableWidth&&(l(o.left+o.width+16),d(o.top),1)}function u(){return 0<o.left-a&&(l(o.left-a-16),d(o.top),1)}function p(){return o.top+o.height+r<o.availableHeight&&(l(o.left),d(o.top+o.height+16),1)}
1function h(){return 0<o.top-r&&(l(o.left),d(o.top-r-16),1)}function f(){n.addClass("center middle").css({top:"",right:"",bottom:"",left:""})}},end:function(){return this.parent}});function l(e){if(0===e&&this.trigger("wait"),_.isFunction(this.options.waitFor.selector)&&(this.options.waitFor.selector=this.options.waitFor.selector()),m(this.options.waitFor.selector))return d.call(this);var t=_.isNumber(this.options.waitFor.timeout)?10*this.options.waitFor.timeout:50;e<t?setTimeout(function(){this.disposed||l.call(this,e+1)}.bind(this),100):(console.error("Step.show(). Stopped waiting for:",this.options.waitFor.selector),this.parent.close())}function d(){var e;this.$el.addClass("invisible").appendTo(this.parent.container),this.trigger("ready"),this.align(),$(window).on("resize.wizard-step",_.debounce(this.align.bind(this,null),100)),this.options.spotlight?(this.parent.toggleBackdrop(!1),this.parent.spotlight(this.options.spotlight.selector,this.options.spotlight.options),$(window).on("resize.wizard.spotlight",_.debounce(function(){this.disposed||this.parent.spotlight(this.options.spotlight.selector)}.bind(this),100))):this.parent.toggleBackdrop(this.options.modal,this.options.backdropColor),this.options.hotspot&&function(){_(this.options.hotspot).each(function(e){_.isString(e)&&(e=[e,{}]),t.add(e[0],e[1]||{})},this)}.call(this),!this.options.scrollIntoView||(e=$(this.options.scrollIntoView)).length&&e.get(0).scrollIntoView(),this.$el.removeClass("invisible").find('button[tabindex!="-1"][disabled!="disabled"]:visible:last').focus(),this.options.focusWatcher&&(this.focusWatcher=setInterval(function(){this.disposed||$.contains(this.el,document.activeElement)||this.$el.find('button[tabindex!="-1"][disabled!="disabled"]:visible:last').focus()}.bind(this),100)),this.trigger("show")}return r.registry={collection:new Backbone.Collection,add:function(e,t){e.run=t;var i=new Backbone.Model(e);return this.collection.add(i),i},get:function(e){return this.collection.get(e)},list:function(e){return void 0===e?this.collection:this.collection.where({type:e})},run:function(e){var t=this.get(e);t&&t.get("run")()}},r}),define("io.ox/tours/get-started",["io.ox/core/extensions","io.ox/core/capabilities","io.ox/core/tk/wizard","gettext!io.ox/core"],function(e,a,n,t){var i=Backbone.View.extend({tagName:"a",events:{click:"onClick",start:"onStart"},onClick:function(e){e.preventDefault();var t=$(e.target).closest("li"),i=t.attr("data-path"),o=i&&i.split(",");require(o,function(){var e=ox.ui.App.getCurrentApp();this.$el.trigger("start",e),n.registry.run(t.attr("data-id"))}.bind(this))},onStart:function(e,i){require(["io.ox/metrics/main"],function(e){e.trackPage({id:"io.ox/guidedtour"});var t=i.get("trackingId")||i.get("name")||i.get("id");e.trackEvent({app:"core",target:"toolbar",type:"click",action:"guided-tour",detail:t.substr(t.lastIndexOf("/")+1)})})},hide:function(){if(0<this.$el.parent().length)return this.$el.parent().toggle(!1)},show:function(){if(0<this.$el.parent().length)return this.$el.parent().toggle(!0)},onAppChange:function(){if(a.has("guest"))return this.hide();var e=ox.ui.App.getCurrentApp();if(null===e)return this.hide();var t=e&&_.isFunction(e.getTour),i=t&&e.getTour();if(t&&!_.isEmpty(i))return console.warn("guided tours: getTour is deprecated. Please use a manifest entry instead."),this.show().attr({"data-id":i.id,"data-path":i.path});var o="default/"+e.getName(),n=ox.manifests.pluginsFor(o);if(n.length)return this.show().attr({"data-id":o,"data-path":n});this.hide()},initialize:function(){this.listenTo(ox,"app:ready app:resume app:stop",this.onAppChange)},render:function(){return this.$el.attr({href:"#",role:"menuitem","data-action":"guided-tour"}).text(t("Guided tour for this app")),this}});e.point("io.ox/core/appcontrol/right/help").extend({id:"get-started",index:250,extend:function(){var e;_.device("smartphone")||a.has("guest")||(e=new i,this.append(e.render().$el),e.hide())}})}),define("io.ox/core/adaptiveLoader",["io.ox/core/extensions","io.ox/core/capabilities","settings!io.ox/core"],function(e,t,i){var o,n,a,r;return r=localStorage&&t.has("lab:adaptiveLoading")?(o=_(ox.serverConfig.capabilities).pluck("id").sort().join(","),n=i.get("language"),a=i.get("theme"),{log:function(){r.debug,console.log.apply(console,arguments)},listen:function(e){r.log("listen",e),r.cache||r.init(),r.currentChunk=e,r.modules=r.cache[e]||[]},startAndLoad:function(e){if(r.log("startAndLoad",e),r.cache||r.init(),r.listen(e),r.cache[e])return require(r.cache[e])},startAndEnhance:function(e,t){return r.log("startAndEnhance",e,t),r.cache||r.init(),r.listen(e),r.cache[e]&&_(r.cache[e]).each(function(e){_(t).contains(e)||t.push(e)}),r.log("enhanced",t),t},stop:function(){r.log("stop",r.currentChunk),r.cache||r.init(),r.currentChunk&&(r.cache[r.currentChunk]=_.uniq(r.modules),r.log(r.cacheKey,r.cache),localStorage.setItem(r.cacheKey,JSON.stringify(r.cache)),delete r.modules,delete r.currentChunk)},record:function(e){return r.log("record",e),r.cache||r.init(),setTimeout(function(){r.currentChunk===e&&r.stop()}),r.listen(e)},init:function(){r.log("init"),r.cacheKey="ox-adaptiveload-"+ox.base+"["+(ox.user||"anon")+"]["+o+"]["+n+"]["+a+"]",r.cache=JSON.parse(localStorage.getItem(r.cacheKey)),r.cache||(r.cache={}),r.log("cache",r.cache),$(window).on("require:require",function(e,t){r.modules&&r.modules.push(t.replace(/\.js$/,"")),r.dirty||(r.dirty=!0,setTimeout(function(){r.currentChunk&&(r.cache[r.currentChunk]=_.uniq(r.modules),r.log(r.cacheKey,r.cache),localStorage.setItem(r.cacheKey,JSON.stringify(r.cache))),r.dirty=!1},3e3))})}}):{listen:$.noop,startAndLoad:function(){return $.Deferred().resolve()},startAndEnhance:function(e,t){return t},stop:$.noop,record:$.noop,init:$.noop}}
1),define("io.ox/core/a11y",[],function(){function i(){var e=$(".folder-tree:visible .folder.selected");e.is(":visible")?e.focus():0<$(".window-container:visible").length&&l($(".window-container:visible"))}function t(e){(e=$(e)).is(".scrollable[tabindex],.listbox[tabindex]")?_.device("ie")?(e.css("border-style","none").on("blur",a),e.hasClass("default-content-padding")&&e.addClass("no-padding-adjustment")):e.css("box-shadow","none").on("blur",n):e.is(".focusable")&&e.css("outline",0).on("blur",o)}function o(){$(this).css("outline","")}function n(){$(this).css("box-shadow","")}function a(){$(this).css("border-style",""),$(this).removeClass("no-padding-adjustment")}$(document).on("keydown.role.button",'a[role="button"]',function(e){!/32/.test(e.which)||13===e.which&&e.isDefaultPrevented()||(e.preventDefault(),$(this).click())}),$(document).on("click",".skip-links",function(e){e.preventDefault(),i()}),$(document).on("keydown.quicklaunch","#io-ox-quicklaunch button",function(e){var t=ox.ui.App.getCurrentApp();13===e.which&&t.get("name")===$(this).attr("data-app-name")&&i()}),$(document).on("keydown.foldertree",".folder-tree .folder.selected",function(e){if(/13|32|27/.test(e.which)&&"false"!==$(e.target).attr("aria-expanded")&&("true"!==$(e.target).attr("aria-expanded")||!$(e.target).hasClass("virtual"))&&$(e.target).is("li")){var t=$(e.target).closest(".window-container");if(27===e.which&&$('#io-ox-quicklaunch button:not([tabindex="-1"])').focus(),/^(13|32)$/.test(e.which)){if(t.hasClass("io-ox-mail-window")||t.hasClass("io-ox-files-window"))return;e.preventDefault(),l(t)}}}),$(document).on("keydown.focusFolderTree",".list-item, .vgrid-scrollpane-container",function(e){var t;/13|32|27/.test(e.which)&&((t=$(e.target).closest(".window-container")).hasClass("io-ox-mail-window")||t.hasClass("io-ox-files-window")||(27===e.which&&(ox.ui.App.getCurrentApp().folderView.isVisible()?t.find(".folder-tree .folder.selected").focus():$('#io-ox-quicklaunch button:not([tabindex="-1"])').focus()),/13|32/.test(e.which)&&t.find(".rightside, .list-item.focusable:first").last().visibleFocus()))}),$(document).on("keydown.rightside",".rightside,.scrollpane.f6-target",function(e){var t;27===e.which&&((t=$(e.target).closest(".window-container")).hasClass("io-ox-mail-window")||t.hasClass("io-ox-files-window")||t.find(".folder-tree .folder.selected, .list-item.selectable.selected, .vgrid-cell.selectable.selected:first, .vgrid-scrollpane-container").last().focus())}),$(document).on("keydown.bs.dropdown.data-api",'ul.dropdown-menu[role="menu"]',s),$(document).on("keydown.launchers",'ul[role="menubar"], ul[role="tablist"], [role="toolbar"], ul.launchers',c),$(document).on("blur.listbox",'ul[role="listbox"].listbox',function(){$(this).removeAttr("aria-activedescendant")}),$(document).on("keydown.listbox",'ul[role="listbox"].listbox',function(e){var t=$(e.target).closest(".window-container"),i=$(this),o=$("#"+i.attr("aria-activedescendant"));if(/^27$/.test(e.which))return t.find(".folder-tree .folder.selected").focus();if(/^(13|32)$/.test(e.which))return e.preventDefault(),l(t);if(/^(8|46)$/.test(e.which)){var n=o.attr("data-cid");n&&i.trigger("remove",n)}else if(/^(37|38|39|40)$/.test(e.which)){var a=i.children(),r=/39|40/.test(e.which)?o.next():o.prev(),s=/39|40/.test(e.which)?a.first():a.last();return r.length||(r=s),r.addClass("focussed").attr("aria-selected",!0).trigger("click",{inputdevice:"keyboard"}).siblings().removeClass("focussed").removeAttr("aria-selected"),i.attr("aria-activedescendant",r.attr("id"))}}),$(document).on("click.listbox",'ul[role="listbox"].listbox li',function(){$(this).parent().attr("aria-activedescendant",$(this).attr("id"))}),$(document).on("mousedown",".focusable, .scrollable[tabindex]",function(e){t(e.currentTarget)}),$(document).on("click",".expandable-toggle",function(e){e.preventDefault();var t=$(this).closest(".expandable").toggleClass("open"),i=t.hasClass("open");i&&t.trigger("open"),$(this).attr("aria-expanded",i)});var e=$.fn.focus;function l(e){return e.find(".list-item.selectable.selected, .list-item.selectable:first, .vgrid-cell.selectable.selected, .vgrid-cell.selectable:first, .vgrid-scrollpane-container, .rightside, .scrollpane.f6-target").first().visibleFocus()}function r(e){var i={},o=$(e).find("input, select, textarea, button, a[href], [tabindex], iframe"),t=o.filter(function(){if(!$(this).is(":radio"))return!0;
1var e=$(this).attr("name");if(this===document.activeElement||$(this).is(":checked"))return i[e]=!0;if(i[e])return!1;var t=o.filter('[name="'+$.escape(e)+'"]:radio');return!(-1<t.index(document.activeElement)||t.filter(":checked").length)&&(i[e]=!0)}).filter(function(){return!$(this).closest('[contenteditable="true"]').length}).filter(":visible");return $($.map(t,function(e){return $(e).is("iframe")?r($(e).contents().find("html")).toArray():e}))}function s(e){if(9!==e.which){var t=$(e.target).closest("ul.dropdown-menu").find("li:visible > a"),i=t.first(),o=t.last(),n=$(e.target).is(o),a=$(e.target).is(i);if(1!==t.length)return 38===e.which&&a||34===e.which||35===e.which?(e.stopImmediatePropagation(),o.focus()):40===e.which&&n||33===e.which||36===e.which?(e.stopImmediatePropagation(),i.focus()):void d(e,t)}}function d(t,e){if(e.filter(":focus").length){var i,o=e.map(function(){var e=$(this).text()||$(this).attr("aria-label");if(e)return e.substring(0,1).toLowerCase()===String.fromCharCode(t.which).toLowerCase()?$(this):void 0});if(o.length){if(1===o.length)return o[0].focus();_.find(o,function(e,t){e.is(":focus")&&0<=t&&t<o.length-1&&(i=o[t+1])}),(i||o[0]).focus()}}}function c(e){var t,i;0<$(e.currentTarget).parents(".mce-tinymce").length||9===e.which||16===e.which&&e.shiftKey||(t=$(e.currentTarget).is("ul"),function(e,t){if(/^(37|39)$/.test(e.which)){var i=t.index(t.filter(":focus"));37===e.which?i--:i++,i<0&&(i=t.length-1),i===t.length&&(i=0);var o=t.eq(i).removeAttr("tabindex");$(e.currentTarget).is("ul")?o.parent().siblings().find("> a,> button").attr("tabindex",-1):o.siblings().attr("tabindex",-1),o.focus()}}(e,i=$(e.currentTarget).find(t?"> li > a, > li > button:not([disabled])":"> a, > button:not([disabled])").filter(":visible")),d(e,i))}return $.fn.focus=function(){return e.apply(this,arguments),document.activeElement===this[0]&&t(this[0]),this},$.fn.visibleFocus=function(){return e.apply(this)},$(document).on("keydown.f6",function(e){if(117===e.which&&(_.device("macos")||e.ctrlKey)){e.preventDefault();var t,i=$("#io-ox-core .f6-target:visible"),o=$(document.activeElement).closest(".f6-target"),n=i.index(o)||0,a=n;do{if((a+=e.shiftKey?-1:1)>=i.length&&(a=0),a<0&&(a=i.length-1),(t=i.eq(a)).is("input, select, textarea, button, .launcher a[href], [tabindex]:visible")){t.visibleFocus();break}if((t=r(t).first()).length){t.visibleFocus();break}}while(n!==a)}}),{collapse:function(e,t,i){i=_.extend({expanded:!1},i);var o=_.uniqueId("action"),n=_.uniqueId("content");e.addClass("collapsed").prop("id",o).attr({"data-target":"#"+n,"data-toggle":"collapse","aria-expanded":!1,"aria-controls":n}),t.addClass("collapse").addClass(i.expanded?"in":"").prop("id",n).attr({role:"region","aria-labelledby":o}).append(t),i.onChange&&_.isFunction(i.onChange)&&(t.on("show.bs.collapse shown.bs.collapse hide.bs.collapse hidden.bs.collapse",function(e){i.onChange.call(t,e.type)}),i.onChange.call(t,i.expanded?"show":"hide"))},dropdownTrapFocus:s,focusListSelection:l,getTabbable:r,getPreviousTabbable:function e(t){var i=arguments[1]||t.parent(),o=r(i).filter('[tabindex!="-1"]'),n=o.index(t);return 0<n?o.eq(n-1):i.is("body")?o.eq(o.length-1):e(t,i=i.parent())},getNextTabbable:function e(t){var i=arguments[1]||t.parent(),o=r(i).filter('[tabindex!="-1"]'),n=o.index(t);return n<o.length-1?o.eq(n+1):i.is("body")?o.eq(0):e(t,i=i.parent())},menubarKeydown:c,trapFocus:function(e,t){var i,o,n,a=r(e).filter('[tabindex!="-1"]');a.length&&(i=$(document.activeElement).is("iframe")?a.index($(document.activeElement).contents()[0].activeElement):a.index(document.activeElement),o=t.shiftKey&&0===i,n=i===a.length-1,(o||n)&&(t.preventDefault(),i=((i+=t.shiftKey?-1:1)+a.length)%a.length,a.eq(i).focus()))}}}),define("io.ox/core/tk/dialogs",["io.ox/core/event","io.ox/core/extensions","io.ox/core/a11y","io.ox/backbone/mini-views/helplink","gettext!io.ox/core"],function(D,g,A,m,i){function t(e){function s(e){0<$(e.target).closest(".io-ox-dialog-popup, .io-ox-sidepopup, .mce-window, .date-picker, .addressbook-popup").length||0<$("body > .smart-dropdown-container").length||c.popup.is(":visible")&&(e.stopPropagation(),c.popup.focus())}function o(){if(h){for(var e in d.container.removeClass("blockscroll"),h.trigger("close"),document.removeEventListener("focus",s,!0),c.popup.empty().remove(),c.underlay.remove(),c.wrapper.remove(),u=u.closest(":visible"),d.focus&&(u.hasClass("dropdown")?u.children().first().focus():u.focus()),h.events.destroy(),h)delete h[e];$(window).off("resize.mobile-dialog"),h.close=h.idle=$.noop,c.header=c.body=c.footer=c.underlay=c.wrapper=null,c.buttons=u=t=null,c=p=h=a=d=null}}function n(){c.footer.find("input, select, button").add(c.body.css("opacity",.5).find("input, select, button, textarea")).each(function(e,t){t=$(t),_.isUndefined(t.data("wasDisabled"))&&(t.data("wasDisabled",t.prop("disabled")),t.prop("disabled",!0))}),t=$(document.activeElement),c.popup.focus(),i=!0}function r(e){var t=e.data?e.data.action:e,i=d.async&&"cancel"!==t;i&&!d.noBusy&&n(),h.trigger("action "+t,a,h),!i&&h&&(p.resolveWith(c.popup,[t,a,h.getContentNode().get(0)]),o()),_.isObject(e)&&!_.browser.Safari&&(e.processed=!0)}
1function l(e){switch(e.which){case 27:i||0!==h.getBody().find(".open > .dropdown-menu").length||(e.stopPropagation(),d.easyOut&&r("cancel"));break;case 13:if(!i&&$(e.target).is("input:text, input:password"))return!!d.enter&&(_.isFunction(d.enter)?d.enter.call(h):(r(d.enter),!1));break;case 9:d.tabTrap&&A.trapFocus(this,e)}}ox.debug&&console.warn("io.ox/core/tk/dialogs is deprecated. Please use io.ox/backbone/views/modal for modal dialogs. io.ox/core/tk/dialogs will be removed in future releases.");var d=_.extend({width:500,underlayAction:null,defaultAction:null,easyOut:!0,center:!0,async:!1,noBusy:!1,maximize:!1,top:"50%",container:$("body>.io-ox-sidepopup-overlay").length?$("body"):$("#io-ox-core"),tabTrap:!0,focus:!0},e),c={buttons:[],underlay:$('<div class="modal-backdrop in" aria-hidden="true">').hide(),popup:$('<div class="io-ox-dialog-popup" role="dialog" aria-labelledby="dialog-title">').hide().append($('<div role="document">').append($('<div class="modal-header" id="dialog-title">'),$('<div class="modal-body">'),$('<div class="clearfix">'),$('<div class="modal-footer">'))),wrapper:$('<div class="abs io-ox-dialog-wrapper">')},u=$(),t=$(),p=$.Deferred(),i=!1,h=this,a={};function f(e,t,i,o){var n={label:t,data:{action:e},click:(o=o||{}).click||r,dataaction:i,purelink:o.purelink,inverse:o.inverse};o.type&&(n[o.type]=!0);var a=$.button(n);return c.buttons.push(a),a.addClass(o.classes).attr({type:"button"})}g.point("io.ox/core/dialogs").invoke("customize",this,d),d.container.append(c.wrapper.append(c.popup,c.underlay)),_(["header","body","footer"]).each(function(e){c[e]=c.popup.find(".modal-"+e)}),d.addClass&&c.popup.addClass(d.addClass),D.extend(this),this.resizeBody=function(){var e,t=h.getPopup().position().top,i=$(document).height(),o=h.getBody().height(),n=h.getPopup().height(),a=h.getBody().find(".vgrid-cell").eq(0).outerHeight(),r=n+t+30;i<=r&&(a<=(e=o+(i-r))?h.getBody().css("height",e+"px"):h.getBody().css("height",a+"px"))},this.data=function(e){return a=void 0!==e?e:{},this},this.header=function(){return c.header.append.apply(c.header,arguments),this},this.getHeader=function(){return c.header},this.getPopup=function(){return c.popup},this.getContentNode=this.getBody=function(){return c.body},this.getContentControls=this.getFooter=function(){return c.footer},this.text=function(e){var t=c.body,i=_.uniqueId("label-");return t.find(".plain-text").remove(),t.append($('<h4 class="plain-text">').attr("id",i).text(e||"")),c.popup.attr({"aria-labelledby":i,role:"alertdialog"}),this},this.build=function(e){return _.isFunction(e)&&e.call(this),this},this.append=function(){return c.body.append.apply(c.body,arguments),this},this.prepend=function(e){return c.body.prepend(e),this},this.addButton=function(e,t,i,o){return c.footer.prepend(f(e,t,i,o).addClass("btn-default")),this},this.addDangerButton=function(e,t,i,o){return c.footer.prepend(f(e,t,i,o).addClass("btn-danger")),this},this.addSuccessButton=function(e,t,i,o){return c.footer.prepend(f(e,t,i,o).addClass("btn-success")),this},this.addWarningButton=function(e,t,i,o){return c.footer.prepend(f(e,t,i,o).addClass("btn-warning")),this},this.addPrimaryButton=function(e,t,i,o){return c.footer.prepend(f(e,t,i,o).addClass("btn-primary")),this},this.addAlternativeButton=function(e,t,i,o){return c.footer.prepend(f(e,t,i,o).addClass("btn-default").css({float:"left",marginLeft:0})),this},this.addButtonMobile=f,this.addCheckbox=function(e,t,i){var o=_.uniqueId("form-control-label-");return c.footer.prepend($('<div class="checkbox">').append($('<div class="controls">
1'),$("<label>").attr("for",o).text(e).prepend($('<input type="checkbox">').attr({id:o,"data-action":t}).prop("checked",i)))),this},this.close=function(){!d||d.async?o():r("cancel")},this.invoke=function(e){return r(e),this},this.idle=function(){return c.footer.find("input, select, button").add(c.body.css("opacity","").find("input, select, button, textarea")).each(function(e,t){t=$(t),_.isUndefined(t.data("wasDisabled"))||(t.prop("disabled",t.data("wasDisabled")),t.removeData("wasDisabled"))}),t.focus(),i=!1,this},this.busy=function(){return n(),this},this.show=function(e){d.container.addClass("blockscroll"),d.focus&&(u=$(document.activeElement),document.addEventListener("focus",s,!0)),0===c.header.children().length&&c.header.remove(),d.help&&c.header.addClass("help").append(new m({href:d.help,modal:!0}).render().$el),c.underlay.show().addClass("in"),c.popup.addClass("invisible").show();function i(){var o={width:parseInt(d.width||1.1*c.popup.width(),10),height:parseInt(d.height||c.popup.height(),10)};return _(["width","height"]).each(function(e){var t=d[$.camelCase("max-"+e)];d[t]&&o[e]>d[t]&&(o[e]=d[t]);var i=$(document)[e]();o[e]&&o[e]>i&&(o[e]=i)}),o}function t(){var e,t;c&&(e=i(),c.popup.css({"max-width":e.width,top:d.top||0}),t=$("#io-ox-core").height()-2*d.top-c.header.outerHeight()-c.footer.outerHeight(),c.body.css({height:t,"max-height":t}))}var o,n,a=i();function r(){c.body.css("max-height",$("#io-ox-core").height()-40-c.header.outerHeight()-c.footer.outerHeight())}return _.device("!smartphone")&&(o={"max-width":a.width+"px"},d.center?(o.top="50%",n=function(){var e,t;c&&(e=c.popup.height(),(t=$(window).height())<c.popup.height()&&(e=t,o.overflow="auto",o.maxHeight="100%"),o.marginTop=0-(e/2>>0)+"px",c.popup.css(o))},$(window).off("resize.checkTop").on("resize.checkTop",n),n()):(c.popup.css("top",d.top||"0px"),d.maximize&&(t(),$(window).off("resize.maximizedpopup").on("resize.maximizedpopup",t)))),_.device("smartphone")&&(c.popup.addClass("mobile-dialog"),c.footer.rowfluid=$('<div class="row">'),c.footer.append(c.footer.rowfluid),_.each(c.buttons,function(e){c.footer.rowfluid.prepend(e.addClass("btn-medium")),e.wrap('<div class="col-xs-12 col-md-3">')})),this.trigger("beforeshow"),c.popup.removeClass("invisible"),_.device("smartphone")&&(r(),$(window).on("resize.mobile-dialog",r)),_.device("!smartphone")&&(c.popup.find(".btn-primary").first().focus().length||c.popup.find(".btn").not(".btn-danger").first().focus()),c.popup.on("keydown",l),e&&e.call(c.popup,this),$(c.wrapper).parentsUntil("body").add(c.wrapper).siblings(":not(script,noscript)").each(function(){var e=$
1(this);e.data("ox-restore-aria-hidden",e.attr("aria-hidden"))}).attr("aria-hidden",!0),h.on("close",function(){$(c.wrapper).parentsUntil("body").add(c.wrapper).siblings(":not(script,noscript)").removeAttr("aria-hidden").each(function(){var e=$(this);e.data("ox-restore-aria-hidden")&&e.attr("aria-hidden",e.data("ox-restore-aria-hidden")),e.removeData("ox-restore-aria-hidden")})}),this.trigger("show"),p},c.underlay.click(function(){d&&d.underlayAction&&r(d.underlayAction)}),c.popup.click(function(){d&&d.defaultAction&&r(d.defaultAction)}),this.setUnderlayAction=function(e){return d.underlayAction=e,this},this.topmost=function(){return c.underlay.addClass("topmost"),c.popup.addClass("topmost"),this},this.setUnderlayStyle=function(e){return c.underlay.css(e||{}),this},this.setDefaultAction=function(e){return d.defaultAction=e,this}}$(document).on("click",function(e){var t,i,o,n,a,r=$(e.target);0!==(t=r.hasClass("apptitle")?$(".io-ox-sidepopup:not(.preserve-on-appchange)"):$(".io-ox-sidepopup:not(.preserve-on-appchange), .preserve-on-appchange:visible")).length&&(i=r,o=[".io-ox-dialog-popup",".modal.in",".modal-backdrop.in",".modal-footer",".floating-window",".participant-wrapper.removable",".autocomplete-item",".io-ox-dialog-sidepopup-toggle"].join(", "),0<i.closest(o).length||(n=$(e.target).closest(".io-ox-sidepopup"),a=t.index(n),t.slice(a+1).trigger("close")))}),$(document).on("keydown",function(e){27===e.which&&$(".io-ox-sidepopup:not(.preserve-on-appchange), .preserve-on-appchange:visible").last().trigger("close")});return{ModalDialog:t,CreateDialog:function(e){e=$.extend({top:"50px",center:!1},e||{}),t.call(this,e)},SidePopup:function(p){p=_.extend({modal:!1,arrow:!0,closely:!1,tabTrap:!0,focus:!0},p||{});var o,h,f,g,m,v=null,x=$(),e=$('<div class="io-ox-sidepopup-pane f6-target default-content-padding abs">'),t=_.uniqueId("sidepopup-"),b=$('<div class="io-ox-sidepopup-close">').append($('<a href="#" class="close" data-action="close" role="button">').attr({"aria-label":i("Close"),"aria-controls":t}).append($('<i class="fa fa-times" aria-hidden="true">').attr("title",i("Close")))),w=$('<div class="io-ox-sidepopup abs" role="dialog">').attr("id",t).append($('<div role="document">').append(b,e)),y=!1===p.arrow?$():$('<div class="io-ox-sidepopup-arrow">').append($('<div class="border">'),$('<div class="triangle">')),k=null,C=this,S=e.scrollable();function T(e){var t=e/$("body").width()*100>>0;return Math.max(0,Math.min(100,t))}D.extend(this),p.modal&&(m=$('<div class="io-ox-sidepopup-overlay abs">').append(w,y)),p.preserveOnAppchange&&w.addClass("preserve-on-appchange"),this.nodes={},this.lastTrigger=null,f=function(e){h(e)},h=function(){C.nodes.closest&&(p.saveOnClose&&S.find(".settings-detail-pane").trigger("save"),C.nodes.closest.prop("sidepopup",g),w.off("view:remove remove close",f),C.lastTrigger=g=null,v=setTimeout(function(){var e,t;C.nodes.simple.length&&(1<(e=C.nodes.simple.find(".io-ox-sidepopup")).length?((t=e.eq(-2)).show(),$("body").scrollTop(t.attr("data-scrolltop")||0)):(C.nodes.simple.find("[data-hidden-by-sidepopup]").removeAttr("data-hidden-by-sidepopup").show(),$("body").scrollTop(C.lastSimpleScrollPos||0)),C.nodes.simple=null),p.modal?m.detach():(y.detach(),w.detach()),S.empty(),p.focus&&(x=x.closest(":visible")).focus(),C.trigger("close")},100))},w.on("close",h),w.on("keydown",function(e){9===e.which&&p.tabTrap&&A.trapFocus(this,e)}),b.find(".close").on("click",function(e){return S.trigger("click"),h(e),!1}).on("keydown",function(e){13===e.which&&$(this).trigger("click")}),o=function(o,n){var e,t,i,a,r,s,l,d,c,u=$(this);x=$(document.activeElement),C.nodes={closest:k||u.parents(".io-ox-sidepopup-pane, .window-content, .window-container-center, .io-ox-dialog-popup, .notifications-overlay, body").first(),click:u.parents(".io-ox-sidepopup-pane, .io-ox-dialog-popup, .notifications-overlay, body").first(),target:k||u.parents(".simple-window, .window-container-center, .notifications-overlay, #io-ox-notifications-sidepopup, body").first(),simple:u.closest(".simple-window")},t=C.nodes.closest.prop("sidepopup")||null,C.lastTrigger=t?t.lastTrigger:null,e=u.parents(".io-ox-sidepopup, .window-content, .io-ox-dialog-popup, .window-container-center, .notifications-overlay, body").css("zIndex"),e=parseInt(e,10),e=_.isNumber(e)?e+2:100,C.lastTrigger===this?h(o):(t&&t.close(),o&&o.stopPropagation(),C.lastTrigger=this,g=t,C.nodes.closest.prop("sidepopup",C),clearTimeout(v),w.on("view:remove remove",f),i=$("body").width(),l=0===(s=u.parents(".io-ox-sidepopup").first()).length,/^(left|right)$/.test(p.side)?a=p.side:C.nodes.target.is(".notifications-overlay")?a=s.hasClass("right")?"left":"right":(a=o.pageX>i/2?"left":"right",l&&(p.closely=!0,w.add(y).addClass("first"))),w.add(y).removeClass("left right").addClass(a).css("z-index",e),y.css("zIndex",e+1),p.closely&&_.device("!smartphone")&&(d=o.target&&$(o.target).is("iframe")?o.target.getBoundingClientRect().left:0,c="left"===a?(r="",Math.min(54,100-T(o.pageX+d-100))+"%"):(r=Math.min(54,T(o.pageX+d+100))+"%",""),w.add(y).css({left:r,right:c})),C.nodes.simple.length&&(C.lastSimpleScrollPos=$("body").scrollTop(),C.nodes.simple.find(".window-content:visible").attr("data-hidden-by-sidepopup","true").hide(),C.nodes.simple.find(".
1io-ox-sidepopup:visible").each(function(){$(this).attr("data-scrolltop",$("body").scrollTop()).hide()}),$("body").scrollTop(0)),_.defer(function(){C.nodes.target.append((p.modal?m:w).css("visibility","hidden")),(n||$.noop).call(C,S.empty(),o,u);var e=u.outerHeight(!0)/2>>0,t=C.nodes.target.offset()?C.nodes.target.offset().top:0,i=u.offset().top+e-t;y.css("top",i),(p.modal?m:w).css("visibility",""),p.modal||C.nodes.target.append(y),b.find(".close").focus(),C.trigger("show")}))},this.delegate=function(e,t,i){return $(e).on("click.sidepopup",t,function(e){!0!==(e.originalEvent||e).processed&&o.call(this,e,i)}),$(e).on("keypress.sidepopup",t,function(e){13===e.which&&!0!==(e.originalEvent||e).processed&&(o.call(this,e,i),e.preventDefault())}),this},this.undelegate=function(e){return $(e).off(".sidepopup"),this},this.setTarget=function(e){return k=$(e),this},this.show=function(e,t){return setTimeout(function(){o.call(e.target,e,t)},0),this},this.close=function(e){h(e)},this.destroy=function(){return h(),this.nodes=m=S=b=w=y=null,this}},busy:function(e){e.find("button, input").each(function(e,t){(t=$(t)).prop("disabled")?t.data("disabled",!0):t.prop("disabled",!0)})},idle:function(e){e.find("button, input").each(function(e,t){(t=$(t)).data("disabled")?t.removeData("disabled"):t.prop("disabled",!1)})}}}),define("io.ox/core/tk/draghelper",["io.ox/core/extensions"],function(e){e.point("io.ox/core/tk/draghelper").extend({id:"counter",index:100,draw:function(e){this.append($('<span class="drag-counter">').text(e.count))}}).extend({id:"text",index:200,draw:function(e){this.append($("<span>").text(e.source.attr("data-drag-message")||e.dragMessage.call(e.container,e.data,e.source)))}})}),define("io.ox/core/page-controller",[],function(){return function(e){var s,o,l={},n=[],d=[],a=this,c={navbar:e.navbar||$(),toolbar:e.toolbar||$(),options:{name:e.appname}},r=e||{};this.showPage=function(e){e!==s&&a.setCurrentPage(e)},this.changePage=function(e,t){if(l[e]){if(e!==s){var i=_.extend({from:s,animation:_.device("smartphone")?"slideleft":"pop",disableAnimations:!1},t||{}),o=l[e].$el,n=l[i.from].$el,a=$.Deferred();if(i.animation=_.device("android")?"pop":i.animation,o.trigger("pagebeforeshow",{frompage:i.from}),n.trigger("pagebeforehide",{topage:i.to}),_.device("smartphone"))try{document.activeElement&&"body"!==document.activeElement.nodeName.toLowerCase()?$(document.activeElement).blur():$("input:focus, textarea:focus, select:focus").blur()}catch(e){}d=s,s=e;var r=$('<div class="taptrap">');return _.device("!smartphone")&&(r=$()),Modernizr.cssanimations&&!i.disableAnimations?(_.defer(function(){o.append(r).addClass("io-ox-core-animation in current "+i.animation).one("webkitAnimationEnd mozAnimationEnd animationend",function(){$(this).removeClass("io-ox-core-animation in "+i.animation),o.trigger("pageshow",{from:i.from,to:i.to}),$(this).find(".taptrap").remove(),a.resolve()}),r=null},1),_.defer(function(){n.removeClass("current").addClass("io-ox-core-animation out inmotion "+i.animation).one("webkitAnimationEnd mozAnimationEnd animationend",function(){$(this).removeClass("io-ox-core-animation out inmotion "+i.animation),n.trigger("pagehide",{from:i.from,to:i.to})})},1)):(o.addClass("current").trigger("pageshow",{from:i.from,to:i.to}),n.removeClass("current").trigger("pagehide",{from:i.from,to:i.to})),u(e),p(e),ox.ui.apps.trigger("layout",c),a}}else console.warn("target page does not exist: ",e)},this.setBackbuttonRules=function(e){o=e},this.goBack=function(e){var t=d,i=_.extend({animation:"slideright"},e||{});o&&o[s]&&(t=o[s]),this.changePage(t,i)},this.addPage=function(e){var t,i;if(e)return t=e,i={tag:"<div>",classes:"io-ox-pagecontroller page",container:$()},t=_.extend(i,t),r.container&&(t.container=r.container),l[t.name]={$el:$(t.tag).addClass(t.classes),navbar:t.navbar,toolbar:t.toolbar,secondaryToolbar:t.secondaryToolbar,name:t.name},n.push(t.name),l[t.name].$el.attr("data-page-id",c.options.name+"/"+t.name),$(t.container).append(l[t.name].$el),t.startPage&&a.setCurrentPage(t.name),this},this.getPage=function(e){return l[e]?l[e].$el:(console.error("PageController: Page "+e+" does not exist."),void console.error("PageController: Available pages are "+n.join()))},this.getPageObject=function(e){return l[e]?l[e]:(console.error("PageController: Page "+e+" does not exist."),void console.error("PageController: Available pages are "+n.join()))},this.getNavbar=function(e){if(l[e])return l[e].navbar;console.error("PageController: Page "+e+" does not exist.")},this.getAll=function(){return l},this.getToolbar=function(e){if(l[e])return l[e].toolbar;console.error("PageController: Page "+e+" does not exist.")}
1,this.getSecondaryToolbar=function(e){if(l[e]){if(l[e].secondaryToolbar)return l[e].secondaryToolbar;console.error("PageController: Page "+e+" does not own a secondary toolbar.")}else console.error("PageController: Page "+e+" does not exist.")},this.getCurrentPage=function(){return l[s]},this.setCurrentPage=function(e){s&&l[s].$el.removeClass("current"),l[e].$el.addClass("current"),u(e),p(e),s=e},this.getPages=function(){return l};var u=function(e){var t=l[e].navbar,i=l[d];i&&i.navbar&&i.navbar.toggle(!1),t?(t.rendered||t.render(),c.navbar.append(t.$el),c.navbar.toggle(!0),t.toggle(!0)):(c.navbar.hide(),l[e].$el.addClass("fullscreen"))},p=function(e,t){var i;t&&l[e].secondaryToolbar?i=l[e].secondaryToolbar:l[e].toolbar&&(i=l[e].toolbar),i?(c.toolbar.children().detach(),c.toolbar.append(i.$el).show(),c.toolbar.trigger("show"),t||i.render()):c.toolbar&&(c.toolbar.children().detach(),c.toolbar.hide(),c.toolbar.trigger("hide"))};this.toggleSecondaryToolbar=p}}),define("io.ox/core/toolbars-mobile",["io.ox/core/extensions"],function(e){var t=Backbone.View.extend({show:function(){return this.$el.show(),this},hide:function(){return this.$el.hide(),this}}),i=t.extend({tagName:"div",className:"toolbar-content",events:{"touchstart .navbar-action":"cantTouchThis","touchend .navbar-action":"cantTouchThis","tap .navbar-action.right:not(.custom)":"onRightAction","tap .navbar-action.left:not(.custom)":"onLeftAction"},initialize:function(e){this.title=e.title?e.title:"",this.left=!!e.left&&e.left,this.right=!!e.right&&e.right,this.baton=e.baton,this.extension=e.extension,this.hiddenElements=[],this.rendered=!1},render:function(){return this.$el.empty(),this.rendered=!0,e.point(this.extension).invoke("draw",this,{left:this.left,right:this.right,title:this.title,baton:this.baton}),this.$el.find(this.hiddenElements.join()).hide(),this},cantTouchThis:function(e){"touchstart"===e.type&&$(e.currentTarget).addClass("tapped"),"touchend"===e.type&&$(e.currentTarget).removeClass("tapped")},setLeft:function(e){return this.left=e,this.render(),this},setTitle:function(e){return this.title=e,this.render(),this},setRight:function(e){return this.right=e,this.render(),this},onRightAction:function(e){e.preventDefault(),e.stopImmediatePropagation(),this.trigger("rightAction")},onLeftAction:function(e){e.preventDefault(),e.stopImmediatePropagation(),this.trigger("leftAction")},hide:function(e){return this.hiddenElements.push(e),this.hiddenElements=_.uniq(this.hiddenElements),this.render(),this},show:function(e){return this.hiddenElements=_.without(this.hiddenElements,e),this.render(),this},setBaton:function(e){return this.baton=e,this.render(),this},toggle:function(e){this.$el.toggle(e)}}),o=t.extend({initialize:function(e){this.page=e.page,this.baton=e.baton,this.extension=e.extension},render:function(){return this.$el.empty(),e.point(this.extension+"/"+this.page).invoke("draw",this.$el,this.baton),this},setBaton:function(e){return this.baton=e,this.render(),this}});return{BarView:t,NavbarView:i,ToolbarView:o}}),define("io.ox/core/folder/util",["io.ox/core/api/account","settings!io.ox/mail","settings!io.ox/core","settings!io.ox/calendar"],function(c,u,p,t){function h(e,t){return e>>t&(28<=t?1:127)}function f(e){return"calendar"===(e=e||"mail")?t.get("chronos/defaultFolderId"):"mail"===e?u.get("folder/inbox"):p.get("folder/"+e)}var g;function m(i,e){var t,o,n=0,a="";if(!e||!i)return!1;if(_.isArray(e))return _(e).reduce(function(e,t){return e&&m(i,t)},!0);if(-1<i.search(/\|/)){for(var r=i.split(/\|/),s=r.length,l=!1;n<s;n++)if(m(r[n],e)){l=!0;break}return l}switch(i){case"private":return 1===e.type;case"public":return"infostore"!==e.module||2!==e.type||/^(10|14|15)$/.test(e.id)?2===e.type||/^(10|14|15)$/.test(e.id):!function e(t,i){return!!g&&(i=i||[],!(!t||-1!==_(t).indexOf(i))&&(t.id.toString()===f("infostore").toString()||!(!t.folder_id||!g.models[t.folder_id])&&(i.push(t.id),e(g.models[t.folder_id].attributes,i))))}(e);case"shared":return 3===e.type;case"federated-sharing":return e["com.openexchange.calendar.provider"]?/^(xox\d+|xctx\d+)/.test(e["com.openexchange.calendar.provider"]):/^(xox\d+|xctx\d+)/.test(e.account_id);case"system":return 5===e.type||"system"===e.module;case"trash":return 16===e.type||12===e.standard_folder_type;case"mail":return"mail"===e.module;case"messaging":return"messaging"===e.module;case"calendar":return"calendar"===e.module;case"contacts":return"contacts"===e.module;case"tasks":return"tasks"===e.module;case"infostore":case"files":case"drive":return"infostore"===e.module;case"account":return"system"===e.module&&/^default(\d+)?/.test(String(e.id));case"unifiedfolder":return e&&(a=void 0!==e.id?e.id:e),c.isUnifiedFolder(a);case"external":return/^(default[1-9]|\w+:\/\/)/.test(String(e.id))&&!m("unifiedmail",e);case"defaultfolder":if(c.getType(e.id))return!0;for(a in t=u.get("folder"))if(t[a]===e.id)return!0;return!1;case"insideDefaultfolder":for(a in t=u.get("folder"))if(0===e.id.indexOf(t[a]))return!0;return!1;case"published":return!!e["com.openexchange.publish.publicationFlag"];case"subscribed":return!!e["com.openexchange.subscribe.subscriptionFlag"];case"unlocked":case"shared-by-me":if(e.permissions&&1<=e.permissions.length&&(o=_(e.permissions).filter(function(e){if(1===e.bits)return!0})),!e.permissions||e.permissions.length<=1||0<o.length)return;return 1===e.type||7===e.type||"infostore"===e.module&&e.created_by===ox.user_id;case"hidden":return!0===p.get(["folder/hidden"],{})[a=_.isObject(e)?e.id:e];case"attachmentView":var d=p.get("folder/mailattachments",{});return!_.isEmpty(d)&&-1<_.values(d).indexOf(e.id);default:return!1}}function v(i,e,o){if(_.isArray(e))return _(e).reduce(function(e,t){return e&&v(i,t,o)},!0);var t,n,a,r,s=e.own_rights,l=e.standard_folder||m("system",e),d=1===
1h(s,28),c="mail"===e.module,u=o?_.firstOf(o.created_by,o.createdBy?o.createdBy.entity:void 0,0):void 0,p=o&&ox.user_id!==u?1:0;switch(i){case"read":return"9"===e.id||0<h(s,7)&&1!==s;case"create":return m("system",e)?!1:!m("subscribed",e)&&(!(c&&!v("read",e))&&1<h(s,0));case"write":return m("subscribed",e)?!1:h(s,14)>p;case"delete":return m("subscribed",e)?!1:h(s,21)>p;case"rename":case"rename:folder":return c?1===h(s,30):d&&!l;case"create:folder":return 4==(4&(t=h(s,0)))||64==(64&t);case"delete:folder":case"remove:folder":case"restore:folder":return d&&!l&&!m("defaultfolder",e);case"move:folder":return a=o,r=m("external",n=e)&&n.virtual_parents[0],_.isEmpty(a)&&!r?v("remove:folder",n):n.folder_id!==a.id&&(n.id!==a.id&&(3!==n.type&&3!==a.type&&(5!==n.type&&(!m("defaultfolder",n)&&((1!==n.type||1===a.type||1===a.id||7===a.type)&&((2!==n.type||2===a.type||a.id in{2:1,10:1,15:1})&&(n.module===a.module&&!(!v("create:folder",n)||!v("create:folder",a)))))))));case"import":return 2<=(127&s)&&m("calendar|contacts|tasks",e);case"export":return!m("shared",e)&&m("contacts|calendar|tasks",e);case"empty":return s>>21&127&&m("mail",e);case"changepermissions":case"change:permissions":return d&&!!(1&e.capabilities);case"viewproperties":return!c&&!m("account",e)&&1&e.capabilities;case"publish":return x("publication",e)?"contacts"===e.module||"infostore"===e.module&&v("create",e)&&1!==s&&4!==s:!1;case"subscribe":return x("subscription",e)?/^(contacts|calendar|infostore)$/.test(e.module)&&v("write",e):!1;case"subscribe:imap":return c?0!==s&&((!e.standard_folder||!/^(7|9|10|11|12)$/.test(e.standard_folder_type))&&Boolean(e.capabilities&Math.pow(2,4))):!1;case"change:seen":return x("STORE_SEEN",e);case"add:version":return x("file_versions",e);case"sync:cache":return x("cached",e);default:return!1}}function x(e,t){return t instanceof Backbone.Model?-1<_(t.get("supported_capabilities")).indexOf(e):-1<_(t.supported_capabilities).indexOf(e)}return{registerPool:function(e){g=e},perm:h,bits:function(e,t){return h(_.firstOf(e.own_rights,e,0),t||0)},supports:x,is:m,can:v,getDefaultFolder:f,open:function e(t){t&&t.toggle&&(t.toggle("open",!0),t.options&&e(t.options.parent))}}}),define("io.ox/core/folder/sort",["io.ox/core/extensions","io.ox/core/api/account"],function(o,a){var n=o.point("io.ox/core/folder/sort");return n.extend({id:"1",sort:function(e){var t,o,n;"1"===e.id&&(t=e.data,o=new Array(6),n="inbox sent drafts trash spam".split(" "),_(t).find(function(e){return a.isUnified(e.id)&&!!(o[0]=e)}),_(t).each(function(i){_(n).find(function(e,t){return a.is(e,i.id)&&!!(o[t+1]=i)})}),(t=_(t).reject(function(e){return a.isUnified(e.id)||a.isStandardFolder(e.id)})).sort(function(e,t){var i=a.isExternal(e.id),o=a.isExternal(t.id),n=e.title.toLowerCase()>t.title.toLowerCase()?1:-1;return i&&o?n:i?1:o?-1:n}),t.unshift.apply(t,_(o).compact()),e.data=t)}}),{apply:function(e,t){var i=o.Baton({id:e,data:t});return n.invoke("sort",null,i),i.data}}}),define("io.ox/core/folder/blacklist",["io.ox/core/extensions","settings!io.ox/core","settings!io.ox/files"],function(i,o,t){var n=i.point("io.ox/core/folder/filter"),a=o.get("folder/blacklist",{}),r={},e=_(a).keys().sort();function s(e,t){return e&&!!t}return ox.debug&&0<e.length&&console.info("Blacklisted folders:",e),n.extend({id:"blacklist",index:100,visible:function(e){var t=e.data,i=String(t.id);return!(a=_.extend(o.get("folder/blacklist",{}),r))[i]}},{id:"dot-folders",index:200,visible:function(e){return"infostore"!==e.data.module||(!0===t.get("showHidden",!1)||!/^\./.test(e.data.title))}}),{hash:a,filter:function(e){var t=i.Baton({data:e});return n.invoke("visible",null,t).reduce(s,!0).value()},visible:function(e){return this.filter(e)},apply:function(e){return _(e).filter(this.filter,this)},add:function(e){r[e]=!0}}}),define("io.ox/core/folder/title",[],function(){return function(e,t){if((e=String(e||"").trim()).length<t)return e;var i=!!/[_-]/.test(e[0])&&e[0],o=!!/[_-]/.test(e[e.length-1])&&e[e.length-1],n=e.split(/[ _-]+/),a=e.split(/[^ _-]+/),r=e.length;for(i&&(n[1]=i+n[1],n.splice(0,1)),o&&(n[n.length-1]=o+n[n.length-1],n.splice(n.length-1,1));t<r&&2<n.length;){var s=Math.floor(n.length/2);r-=n[s].length+2,n.splice(s,1),a.splice(s+1,1),a[Math.floor(a.length/2)]="…"}return t<r?_.ellipsis(e,{charpos:"middle",max:t,length:Math.floor(t/2-1)}):_(n).map(function(e,t){return e+a[t+1]}).join("")}}),define("io.ox/core/folder/bitmask",[],function(){function o(e){if(_.isString(e)){if(e in t)return t[e];console.error("Typo!?",e)}return e||0}var t={folder:0,read:7,write:14,modify:14,delete:21,admin:28};return function(i){i=i||0;var e={get:function(e){return 0===arguments.length?i:i>>o(e)&127}
1,set:function(e,t){return e=o(e),i&=536870911^127<<e,i|=(t=t||0)<<e,this}};return e}}),define("io.ox/core/folder/api",["io.ox/core/http","io.ox/core/folder/util","io.ox/core/folder/sort","io.ox/core/folder/blacklist","io.ox/core/folder/title","io.ox/core/folder/bitmask","io.ox/core/api/account","io.ox/core/api/user","io.ox/core/api/jobs","io.ox/core/capabilities","io.ox/contacts/util","settings!io.ox/core","settings!io.ox/mail","settings!io.ox/calendar","io.ox/core/api/filestorage","gettext!io.ox/core"],function(d,c,i,s,e,n,u,t,l,o,a,p,r,h,f,g){var m,v={};function x(e){return"1"===(e=String(e))||/^default\d+/.test(e)?0:1}function b(e,t,i){return t["index/"+e]=i,t}function w(i){var o=[].concat(i).filter(function(e){return!!/^(contacts|calendar|tasks|event)$/.test(e.module)&&(e.id===String(h.get("chronos/defaultFolderId"))||(c.is("shared",e)&&e.created_from&&t.checkForName(e.created_from)?(e.display_title=g("%1$s: %2$s",t.checkForName(e.created_from),e.title),!1):0!==e.created_by&&(void 0===e.display_title&&c.is("shared",e))))}),n=_(o).chain().pluck("created_by").compact().uniq().value();return 0===n.length?$.when(i):t.getList(n).then(function(e){var t=_.object(n,e);return _(o).each(function(e){e.id===String(h.get("chronos/defaultFolderId"))||e.title===g("Calendar")?e.display_title=a.getFullName(t[e.created_by]||{})||g("Default calendar"):t[e.created_by]&&(e.display_title=g("%1$s: %2$s",a.getFullName(t[e.created_by]),e.title))}),i})}function y(e){delete m.models[e.previous("id")],m.models[e.id]=e}function k(e){m.unfetch(e.id)}function C(e){return"cal://0/allPublic"===e||/^virtual/.test(e)}function S(e){return/^(contacts|calendar|tasks|event)$/.test(e)}function T(e,t){return(t?"all/":"")+String(e)}function D(e){return m.getCollection(e.id).reduce(function(e,t){var i=u.getType(t.get("id"));return"trash"===i||"spam"===i||"confirmed_spam"===i?e:e+(t.get("subtotal")||0)+(t.get("unread")||0)},0)}function A(t,e,i){var o=e-(void 0!==t._previousAttributes[i]&&null!==t._previousAttributes[i]?t._previousAttributes[i]:0),n=m.models[t.get("folder_id")],a=t.get("virtual_parents");0!=o&&n&&"system"!==n.get("module")&&m.collections[n.get("id")]&&(n.is("unifiedfolder")||n.set("subtotal",D(n))),0!=o&&a&&0<a.length&&_(a).each(function(e){m.models[e]&&m.collections[e]._byId[t.get("id")]?m.models[e].set("subtotal",D(m.models[e])):t.set("virtual_parents",_(t.get("virtual_parents")).without(e))})}function M(e,t){A(e,t,"subtotal")}function N(e,t){A(e,t,"unread"),v.trigger("change:unread",e,t)}_.extend(v,Backbone.Events);var F=Backbone.Model.extend({constructor:function(){Backbone.Model.apply(this,arguments),this.set("virtual_parents",[]),"mail"!==this.get("module")&&void 0!==this.get("module")||this.on({"change:id":y,"change:subtotal":M,"change:unread":N})},isAdmin:function(){return!!new n(this.get("own_rights")).get("admin")},getAccountDisplayName:function(){return f.getAccountDisplayName(this.get("account_id"))},supportsInternalSharing:function(){return!!this.is("drive")||(this.is("mail")?o.has("gab")&&this.can("change:permissions"):!(this.is("calendar")&&this.is("private")&&!this.supportsShares())&&(this.is("public")?o.has("edit_public_folders"):o.has("read_create_shared_folders")))},supportsInviteGuests:function(){return!this.is("mail")&&o.has("invite_guests")&&this.supportsInternalSharing()},supportsShares:function(){return!(!this.is("mail")||1!=(1&this.get("capabilities")))||this.supports("permissions")},isShareable:function(){return this.isAdmin()&&this.supportsShares()},supports:function(e){return c.supports(e,this.attributes)},is:function(e){return c.is(e,this.attributes)},can:function(e){return c.can(e,this.attributes)}}),E=Backbone.Collection.extend({model:F,constructor:function(e){Backbone.Collection.apply(this,arguments),this.id=e,this.fetched=!1,this.on("remove",this.onRemove,this),(/^flat\/(contacts|calendar|tasks|event)\/shared$/.test(this.id)||/^flat\/(contacts|calendar|tasks|event)\/hidden$/.test(this.id))&&(this.comparator=function(e){return(e.get("display_title")||e.get("title")).toLowerCase()})}
1,comparator:function(e){return e.get("index/"+this.id)||0},onRemove:function(e){S(e.get("module"))||(m.getModel(this.id).set("subscr_subflds",0<this.length),v.trigger("collection:remove",this.id,e))}});function I(){this.models={},this.collections={}}function P(e,t){return t=s.apply(t),t=i.apply(e,t),_(t).each(b.bind(null,e)),t}_.extend(I.prototype,{addModel:function(e){if(e.attributes)return e;var t=e.id,i=this.models[t];return void 0===i?(this.models[t]=i=new F(e),v.trigger("pool:add",i)):i.set(e),i},removeModels:function(i){i&&_.each(this.models,function(e,t){return!e.get("account_id")||(e.get("account_id")!==i||(v.trigger("remove",t,this.models[t].toJSON()),void delete this.models[t]))}.bind(this))},addCollection:function(t,e,i){i&&!i.all&&_(e).each(function(e){delete e.subfolders});var o=_(e).map(this.addModel,this);i=i||{};var n=this.getCollection(t),a=n.fetched?"set":"reset";if(n.expired=!1,this.models[t]&&C(t)&&_(n.models).each(function(e){e.set("virtual_parents",_(e.get("virtual_parents")).without(t))}),n[a](o),n.fetched=!0,this.models[t]&&("mail"===this.models[t].get("module")||void 0===this.models[t].get("module"))&&!this.models[t].is("unifiedfolder")){for(var r=0,s=0;s<o.length;s++){var l,d=u.getType(o[s].get("id"));"trash"!==d&&"spam"!==d&&"confirmed_spam"!==d&&(r+=(o[s].get("subtotal")||0)+(o[s].get("unread")||0),!C(t)||(l=o[s].get("virtual_parents"))&&(l.push(t),o[s].set("virtual_parents",_.uniq(l))))}this.models[t].set("subtotal",r)}i.reset&&n.trigger("reset")},removeCollection:function(e,t){t=t||{};var i,o=this.collections[e],n=this,a=o?o.models:[];o&&(o=null,delete this.collections[e],_(a).each(function(e){Y(e.id),n.removeCollection(e.id,t)}
1),t.removeModels&&this.models[e]&&(i=this.models[e].toJSON(),this.models[e]=null,delete this.models[e],v.trigger("remove",e,i),v.trigger("remove:"+e,i),v.trigger("remove:"+i.module,i)))},getModel:function(e){return this.models[e]||(this.models[e]=new F({id:e}))},getCollection:function(e,t){return e=T(e,t),this.collections[e]||(this.collections[e]=new E(e))},expire:function(){_(this.collections).each(function(e){e.expired=!0})},unfetch:function(e){if(0===arguments.length||"0"===e)return _(this.collections).each(function(e){e.fetched=!1});var t=this.collections[e];t&&(t.fetched=!1,t.each(k))}}),m=new I,_(ox.rampup.folder).chain().keys().each(function(e){m.addModel(ox.rampup.folder[e])});var L={};_(ox.rampup.folderlist||{}).each(function(e,t){L[t]=_(e).map(function(e){return _.isArray(e)?d.makeObject(e,"folders"):e})}),o.has("webmail")&&m.addModel({folder_id:"default0/INBOX",id:"virtual/all-unseen",module:"mail",title:g("Unread")}),!o.has("guest")&&o.has("edit_public_folders")&&m.addModel({folder_id:"1",id:"cal://0/allPublic",module:"calendar",permissions:[{bits:0,entity:ox.user_id,group:!1}],standard_folder:!0,supported_capabilities:[],title:g("All my public appointments"),total:-1,type:1,subscribed:!0});var q=$.when();function z(e){if(e instanceof Backbone.Model){var t=e,i=t.toJSON(),o=i.id;return void 0!==t.changed.total&&null!==t.changed.total&&(v.trigger("update:total",o,i),v.trigger("update:total:"+o,i)),void(void 0!==t.changed.unread&&null!==t.changed.unread&&(v.trigger("update:unread",o,i),v.trigger("update:unread:"+o,i)))}return/^account:(create|delete|unified-enable|unified-disable)$/.test(e)?U("1",{cache:!1}).done(function(){V.refresh(),v.trigger("refresh")}):q}function O(e,t){this.id=e,this.getter=t}O.prototype.concat=function(){return _.whenSome.apply(void 0,arguments).then(function(e){return e.rejected.length&&_.each(e.rejected,function(e){console.error(e)}),_(e.resolved).chain().flatten().compact().value()})},O.prototype.list=function(){var t=this.id;return this.getter().done(function(e){_(e).chain().map(function(e){return C(e.id)?_.extend(e,m.getModel(e.id).toJSON()):e}).each(b.bind(null,t)).value(),m.addCollection(T(t),e),m.getModel(t).set("subscr_subflds",0<e.length)})};var V={hash:{},list:function(e){var t=this.hash[e];return void 0!==t?t.list():$.Deferred().reject({error:"virtual folder "+e+" not hashed."})},add:function(e,t){this.hash[e]=new O(e,t),m.getModel(e).set("subscr_subflds",!0)},concat:function(){return ox.debug&&console.warn("Deprecated! Please use this.concat()"),$.when.apply($,arguments).then(function(){return _(arguments).chain().flatten().map(b.bind(null,"concat")).value()})},reload:function(e){m.getCollection(T(e)).fetched=!1,this.list(e)},refresh:function(){_(this.hash).invoke("list")},getCollections:function(){return _(this.hash).keys().map(function(e){return v.pool.getCollection(e)})}};function R(e){return e={error:e,code:"UI-FOLDER"},console.warn("folder/api",e),v.trigger("error error:"+e.code,e),$.Deferred().reject(e)}function B(t,e){if(void 0===t)return R("Cannot fetch folder with undefined id");t=String(t),e=_.extend({cache:!0},e);var i=m.models[t];return!0===e.cache&&void 0!==i&&i.has("title")?$.when(i.toJSON()):C(t)?$.when({id:t}):"6"!==t||o.has("gab")?d.GET({module:"folders",params:{action:"get",altNames:!0,id:t,timezone:"UTC",tree:x(t)}}).fail(function(e){return v.trigger("error error:"+e.code,e,t),e}).pipe(function(e){var t=m.addModel(e);return _(t.changed).size()&&v.trigger("changesAfterReloading:"+t.get("module"),t),z(t),e}):R(g("Accessing global address book is not permitted"))}function U(t,i){t=String(t),i=_.extend({all:!1,cache:!0,force:!1},i);var o=T(t,i.all),e=m.getCollection(o);if(e.fetched&&!e.expired&&!0===i.cache)return $.when(e.toJSON());if(L[t]&&!i.all){var n=P(t,L[t]);return delete L[t],w(n).then(function(e){return m.addCollection(t,e),e})}var a,r,s=/^flat\/([^/]+)\/([^/]+)$/.exec(t);return s?(a=s[1],r=s[2],J({module:a,cache:i.cache}).then(function(e){return e[r]})):C(t)?V.list(t):d.GET({module:"folders",params:{action:"list",all:i.all?"1":"0",altNames:!0,parent:t,timezone:"UTC",tree:x(t),forceRetry:i.force},appendColumns:!0}).then(w,function(e){throw v.trigger("error error:"+e.code,e,t),e}).then(function(e){return e=P(t,e),m.addCollection(o,e,{all:i.all}),e})}function j(e){return d.makeObject(e,"folders")}function H(e,t){return"flat/"+e+"/"+t}function W(e,t){return m.getCollection(H(e,t))}function G(){return _(m.collections).chain().keys().filter(function(e){return/^flat/.test(e)}).map(function(e){return e.split("/")[1]}
1).uniq().value()}function J(t){if("calendar"===(t=_.extend({module:void 0,cache:!0,force:!1},t)).module&&(t.module="event"),ox.debug&&!t.module)return console.warn("Folder API > flat() - Missing module",t),$.Deferred().reject();var l=t.module,e=W(l,"private"),i={};return e.fetched&&!0===t.cache?(i.private=e.toJSON(),["public","shared","sharing","hidden"].forEach(function(e){var t=W(l,e);t.fetched&&(i[e]=t.toJSON())}),$.when(i)):(v.trigger("before:flat:"+t.module),d.GET({module:"folders",appendColumns:!0,params:{action:"allVisible",altNames:!0,content_type:"contacts"===l?"contact":l,timezone:"UTC",tree:1,forceRetry:!!t.force,all:!!t.all}}).then(function(e){var o=[],t=_(e).chain().map(function(e,t){var i=_(e).chain().map(j).filter(function(e){var t=!!new n(e.own_rights).get("admin");return!!(c.can("read",e)||c.can("change:permissions",e)||t)}).value();return o.push(i),[t,i]}).object().value();return w(_(o).flatten()).then(function(){return t})}).then(function(e){var o,n={},a=[],r=[],s=p.get(["folder/hidden"],{});return"event"!==l||e.public||(e.public=[]),_(e).each(function(e,t){var i=_(e).filter(function(e){return s[e.id]?(a.push(e),!1):(c.is("shared-by-me",e)&&r.push(e),!0)});"event"===l&&"public"===t&&i.unshift(m.getModel("cal://0/allPublic").toJSON()),i=P(o=H(l,t),i),m.addCollection(o,n[t]=i,{reset:!0})}),o=H(l,"hidden"),a=P(o,a),m.addCollection(o,n.hidden=a,{reset:!0}),o=H(l,"sharing"),r=P(o,r),m.addCollection(o,n.sharing=r,{reset:!0}),v.trigger("after:flat:"+t.module),n}))}function K(t,i,o){if(_.isObject(i)&&!_.isEmpty(i)){o=_.extend({silent:!1},o);var n=m.getModel(t).set(i,{silent:o.silent});if(C(t))return $.when();o.silent||v.trigger("before:update before:update:"+t,t,n);var e={folder:i},a=function(e){if(t!==e&&n.set("id",e),o.cascadePermissions&&re(),o.silent||(v.trigger("update update:"+t,t,e,n.toJSON()),"permissions"in i&&v.trigger("change:permissions",t),"subscribed"in i&&v.trigger("change:subscription",t,i)),t!==e||i.title||i.folder_id)return U(n.get("folder_id"),{cache:!1}).then(function(){return m.getCollection(n.get("folder_id")).sort(),"title"in i&&v.trigger("rename",t,n.toJSON()),"title"in i&&v.trigger("after:rename",t,n.toJSON()),e})},r=function(e){throw v.get(t,{cache:!1}),e&&e.code&&"FLD-0018"===e.code&&(e.error=g("Could not save settings. There have to be at least one user with administration rights.")),o.silent||v.trigger("update:fail",e,t),e};return o.notification&&!_.isEmpty(o.notification)&&(e.notification=o.notification),d.PUT({module:"folders",params:{action:"update",id:t,timezone:"UTC",tree:x(t),cascadePermissions:o.cascadePermissions,ignoreWarnings:o.ignoreWarnings,allow_enqueue:o.enqueue},data:e,appendColumns:!1}).done(function(){var e=n.toJSON();s.visible(e)||v.trigger("warn:hidden",e)}).then(function(e){return e&&o.enqueue&&("JOB-0003"===e.code||e.job)?(l.addJob({module:"folders",action:"update",done:!1,showIn:n.get("module"),id:e.job||e.data.job,successCallback:a,failCallback:r}),e):a(e)},r)}}function Y(e){_(m.collections).invoke("remove",e)}var X=[];function Q(e){return!u.is("sent",e.folder_id)}function Z(e){return _.isString(e)?e:e?e.folder_id:null}function ee(){_.chain(arguments).flatten().map(Z).compact().uniq().each(function(e){ee.hash[e]||(ee.hash[e]=_.debounce(B.bind(null,e,{cache:!1}),ee.wait)),v.trigger("reload:"+e),ee.hash[e]()})}function te(e){var t=m.getModel(e).get("module");p.set(["folder/hidden",e],!0).save(),v.trigger("hide",e),J({module:t,cache:!1})}function ie(e){var t=m.getModel(e).get("module");p.remove(["folder/hidden",e]).save(),v.trigger("show",e),J({module:t,cache:!1})}ee.hash={},ee.wait=2e3;var oe,ne=(oe={},function(e,t){var i,o=m.getModel(e);o.set("unread",Math.max(0,o.get("unread")+t)),oe[i=e]&&clearTimeout(oe[i]),oe[i]=setTimeout(ae,500,i)});function ae(e){delete oe[e],ee(e)}function re(){m.expire(),d.pause();var t=[];return _(v.pool.models).chain().filter(function(e){return!S(e.get("module"))}).invoke("get","folder_id").uniq().compact().without("0").each(function(e){t.push(U(e,{cache:!1}))}),_(G()).each(function(e){t.push(J({module:e,all:"event"===e,cache:!1}))}),$.when.apply($,t).always(function(){V.refresh()}),d.resume()}ox.on("please:refresh refresh^",re),ox.on("account:delete",m.removeModels.bind(m)),f.on("create update",re);var se=""===r.get("namespace","INBOX/");function le(){return r.get("defaultseparator","/")}return c.registerPool(m),_.extend(v,{FolderModel:F,FolderCollection:E,Pool:I,pool:m,calculateSubtotal:D,get:B,list:U,multiple:function(e,i){if(!e||!e.length)return $.when([]);i=_.extend({cache:!0,errors:!1},i);try{return d.pause(),$.when.apply($,_(e).map(function(t){return B(t,{cache:i.cache}).pipe(null,function(e){return(e=_.extend({},e)).id=t,$.when(i.errors?e:void 0)})})).pipe(function(){return _(arguments).toArray()}).pipe(function(e){return e.length?_(e).all({code:"OFFLINE"})?t("offline"):_(e).all({code:"NOSERVER"})?t("noserver"):e:[]})}finally{d.resume()}function t(e){return $.Deferred().reject({error:d.messages[e],code:e.toUpperCase()})}},path:function(e){var t,i=[],o=e,n=!1;if(void 0===e)return $.when([]);for(;i.push(t=m.getModel(o).toJSON()),o=t.folder_id,n="1"===String(o)||o===e,o&&!n;);return n?$.when(i.reverse()):C(e)?m.getModel(e).toJSON()?$.when([m.getModel(e).toJSON()]):$.when([]):d.GET({module:"folders",params:{action:"path",altNames:!0,id:e,tree:x(e)},appendColumns:!0}).then(function(e){return _(e).filter(function(e){return m.addModel(e),"1"!==e.id}).reverse()})},flat:J,update:K,move:function(i,o,e){if(i===o)return $.when();e=e||{};var n=m.getModel(i),a=n.get("folder_id");return Y(n),v.trigger("before:move",n.toJSON(),o),n.set("unread",0),K(i,{folder_id:o},e).then(function(e){function t(e){if(e.error)throw m.getModel(a).set("subscr_subflds",!0),V.refresh(),m.getCollection(a).add(n),e;m.getModel(o).set("subscr_subflds",!0),V.refresh(),m.getCollection(o).add(n),v.trigger("move",i,e)}if(e&&("JOB-0003"===e.code||e.job))return v.trigger("new:longrunningjob"),void l.on("finished:"+(e.job||e.data.job),t);t(e)},function(e){throw m.getModel(a).set("subscr_subflds",!0),m.getCollection(a).add(n),V.refresh(),e})}
1,create:function(i,o){return B(i=String(i)).then(function(e){S((o=_.extend({module:e.module,subscribed:1,title:g("New Folder")},o)).module)&&"calendar"!==o.module&&"event"!==o.module&&"2"!==e.id&&!c.is("public",e)&&(o.permissions=_(e.permissions).filter(function(e){return!!(268435456&e.bits)}));var t={action:"new",autorename:!0,folder_id:i};return"event"!==o.module&&(t.tree=x(i)),d.PUT({module:"folders",params:t,data:o,appendColumns:!1}).then(function(e){return B(e)}).then(function(e){return(S(o.module)?J({module:o.module,cache:!1}):U(i,{cache:!1})).then(function(){return e})}).done(function(e){s.visible(e)||v.trigger("warn:hidden",e)}).done(function(e){m.getModel(i).set("subscr_subflds",!0),V.refresh(),v.trigger("create",e),v.trigger("create:"+i.replace(/\s/g,"_"),e)}).fail(function(e){v.trigger("create:fail",e,i)})})},remove:function(e){_.isArray(e)||(e=[e]);var t,a={};return _(e).each(function(e){var t=m.getModel(e),i=a[e]=t.toJSON();v.trigger("before:remove",i),t.set("unread",0),Y(t),delete m.models[e],t.trigger("destroy")}),t={action:"delete",failOnError:!0,tree:x(e[0]),extendedResponse:!0},d.PUT({module:"folders",params:t,data:e,appendColumns:!1}).done(function(n){n=n||[],_(e).each(function(t,e){var i,o=a[t];v.trigger("remove",t,o),v.trigger("remove:"+t,o),v.trigger("remove:"+o.module,o),S(o.module)||(v.is("trash",o)||n[e]&&_.isEmpty(n[e].new_path)?v.pool.removeCollection(t,{removeModels:!0}):(X.push(t),i=n[e]?n[e].new_path:t,v.get(i,{cache:!1}).fail(function(e){"FLD-0008"!==e.code&&"IMAP-1002"!==e.code||v.pool.removeCollection(t,{removeModels:!0})}).always(function(){X=_(X).without(t)}))),u.is("trash",t)&&v.trigger("cleared-trash")})}).fail(function(){_(e).each(function(e){v.trigger("remove:fail",e)}),re()})},restore:function(e){_.isArray(e)||(e=[e]);var i=[];return _(e).each(function(e){var t=e.get("id");i.push(t),_(v.pool.collections).invoke("remove",e),e.set("unread",0)}),d.PUT({module:"folders",params:{action:"restore",tree:x(i[0])},data:i,appendColumns:!1}).done(function(){_(e).each(function(t){var e=t.get("id");v.get(e,{cache:!1}).done(function(){re(),v.trigger("restore",t.toJSON())}).fail(function(e){"FLD-0008"!==e.code&&"IMAP-1002"!==e.code||Y(t)})})}).fail(function(){_(e).each(function(e){v.propagate("restore:fail",e.toJSON())})})},isBeingDeleted:function(e){return _(X).contains(e)},clear:function(e){return v.trigger("before:clear",e),d.PUT({module:"folders",appendColumns:!1,params:{action:"clear",tree:x(e)},data:[e]}).done(function(){(v.pool.models[e]&&v.pool.models[e].is("trash")||u.is("trash",e))&&(v.pool.collections[e]&&v.pool.collections[e].each(function(e){v.pool.removeCollection(e.id,{removeModels:!0})}),v.trigger("cleared-trash")),v.trigger("clear",e),re()})},reload:ee,hide:te,show:ie,toggle:function(e,t){(!0===t?ie:te)(e)},refresh:re,bits:c.bits,is:c.is,can:c.can,supports:c.supports,virtual:V,isVirtual:C,isExternalFileStorage:function(e){return 14===(e instanceof Backbone.Model?e.get("type"):e.type)},isFlat:S,isNested:function(e){return/^(mail|infostore)$/.test(e)},getFlatCollection:W,getFlatViews:G,getDefaultFolder:c.getDefaultFolder,getExistingFolder:function(e){var t=c.getDefaultFolder(e);return t?$.Deferred().resolve(t):"mail"===e?$.Deferred().resolve("default0"+le()+"INBOX"):"infostore"===e?$.Deferred().resolve(10):J({module:e}).then(function(e){for(var t in e)if("hidden"!==t){var i=e[t];if(i&&i[0]&&i[0].id)return i[0].id}return null})},getStandardMailFolders:function(){var e=_(u.getStandardFolders()).filter(function(e){return!/^default0/.test(e)}),t=u.getInbox(),i=m.getCollection(t);return _(i.pluck("id")).filter(u.isStandardFolder).concat(e)},getDefaultSeparator:le,getMailFolderSeparator:function(e){var t=e.split(le())[0],i=r.get("separators")||{};return/^default\d+$/.test(t)?i[t=t.replace("default","")]?i[t]:le():"/"},getTextNode:function(e){var t=document.createTextNode("");return B(e).done(function(e){this.nodeValue=e.display_title||e.title||e.id}.bind(t)),t},getDeepLink:function(e){var t="io.ox/"+("infostore"===e.module?"files":e.module),i=encodeURIComponent(e.id);return ox.abs+ox.root+"/#!&app="+t+"&folder="+i},getFolderTitle:e,ignoreSentItems:function(e){return!_.isArray(e)||1===e.length||_(e).chain().pluck("folder_id").uniq().value(
1).length<=1?e:_(e).filter(Q)},processListResponse:P,changeUnseenCounter:ne,setUnseenCounter:function(e,t){m.getModel(e).set("unread",Math.max(0,t))},setUnseenMinimum:function(e,t){var i=m.getModel(e);i.set("unread",Math.max(t||0,i.get("unread")))},getSection:function(e){return 3===e?"shared":2===e?"public":"private"},Bitmask:n,propagate:z,altnamespace:se,injectIndex:b,multipleLists:function(e,i){try{return d.pause(),$.when.apply($,_(e).map(function(t){return U(t).then(null,function(e){return i=i||{},(e=e||{}).id=t,$.when(i.errors?e:void 0)})})).then(function(){var t=[];return _(arguments).toArray().forEach(function(e){Array.prototype.push.apply(t,e)}),t})}finally{d.resume()}},renameDefaultCalendarFolders:w}),v}),define("io.ox/core/folder/node",["io.ox/backbone/views/disposable","io.ox/core/folder/api","io.ox/core/extensions","io.ox/core/api/account","settings!io.ox/core","gettext!io.ox/core"],function(e,r,a,s,l,o){var d=e.extend({tagName:"li",className:"folder selectable",indentation:_.device("smartphone")?15:30,events:{"click .folder-options":"onOptions","click .folder-arrow":"onArrowClick","dblclick .folder-label":"onToggle","mousedown .folder-arrow":"onArrowMousedown",keydown:"onKeydown"},addA11yDescription:function(e){this.options.a11yDescription.push(e),this.options.a11yDescription=_.uniq(this.options.a11yDescription),this.renderTooltip()},getA11yDescription:function(){return _.isEmpty(this.options.a11yDescription)?"":". "+this.options.a11yDescription.join(".")},list:function(){var e=this.options;return r.list(e.model_id,{all:e.tree.all})},reset:function(){if(this.isReset)return this.trigger("reset");this.collection.fetched?this.onReset():this.list()},getFilter:function(){var e=this.options,t=e.filter?this:e.tree;return(e.filter||e.tree.filter).bind(t,e.model_id)},onReset:function(){var t=this.options,e=this.collection.filter(this.getFilter()),i={};this.$.subfolders.children().each(function(){i[$(this).attr("data-id")]=$(this).detach().data("view")}),this.$.subfolders.append(e.map(function(e){return(i[e.id]||this.getTreeNode(e).render()).$el},this)),"1"!==this.folder&&"default0"!==this.folder&&this.modelSetSubfolders(0<e.length),this.renderEmpty(),this.$.subfolders.children().each(function(){var e=$
1(this).data("view");e&&!i[e.folder]&&t.tree.appear(e)}),this.isReset=!0,this.trigger("reset")},onAdd:function(e){var t;this.getFilter()(e)&&(t=this.getTreeNode(e),this.$.subfolders.append(t.render().$el),this.options.tree.appear(t),this.modelSetSubfolders(!0)),this.renderEmpty()},onRemove:function(e){this.$.subfolders.children('[data-id="'+$.escape(e.attributes&&e.attributes.id?e.attributes.id:e.id)+'"]').remove(),this.renderEmpty()},onChangeId:function(e){var t=String(e.get("id")),i=String(e.previous("id")),o=this.options.tree.selection.get();this.folder===i&&(this.folder=t),this.options.model_id===i&&(this.options.model_id=t),this.options.contextmenu_id===i&&(this.options.contextmenu_id=t),this.renderAttributes(),i===o&&this.options.tree.trigger("change",t),this.options.open=!1,this.collection&&(this.stopListening(this.collection),this.stopListening(r,"create:"+String(i).replace(/\s/g,"_")),this.collection=r.pool.getCollection(t),this.listenTo(this.collection,{add:this.onAdd,remove:this.onRemove,"change:subscribed":this.onReset,reset:this.onReset,sort:this.onSort}),this.listenTo(r,"create:"+String(t).replace(/\s/g,"_"),function(){this.open=!0,this.onChangeSubFolders()}),this.isReset=!1,this.reset()),this.onChangeSubFolders()},onChange:function(e){void 0!==e.changed.title&&this.renderFolderL
1abel(),void 0!==e.changed.id&&this.onChangeId(e),e.changed.subfolders&&(e.changed.subfolders||(this.open=!1),this.onChangeSubFolders()),this.repaint()},toggle:function(e,t){var i;null!==this.options&&(i=this.options.open!==e,this.options.open=e,this.onChangeSubFolders(),this.renderCounter(),i&&this.options.tree.trigger(e?"open":"close",this.folder,t))},onToggle:function(e){e.isDefaultPrevented()||(e.preventDefault(),this.toggle(!this.options.open))},isOpen:function(){return this.options.open&&this.hasSubFolders()},hasArrow:function(){return 0===this.$.arrow.find("i.fa-fw").length},onArrowClick:function(e){$(e.target).closest(this.$.arrow).length&&this.hasArrow()?(e.stopPropagation(),this.onToggle(e)):e.preventDefault()},onArrowMousedown:function(e){$(e.target).closest(this.$.arrow).length&&this.hasArrow()&&e.preventDefault()},onOptions:function(e){e.preventDefault()},hasSubFolders:function(){var e=/^virtual\/flat/.test(this.folder);return this.options.subfolders&&(e||!0===this.modelGetSubfolders())},modelGetSubfolders:function(){return this.model.get(this.options.tree.all?"subfolders":"subscr_subflds")},modelSetSubfolders:function(e){return this.model.set(this.options.tree.all?"subfolders":"subscr_subflds",e)},onChangeSubFolders:function(){var e=this.hasSubFolders(),t=this.isOpen(),i=e?t?"fa-caret-down":"fa-caret-right":"fa-fw";this.$.arrow.toggleClass("invisible",!e).html($('<i class="fa" aria-hidden="true">').addClass(i)),e&&!this.options.headless?this.$el.attr("aria-expanded",t):this.$el.removeAttr("aria-expanded"),this.$el.toggleClass("open",t),this.renderEmpty(),t&&this.reset()},onKeydown:function(e){var t;!e.isDefaultPrevented()&&/^(13|32|37|39)$/.test(e.which)&&(e.preventDefault(),!this.hasSubFolders()&&/^(13|32|39)$/.test(e.which)||(t=this.options,/^(13|32)$/.test(e.which)&&this.isVirtual?this.toggle(!t.open):39===e.which?t.open||39!==e.which?this.$el.find("ul.subfolders:first > li:first-child").trigger("click"):this.toggle(!0):37===e.which&&(t.open?this.toggle(!1):t.indent&&0<=t.level&&t.parent.$el.trigger("click"))))},getTreeNode:function(e){var t=e.id||e.attributes.id,i=this.options,o=i.headless||!1===i.indent?i.level:i.level+1,n=i.namespace||0===i.folder.indexOf("virtual/favorites")?"favorite":"",a={folder:t,icons:this.options.icons,iconClass:this.options.iconClass,level:o,tree:i.tree,parent:this,namespace:n};return new d(i.tree.getTreeNodeOptions(a,e))},functions:function(){this.onSort=_.debounce(function(){var t;this.disposed||this.$&&(t={},this.$.subfolders.children().each(function(){t[$(this).attr("data-id")]=$(this)}),this.$.subfolders.append(this.collection.map(function(e){return t[e.id]})))},10),this.repaint=_.throttle(function(){this.disposed||null!==this.model&&this.render()},10)},initialize:function(e){this.functions(),this.folder=String(e.folder);var t=this.options=_.extend({arrow:!0,count:void 0,empty:!0,headless:!1,icons:!1,iconClass:void 0,indent:!0,level:0,model_id:this.folder,namespace:"",contextmenu_id:this.folder,open:!1,sortable:!1,subfolders:!0,title:"",a11yDescription:[]},e);this.model=r.pool.getModel(t.model_id),this.noSelect=!this.model.can("read"),this.isVirtual=this.options.virtual||/^virtual/.test(this.folder)||"cal://0/allPublic"===this.folder,this.collection=r.pool.getCollection(t.model_id,t.tree.all),this.isReset=!1,this.realNames=e.tree.realNames,this.id=_.uniqueId(t.tree.id+"-node-"),this.$={},this.$el.data("view",this),_(t.tree.open).contains((t.namespace?t.namespace+":":"")+this.folder)&&(t.open=!0),t.subfolders&&(this.listenTo(this.collection,{add:this.onAdd,remove:this.onRemove,"change:subscribed":this.onReset,reset:this.onReset,sort:this.onSort}),this.listenTo(r,"create:"+String(t.model_id).replace(/\s/g,"_"),function(){this.open=!0,this.onChangeSubFolders()})),this.listenTo(this.model,{change:this.onChange,"change:subfolders":this.onChangeSubFolders,destroy:this.destroy.bind(this)});var i=0;"visible-selection-smartphone"===t.tree.options.highlightclass&&(i=22),this.$el.attr({id:this.id,"data-id":this.folder,"data-model":t.model_id,"data-contextmenu-id":t.contextmenu_id,"data-namespace":t.namespace,"aria-label":this.getTitle()}).append(this.$.selectable=$('<div class="folder-node" aria-hidden="true">').css("padding-left",t.level*this.indentation+i).append(this.$.arrow=t.arrow?$('<div class="folder-arrow invisible"><i class="fa fa-fw" aria-hidden="true"></i></div>'):[],this.$.icon=$('<div class="folder-icon"><i class="fa fa-fw" aria-hidden="true"></i></div>'),$('<div class="folder-label">').append(this.$.label=$('<div role="presentation">').text(this.getTitle())),this.$.counter=$('<div class="folder-counter">
1'),this.$.buttons=$('<div class="folder-buttons">')),this.$.subfolders=$('<ul class="subfolders" role="group">')),t.headless?(this.$el.removeClass("selectable"),this.$.selectable.remove(),this.$.subfolders.attr("role","presentation")):this.$el.attr({"aria-selected":!1,role:"treeitem",tabindex:"-1"}),t.sortable&&this.$el.attr("data-sortable",!0),this.noSelect&&0<t.level&&this.$el.addClass("no-select"),this.isVirtual&&this.$el.addClass("virtual"),(!this.isVirtual||t.contextmenu)&&t.tree.options.contextmenu&&t.tree.app&&this.renderContextControl(),this.isVirtual||r.get(t.model_id),(!1===t.empty&&!1===t.open||this.isVirtual)&&this.reset();var o=this.model.toJSON(),n=a.Baton({view:this,data:o});a.point("io.ox/core/foldertree/node").invoke("initialize",this.$el,n),t.tree.options.customize.call(this.$el,n),t.tree.options.disable(o,t)&&this.$el.addClass("disabled"),this.$el.on("dispose",this.remove.bind(this)),t.tree.once("dispose",this.remove.bind(this))},getCounter:function(){var e=0;return!this.options.open&&this.options.subfolders&&this.model.get("subtotal")&&(e=this.model.get("subtotal")),void 0!==this.options.count?this.options.count:(this.model.get("unread")||0)+e},showStatusIcon:function(e,t,i,o){var n=this;o&&this.hideStatusIcon(),this.$.accountLink||(this.$.selectable.append(this.$.accountLink=$('<a href="#" class="account-link">').attr("data-id",this.options.model_id).append('<i class="fa fa-exclamation-triangle">')),this.$.accountLink.on("click",function(e){e.preventDefault(),n.options.tree.trigger(t,i)})),e&&this.$.accountLink.attr("title",e)},hideStatusIcon:function(){this.$.accountLink&&(this.$.accountLink.remove(),this.$.accountLink=null)},renderCounter:function(){var e=this.getCounter();this.$.selectable.toggleClass("show-counter",0<e),999<e&&(e="999+"),this.$.counter.text(0===e?"":e)},getTitle:function(){var e,t=this.model.get("display_title")||this.options.title||this.model.get("title")||"";return this.model.is("drive")&&("10"===this.model.get("folder_id")||"15"===this.model.get("folder_id"))&&this.model.is("federated-sharing")&&(t=(e=this.model.getAccountDisplayName())?t+" ("+e+")":t),!0===this.realNames&&this.model.get("folder_name")||t},renderTooltip:function(){var e,t,i;this.options.title||this.model.has("title")&&(e=[],t=[],this.model.supp
1orts("count_total")&&(i=this.model.toJSON(),s.isUnifiedRoot(this.model.get("id"))&&(i=_.pick(i,"title")),_.isNumber(i.total)&&0<=i.total&&(e.push(o("Total: %1$d",i.total)),0<i.total&&t.push(o("%1$d total",i.total))),_.isNumber(i.unread)&&0<=i.unread&&(e.push(o("Unread: %1$d",i.unread)),0<i.unread&&t.push(o("%1$d unread",i.unread))),e=(e=e.join(", "))&&" ("+e+")",t=(t=t.reverse().join(", "))&&", "+t+". "+o("Right click for more options.")),this.$el.attr("aria-label",this.getTitle()+t+this.getA11yDescription()),this.$.selectable.attr("title",this.getTitle()+e))},renderContextControl:function(){if(_.device("smartphone"))return this.$el.attr("data-contextmenu",this.options.contextmenu||"default");var e=this.getTitle();this.$el.attr("aria-haspopup",!0),this.$.selectable.append($('<a tabindex="-1" href="#" role="button" class="folder-options contextmenu-control" data-toggle="dropdown">').attr({"data-contextmenu":this.options.contextmenu||"default",title:e?o("Actions for %1$s",e):o("Folder-specific actions")}).append($('<i class="fa fa-bars" aria-hidden="true">')))}
1,renderFolderLabel:function(){this.$.label.text(this.getTitle())},renderAttributes:function(){this.$el.attr({"data-id":this.folder,"data-model":this.options.model_id,"data-contextmenu-id":this.options.contextmenu_id,"data-favorite":this.options.inFavorites})},isEmpty:function(){return 0===this.$.subfolders.children().length},renderEmpty:function(){!1===this.options.empty&&(this.$el.toggleClass("empty",this.isEmpty()),"virtual/favorites/infostore"===this.model.get("id")&&this.$el.toggleClass("show-anyway",!!this.collection.length))},renderIcon:function(){var e,t,i,o,n=this.options,a=n.iconClass;if(("infostore"===n.tree.module||n.icons)&&/^(mail|infostore|notes)$/.test(n.tree.module)){if("mail"===n.tree.module)return e=s.getType(this.folder)||"default",void this.$.icon.addClass("visible "+e);if(a)a="visible "+a;else{switch(t=String(r.getDefaultFolder("infostore")),i=l.get("folder/mailattachments",{}),o=String(i.all),this.folder){case"virtual/myshares":a="visible myshares";break;case"virtual/favorites/infostore":a="visible myfavorites";break;case o:a="visible attachments";break;case t:a="visible myfiles"}!a&&r.is("trash",this.model.attributes)&&this.model.get("standard_folder")&&(a="visible trash")}this.$.icon.addClass(a)}},render:function(){if(this.renderAttributes(),this.renderEmpty(),this.renderTooltip(),this.renderCounter(),this.renderIcon(),this.onChangeSubFolders(),this.model)return a.point("io.ox/core/foldertree/node").invoke("draw",this.$el,a.Baton({view:this,data:this.model.toJSON()})),this},destroy:function(){var e=this.options.parent;this.$el.remove(),e.renderEmpty&&e.renderEmpty()},remove:function(){this.stopListening(),this.collection=this.model=this.options=this.$=null}});return d}),define("io.ox/core/folder/selection",[],function(){function e(i){this.view=i,this.view.$el.on("click contextmenu",".selectable",$.proxy(this.onClick,this)).on("keydown",".selectable",$.proxy(this.onKeydown,this)).on("mousedown contextmenu",".selectable",function(e){e.preventDefault()}),i.options.dblclick&&this.view.$el.on("dblclick",$.proxy(this.onDblClick,this)),this.view.$el.addClass("dropzone").attr("data-dropzones",".selectable").on("drop",function(e,t){t&&(t.dropType=i.module,i.selection.trigger("selection:drop",t))}),this.selectableVirtualFolders={},this.unselectableFolders={}}function t(e){"change"===e?this.triggerChange.apply(this,_(arguments).toArray().splice(1)):this.view.trigger.apply(this.view,arguments)}return _.extend(e.prototype,{byId:function(e,t,i){var o=(t=t||this.getItems()).filter('[data-id="'+$.escape(e)+'"]'),n=o.first();return 1!==o.length&&o.each(function(){(!i||!$(this).parentsUntil(".tree-container",".folder.favorites").length)&&(i||$(this).parentsUntil(".tree-container",".folder.favorites").length)||(n=$(this))}),n},get:function(e){return this.view.$el.find(".selectable.selected").attr(e||"data-id")},set:function(e,t){var i=this.getItems(),o=this.byId(e,i,t),n=i.index(o);-1!==n&&this.get()!==e&&(this.uncheck(i),this.pick(n,i,{focus:!1}))},preselect:function(e){var t=this.check(this.byId(e));return 0<t.length&&(this.view.$container.attr("aria-activedescendant",t.attr("id")),!0)},scrollIntoView:function(e){var t=this.byId(e);t.length&&(t[0].scrollIntoView(!0),this.view.trigger("scrollIntoView",e))},onClick:function(e){var t,i,o;$(e.target).is(":checkbox")||e.isDefaultPrevented()||(e.preventDefault(),this.view.app&&this.view.app.props&&!0===this.view.app.props.get("mobileFolderSelectMode")&&!$(e.target).parent().hasClass("folder-label")||("contextmenu"===e.type&&e.stopPropagation(),"contextmenu"===e.type&&0===e.which||(t=this.getItems(),i=$(e.currentTarget),o=t.index(i)||0,this.view.trigger("selection:action",t,o),this.view.app&&"io.ox/files"===this.view.app.get("name")&&"9"===this.view.app.folder.get()&&i.removeClass("selected"),i.hasClass("selected")||(this.resetTabIndex(t,t.eq(o)),this.uncheck(t),this.pick(o,t)))))},onDblClick:function(e){if(!($(e.target).is(":checkbox")||0<$(e.target).closest(".contextmenu-control").length)){var t=$(e.target).closest(".folder").attr("data-id");if(this.view.options.instantTrigger)return this.triggerEventInstant("dblclick",e,t);this.triggerEvent("dblclick",e,t)}},onKeydown:function(e){if(/38|40/.test(e.which))return $(e.target).hasClass("contextmenu-control")?e.preventDefault():void($(e.target).hasClass("selectable")&&this.onCursorUpDown(e))},onCursorUpDown:function(e){var t=this.getItems().filter(":visible"),i=$(document.activeElement),o=38===e.which,n=(t.index(i)||0)+(o?-1:1);if(!(n>=t.length||n<0||e.isDefaultPrevented())){if(e.preventDefault(),this.view.trigger("selection:action",t,n),e.altKey&&"true"===i.parent().parent().attr("data-sortable"))return this.move(i,o);this.resetTabIndex(t,t.eq(n)),this.uncheck(t),this.pick(n,t)}},move:function(e,t){t?e.insertBefore(e.prev()):e.insertAfter(e.next()),e.focus();var i=e.parent().parent().attr("data-id"),o=_(e.parent().children(".selectable")).map(function(e){return $(e).attr("data-id")});this.view.trigger("sort sort:"+i,o)},pick:function(e,t,i){var o=_.extend({focus:!0},i).focus?this.focus(e,t):(t||this.getItems()).eq(e);
1if(this.check(o),this.view.$container.attr("aria-activedescendant",o.attr("id")),this.view.options.instantTrigger)return this.triggerEventInstant("change",t);this.triggerEvent("change",t)},resetTabIndex:function(e,t){(e=e.filter('[tabindex="0"]')).not(t).attr("tabindex",-1)},focus:function(e,t){var i=(t=t||this.getItems()).eq(e).attr("tabindex","0").focus();return _.device("chrome")&&i.hide(0,function(){$(this).css("display","")}),i},check:function(i){if(this.view.disposed)return $();var o=this.view.$el.width();return i.addClass("selected").attr({"aria-selected":!0,tabindex:0}).find(".folder-label:first").each(function(){var e,t;1===i.length&&i.first().attr("data-id")&&0===i.first().attr("data-id").indexOf("virtual/settings")||(e=$(this).position().left,t=o-e-76,$(this).css("max-width",Math.max(t,80)))}).end()},uncheck:function(e){return(e=e||this.getItems()).filter(".selected").removeClass("selected").attr({"aria-selected":!1,tabindex:-1}).find(".folder-label").css("max-width","initial"),this},getItems:function(){return this.view.disposed?$():this.view.$(".selectable")},addSelectableVirtualFolder:function(e){this.selectableVirtualFolders[e]=!0},addUnselectableFolder:function(e){this.unselectableFolders[e]=!0},triggerEventInstant:t,triggerEvent:_.debounce(t,300),triggerChange:function(e){var n=this,t=(e||this.getItems()).filter(".selected").first(),a=t.attr("data-id"),i=t.attr("data-show-in-drive"),o=/^virtual/.test(a);i?require(["io.ox/core/extensions","io.ox/files/api","io.ox/backbone/views/actions/util"]).then(function(e,t,i){var o=t.pool.get("detail").get(a);i.invoke("io.ox/files/actions/show-in-folder",e.Baton({models:[o],app:n.view.app,alwaysChange:!0}))}):n.view&&!n.unselectableFolders[a]&&n.view.trigger(o&&!n.selectableVirtualFolders[a]?"virtual":"change",a,t)}}),e}),define("io.ox/core/folder/tree",["io.ox/backbone/views/disposable","io.ox/backbone/mini-views/dropdown","io.ox/backbone/mini-views/contextmenu-utils","io.ox/core/folder/selection","io.ox/core/folder/api","io.ox/core/extensions","io.ox/core/a11y","settings!io.ox/core","gettext!io.ox/core","io.ox/core/folder/favorites","io.ox/files/favorites","io.ox/core/folder/extensions"],function(e,t,o,i,d,c,n,a,u){function r(){this.$dropdownToggle.addClass("opening");var e=this.dropdown.$toggle.attr("data-contextmenu")||this.selection.get("data-contextmenu");require(["io.ox/core/folder/contextmenu"],_.lfo(function(e){this.$dropdownMenu.idle(),this.renderContextMenuItems(e)}.bind(this,e))),this.$dropdownMenu.attr("role","menu")}return e.extend({attributes:{role:"navigation"},className:"folder-tree",events:{"click .contextmenu-control":"onToggleContextMenu",'contextmenu .folder.selectable[aria-haspopup="true"]':"onContextMenu",'keydown .folder.selectable[aria-haspopup="true"]':"onKeydownMenuKeys","keydown .folder.selectable":"onKeydown","click .folder.selectable.selected":"onClick"},initialize:function(e){e=_.extend({context:"app",contextmenu:!1,customize:$.noop,disable:$.noop,abs:!0,icons:a.get("features/folderIcons",!1),root:"default0/INBOX",highlight:_.device("!smartphone"),highlightclass:"visible-selection",hideTrashfolder:!1,realNames:!1},e),this.all=!!e.all,this.app=e.app,this.context=e.context,this.flat=!!e.flat,this.module=e.module,this.open=e.open,this.root=e.root,this.realNames=e.realNames,this.id=_.uniqueId("folder-tree-"),this.$el.data("view",this),this.$container=$('<ul class="tree-container f6-target" role="tree">').attr("id",this.id),this.$el.attr("aria-label",u("Folders")),this.$dropdownMenu=$(),this.options=e,this.$el.toggleClass(e.highlightclass,!!e.highlight),this.$el.append(this.$container),this.selection=new i(this),e.abs&&this.$el.addClass("abs"),e.contextmenu&&_.defer(function(){this.disposed||this.renderContextMenu()}.bind(this))},appear:function(e){var t=e.folder.replace(/\s/g,"_");this.trigger("appear:"+t,e)},onClick:function(e){$(document.activeElement).is(".folder.selectable.selected")||$(e.currentTarget).focus()},onAppear:function(e,t){var i=this.getNodeView(e);if(i)return t.call(this,i);e=String(e).replace(/\s/g,"_"),this.once("appear:"+e,t)},preselect:function(e){void 0!==e&&this.onAppear(e,function(){_.defer(function(){this.disposed||this.selection.set(e)}.bind(this)),this.trigger("afterAppear")})},traversePath:function(e,t){var i=this;d.path(e).then(function(e){return _(e).pluck("id").forEach(t.bind(i))})},select:function(e){var i=[],o=this;function n(){var e=i.shift(),t=o.getNodeView(e);if(!i.length)return o.selection.set(e);t&&(t.once("reset",n),t.toggle(!0))}d.path(e).done(function(e){i=_(e).pluck("id"),n()})},getNodeView:function(e){return this.$('.folder[data-id="'+$.escape(e)+'"]').data("view")},filter:function(e,t){if(this.options.hideTrashfolder&&d.is("trash",t.attributes))return!1;var i=this.options.filter,o=_.isFunction(i)?i.apply(this,arguments):void 0;if(void 0!==o)return o;var n=t.get("module");return"event"===n&&(n="calendar"),n===this.module||"mail"===this.module&&/^default\d+(\W|$)/i.test(t.id)},getOpenFolders:function(){return _(this.$el.find(".folder.open")).chain().map(function(e){return($(e).attr("data-namespace")?$(e).attr("data-namespace")+":":"")+$(e).attr("data-id")}
1).uniq().value().sort()},getTreeNodeOptions:function(e,t){return"default0/INBOX"===t.get("id")&&"virtual/standard"===e.parent.folder&&(e.subfolders=!!d.altnamespace),this.flat&&e.parent!==this&&(e.subfolders=!1),"virtual/standard"===e.parent.folder&&(e.icons=!0),"virtual/favorites/infostore"===e.parent.folder&&(e.inFavorites=!0),e},toggleContextMenu:function(e){this.dropdown.$el.hasClass("open")||_.device("smartphone")||(e.target.is("a.contextmenu-control")||(e.target=e.target.find(".contextmenu-control").first()),_.defer(function(){this.disposed||(this.$dropdownMenu.css({top:e.top,left:e.left,bottom:"auto"}).empty().busy(),this.dropdown.$toggle=e.target,this.$dropdownToggle.dropdown("toggle"))}.bind(this)))},onToggleContextMenu:function(e){var t=$(e.target).is("a")&&"keydown"===e.type?$(e.target):$(e.currentTarget),i=t.offset(),o=i.top-7,n=i.left+t.outerWidth()+7;this.toggleContextMenu({target:t,top:o,left:n})},onKeydown:function(e){/35|36/.test(e.which)&&(36===e.which?this.$el.find("li.folder.selectable:visible:first").trigger("click"):35===e.which&&this.$el.find("li.folder.selectable:visible:last").trigger("click"))},onKeydownMenuKeys:function(e){var t,i;o.macOSKeyboardHandler(e),"keydown"===e.type&&(t=e.shiftKey&&121===e.which,i=93===e.which,(/13|32|38|40/.test(e.which)||t||i)&&(this.focus=/38/.test(e.which)?"li:last > a":"li:first > a"),t&&e.isKeyboardEvent&&this.onContextMenu(e))},onContextMenu:function(e){e.stopPropagation(),this.toggleContextMenu(o.positionForEvent(e))},getContextMenuId:function(e){return"io.ox/core/foldertree/contextmenu/"+(e||"default")},renderContextMenuItems:function(e){var t=this.selection.get("data-contextmenu-id"),i=this.app,o=this.module,n=this.$dropdownMenu.empty(),a=this.getContextMenuId(e),r=this,s=this.selection.get("data-favorite"),l=this.$dropdownToggle;d.get(t).done(function(e){var t=new c.Baton({app:i,data:e,view:r,module:o,originFavorites:s});c.point(a).invoke("draw",n,t),_.device("smartphone")&&(n.append($("<li>").append($('<a href="#" class="io-ox-action-link" data-action="close-menu">').text(u("Close")))),0===n.find("[role=menuitem]").length&&n.prepend($("<li>").append($('<div class="custom-dropdown-label">').text(u("No action available"))))),_.device("smartphone")&&n.find(".divider").remove(),n.find(".divider").each(function(){var e=$
1(this),t=e.next();0!==e.prev().length&&!t.hasClass("divider")&&0!==t.length||e.remove()}),_.device("smartphone")||r.dropdown.setDropdownOverlay(),r.focus&&n.find(r.focus).focus(),r.focus=!1}).always(function(){l.removeClass("opening")})},renderContextMenu:function(){this.$dropdownToggle=$('<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true">').attr("aria-label",u("Folder options")),this.$dropdownMenu=$('<ul class="dropdown-menu">'),this.dropdown=new t({smart:!1,className:"context-dropdown dropdown",$toggle:this.$dropdownToggle,$ul:this.$dropdownMenu,margin:24}),this.$el.after(this.dropdown.render().$el.on("show.bs.dropdown",r.bind(this)).on("hidden.bs.dropdown",function(){this.dropdown.$toggle.parents("li").first().focus()}.bind(this))),this.$dropdownMenu.removeAttr("role")},render:function(){return c.point("io.ox/core/foldertree/"+this.module+"/"+this.context).invoke("draw",this.$container,this),this}})}),define("io.ox/core/folder/favorites",["io.ox/core/folder/node","io.ox/core/folder/api","io.ox/core/extensions","io.ox/core/upsell","settings!io.ox/core","gettext!io.ox/core","io.ox/files/favorites"],function(l,d,c,u,p,h){function f(e){var t;return"calendar"===e&&void 0===p.get("favorites/chronos")&&(t=_(p.get("favorites/calendar",[])).map(function(e){return"cal://0/"+e}),p.set("favorites/chronos",t).save()),p.get(g(e),[])}function g(e){return"favorites/"+("calendar"===e?"chronos":e)}function m(e,i){return e.filter(function(e){var t=e.get("id");if(t)return 0===t.indexOf(i+d.getMailFolderSeparator(t))})}function i(e,t,i){var o;t=t||d.pool.getModel(e),(i=i||t.get("module"))&&(o="virtual/favorites/"+i,d.pool.getCollection(o).remove(t),d.trigger("favorite:remove"))}function t(e,t){var i,o;(t=t||d.pool.getModel(e)).get("module")&&(i="virtual/favorites/"+t.get("module"),o=d.pool.getCollection(i),t.set("index/"+i,!0,{silent:!0}),o.add(t),o.sort(),d.trigger("favorite:add"))}function a(e){t(e.data.id)}function r(e){i(e.data.id,void 0,e.data.module)}function s(e,t){if("infostore"!==t.data.module){var i,o,n=(i=t.action,o=t.text,$('<a href="#" role="menuitem" tabindex="-1">').attr("data-action",i).text(o).on("click",$.preventDefault));return t.enabled?n.on("click",t.data,t.handler):n.attr("aria-disabled",!0).removeAttr("tabindex").addClass("disabled"),e.append($('<li role="presentation">').append(n)),n}}return _("mail contacts calendar tasks".split(" ")).each(function(t){var i,o,n,a,e;function r(e){p.set(g(t),e).save()}function s(){r(_(n.pluck("id")).filter(function(e){return!a[e]}))}"mail"===t&&!u.has("webmail")||"mail"!==t&&!u.has(t)||(i="virtual/favorites/"+t,o=d.pool.getModel(i),n=d.pool.getCollection(i),a={},d.virtual.add(i,function(){var e=!n.expired&&n.fetched;return d.multiple(f(t),{errors:!0,cache:e}).then(function(e){var t=_(e).filter(function(e){return e.error&&/^(FLD-0008|FLD-0003|ACC-0002|FLD-1004|IMAP-1002|FILE_STORAGE-0004)$/.test(e.code)?!(a[e.id]=!0):(delete a[e.id],!0)});return _(t).each(d.injectIndex.bind(d,i)),o.set("subscr_subflds",0<t.length),t.length!==e.length&&_.defer(s),t}).then(d.renameDefaultCalendarFolders)}),n.on("add",function(e){delete a[e.id]}),n.on("add remove change:id",s),"mail"===t?(d.on("rename",function(t,i){"mail"===i.module&&m(n,t).forEach(function(e){e.set("id",i.id+e.get("id").substr(t.length)),s()})}),d.on("remove:mail",function(e){m(n,e.id).forEach(function(e){n.remove(e),s()})})):"infostore"===t&&(o.set("title",h("Favorites")),o.set("folder_id","9"),o.set("own_rights",1),o.set("standard_folder",!0)),e={id:"favorites",index:1,draw:function(e){this.append(new l({empty:!1,folder:i,indent:!d.isFlat(t),open:!1,parent:e,sortable:!0,title:h("Favorites"),tree:e,icons:e.options.icons}).render().$el.addClass("favorites")),e.on("sort:"+i,r)}},c.point("io.ox/core/foldertree/"+t+"/app").extend(_.extend({},e)),c.point("io.ox/core/foldertree/"+t+"/popup").extend(_.extend({},e)))}),d.on("collection:remove",function(e,t){i(e,t)}),c.point("io.ox/core/foldertree/contextmenu/default").extend({id:"toggle-favorite",index:1010,draw:function(e){var t=e.data.id,i=e.module,o=f(i),n=-1<_(o).indexOf(t);d.is("trash",e.data)||s(this,{action:"toggle-favorite",data:{id:t,module:i},enabled:!0,handler:n?r:a,text:h(n?"Remove from favorites":"Add to favorites")})}}),{add:t,remove:i}}),define("io.ox/core/folder/view",["io.ox/core/extensions","io.ox/core/folder/api","settings!io.ox/core","gettext!io.ox/core"],function(D,A,M,N){return{initialize:function(o){var n=(o=_.extend({firstResponder:"listView",autoHideThreshold:700},o)).app,a=o.tree,e=a.options.module,t=n.get("name")+"/folderview",i=!1,r=n.settings.get("folderview/open",{}),s=n.getWindow().nodes,l=s.sidepanel,d=!1,c=280;function u(){n.settings.set("folderview/visible/"+_.display(),i).save()}function p(e){var t=void 0===e?"":e+"px";s.body.css("left",t),s.sidepanel.css("width",t)}
1function h(){p(n.settings.get("folderview/width/"+_.display(),c))}r||(r={},/^(contacts|calendar|event|tasks)$/.test(e)&&(r[_.display()]=["virtual/flat/"+e+"/private","virtual/flat/"+e+"/public"]));var f,g,m,v,x,b=function(){$(document).trigger("resize")};function w(e){var t=e.pageX-f;m<t||t<v||(n.trigger("folderview:resize"),p(g=t),b())}function y(e){var t;$(this).off("mousemove.resize mouseup.resize"),b(),e.pageX-f<.75*v?n.folderView.hide():(void 0===(t=g||c)?n.settings.remove("folderview/width/"+_.display()):n.settings.set("folderview/width/"+_.display(),t),n.settings.save())}function k(e){e.preventDefault(),f=e.pageX-l.width(),m=$(document).width()/2,$(document).on({"mousemove.resize":w,"mouseup.resize":y})}n.folderView={tree:a,forceOpen:!1,isVisible:function(){return i},show:function(){i=!0,d||u(),h(),l.addClass("visible"),n.trigger("folderview:open"),b(),l.css("display","flex")},hide:function(){var e,t;i=!1,d||u(),e=n.getWindow().options.chromeless,t=$(document).width()<=n.folderView.resize.autoHideThreshold,s.body.css("left",e||t?0:50),l.removeClass("visible").css("width",""),n.trigger("folderview:close"),b()},toggle:function(e){void 0===e&&(e=!i),e?this.show():this.hide()},resize:(m=0,v=240,{enable:function(){l.append($('<div class="resizebar">').on("mousedown.resize",k))},autoHideThreshold:o.autoHideThreshold})},n.folderViewIsVisible=function(){return i},$(window).on("resize",_.throttle(function(){var e,t=$(document).width();s.outer.is(":visible")&&(e=n.folderView.resize.autoHideThreshold,!n.folderView.forceOpen&&!d&&i&&t<=e?(n.folderView.hide(),d=!0):d&&e<t&&(n.folderView.show(),d=!1))},200)),D.point(t+"/options").extend({id:"defaults",index:100,rootFolderId:"1",type:void 0,view:"ApplicationFolderTree",visible:!_.device("smartphone")&&n.settings.get("folderview/visible/"+_.display(),!0)}),!e||void 0===(x=M.get(["folder/hidden"]))&&(x=n.settings.get("folderview/blacklist",{}),_.isObject(x)&&M.set(["folder/hidden"],x).save()),r&&r[_.display()]&&(r=r[_.display()]),r=_.isArray(r)?r:[],a.open=r;var C,S=n.folder.get();function T(e,t,i){if(0!==t)return t!==i.length-1?this.onAppear(e,function(e){e.isOpen()||e.toggle(!0)}):void this.onAppear(e,function(e){e.$el.intoView(this.$el,{ignore:"bottom:partial"})})}_.device("smartphone")?(a.$el.on("click",".folder",_.debounce(function(e){if("calendar"===a.module){if($(e.target).is(".folder-arrow, .fa, .color-label"))return;if(!i)return void $(e.target).siblings().click()}var t=$(e.target).closest(".folder"),i=n.props.get("mobileFolderSelectMode");if(i){if(!$(e.target).parent().hasClass("folder-label")||!$(e.target).closest(".folder").attr("data-contextmenu"))return;return a.dropdown.$(".dropdown-toggle").trigger("click","foldertree")}t.is(".virtual")&&!0!==a.selection.selectableVirtualFolders[t.data().id]||(o.firstResponder&&n.pages.changePage(o.firstResponder),o.respondCallback&&o.respondCallback())},10)),S&&_.defer(a.selection.preselect.bind(a.selection,S))):S?_.defer(function(){A.path(S).done(function(e){var t,i=_(e).pluck("id").slice(0,-1),o=_(e).where({id:S})[0],n="6"===o.id?"public":A.getSection(o.type,o.id);n&&/(mail|contacts|calendar|tasks|infostore)/.test(a.module)&&a.flat&&"app"===a.context&&(t="calendar"===a.module?"event":a.module,i.push("virtual/flat/"+t+"/"+n)),a.open=_(a.open.concat(i)).uniq()}).always(function(){a.onAppear(S,function(){_.defer(function(){a.selection.preselect(S),a.selection.scrollIntoView(S),A.isVirtual(S)&&a.selection.triggerChange()})}),a.render()})}):a.render(),a.$(".tree-container").attr({"aria-label":N("Folders")}),a.$(".tree-container").toggleClass("flat-tree",A.isFlat(a.options.module)),_(D.point(t+"/options").all()).each(function(e){o=_.extend(e,o||{})}),C=!1,n.on("folder:change",function(e,t,i){C||(a.traversePath(e,T),a.$el.find('[data-id="'+e+'"]').length?a.selection.set(e,i):a.on("appear:"+e,function(){a.selection.set(e,i),a.off("appear:"+e)}))}),a.on("change",function(e){C=!0,n.folder.set(e),C=!1}),a.on("virtual",function(e){n.trigger("folder-virtual:change",e)}),A.on("create",_.debounce(function(e){a.traversePath(e.id,T)},15)),A.on("before:remove",function(e){var t=/^(1|2)$/.test(e.folder_id)?A.getDefaultFolder(e.module)||"1":e.folder_id;a.selection.set(t)}),A.on("move",function(e,t){a.traversePath(t,T),a.selection.set(t)}),a.on("open close",function(){var e=this.getOpenFolders();
1n.settings.set("folderview/open/"+_.display(),e).save()}),window.tree=a,o.visible&&n.folderView.show()}}}),define("io.ox/core/folder/extensions",["io.ox/core/folder/node","io.ox/core/folder/api","io.ox/core/api/account","io.ox/core/extensions","io.ox/core/capabilities","io.ox/core/upsell","io.ox/contacts/util","io.ox/core/api/user","io.ox/mail/api","gettext!io.ox/core","io.ox/backbone/mini-views/upsell","io.ox/backbone/mini-views/dropdown","io.ox/core/folder/blacklist","settings!io.ox/core","settings!io.ox/mail","io.ox/core/http","io.ox/core/folder/favorites","io.ox/files/favorites"],function(p,h,o,f,a,n,e,t,i,l,r,s,d,c,u,g){var m="default0"+i.separator+"INBOX";function v(){var e=c.get("folder/infostore");return e?h.get(e):null}a.has("webmail")&&(h.virtual.add("virtual/standard",function(){var i=u.get("defaultFolder")||{},o=[],n={};return g.pause(),o.push(h.get(m)),n[m]=!0,u.get("features/unseenFolder",!1)&&o.push(h.get("virtual/all-unseen")),["drafts","sent","spam","trash","archive"].forEach(function(e){var t=i[e];t&&!n[t]&&("archive"===e&&!a.has("archive_emails")||(o.push(h.get(t)),n[t]=!0))}),g.resume(),this.concat.apply(this,o)}),h.virtual.add("virtual/myfolders",function(){var e=h.altnamespace?"default0":m;return h.list(e).then(function(e){return _(e).filter(function(e){return 0!==e.id.indexOf("default0/External accounts")&&(!o.isStandardFolder(e.id)&&!h.is("public|shared",e))})})}),h.on("after:rename",function(e,t){t.folder_id===m&&h.virtual.reload("virtual/myfolders")}),h.virtual.add("virtual/remote",function(){return h.list("1").then(function(e){return _(e).filter(function(e){return o.isExternal(e.id)})})})),a.has("filestore")&&h.virtual.add("virtual/filestorage",function(){return h.list("1").then(function(e){return _(e).filter(function(e){return h.isExternalFileStorage(e)})})});var x=c.get("folder/mailattachments",{});function b(){var e=x.all;return e?h.get(e):null}function w(e){e.preventDefault(),ox.launch("io.ox/files/main",{folder:x.all}).done(function(){this.folder.set(x.all)})}function y(){return h.list("9").then(function(e){return _(e).filter(function(e){return h.is("trash",e)})})}function k(t){t.preventDefault(),require(["io.ox/mail/accounts/settings"],function(e){e.mailAutoconfigDialog(t)})}function C(e){e.preventDefault(),require(["io.ox/core/settings/user"],function(e){e.openModalDialog()})}function S(t){t.preventDefault(),require(["io.ox/files/actions/add-storage-account"],function(e){e(t.data.cap)})}function T(o){require(["io.ox/core/sub/sharedFolders"],function(e){var t=o.data.baton.module,i="contacts"===t;e.open({module:t,help:i?"ox.appsuite.user.sect.contacts.folder.subscribeshared.html":"ox.appsuite.user.sect.tasks.folder.subscribeshared.html",title:l(i?"Shared address books":"Shared task folders"),tooltip:l(i?"Subscribe to address book":"Subscribe to task folder"),point:i?"io.ox/core/folder/subscribe-shared-address-books":"io.ox/core/folder/subscribe-shared-tasks-folders",noSync:i&&!a.has("carddav"),sections:{public:l(i?"Public address books":"Public tasks folders"),shared:l(i?"Shared address books":"Shared tasks folders"),private:l("Private"),hidden:l(i?"Hidden address books":"Hidden tasks folders")}})})}x.all&&d.add(x.all),a.has("infostore")&&(h.virtual.add("virtual/drive/private",function(){return this.concat(v(),function(){if(!a.has("guest")&&a.has("gab || share_links"))return $.when({id:"virtual/mysh
1ares",folder_id:"9",module:"infostore",own_rights:403710016,permissions:[{bits:403710016,entity:ox.user_id,group:!1}],standard_folder:!0,supported_capabilities:[],title:l("My shares")})}(),b(),y())}),h.virtual.add("virtual/drive/private-without-myshares",function(){return this.concat(v(),b(),y())}),h.virtual.add("virtual/drive/public",function(){return h.list("9").then(function(e){return _(e).filter(function(e){return String(e.id)!==String(c.get("folder/infostore"))&&(!h.is("trash",e)&&!h.isExternalFileStorage(e))})})}));var D,A={unifiedFolders:function(e){this.append(new p({empty:!1,filter:function(e,t){return/^default/.test(t.id)&&o.isUnified(t.id)},folder:"1",headless:!0,open:!0,tree:e,parent:e}).render().$el.addClass("unified-folders").attr("role","treeitem"))},standardFolders:function(e){var t=new p({filter:function(e,t){return!("virtual/all-unseen"!==t.id||!u.get("unseenMessagesFolder"))||o.isStandardFolder(t.id)},folder:"virtual/standard",headless:!0,open:!0,tree:e,parent:e});this.append(t.render().$el.addClass("standard-folders").attr("role","presentation")),t.listenTo(u,"change:unseenMessagesFolder",function(){t.onReset()})},getLocalFolderName:function(){return u.get("features/usePrimaryAccountNameInTree",!0)&&o.getPrimaryName()||l("My folders")},localFolders:function(e){var t,i;a.has("guest")||(t=h.altnamespace?"default0":m,i=new p({contextmenu:"myfolders",empty:!!h.altnamespace,folder:"virtual/myfolders",icons:e.options.icons,contextmenu_id:t,parent:e,title:A.getLocalFolderName(),tree:e}),o.on("update",function(e,t){0===t.id&&(i.options.title=A.getLocalFolderName(),i.renderFolderL
1abel())}),h.on("create:"+t,function(){i.toggle(!0)}),this.append(i.render().$el))},remoteAccounts:function(e){this.append(new p({folder:"virtual/remote",headless:!0,open:!0,icons:e.options.icons,tree:e,parent:e,isRemote:!0,empty:!1}).render().$el.addClass("remote-folders").attr("role","presentation"))},fileStorageAccounts:function(e){this.append(new p({folder:"virtual/filestorage",headless:!0,open:!0,icons:e.options.icons,tree:e,parent:e}).render().$el.addClass("filestorage-folders").attr("role","presentation"))},treeLinksFiles:function(){var e;0!==f.point("io.ox/core/foldertree/files/treelinks").list().length&&(e=$('<ul class="list-unstyled" role="group">'),f.point("io.ox/core/foldertree/files/treelinks").invoke("draw",e),this.append($('<li class="links list-unstyled" role="treeitem">').append(e)))},addStorageAccount:(D=$('<li role="presentation">'),function(){this.append(D),require(["io.ox/core/api/filestorage"],function(e){e.off("create delete update reset",M),e.on("create delete update reset",M),M()})}),manageSubscriptions:function(){var i=$('<li role="presentation">');this.append(i),$.when(h.list(15,{all:!0,cache:!1}
1),h.list(10,{all:!0,cache:!1})).then(function(e,t){return _.isEmpty(e)&&_.isEmpty(t)?i.remove():void i.append($('<a href="#" data-action="manage-subscriptions" role="treeitem">').text(l("Manage Shares")).on("click",function(){require(["io.ox/core/sub/sharedFolders"],function(e){e.open({module:"infostore",help:"ox.appsuite.user.sect.drive.folder.subscribeshared.html",title:l("Shared folders"),point:"io.ox/core/folder/subscribe-shared-files-folders",sections:{public:l("Public folders"),shared:l("Shared folders")},refreshFolders:!0,tooltip:l("Subscribe to folder"),noSync:!0,getData:function(){return $.when(h.list(15,{all:!0,cache:!1}),h.list(10,{all:!0,cache:!1})).then(function(e,t){return{public:e||[],shared:t||[]}})}})})}))},function(){i.remove()})},subscribe:function(t){var i;t.extension.capabilities&&!n.visible(t.extension.capabilities)||((i=this).link("subscribe",l("Subscribe to address book"),function(e){e.data={baton:t},function(t){if(t.preventDefault(),a.has("subscription"))"calendar"===t.data.baton.module?require(["io.ox/calendar/actions/subscribe-calendar"],function(e){e(t.data.baton)}):require(["io.ox/core/sub/subscriptions"],function(e){e.buildSubscribeDialog({module:t.data.baton.module,app:t.data.baton.view.app})});else{if(!n.enabled(["subscription"]))return;n.trigger({type:"inline-action",id:"io.ox/core/foldertree/contextmenu/default/subscribe",missing:n.missing(["subscription"])})}}(e)}),require(["io.ox/core/sub/subscriptions"],function(e){"contacts"===t.module||e.availableServices.contacts||i.$el.find("[data-name=subscribeShared]").closest("li").remove()}))},subscribeShared:function(t){t.extension.capabilities&&!n.visible(t.extension.capabilities)||"contacts"===t.module&&this.link("subscribeShared",l("Subscribe to shared address book"),function(e){e.data={baton:t},T(e)})},treeLinks:function(){var e;0!==f.point("io.ox/core/foldertree/mail/treelinks").list().length&&(e=$('<ul class="list-unstyled" role="group">'),f.point("io.ox/core/foldertree/mail/treelinks").invoke("draw",e),this.append($('<li class="links list-unstyled" role="treeitem">').append(e)))},allAttachments:function(){x.all&&this.append($('<li role="presentation">').append($('<a href="#" data-action="all-attachments" role="treeitem">').text(l("View all attachments")).on("click",w)))},addRemoteAccount:function(){a.has("multiple_mail_accounts")&&this.append($('<li role="presentation">').append($('<a href="#" data-action="add-mail-account" role="treeitem">').text(l("Add mail account")).on("click",k)))},synchronizeAccount:function(){this.append(new r({id:"folderview/mail",className:"links",requires:"active_sync",title:l("Synchronize with your tablet or smartphone")}).render().$el)},otherFolders:function(e){this.append(new p({empty:!1,filter:function(e,t){return!o.isStandardFolder(t.id)&&("default0/virtual"!==t.id&&(!h.altnamespace||h.is("public|shared",t.toJSON())))},folder:"default0",headless:!0,open:!0,icons:e.options.icons,tree:e,parent:e}).render().$el.addClass("other-folders").attr("role","treeitem"))},myContactData:function(){!1!==c.get("user/internalUserEdit",!0)&&this.append($('<li role="presentation">').append($('<a href="#" data-action="my-contact-data" role="treeitem">').text(l("My contact data")).on("click",C)))},addNewAddressBook:function(e){var t=e.module,i=h.getDefaultFolder(t);this.link("add-new-address-book",l("Personal address book"),function(e){e.data={folder:i,module:t},F(e)})},rootFolders:function(i){var o,e={folder:i.root,headless:!0,open:!0,tree:i,parent:i};i.options.hideTrashfolder&&(e.filter=function(e,t){return!h.is("trash",t.attributes)}),"infostore"===i.module&&(o=e.filter,e.filter=function(e,t){return(!o||o.apply(this,arguments))&&!h.isExternalFileStorage(t)&&(!i.options.hideTrashfolder||!h.is("trash",t.attributes))}),this.append(new p(e).render().$el.addClass("root-folders"))},privateDriveFolders:function(e){this.append(new p({folder:"virtual/drive/private",headless:!0,open:!0,icons:e.options.icons,tree:e,parent:e}).render().$el.addClass("private-drive-folders").attr("role","presentation"))},privateDriveFoldersWithoutMyShares:function(e){this.append(new p({folder:"virtual/drive/private-without-myshares",headless:!0,open:!0,icons:e.options.icons,tree:e,parent:e}).render().$el.addClass("private-drive-folders").attr("role","presentation"))},publicDriveFolders:function(e){this.append(new p({folder:"virtual/drive/public",headless:!0,open:!0,icons:e.options.icons,tree:e,parent:e}).render().$el.addClass("public-drive-folders").attr("role","presentation"))}};function M(){var i;i=["google","dropbox","boxcom","graph"],f.point("io.ox/core/folder/storage-accounts/list").invoke("customize",i),require(["i
1o.ox/core/api/filestorage"]).then(function(e){var t=e.rampup().then(function(){return _(e.isStorageAvailable()).map(function(e){return e.match(/\w*?$/)[0]})});return $.when(require(["io.ox/keychain/api"]),t)}).then(function(e,t){return _(e.submodules).filter(function(e){return!(i.indexOf(e.id)<0)&&((!e.canAdd||e.canAdd.apply(this))&&0<=t.indexOf(e.id))})}).done(function(e){var t=_.filter(["nextcloud","webdav","owncloud"],function(e){return a.has("filestorage_"+e)});0<e.length||t.length?D.empty().show().append($('<a href="#" data-action="add-storage-account" role="treeitem">').text(l("Add storage account")).on("click",{cap:t},S)):D.hide()})}var N=100;function F(t){t.preventDefault(),ox.load(["io.ox/core/folder/actions/add"]).done(function(e){e(t.data.folder,{module:t.data.module})})}function E(e){var o=e.data.id;require(["io.ox/files/api","io.ox/files/share/permissions"],function(e,t){var i=new e.Model(h.pool.getModel(o).toJSON());t.showFolderPermissions(o,i)})}function I(e){var t={id:"io.ox/core/sub",data:e.data.folder,refresh:!0};ox.launch("io.ox/settings/main",t).done(function(){this.setSettingsPane(t)})}function P(e){if("keydown"===e.type){if(32!==e.which)return;e.stopImmediatePropagation()}var t=e.data.target,i=e.data.app,o=e.data.folder;0<t.closest(".single-selection").length||(e.preventDefault(),i.folders.isSelected(o.id)?i.folders.remove(o.id):i.folders.add(o.id),t.toggleClass("selected",i.folders.isSelected(o.id)),t.closest(".folder").attr("aria-checked",i.folders.isSelected(o.id)))}return f.point("io.ox/core/foldertree/mail/app").extend({id:"unified-folders",index:N+=100,draw:A.unifiedFolders},{id:"standard-folders",index:N+=100,draw:A.standardFolders},{id:"local-folders",index:N+=100,draw:A.localFolders},{id:"other",index:N+=100,draw:A.otherFolders},{id:"remote-accounts",index:N+=100,draw:A.remoteAccounts},{id:"tree-links",index:N+=100,draw:A.treeLinks},{id:"upsell-mail",index:N+=100,draw:A.synchronizeAccount}),f.point("io.ox/core/foldertree/mail/treelinks").extend({id:"all-attachments",index:N+=100,draw:A.allAttachments},{id:"add-account",index:1e3,draw:A.addRemoteAccount}),f.point("io.ox/core/foldertree/mail/popup").extend({id:"standard-folders",draw:A.standardFolders},{id:"local-folders",draw:A.localFolders},{id:"other",draw:A.otherFolders},{id:"remote-accounts",draw:A.remoteAccounts}),f.point("io.ox/core/foldertree/mail/subscribe").extend({id:"root-folders",draw:A.rootFolders}),f.point("io.ox/core/foldertree/mail/account").extend({id:"root-folders",draw:A.rootFolders}),f.point("io.ox/core/foldertree/mail/filter").extend({id:"standard-folders",draw:A.standardFolders},{id:"local-folders",draw:A.localFolders},{id:"other",draw:A.otherFolders}),f.point("io.ox/core/foldertree/infostore/app").extend({id:"private-folders",index:100,draw:A.privateDriveFolders},{id:"public-folders",index:200,draw:A.publicDriveFolders},{id:"remote-accounts",index:300,draw:A.fileStorageAccounts},{id:"tree-links-files",index:400,draw:A.treeLinksFiles}),f.point("io.ox/core/foldertree/files/treelinks").extend({id:"add-external-account",index:100,draw:A.addStorageAccount},{id:"manage-subscriptions",index:200,draw:A.manageSubscriptions}),f.point("io.ox/core/foldertree/infostore/subscribe").extend({id:"root-folders",draw:A.rootFolders}),f.point("io.ox/core/foldertree/infostore/popup").extend({id:"private-folders",index:100,draw:A.privateDriveFoldersWithoutMyShares},{id:"public-folders",index:200,draw:A.publicDriveFolders},{id:"remote-accounts",index:300,draw:A.fileStorageAccounts}),f.point("io.ox/core/foldertree/contacts/links").extend({id:"my-contact-data",index:400,draw:A.myContactData}),f.point("io.ox/core/foldertree/contacts/links/subscribe").extend({id:"add-new_address_book",index:300,draw:A.addNewAddressBook},{id:"subscribe",index:500,capabilities:["subscription"],draw:A.subscribe},{id:"subscribeShared",index:550,capabilities:["subscription"],draw:A.subscribeShared}),f.point("io.ox/core/foldertree/contacts/links").extend({index:200,id:"private-contacts",draw:function(e){var t;"app"===e.context&&(a.has("guest")||(t=new s({attributes:{role:"presentation"},tagName:"li",className:"dropdown",$toggle:$('<a href="#" data-action="add-subfolder" data-toggle="dropdown">').append(l("Add new address book"),$('<i class="fa fa-caret-down" aria-hidden="true">'))}),f.point("io.ox/core/foldertree/contacts/links/subscribe").invoke("draw",t,e),0!==t.$ul.children().length&&(this.append(t.render().$el),t.$toggle.attr("role","treeitem"))))}}),_("contacts calendar tasks".split(" ")).each(function(c){var i={contacts:{private:l("My address books"),public:l("Public address books"),shared:l("Shared address books"),hidden:l("Hidden address books")},calendar:{private:l("My calendars"),public:l("Public calendars"),shared:l("Shared calendars"),hidden:l("Hidden calendars")},tasks:{private:l("My tasks"),public:l("Public tasks"),shared:l("Shared tasks"),hidden:l("Hidden tasks")}};function u(e,t){return i[e][t]}var e={id:"standard-folders",index:100,draw:function(e){var t,i,o="calendar"===c?"event":c,n=$('<ul class="list-unstyled" role="group">'),a=f.Baton({module:c,view:e,context:e.context}),r="virtual/flat/"+o,s="flat/"+o,l={count:0,empty:!1,indent:!1,open:!1,tree:e,parent:e,filter:function(e,t){return!!t.get("subscribed")}},d=$('<li role="treeitem">');e.options.noLinks||f.point("io.ox/core/foldertree/"+c+"/links").invoke("draw",n,a),this.append(d),h.flat({module:o,all:/^(event|contacts|tasks)$/.test(o)}).always(function(){t=new p(_.extend({},l,{folder:r+"/private",model_id:s+"/private",title:u(c,"private"),filter:function(e,t){return!!t.get("subscribed")}})),h.pool.getCollection("flat/"+o+"/private").on("add",function(){t.toggle(!0)}),h.pool.getCollection("flat/"+o+"/public").on("add",function(){t.toggle(!0)}),i=new p(_.extend({},l,{folder:r+"/public",model_id:s+"/public",title:u(c,"public")})),d.replaceWith(t.render().$el.addClass("section"),$('<li class="links list-unstyled" role="treeitem">').append(n),i.render().$el.addClass("section"),new p(_.extend({},l,{folder:r+"/shared",model_id:s+"/shared",title:u(c,"shared")})).render().$el.addClass("section"),new p(_.extend({},l,{folder:r+"/hidden",model_id:s+"/hidden",title:u(c,"hidden")})).render().$el.addClass("section"))})}};f.point("io.ox/core/foldertree/"+c+"/app").extend(_.extend({},e)),f.point("io.ox/core/foldertree/"+c+"/popup").extend(_.extend({},e)),"tasks"===c&&(f.point("io.ox/core/foldertree/"+c+"/links/subscribe").extend({index:100,id:"personal",draw:function(e){var t=e.module,i=h.getDefaultFolder(t);this.link("add-new-folder",l("Personal folder"),function(e){e.data={folder:i,module:t},F(e)})}}),f.point("io.ox/core/foldertree/"+c+"/links/subscribe").extend({index:200,id:"shared",draw:function(t){"app"===t.context&&h.getDefaultFolder(c)&&this.link("shared",l("Subscribe to shared folder"),function(e){e.data={baton:t},T(e)}
1)}})),f.point("io.ox/core/foldertree/tasks/links").extend({index:200,id:"dropdown",draw:function(e){var t;"app"===e.context&&(a.has("guest")||(t=new s({attributes:{role:"presentation"},tagName:"li",className:"dropdown",$toggle:$('<a href="#" data-action="add-subfolder" data-toggle="dropdown">').append(l("Add new folder"),$('<i class="fa fa-caret-down" aria-hidden="true">'))}),f.point("io.ox/core/foldertree/tasks/links/subscribe").invoke("draw",t,e),0!==t.$ul.children().length&&(this.append(t.render().$el),t.$toggle.attr("role","treeitem"))))}})}),f.point("io.ox/core/foldertree/calendar/links/subscribe").extend({id:"default",index:100,draw:function(){var t=h.getDefaultFolder("calendar");t&&this.link("folder",l("Personal calendar"),function(e){e.data={folder:t,module:"event"},F(e)})}},{id:"divider-1",index:200,draw:function(){(a.has("calendar_schedjoules")||a.has("calendar_google")||a.has("calendar_ical"))&&(this.divider(),this.header(l("Subscribe to calendar")))}},{id:"schedjoules",index:300,draw:function(){a.has("calendar_schedjoules")&&this.link("schedjoules",l("Browse calendars of interest"),function(){require(["io.ox/calendar/settings/schedjoules/schedjoules"],function(e){e.open()})})}},{id:"google",index:400,draw:function(){var t,i;
1a.has("calendar_google")&&(require(["io.ox/calendar/actions/subscribe-google"],function(e){t=e,i.removeClass("hidden")}),this.link("google",l("Google calendar"),function(){t()}),i=this.$ul.find("li").last().addClass("hidden"))}},{id:"ical",index:500,draw:function(){a.has("calendar_ical")&&this.link("ical",l("Subscribe via URL (iCal)"),function(){require(["io.ox/calendar/actions/subscribe-ical"],function(e){e()})})}},{id:"shared",index:500,draw:function(){this.link("shared",l("Subscribe to shared calendar"),function(){require(["io.ox/core/sub/sharedFolders"],function(e){e.open({module:"calendar",help:"ox.appsuite.user.sect.calendar.folder.subscribeshared.html",title:l("Subscribe to shared calendars"),point:"io.ox/core/folder/subscribe-shared-calendar",noSync:!a.has("caldav"),sections:{public:l("Public calendars"),shared:l("Shared calendars"),private:l("Private"),hidden:l("Hidden calendars")}})})})}},{id:"import",index:600,draw:function(){_.device("ios || android")||(this.divider(),this.header(l("Import calendar")),this.link("import",l("Upload file"),function(){require(["io.ox/core/import/import"],function(e){e.show("calendar")})}))}}),f.point("io.ox/core/foldertree/calendar/links").extend({index:200,id:"private-calendar",draw:function(e){var t;"app"===e.context&&(a.has("guest")||(t=new s({attributes:{role:"presentation"},tagName:"li",className:"dropdown",$toggle:$('<a href="#" data-action="add-subfolder" data-toggle="dropdown">').append(l("Add new calendar"),$('<i class="fa fa-caret-down" aria-hidden="true">'))}),f.point("io.ox/core/foldertree/calendar/links/subscribe").invoke("draw",t,e),0!==t.$ul.children().length&&(this.append(t.render().$el),t.$toggle.attr("role","treeitem"))))}}),f.point("io.ox/core/foldertree/contacts/links").extend({index:1e3,id:"upsell-contacts",draw:function(e){"app"===e.context&&this.append(new r({id:"folderview/contacts",requires:"carddav",title:l("Synchronize with your tablet or smartphone")}).render().$el)}}),f.point("io.ox/core/foldertree/calendar/links").extend({index:1e3,id:"upsell-calendar",draw:function(e){"app"===e.context&&this.append(new r({id:"folderview/calendar",requires:"caldav",title:l("Synchronize with your tablet or smartphone")}).render().$el)}}),f.point("io.ox/core/foldertree/node").extend({id:"shared-by",index:100,draw:function(e){var t=e.view.model.toJSON();/^(contacts|calendar|tasks)$/.test(t.module)&&h.is("shared",t)&&e.view.addA11yDescription(l("Shared by other users"))}},{id:"shared",index:200,draw:function(e){this.find(".folder-node:first .folder-shared:first").remove(),_.device("smartphone")||"infostore"!==e.data.module&&h.is("unlocked",e.data)&&(e.view.$.buttons.append($('<i class="fa folder-shared" aria-hidden="true">').attr("title",l("You share this folder with other users")).on("click",{id:e.data.id},E)),e.view.addA11yDescription(l("You share this folder with other users")))}},{id:"sub",index:300,draw:function(e){h.isVirtual(e.view.folder)||this.find(".folder-sub:first").remove(),h.is("shared",e.data)||h.is("subscribed",e.data)&&(e.view.$.buttons.append($('<i class="fa folder-sub">').attr("title",l("This folder has subscriptions")).on("click",{folder:e.data},I)),e.view.addA11yDescription(l("This folder has subscriptions")))}},{id:"is-selected",index:400,draw:function(n){var a,r,s;/^calendar$/.test(n.data.module)&&(r=(a=this).find(".folder-label"),(s=ox.ui.apps.get("io.ox/calendar"))&&(this.attr("aria-checked",s.folders.isSelected(n.data.id)),require(["io.ox/calendar/util"],function(e){var t=e.getFolderColor(n.data),i=r.find(".color-label"),o=e.getColorName(t);o&&n.view.addA11yDescription(l("Category")+": "+o),0===i.length&&(i=$('<div class="color-label" aria-hidden="true">')),i.toggleClass("selected",s.folders.isSelected(n.data.id)),i.css({"background-color":t,color:e.getForegroundColor(t)}),i.off("click",P).on("click",{folder:n.data,app:s,target:i},P),a.off("keydown",P).on("keydown",{folder:n.data,app:s,target:i},P),r.prepend(i)})))}},{id:"account-errors",index:500,draw:function(e){var t=e.data.module;if(/^(calendar|contacts|infostore)$/.test(t)){if("contacts"===t&&e.data.meta&&e.data.meta.errors)return e.view.showStatusIcon(l("The subscription could not be updated due to an error and must be recreated."),"click:account-error",e.data);var i="calendar"===t?e.data["com.openexchange.calendar.accountError"]:e.data["com.openexchange.folderstorage.accountError"];if(!i)return e.view.hideStatusIcon();e.view.showStatusIcon(i.error,"click:account-error",e.data),ox.trigger("http:error:"+i.code,i)}}}),A}),define("io.ox/core/settings/defaults",function(){var e,t;t=ox.serverConfig&&ox.serverConfig.languages?(e=Object.keys(ox.serverConfig.languages),_(e).contains("en_US")?"en_US":e[0]):"en_US";var i=_.getCookie("language");
1return i&&(t=i),{language:t,region:"",refreshInterval:3e5,design:"primary",autoStart:"io.ox/mail/main",coloredIcons:!1,autoOpenNotification:!0,autoLogout:0,showDesktopNotifications:!0,settings:{downloadsDisabled:!1},onboardingWizard:!0}}),define("io.ox/core/settingOptions/settings/defaults",function(){return{}}),define("io.ox/mail/settings/defaults",[],function(){return{removeDeletedPermanently:!1,contactCollectOnMailTransport:!1,contactCollectOnMailAccess:!1,useFixedWidthFont:!1,appendVcard:!1,sendDispositionNotification:!1,appendMailTextOnReply:!0,forwardMessageAs:"Inline",messageFormat:"html",lineWrapAfter:"0",defaultSendAddress:"",allowHtmlMessages:!0,allowHtmlImages:!1,isColorQuoted:!1,defaultSignature:!1,defaultReplyForwardSignature:!1,mobileSignature:void 0,mobileSignatureType:"none",threadSupport:!0,sort:"thread",order:"desc",unread:!1,notificationSoundName:"bell",playSound:!0,confirmReplyToMailingLists:!0,unseenMessagesFolder:!0,showCheckboxes:!0,authenticity:{level:"fail_trusted",domains:""}}}),define("io.ox/contacts/settings/defaults",function(){return{showAdmin:!1,fullNameFormat:"auto",startInGlobalAddressbook:!0,mapService:"google",contactsPrintLayout:"simple"}}),define("io.ox/calendar/settings/defaults",function(){return{interval:30,startTime:8,endTime:18,defaultReminder:15,viewView:"week:workweek",showDeclinedAppointments:!0,markFulltimeAppointmentsAsFree:!1,notifyNewModifiedDeleted:!0,notifyAcceptedDeclinedAsCreator:!1,notifyAcceptedDeclinedAsParticipant:!1,deleteInvitationMailAfterAction:!0,numDaysWorkweek:5,workweekStart:1,showPastReminders:!0}}),define("io.ox/tasks/settings/defaults",function(){return{interval:30,notifyNewModifiedDeleted:!0,notifyAcceptedDeclinedAsCreator:!1,notifyAcceptedDeclinedAsParticipant:!1}}),define("io.ox/files/settings/defaults",function(){return{view:"fluid:icon",videoEnabled:!0,audioEnabled:!0,rootFolderId:9,showHidden:!1,uploadHandling:"announceNewVersion",autoplayPause:5,autoplayLoopMode:"loopEndlessly"}}),define("io.ox/metrics/main",["io.ox/core/extensions","settings!io.ox/core","io.ox/metrics/util","io.ox/core/capabilities","io.ox/core/http","io.ox/metrics/extensions","io.ox/metrics/adapters/default","io.ox/metrics/adapters/pro","io.ox/metrics/adapters/analytics","io.ox/metrics/adapters/console","io.ox/metrics/adapters/context"],function(l,e,t,i,n){var o,a,r=l.point("io.ox/metrics/adapter");function s(){return!t.doNotTrack()&&(!_.device("karma")&&(!ox.debug&&!!e.get("tracking/enabled",!1)))}function d(e){var t,i,o,n,a,r=!!e.preventDefault,s=l.Baton.ensure(r?{data:e.data,event:e}:{data:e});return i=(t=s).data,o=i.action?i.action.replace(/^io\.ox\//,""):i.action,n=_.isBoolean(i.detail)?String(i.detail):i.detail,(a=_.compact([i.app,i.target,o,n]).join("/"))&&(t.id=a),t}return a={trackEvent:function(e){var t,i,o;"sort"===e.action&&(i="drive"===(t=e).app?"files":t.app,o=n.getColumnMapping(i),t.detail=o[t.detail]||t.detail),r.invoke("trackEvent",a,d(e))},trackPage:function(e){r.invoke("trackPage",a,d(e))},trackVariable:function(e){r.invoke("trackVariable",a,e)},watch:function(e,t){e.node.on(e.type,e.selector,t,a.trackEvent)},getUserHash:function(){return o=o||t.getUserHash()},getFolderFlags:t.getFolderFlags,isEnabled:s},s()?(r.invoke("setup",a),r.invoke("trackVisit",a,[{id:"language",value:ox.language},{id:"version",value:ox.version},{id:"capabilities",value:i.getFlat().enabled}]),l.point("io.ox/metrics/extensions").invoke("register",a)):_.each(a,function(e,t){a[t]=$.noop}),a}),define("io.ox/metrics/util",["io.ox/core/folder/api"],function(o){var i,r,n;function a(e,t){var i=l(i=e[0],a=e[1],n=e[2],o=e[3],t[0],7,-680876936),o=l(o,i,a,n,t[1],12,-389564586),n=l(n,o,i,a,t[2],17,606105819),a=l(a,n,o,i,t[3],22,-1044525330);i=l(i,a,n,o,t[4],7,-176418897),o=l(o,i,a,n,t[5],12,1200080426),n=l(n,o,i,a,t[6],17,-1473231341),a=l(a,n,o,i,t[7],22,-45705983),i=l(i,a,n,o,t[8],7,1770035416),o=l(o,i,a,n,t[9],12,-1958414417),n=l(n,o,i,a,t[10],17,-42063),a=l(a,n,o,i,t[11],22,-1990404162),i=l(i,a,n,o,t[12],7,1804603682),o=l(o,i,a,n,t[13],12,-40341101),n=l(n,o,i,a,t[14],17,-1502002290),i=d(i,a=l(a,n,o,i,t[15],22,1236535329),n,o,t[1],5,-165796510),o=d(o,i,a,n,t[6],9,-1069501632),n=d(n,o,i,a,t[11],14,643717713),a=d(a,n,o,i,t[0],20,-373897302),i=d(i,a,n,o,t[5],5,-701558691),o=d(o,i,a,n,t[10],9,38016083),n=d(n,o,i,a,t[15],14,-660478335),a=d(a,n,o,i,t[4],20,-405537848),i=d(i,a,n,o,t[9],5,568446438),o=d(o,i,a,n,t[14],9,-1019803690),n=d(n,o,i,a,t[3],14,-187363961),a=d(a,n,o,i,t[8],20,1163531501),i=d(i,a,n,o,t[13],5,-1444681467),o=d(o,i,a,n,t[2],9,-51403784),n=d(n,o,i,a,t[7],14,1735328473),i=c(i,a=d(a,n,o,i,t[12],20,-1926607734),n,o,t[5],4,-378558),o=c(o,i,a,n,t[8],11,-2022574463),n=c(n,o,i,a,t[11],16,1839030562),a=c(a,n,o,i,t[14],23,-35309556),i=c(i,a,n,o,t[1],4,-1530992060),o=c(o,i,a,n,t[4],11,1272893353),n=c(n,o,i,a,t[7],16,-155497632),a=c(a,n,o,i,t[10],23,-1094730640),i=c(i,a,n,o,t[13],4,681279174),o=c(o,i,a,n,t[0],11,-358537222),n=c(n,o,i,a,t[3],16,-722521979),a=c(a,n,o,i,t[6],23,76029189),i=c(i,a,n,o,t[9],4,-640364487),o=c(o,i,a,n,t[12],11,-421815835),n=c(n,o,i,a,t[15],16,530742520),i=u(i,a=c(a,n,o,i,t[2],23,-995338651),n,o,t[0],6,-198630844),o=u(o,i,a,n,t[7],10,1126891415),n=u(n,o,i,a,t[14],15,-1416354905),a=u(a,n,o,i,t[5],21,-57434055),i=u(i,a,n,o,t[12],6,1700485571),o=u(o,i,a,n,t[3],10,-1894986606),n=u(n,o,i,a,t[10],15,-1051523),a=u(a,n,o,i,t[1],21,-2054922799),i=u(i,a,n,o,t[8],6,1873313359),o=u(o,i,a,n,t[15],10,-30611744),n=u(n,o,i,a,t[6],15,-1560198380),a=u(a,n,o,i,t[13],21,1309151649),i=u(i,a,n,o,t[4],6,-145523070),o=u(o,i,a,n,t[11],10,-1120210379),n=u(n,o,i,a,t[2],15,718787259),a=u(a,n,o,i,t[9],21,-343485551),e[0]=r(i,e[0]),e[1]=r(a,e[1]),e[2]=r(n,e[2]),e[3]=r(o,e[3])}function s(e,t,i,o,n,a){return t=r(r(t,e),r(o,a)),r(t<<n|t>>>32-n,i)}function l(e,t,i,o,n,a,r){return s(t&i|~t&o,e,t,n,a,r)}function d(e,t,i,o,n,a,r){return s(t&o|i&~o,e,t,n,a,r)}function c(e,t,i,o,n,a,r){return s(t^i^o,e,t,n,a,r)}function u(e,t,i,o,n,a,r){return s(i^(t|~o),e,t,n,a,r)}function t(e){/[\x80-\xFF]/.test(e)&&(e=unescape(encodeURI(e)));for(var t=e.length,i=[1732584193,-271733879,-1732584194,271733878],o=64;o<=e.length;o+=64)a(i,function(e){var t,i=[];for(t=0;t<64;t+=4)i[t>>2]=e.charCodeAt(t)+(e.charCodeAt(t+1)<<8)+(e.charCodeAt(t+2)<<16)+(e.charCodeAt(t+3)<<24);return i}(e.substring(o-64,o)));e=e.substring(o-64);var n=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(o=0;o<e.length;o++)n[o>>2]|=e.charCodeAt(o)<<(o%4<<3);if(n[o>>2]|=128<<(o%4<<3),55<o)for(a(i,n),o=0;o<16;o++)n[o]=0;return n[14]=8*t,a(i,n),i}function p(e){for(var t=0;t<e.length;t++)e[t]=function(e){for(var t="",i=0;i<4;i++)t+=n[e>>8*i+4&15]+n[e>>8*i&15];return t}(e[t]);return e.join("")}n="0123456789abcdef".split(""),r=function(e,t){return e+t&4294967295},"5d41402abc4b2a76b9719d911017c592"!==(i=function(e){return p(t(e))})("hello")&&(r=function(e,t){var i=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(i>>16)<<16|65535&i});var h="metrics-userhash-v2";var f,g,m,v,x,e=(f={1:"default",2:"default",3:"default",8:"default"},g={20:"pictures",21:"documents",22:"music",23:"videos",24:"templates"},m={7:"inbox",9:"drafts",10:"sent",11:"spam",12:"trash"}
1,v={"virtual/myshares":"all-my-shares","virtual/favorites/infostore":"favorites","virtual/favorites/contacts":"favorites","virtual/favorites/mail":"favorites","virtual/myfolders":"my-folders"},x=/virtual\/flat\/(\D+)\/(private|public|shared|hidden)/,function(e){return o.get(e).then(b).then(w)});function b(t){var i={};return"infostore"===(t=t||{}).module&&t.account_id&&(i.account=t.account_id.split("://")[0]),_.each(["shared","private","public","system"],function(e){"infostore"!==t.module&&!i.type&&o.is(e,t)&&(i.type=e)}),o.isVirtual(t.id)&&(i.virtual="virtual"),i.content=function(e){if("contacts"===e.module&&"6"===e.id)return"gab";var t=e.id.match(x);return t?"section-"+t[2]:v[e.id]||g[e.type]||m[e.standard_folder_type]}(t)||(o.is("trash",t)?"trash":void 0),i.default=function(e){if("infostore"!==e.module||"9"===e.folder_id)return f[e.standard_folder_type]}(t),i}function w(e){return _.compact([e.account,e.type,e.virtual,e.content,e.default])}return{md5:i,doNotTrack:function(){return-1<[navigator.doNotTrack,navigator.msDoNotTrack,window.doNotTrack].indexOf("1")},getUserHash:function(){var e,t=_.getCookie(h);return t||(e=(Math.random()+1).toString(36).substring(2),t=i(e),_.setCookie(h,t)),t},getFolderFlags:e,toChunks:function e(t,i,o){o=o||[];var n=String(t);if(n.length<=i)return o.push(n.split(",")),o;for(var a=i-1;0<=a;a--)if(","===n[a]){var r=n.substr(0,a),s=n.substr(a+1);return o.push(r.split(",")),e(s,i,o)}}}}),define("io.ox/metrics/extensions",["io.ox/core/extensions"],function(e){var t=e.point("io.ox/metrics/extensions");t.extend({id:"upsell",register:function(){var t=this;ox.on("upsell:requires-upgrade",function(e){t.trackEvent({app:"core",target:"upsell/"+e.type,action:e.id,detail:e.missing})})}}),t.extend({id:"app",register:function(){var t,i=this;function e(e){e&&t!==e.id&&(t=e.id,i.trackPage({name:e.get("name"),id:e.get("id"),trackingId:e.get("trackingId")}))}_.defer(function(){ox.ui.App&&e(ox.ui.App.getCurrentApp())}),ox.on("app:start app:resume",e)}}),t.extend({id:"loadtime",register:function(){var o=this;ox.on("loadtime",function(e){var t=e.app,i=t&&t instanceof Backbone.Model?t.get("trackingId")||t.get("name")||t.get("id"):e.id;o.trackEvent({app:"core",target:"loadtime",action:i,value:e.loadEnd-e.loadStart})})}}),t.extend({id:"topbar-logo",register:function(){this.watch({node:$("#io-ox-appcontrol"),selector:"#io-ox-top-logo",type:"click"},{app:"core",target:"topbar/logo",type:"click",action:""})}}),t.extend({id:"topbar-quicklaunch",register:function(){var t=this;$("#io-ox-appcontrol #io-ox-quicklaunch").on("mousedown","button",function(e){t.trackEvent({app:"core",target:"topbar/quicklaunch",type:"click",action:$(e.currentTarget).attr("data-id")})})}}),t.extend({id:"topbar-taskbar",register:function(){var i=this;$("#io-ox-appcontrol .taskbar").on("mousedown","li",function(e){var t;$(e.currentTarget).is("#io-ox-topbar-account-dropdown-icon")||$(e.currentTarget).hasClass("dropdown")&&$(e.currentTarget).hasClass("open")||(t=$(e.currentTarget).hasClass("launcher")||$(e.currentTarget).hasClass("dropdown")?$(e.currentTarget).attr("id"):$(e.currentTarget).find("a").attr("data-id"))&&i.trackEvent({app:"core",target:"topbar/taskbar",type:"click",action:t})})}}),t.extend({id:"topbar-account-dropdown",register:function(){var o=this;$("#io-ox-topbar-account-dropdown-icon").on("mousedown",function(){$(this).hasClass("open")||o.trackEvent({app:"core",target:"topbar/settings",type:"click",action:"dropdown/open"})}),$("#topbar-account-dropdown").on("mousedown","a",function(e){var t=$(e.target).closest("a"),i=t.attr("data-name")||t.attr("data-action")||t.attr("class")||t.parent().attr("class");o.trackEvent({app:"core",target:"topbar/settings",type:"click",action:i})})}}),t.extend({id:"halo",register:function(){var t=this;$(document.documentElement).on("mousedown",".halo-link",function(){var e=ox.ui.App.getCurrentApp()||new Backbone.Model({name:"unknown"});t.trackEvent({app:"core",type:"click",action:"halo",detail:_.last(e.get("name").split("/"))})})}}),t.extend({id:"filestorages",register:function(){var o=this;require(["io.ox/core/api/filestorage"],function(e){var i={create:"created",delete:"deleted",update:"updated"};e.on("create delete update",function(e,t){o.trackEvent({app:"data",target:"drive/account/"+i[e.type],type:"click",action:t.get("filestorageService")})})})}})}
1),define("io.ox/metrics/adapters/default",["settings!io.ox/core","io.ox/core/extensions","io.ox/metrics/util"],function(e,t,n){var i,o,a,r;e.get("tracking/piwik/enabled",!1)&&(i=t.point("io.ox/metrics/adapter"),o=e.get("tracking/piwik/url/lib"),a=e.get("tracking/piwik/url/api"),r=e.get("tracking/piwik/id",1),window._paq=window._paq||[],a&&o||!ox.debug||console.log("Error: Matomo/Piwik is enabled but no backend URL was configured!"),i.extend({id:"piwik",setup:function(){_paq.push(["setTrackerUrl",a]),_paq.push(["setSiteId",ox.debug?2:r]),_paq.push(["setUserId",this.getUserHash()]),_paq.push(["enableLinkTracking"]),require([o])},trackVisit:function(e){var i=this,o=[];_.each(e,function(i){var e=String(i.value);if(!_.isArray(i.value)||e.length<=200)return o.push(i);var t=n.toChunks(i.value,200);_.each(t,function(e,t){o.push(_.extend({},i,{value:e,id:i.id+"-"+(t+1)}))})}),_.each(o,function(e,t){i.trackVariable(_.extend(e,{index:t+1}))})},trackEvent:function(e){var t=e.data;_paq.push(["trackEvent",t.app,e.id||t.target,t.action,t.detail||t.value])},trackPage:function(e){_paq.push(["trackPageView",e.data.trackingId||e.data.name||e.data.id])},trackVariable:function(e){e.index?_paq.push(["setCustomVariable",e.index,e.id,String(e.value),e.scope||"visit"]):ox.debug&&console.log("Missing/invalid index argument on trackVariable call")}}))}),define("io.ox/metrics/adapters/console",["settings!io.ox/core","io.ox/core/extensions"],function(a,e){function t(e,t){var i,o=(t=t||{}).id||e,n=t.data;switch(a.get("tracking/console/verbosity","DEBUG").toLowerCase()){case"debug":i=[e,o,JSON.stringify(n)];break;case"info":default:i=e+": "+o}return _.isString(i)?console.log("%c"+i,"color: white; background-color: grey"):console.log(i)}a.get("tracking/console/enabled",!1)&&e.point("io.ox/metrics/adapter").extend({id:"console",setup:function(){t("setup")},trackEvent:function(e){t("trackEvent",e)},trackVisit:function(e){t("trackVisit",e)},trackPage:function(e){t("trackPage",e)}})}),define("io.ox/core/collection",["io.ox/core/folder/api","io.ox/core/folder/util","io.ox/core/api/user"],function(h,f,t){function g(e,t,i){if(!e)return!1;var o=h.bits(e,i);return 0!==o&&(1!==o||t===ox.user_id)}function m(e){return"standard_folder"in e||"folder"===e.folder_id}function v(e){if(_.isObject(e))return m(e)?e.id:e.folder_id||e.folder}function n(c){var u=c.length||0,p={read:!0,modify:!0,delete:!0,create:!0,"create:folder":!0,"rename:folder":!0,"delete:folder":!0,"change:seen":!0,none:0===u,some:0<u,one:1===u,multiple:1<u,items:!1,folders:!1,mixed:!1,guard:!1},e=_.chain(c).map(v).compact().uniq().value();return p.toplevel=_(c).reduce(function(e,t){return e&&"folder_id"in t&&!("filename"in t)},!0),0===e.length?(p.unknown=!0,"read modify delete create:folder rename:folder delete:folder change:seen".split(" ").forEach(function(e){p[e]=!1}),$.when(p)):$.when(h.multiple(e),t.me()).pipe(function(e,o){for(var t,i,n=0,a=null,r=_.toHash(e,"id"),s=!1,l=!1;n<u;n++)if(i=(a=c[n])&&a.object_permissions&&_(a.object_permissions).find(function(e){return i=o,!1===(t=e).group&&t.entity===ox.user_id||!0===t.group&&_(i.groups).contains(t.entity);var t,i}),t=r[v(a)],a.meta&&a.meta.Encrypted&&(p.guard=!0),m(a))void 0===a.own_rights&&(a=r[a.id]),s=!0,p["create:folder"]=p["create:folder"]&&h.can("create:folder",a),p["rename:folder"]=p["rename:folder"]&&h.can("rename:folder",a),p["delete:folder"]=p["delete:folder"]&&h.can("delete:folder",a),p["change:seen"]=p["change:seen"]&&h.can("change:seen",a),p.delete=p.delete&&h.can("delete:folder",a);else{if(!i&&!t){p.unknown=!0,p.read=p.modify=p.delete=p.create=p["change:seen"]=!1;break}l=!0;var d=a.createdBy&&a.createdBy.entity?a.createdBy.entity:a.created_by;p.read=p.read&&(i&&1<=i.bits||g(t,d,7)),p.modify=p.modify&&(i&&2<=i.bits||g(t,d,14)),p.delete=p.delete&&(i&&4<=i.bits||g(t,d,21)),t&&(p.create=p.create&&2<=(127&t.own_rights)),f.is("subscribed",t)&&(p.modify=p.delete=p.create=!1)}return s||"create:folder rename:folder".split(" ").forEach(function(e){p[e]=!1}),l||"create read modify".split(" ").forEach(function(e){p[e]=!1}),p.items=l&&!s,p.folders=s&&!l,p.mixed=s&&l,p})}function e(e){var t=_.compact([].concat(e)),i={},o=!1;this.getProperties=function(){return n(t).always(function(e){_.extend(i,e),o=!0})},this.getPromise=function(){return this.getProperties().pipe(_.identity.bind(null,this))},this.isResolved=function(){return o},this.isLarge=function(){return 100<=t.length},this.toJSON=function(){return i},this.has=function(){return this.isResolved()||console.error("Using Collection.has before properties are resolved!",e,arguments),_(arguments).inject(function(e,t){return e&&!0===i[t]},!0)},this.matches=a(i)}function a(i){return _.memoize(function(e){var t=String(e||"").replace(/[a-z:]+/gi,function(e){return!!i[e.toLowerCase()]});try{return new Function("return !!("+t+")")()}catch(e){return console.error("Collection.matches",t,e),!1}})}return e.Simple=function(e){var t=e.length,i={none:0===t,some:0<t,one
1:1===t,multiple:1<t};this.matches=a(i),this.getPromise=function(){return $.when(this)},this.has=function(){return _(arguments).inject(function(e,t){return e&&!0===i[t]},!0)}},e}),define("io.ox/core/api/account",["settings!io.ox/mail","io.ox/core/http","io.ox/core/event"],function(a,n,e){function r(e){var t=_.isArray(e);function i(e){var t,i="default"+this.id+d,o=e+"_fullname";if(this[o])n.test(this[o])||(this[o]=i+this[o]);else{if(0!==this.id)return;(t=a.get(["folder",e]))||(this[e]?(t=c?"default0":a.get("folder/inbox"),t+=d+this[e]):t=""),this[o]=t}}e=t?e:[e];var n=/^default\d+/;return _(e).each(function(e){_(["trash","sent","drafts","spam","archive","confirmed_spam","confirmed_ham"]).each(i,e)}),t?e:e[0]}var s,i={},l={},d=a.get("defaultseparator","/"),c=""===a.get("namespace","INBOX/"),u=new RegExp("^default\\d+"+d+"[^"+d+"]+"+d),t=new RegExp("^default\\d+"+d+"[^"+d+"]+$"),p={};e.extend(p),p.isUnified=function(e){/^\d+$/.test(e)&&(e="default"+e);var t=a.get("unifiedInboxIdentifier");if(!t||"null"===t)return!1;var i=String(e).match(/^(default\d+)/);return!!i&&t===i[1]+d+"INBOX"},p.isUnifiedFolder=function(e){return t.test(e)&&p.isUnified(e)},p.isUnifiedRoot=function(e){return p.isUnified(e)&&1===e.split(d).length},p.isAccount=function(e){if(_.isNumber(e))return e in i;var t=String(e).match(/^default(\d+)/);return t&&t[1]in i},p.isPrimary=function(e){return/^default0/.test(e)},p.isExternal=function(e){return p.isAccount(e)&&!p.isPrimary(e)},p.getUnifiedMailboxName=function(){return this.getUnifiedInbox().then(function(e){return null===e?null:e.split(d)[0]})},p.getUnifiedInbox=function(){var e=a.get("unifiedInboxIdentifier",null);return $.when("null"===e?null:e)},p.getInbox=function(){return a.get("folder/inbox")},p.is=(s={inbox:/^default\d+\DINBOX(?:\/|$)/,sent:/^default\d+\DSent(?:\/|$)/,trash:/^default\d+\DTrash(?:\/|$)/,drafts:/^default\d+\DDrafts(?:\/|$)/,spam:/^default\d+\DSpam(?:\/|$)/},_.memoize(function(e,i){return e=String(e||"").split("|"),i=String(i||""),_(e).reduce(function(e,t){return e||function(o,n){if(p.isUnified(n)){var e=s[o];return Boolean(e&&e.test(n))}return"inbox"===o?l[n]===o:_(l).some(function(e,t){var i=0===n.indexOf(t+d);return e===o&&(t===n||i)})}(t,i)},!1)},function(e,t){return e+":"+t})),p.getFoldersByType=function(i,o){return _(l).chain().map(function(e,t){return(void 0===o||-1!==t.indexOf("default"+o))&&(e===i&&t)}).compact().value()},p.getStandardFolders=function(){return _(l).keys()},p.isStandardFolder=function(e){return void 0!==l[e]},p.isMalicious=function(t,e){if(t)return!!p.is("spam",t)||(!!p.is("confirmed_spam",t)||_(e).some(function(e){return e===t||0===t.indexOf(e+d)}))},p.getType=function(e){return"virtual/all-unseen"===e?"unseen":l[e]},p.getTypes=function(){return l},p.inspect=function(){return{accounts:i,types:l}},p.parseAccountId=function(e,t){if("number"==typeof e)return e;if(/^default(\d+)/.test(String(e))){if(!p.isUnified(e))return parseInt(e.replace(/^default(\d+)(.*)$/,"$1"),10);var i=e.replace(u,"");if(i!==e&&/^default\d+/.test(i))return p.parseAccountId(i,t);if(!t)return 0;var o=e.match(/^default(\d+)/);return o&&o.length?parseInt(o[1],10):0}return 0},p.getPrimaryAddress=function(t){return p.get(t||0).then(o).then(function(e){return e?0===t||!e.transport_url||p.isUnified(t)?p.getDefaultAddress():[e.personal,e.primary_address]:$.Deferred().reject(e)}).then(function(e){return h(e[0],e[1])})},p.getDefaultAddress=function(){return p.get(0).then(o).then(function(e){var t=$.trim(a.get("defaultSendAddress",""));return[e.personal,t||e.primary_address]})},p.getValidAddress=function(t){return p.getAllSenderAddresses().then(function(e){if(!_.isEmpty(e))return _.isEmpty(t.from)||(t.from=e.filter(function(e){return e[1]===t.from[0][1].toLowerCase()})),_.isEmpty(t.from)?p.getPrimaryAddress().then(function(e){return _.extend(t,{from:[e]})}):t})},p.getPrimaryAddressFromFolder=function(e){var t=this.parseAccountId(e,!0),i=p.isUnified(t);return this.getPrimaryAddress(i?0:t)},p.getAddressesFromFolder=function(e){var t=this.parseAccountId(e,!0),i=p.isUnified(t);return $.when(this.getPrimaryAddress(i?0:t),p.getSenderAddresses(i?0:t)).then(function(t,e){return{primary:t,aliases:_.reject(e,function(e){return t[1]===e[1]})}})}
1,p.getDefaultDisplayName=function(){return require(["io.ox/contacts/util","io.ox/core/api/user"]).then(function(t,e){return e.get({id:ox.user_id}).then(function(e){return t.getMailFullName(e)})})};var o=function(t){return!t||t.personal&&(" "===t.personal||""!==$.trim(t.personal))?$.Deferred().resolve(t):p.getDefaultDisplayName().then(function(e){return t.personal=e,t})};function h(e,t){return[(e=$.trim(e||""))!==(t=p.trimAddress(t))?e:"",t]}function f(t){if(!t)return[];if(!t.addresses)return[h(t.personal,t.primary_address)];var e=_(String(t.addresses||"").toLowerCase().split(",")).map($.trim).sort();return _(e).map(function(e){return h(e!==t.primary_address&&a.get("features/anonymousAliases",!1)?"":t.personal,e)})}return p.trimAddress=function(e){return-1<(e=$.trim(e)).indexOf("@")?e.toLowerCase():e},p.getSenderAddresses=function(e){return this.get(e||0).then(o).then(f)},p.getAllSenderAddresses=function(e){return p.all(e).then(function(e){return _(e).filter(function(e){return 0===e.id||!!e.transport_url})}).then(function(e){return $.when.apply($,_(e).map(o))}).then(function(){return _(arguments).flatten(!0)}).then(function(e){return $.when.apply($,_(e).map(f))}).then(function(){return _(arguments).flatten(!0)}).then(function(e){return e})},p.cache={},ox.rampup&&ox.rampup.accounts&&_(ox.rampup.accounts).each(function(e){var t=r(n.makeObject(e,"account"));p.cache[t.id]=t}),p.all=function(e){var t=_.extend({useCache:!0},e);return(0<_(p.cache).size()&&t.useCache?$.Deferred().resolve(_(p.cache).values()):n.GET({module:"account",params:{action:"all"},appendColumns:!0,processResponse:!0}).then(function(e){return e=r(e),p.cache={},_(e).each(function(e){p.cache[e.id]=r(e)}),e})).done(function(e){i={},l={},_(e).each(function(o){i[o.id]=!0,l["default"+o.id+"/INBOX"]="inbox",_("drafts sent spam trash archive confirmed_spam".split(" ")).each(function(e){var t=o[e],i=o[e+"_fullname"]||t;l[i]||(l[i]=e)})})})},p.get=function(e){return p.cache[e]?$.Deferred().resolve(p.cache[e]):p.all().then(function(){return p.cache[e]})},p.create=function(e){return n.PUT({module:"account",params:{action:"new"},data:e,appendColumns:!1}).then(function(e){return p.reload().then(function(){return ox.trigger("account:create"),p.trigger("create:account",{id:e.id,email:e.primary_address,name:e.name}),require(["io.ox/core/folder/api"],function(e){e.propagate("account:create")}),e})})},p.remove=function(t){return n.PUT({module:"account",params:{action:"delete"},data:t,appendColumns:!1}).done(function(){var e=(p.cache[t]||{}).root_folder;delete p.cache[t],ox.trigger("account:delete",e),p.trigger("refresh.all"),p.trigger("delete"),require(["io.ox/core/folder/api"],function(e){e.propagate("account:delete")})})},p.validate=function(e,t){return t=_.extend({action:"validate"},t),n.PUT({module:"account",appendColumns:!1,params:t,data:e,processData:!1}).then(function(e){return $.Deferred().resolve(e.data,13===e.category?e:void 0)},function(e){return $.Deferred().resolve(e.data,e)})},p.update=function(o){return delete o.mail_url,delete o.transport_url,n.PUT({module:"account",params:{action:"update"},data:o,appendColumns:!1}).then(function(e){var t,i=e.id;return p.cache[i]&&(t=e.unified_inbox_enabled,p.cache[i].unified_inbox_enabled!==t&&require(["io.ox/core/folder/api"],function(e){e.propagate(t?"account:unified-enable":"account:unified-disable")})),(_.isObject(e)?$.Deferred().resolve(e):n.GET({module:"account",params:{action:"get",id:o.id},appendColumns:!1})).done(function(e){e=r(e),p.cache[i]=e}).done(function(e){p.trigger("refresh.all"),p.trigger("update",e)})})},p.autoconfig=function(e){return n.POST({module:"autoconfig",data:_.extend({action:"get"},e)})},p.configtestAll=function(){return n.GET({module:"jslob",params:{action:"all"}})},p.configtestList=function(e){return n.PUT({module:"jslob",params:{action:"list"},data:e})},p.configtestUpdate=function(e,t){return n.PUT({module:"jslob",params:{action:"update",id:t},data:e})},p.configtestSet=function(e,t){return n.PUT({module:"jslob",params:{action:"set",id:t},data:e})},p.getStatus=function(e){var t={action:"status"};return void 0!==e&&(t.id=e),n.GET({module:"account",params:t})},p.getPrimaryName=function(){if(!p.cache[0])return"";var e=p.cache[0].name;return/^(email|e-mail)$/i.test(e)?String(p.cache[0].primary_address).toLowerCase().split("@")[1]||"":e},p.reload=function(){return p.all({useCache:!1})},p.refresh=function(){return this.reload().done(function(){p.trigger("refresh.all")})},ox.on("refresh^",function(){p.refresh()}),p}),define("io.ox/core/tk/selection",["io.ox/core/event","io.ox/core/extensions","io.ox/core/collection","io.ox/core/notifications","gettext!io.ox/core","io.ox/core/tk/draghelper"],function(_e,ke,Ce,e,o){function Se(e){var t,i;return(t=this.find(".selected .drag-title"),i=", ",t=t.map(function(){return $.trim($(this).attr("title")||$(this).text())}),$.makeArray(t).join(i||""))||o.ngettext("%1$d item","%1$d items",e.length,e.length)}function n(l,d){d=_.extend({draggable:!1,dragMessage:Se,dragCssClass:void 0,dragType:"",dropzone:!1,dropzoneSelector:".selectable",dropType:"",scrollpane:l,focus:"[tabindex]",markable:!1},d),this.classFocus="focussed",this.classSelected="selected",_e.extend(this);var c,a,e,t,i,o,n,r,s,u,p,h,f,g,m,v,x,b,w,y,k,C,S,T,D,A,M,N,F,E,I,P,L,q,z,O,V,R,B,U,j,H,W,G,J,K,Y,X,Q,Z,ee,te=this,ie=!0,oe=!1,ne=".vgrid-cell",ae={},re=!0,se=[],le={},de={},ce=de,ue=de,pe=$.noop,he=-1,fe=0;function ge(e){K=e.pageX+H,Y=e.pageY+W,(5<=X(G-K)||5<=X(J-Y))&&(B.left=K+"px",B.top=Y+"px",G=K,J=Y)}function me(){l.trigger("selection:dragstart")}function ve(e){var t;e.isDefaultPrevented()||(e.preventDefault(),t=$(this).find(".folder-arrow"),$(this).addClass("dnd-over"),t.length&&(clearTimeout(U),U=setTimeout(function(){this.trigger("click")}.bind(t),1500)))}function xe(){clearTimeout(U),$(this).removeClass("dnd-over")}function be(e){$(document).off("mousemove.dnd",be),j=$('<div class="drag-helper">'),ke.point("io.ox/core/tk/draghelper").invoke("draw",j,new ke.Baton({container:l,data:V,source:R,dragMessage:d.dragMessage})),B=j[0].style,G=J=K=Y=0,ge(e),j.appendTo(document.body),$(document).on("mousemove.dnd",ge).one("mousemove.dnd",me).on("mouseover.dnd",".folder-tree",ee.over).on("mouseout.dnd",".folder-tree",ee.out).on("mousemove.dnd",".folder-tree",ee.move).on("mouseover.dnd",".selectable",ve).on("mouseout.dnd",".selectable",xe)}function we(){ee.out(),$(document).off("mousemove.dnd mouseup.dnd mouseover.dnd mouseout.dnd"),$(".dropzone").each(function(){var e=$
1(this),t=e.attr("data-dropzones");(t?e.find(t):e).off("mouseup.dnd")}),$(".dnd-over").removeClass("dnd-over"),l.trigger("selection:dragstop"),null!==j&&null!==j&&(j.remove(),j=B=null)}function ye(e){var t,i;e.isDefaultPrevented()||(e.preventDefault(),clearTimeout(U),t=$(this).attr("data-obj-id")||$(this).attr("data-cid")||$(this).attr("data-id"),i=new ke.Baton({data:V,dragType:d.dragType,dropzone:this,target:t}),$(this).trigger("selection:drop",[i]))}function $e(e){var t,i,o=Math.abs(e.pageX-e.data.x),n=Math.abs(e.pageY-e.data.y);(15<o||15<n)&&(0===(V=te.unique(te.unfold())).length&&(t=R.attr("data-obj-id"),V=t?[_.cid(t)]:[]),(i=new Ce(V)).getProperties(),i.isResolved()&&!i.has("delete")?$(document).off("mousemove.dnd mouseup.dnd"):($(".dropzone").each(function(){var e=$(this),t=e.attr("data-dropzones");(t?e.find(t):e).on("mouseup.dnd",ye)}),$(document).off("mousemove.dnd").on("mousemove.dnd",be)))}b=function(e){return!$(e.target).hasClass("not-selectable")},w=function(e){var t=$(e.target).closest(ne);return oe&&t.length},y=function(e){return ie&&e&&(e.metaKey||e.ctrlKey)},k=function(e){return e&&e.shiftKey&&ie},L=function(){return 1<_.size(ae)},c=function(e){var t=te.get();te.trigger("change",t,e),0===t.length&&te.trigger("empty")},g=function(){var e=te.get();te.trigger("_m_change",e),0===e.length&&te.trigger("empty")},a=function(e,t,i){k(t)?(te.selectRange(ue,e),ce=e):((pe(t)?F:x)(e),ce=ue=e,fe=C(e)),i?w(t)||q?(t.preventDefault(),g()):a(e,t):c()},T=function(e){var t,i;re&&se.length&&(t=se[0].data,u(e),F(t),i=te.serialize(t),S(i).focus())},D=function(e,t){var i,o;re&&se.length&&(i=se[0],u(e),a(i.data,e),te.trigger("select:first",i.data),t&&(o=te.serialize(i.data),S(o).focus()))},A=function(e){var t,i;!re||0<=(t=C(ce)-1)&&(i=se[t],u(e),a(i.data,e),te.trigger("select:previous",i.data))},M=function(e){var t,i;re&&se.length&&(t=se.length-1,i=se[t],u(e),a(i.data,e),te.trigger("select:last",i.data))},N=function(e){var t,i;!re||(t=C(ce)+1)<se.length&&(i=se[t],u(e),a(i.data,e),te.trigger("select:next",i.data))},P=function(e){switch(te.trigger("keyboard",e,e.which),e.which){case 38:if(e.preventDefault(),$(e.target).hasClass("folder-options-badge dropdown-opened"))return;(e.metaKey?D:A)(e);break;case 36:D(e);break;case 35:M(e);break;case 32:if(d.markable){if(e.preventDefault(),!$(e.target).hasClass("marked"))return;x(ce),c()}break;case 40:if(e.preventDefault(),$(e.target).hasClass("folder-options-badge dropdown-opened"))return;(e.metaKey?M:N)(e);break;case 8:case 46:e.preventDefault(),te.trigger("selection:delete",te.get())}},e=function(e){var t,i;e.isDefaultPrevented()||(t=$(this).attr("data-obj-id"),void 0!==(i=re?(se[C(t)]||{}).data:t)&&w(e)&&b(e)&&a(i,e))},t=function(e){var t;e.isDefaultPrevented()||(t=$(this).attr("data-obj-id"),te.trigger("selection:doubleclick",t))},o=function(e){var t,i,o,n;e.isDefaultPrevented()||(i=(t=$(this)).attr("data-obj-id"),o=re?(se[C(i)]||{}).data:i,d.markable&&I(),n=function(){if(void 0!==o&&!w(e)){if(y(e))return void a(o,e);p(o)?L()&&t.addClass("pending-select"):(k(e)&&ue===de&&(ue=te.get()[0]||de),u(),a(o,e))}},_.device("!smartphone")?setTimeout(n,50):n())},i=function(e){var t,i,o,n;e.isDefaultPrevented()||(i=(t=$(this)).attr("data-obj-id"),o=re?(se[C(i)]||{}).data:i,n=function(){void 0!==o&&t.hasClass("pending-select")&&b(e)&&(u(),a(o,e)),l.find(".pending-select").removeClass("pending-select")},_.device("!smartphone")?setTimeout(n,50):n())},n=function(e){var t,i;e.isDefaultPrevented()||(t=$(this).attr("data-obj-id"),i=re?(se[C(t)]||{}).data:t,q&&a(i,e,!0))},C=function(e){return re?le[te.serialize(e)]:-1},S=function(e){return $('.selectable[data-obj-id="'+te.serialize(e).replace(/\\\./g,"\\\\.")+'"]',l)},p=function(e){return void 0!==ae[te.serialize(e)]},h=function(e,t){var i=te.serialize(e);ae[i]=e;var o=t||S(i);return l.has(document.activeElement).length&&o.focus(),s(),o.addClass(te.classSelected).attr({"aria-selected":"true",tabindex:0}).end()},f=function(e,t){e&&(h(e).intoViewport(d.scrollpane),he=C(ce=e),ue===de&&(ue=e,fe=he),!0!==t&&te.trigger("select",te.serialize(e),e))},m=function(e){var t=te.serialize(e);delete ae[t],S(t).removeClass(te.classSelected).attr({"aria-selected":"false",tabindex:-1}),te.trigger("deselect",t),d.markable&&0<l.find(".marked").length?l.find(".marked").attr({tabindex:0}):0<_.size(ae)&&S(v()).attr({tabindex:0})},v=function(){return _.last(te.get())},x=function(e){if(p(e)){if(d.markable&&!L())return;m(e)}else f(e)},r=function(e){if(!l.is(":hidden")){(e=e||!1)&&te.clearIndex();var t=$(".selectable:visible",l),i=0,o=null;for(t.removeClass(te.classSelected);i<t.length;i++){var n=(o=t.eq(i)).attr("data-obj-id");e&&te.addToIndex(n),p(n)&&o.addClass(te.classSelected).attr({"aria-selected":"true"})}}},s=function(){l.find('.selectable[tabindex="0"]').attr({tabindex:-1})},u=function(){ae={},l.find(".selectable."+te.classSelected).removeClass(te.classSelected).attr({"aria-selected":"false",tabindex:-1})},d.markable&&(z=u,this.classMarked="marked",pe=function(e){return ie&&e&&(38===e.which||40===e.which)&&e.ctrlKey},u=function(e){I(),pe(e)||z(e)},E=function(e,t){var i=te.serialize(e);O=e;var o=t||S(i);l.has(document.activeElement).length&&o.focus();var n=o.attr("id")||_.uniqueId("option-");return s(),o.addClass(te.classMarked).attr({tabindex:0,id:n}).parent('[role="listbox"]').attr("aria-activedescendant",n).end()},F=function(e,t){e&&(E(e).intoViewport(d.scrollpane),he=C(ce=e),ue===de&&(ue=e,fe=he),!0!==t&&te.trigger("mark",te.serialize(e),e))},I=function(){var e;O&&(e=te.serialize(O),O=void 0,S(e).removeClass(te.classMarked).attr("tabindex",-1).parent('[role="listbox"]').removeAttr("aria-activedescendant"),O=void 0)}),this.serialize=function(e){return"object"==typeof e?void 0!==e.folder_id?_.cid(e):e.id:e}
1,this.setSerializer=function(t){this.serialize=function(e){return"object"==typeof e?t(e):e}},this.init=function(e){var t=this.get(),i=_.clone(ae);u(),se=new Array(e.length),le={},ce=ue=de,0<e.length&&(he=-1);for(var o,n,a=0,r=e.length,s=!0;a<r;a++)o=e[a],n=this.serialize(o),se[a]={data:o,cid:n},le[n]=a,n in i&&s&&(fe=he=a,ce=n,s=!1);return $(".selectable",l).each(function(){var e=$(this);e.attr("data-obj-id")in i?e.addClass(te.classSelected).attr({"aria-selected":"true",tabindex:0}):e.removeClass(te.classSelected).attr({"aria-selected":"false",tabindex:-1})}),ae=i,_.isEqual(t,this.get())||c(),this},this.insertAt=function(e,i){var o=e.length,n=[];_(e).reduce(function(e,t){var i=te.serialize(t);return n.push({data:t,cid:i}),e||i in le},!1)||(se.splice.apply(se,[i,0].concat(n)),_(le).each(function(e,t){i<=e&&(le[t]+=o)}),_(e).each(function(e,t){le[te.serialize(e)]=i+t}))},this.remove=function(e){_(e).each(function(e){var t=te.serialize(e),i=le[t];void 0!==i&&se.splice(i,1,null)}),se=_(se).compact(),le={},_(se).each(function(e,t){le[e.cid]=t})},this.update=function(){return r(),this},this.updateIndex=function(){return r(!0),this},this.debug=function(){console.debug("selection",{selected:ae,observed:se,index:le})},this.clearIndex=function(){return se=[],le={},this},this.addToIndex=function(e){var t=this.serialize(e);return void 0===le[t]&&(le[t]=se.length,se.push({data:e,cid:t})),this},this.removeFromIndex=function(e){var i={},o=0;_([].concat(e)).each(function(e){i[te.serialize(e)]=!0}),le={},se=_(se).filter(function(e){var t=e.cid;return!(t in i)&&(le[t]=o++,!0)})},this.hasIndex=function(e){return re=!!e,this},this.getObservedItems=function(){return le},this.setMultiple=function(e){return ie=!!e,this},this.setEditable=function(e,t){return oe=!!e,ne=t||".vgrid-cell",ce=ue=de,he=-1,this},this.get=function(){var e=[],t="";for(t in ae)e.push(ae[t]);return e},this.unique=function(e){e=e||this.get();var i={};return _(e).filter(function(e){var t=_.isString(e)?e:_.cid(e);return!(t in i)&&(i[t]=!0)})},this.unfold=this.get,this.clear=function(e){return u(),!0!==e&&(te.trigger("clear"),c()),this},this.focus=function(){if(!$.contains(l,document.activeElement)){if(0===this.get().length)return this.selectFirst(!0);var e=this.serialize(_.last(this.get()));S(e).focus()}},this.select=function(e){return f(e),c(),this},this.deselect=function(e){return m(e),c(),this},this.set=function(e,t){var i=this.get(),a=this,r={},s=!0;
1return u(),he=-1,$(".selectable",l).each(function(){var e=$(this),t=e.attr("data-obj-id");r[t]=e}),_(!e||_.isArray(e)?e:[e]).each(function(e,t){var i,o,n=a.serialize(e);n in r?(o="string"==typeof e&&re&&void 0!==(i=se[C(e)])?h(i.data,r[n]):h(e,r[n]),0===t&&o.intoViewport(d.scrollpane)):ae[n]=e,s&&(he=C(n),ce=n,s=!1)}),r=null,_.isEqual(_(i).map(a.serialize),_(this.get()).map(a.serialize))||!0===t||c(),this},this.equals=function(e){return _.isEqual(e,this.get())},this.selectRange=function(e,t){var i,o,n;if(re){for(e=C(e),n=(t=C(t))<e,i=e;n?t<=i:i<=t;n?i--:i++)o=se[i],i===t?f(o.data):ae[o.cid]=o.data;this.update()}return this},this.markFirst=function(){return T(),this},this.selectFirst=function(e){return D(null,e),this},this.selectLast=function(){return M(),this},this.selectSmart=function(){return 0===this.get().length&&this.selectFirst(),this},this.selectNext=N,this.selectAll=function(){if(re&&se.length){for(var e,t=0,i=se.length;t<i;t++)e=se[t],0===t||t===i-1?f(e.data,!0):ae[e.cid]=e.data;this.update(),(q?g:c)()}},this.resetLastIndex=function(){fe=-1},this.setLastIndex=function(e){return fe=C(ue=e),this},this.selectIndex=function(){var e=se[fe];void 0!==e&&this.select(e.data)},this.selectLastIndex=function(){var e;-1===fe||void 0!==(e=se[fe]||_.last(se))&&this.select(e.data)},this.isSelected=function(e){return p(e)},this.getIndex=function(e){return C(e)},this.isEmpty=function(){return _.isEmpty(ae)},this.contains=function(e){var t=[].concat(e);return!!t.length&&_(t).inject(function(e,t){return t=_.isObject(t)?te.serialize(t):t,e&&t in le},!0)},this.getLastIndex=function(){return fe},this.keyboard=function(e,t){return $(e)[t?"on":"off"]("keydown",P),this},this.retrigger=function(e){var t;e?(t=this.get(),this.clear(),this.set(t)):(q?g:c)()},this.retriggerUnlessEmpty=function(){this.get().length&&c({retriggerUnlessEmpty:!0})},this.destroy=function(){this.clear(),this.keyboard(!1),this.events.destroy(),l.off("mousedown mouseup contextmenu"),ae=se=le=ce=null},this.setMobileSelectMode=function(e){q=e},this.getMobileSelectMode=function(){return q},l.on("contextmenu",function(e){e.preventDefault()}).on("mousedown",".selectable",o).on("mouseup",".selectable",i).on("click",".selectable",e).on("dblclick",".selectable",t).on("tap",".selectable",n).on("focus",".selectable",function(){l.addClass("has-focus")}).on("blur",".selectable",function(){_.delay(function(){0===l.find(":focus").length&&(l.removeClass("has-focus"),d.markable&&(I(),S(v()).attr({tabindex:0}),v()&&(ce=v())))},10)}),j=null,W=H=15,Y=K=J=G=0,X=Math.abs,Q=0,Z=null,ee={move:function(e){Q=e.pageY-$(this).offset().top},out:function(){clearInterval(Z),Z=null},over:function(){var o;Z||(o=this.clientHeight,Z=setInterval(function(){var e=Math.round(Q/o*10)-5,t=e<0?-1:1,i=Math.abs(e);2<i&&(this.scrollTop+=t*(i-2)*2)}.bind(this),5))}},_.device("!touch")&&(d.draggable&&l.on("mousedown.dnd",".selectable",function(e){var t;e.preventDefault(),R=$(this),$(document).on("mousemove.dnd",{x:e.pageX,y:e.pageY},$e).on("mouseup.dnd",we),_.browser.IE||(t=$(e.target).closest(d.focus),(d.focus&&t.length?t:l).focus())}),d.dropzone&&l.addClass("dropzone").attr("data-dropzones",d.dropzoneSelector).on("drop",function(e,t){t.dropType=d.dropType,te.trigger("selection:drop",t)}))}return n.extend=function(e,t,i){return e.selection=new n(t,i||{})},n}),define("io.ox/core/tk/visibility-api-util",[],function(){var e,t,i={isHidden:!1,isSupported:!1,hiddenAttribute:"",visibilityChangeEvent:""};return void 0!==document.hidden?(e="hidden",t="visibilitychange"):void 0!==document.mozHidden?(e="mozHidden",t="mozvisibilitychange"):void 0!==document.msHidden?(e="msHidden",t="msvisibilitychange"):void 0!==document.webkitHidden&&(e="webkitHidden",t="webkitvisibilitychange"),void 0!==document[e]&&(i.isSupported=!0,i.hiddenAttribute=e,i.visibilityChangeEvent=t,i.isHidden=!!document[e],$(document).on(t,function(){var e=i.isHidden;i.isHidden=!!document[i.hiddenAttribute],$(i).trigger("visibility-changed",{currentHiddenState:i.isHidden,oldState:e})})),i}),define("io.ox/core/desktopNotifications",["settings!io.ox/core","io.ox/core/tk/visibility-api-util"],function(d,c){var u=!_.device("smartphone")&&!!window.Notification;return{getPermissionStatus:function(){return u?Notification.permission:"unsupported"},isSupported:function(){return u},requestPermission:function(e){u?Notification.requestPermission(e):e("unsupported")},show:function(e){var t,i,o,n,a,r,s,l;e&&u&&d.get("showDesktopNotifications",!0)&&(2===arguments.length?e=_.isString(arguments[0])&&_.isString(arguments[1])?{title:e,body:arguments[1]}:(arguments[1].title=e,arguments[1]):_.isString(e)&&(e={title:e}),"granted"===this.getPermissionStatus()&&(t=e,(c.isHidden||t.ignoreVisibility||t.forceDisplay)&&(i=(t=_.extend({title:"",body:"",duration:"4000"},t)).title,o=t.duration,a=t.onclose,r=t.onshow,s=t.onclick,l=t.onerror,t=_(t).omit("title duration ignoreVisibility onclick onclose onshow onerror"),n=new Notification(i,t),a&&(n.onclose
1=a),r&&(n.onshow=r),s&&(n.onclick=s),l&&(n.onerror=l),o&&(_.device("firefox")&&4e3<=o||(n.onshow=function(){setTimeout(function(){$(n).trigger("close")},o),r&&r.call(arguments,this)})))))}}}),define("io.ox/core/main/addLauncher",[],function(){return function(e,t,n,i){var o=$('<li role="presentation" class="launcher">');return n&&o.on("click","a",function(e){e.preventDefault();var t=$(this),i=$(document.activeElement),o=t.contents().detach();t.css("width",t.width()+"px").text(" ").busy(),(n.call(this)||$.when()).done(function(){t.idle().empty().append(o).css("width",""),0<$(document.activeElement).filter("body").length&&i.focus()})}),o.append(function(){return _.isString(t)?$('<a href="#" class="apptitle" tabindex="-1">').text(t):"I"===t[0].tagName?$('<a href="#" class="apptitle" role="button" tabindex="-1">').attr("aria-label",i?_.escape(i):null).append(t):t}),"left"===e&&o.hide(),o.appendTo($("#io-ox-toprightbar"))}}),define("io.ox/core/main/appcontrol",["io.ox/core/http","io.ox/core/upsell","io.ox/core/extensions","io.ox/core/capabilities","io.ox/core/main/icons","io.ox/backbone/mini-views/dropdown","settings!io.ox/core","gettext!io.ox/core","io.ox/core/main/autologout"],function(t,i,o,e,n,a,r,d){function c(e){$("#io-ox-appcontrol").toggleClass("open",e),$("#io-ox-launchgrid-overlay, #io-ox-launchgrid-overlay-inner").toggle(e)}var s={launcher:function(){var e=window.launchers=new f({collection:ox.ui.apps,dontProcessOnMobile:!0});this.append(e.render().$el)}},l=Backbone.View.extend({tagName:"a",className:"btn btn-link lcell",attributes:{href:"#",role:"menuitem",tabindex:-1},events:{click:"onClick","click .closer":"quitApp"},initialize:function(e){this.pos=e.pos,this.quicklaunch=e.quicklaunch,this.listenTo(this.model,"change:hasBadge",this.toggleBadge),this.listenTo(this.model,"change:tooltip",this.updateTooltip),this.listenTo(this.model,"change:title",this.updateTitle),this.listenTo(r,"change:coloredIcons",this.render)},addAccessKey:function(){this.pos<=9&&0!==this.pos&&this.$el.attr("accesskey",this.pos)},checkUpsell:function(){var e=this.model.get("requires");return!i.has(e)},drawUpsellIcon:function(e){this.checkUpsell()&&e.addClass("upsell").append(_(r.get("upsell/defaultIcon","fa-star").split(/ /)).map(function(e){return $('<i class="fa" aria-hidden="true">').addClass(e)}))},onClick:function(){if(this.checkUpsell()){var e=this.model.get("requires");i.trigger({type:"app",id:this.model.get("id"),missing:i.missing(e)})}else{if(this.model.options.mobilelazyload)return this.model.trigger("mobilelazyload");if("running"===this.model.get("state")&&this.model.get("closable"))return void this.model.launch();if(ox.tabHandlingEnabled&&this.model.get("openInTab"))return void require("io.ox/core/api/tab").openChildTab(this.model.get("tabUrl"));this.quicklaunch&&this.model.quickLaunch?this.model.quickLaunch():ox.launch(this.model.get("path"))}},quitApp:function(e){e.preventDefault(),e.stopPropagation(),this.model.quit()}
1,drawCloser:function(){var e=$('<a href="#" type="button" class="btn btn-link closer">').append($('<i class="fa fa-times" aria-hidden="true">'));this.$el.append(e),this.closer=e},drawDate:function(){this.$icon.find("tspan:first").text(moment().format("D"))},drawIcon:function(){var e=this.model.get("icon"),t=this.model.get("id"),i=this.model.get("title"),o=_.isString(i)?i[0]:"?",e=/^<.*>$/.test(e)?e:"";return this.model.get("closable")&&_.device("smartphone")&&!(e=ox.ui.appIcons[this.model.options.name])&&this.model.options.userContentIcon&&(e='<i class="'+this.model.options.userContentIcon+'">'),this.$icon=e?$(e):$(n.fallback).find("text > tspan").text(o).end(),this.$icon.attr("aria-hidden",!0),r.get("coloredIcons",!1)&&this.$icon.addClass("colored"),"io.ox/calendar"!==t&&!/calendar/.test(this.model.getName())||this.drawDate(),this.$cell=$('<div class="lcell">').append(this.badge=$('<svg height="8" width="8" class="indicator" focusable="false"><circle cx="4" cy="4" r="4"></svg>').toggleClass("hidden",!this.model.get("hasBadge")),$('<div class="icon">').append(this.$icon),$('<div class="title">').text(this.model.get("title"))),this.drawUpsellIcon(this.$cell.find(".title")),this.$cell},toggleBadge:function(){this.badge.toggleClass("hidden",!this.model.get("hasBadge"))},updateTooltip:function(){var e;this.quicklaunch&&(e=this.model.get("tooltip"),e=this.model.get("title")+(e?" ("+e+")":""),this.$el.attr("aria-label",e),this.$cell.attr({"aria-hidden":!0,title:e}))},updateTitle:function(e,t){var i=this.icon.find(".title");i.text(t),this.drawUpsellIcon(i)},render:function(){return this.$el.empty().attr({"data-id":this.model.get("id"),"data-app-name":this.model.get("name")}).toggleClass("active",ox.ui.App.isCurrent(this)).append(this.icon=this.drawIcon()),this.updateTooltip(),this.addAccessKey(),this}}),u={quickLaunchLimit:5,getQuickLauncherCount:function(){var e=r.get("apps/quickLaunchCount",3);return _.isNumber(e)?Math.min(this.quickLaunchLimit,ox.ui.apps.forLauncher().length,e):0},getQuickLauncherDefaults:function(){return"io.ox/mail/main,io.ox/calendar/main,io.ox/files/main"},getQuickLauncherItems:function(){var e=this.getQuickLauncherCount(),t=String(r.get("apps/quickLaunch",this.getQuickLauncherDefaults())).trim().split(/,\s*/);return((_.chain(t).filter(function(e){return ox.ui.apps.get(e.replace(/\/main$/,""))}
1).value().join(",")||"none")+new Array(e).join(",none")).split(",").slice(0,e)}},p=Backbone.Collection.extend({initialize:function(){this.reload(),r.on("change:apps/quickLaunch change:apps/quickLaunchCount",this.reload.bind(this)),this.listenTo(ox.ui.apps,"add reset",this.reload)},reload:function(){this.reset(this.fetch())},fetch:function(){var e=u.getQuickLauncherItems().map(function(e){return ox.ui.apps.get(e.replace(/\/main$/,""))});return _(e).compact()}}),h=Backbone.View.extend({attributes:{id:"io-ox-quicklaunch",role:"toolbar"},events:{"click button":"onClick",contextmenu:"onContextmenu"},initialize:function(){this.collection=new p,this.listenTo(this.collection,{reset:this.render})},onClick:function(){c(!1)},onContextmenu:function(e){e.preventDefault(),r.isConfigurable("apps/quickLaunch")&&0!==u.getQuickLauncherCount()&&!_.device("smartphone")&&require(["io.ox/core/settings/dialogs/quickLauncherDialog"],function(e){e.openDialog()})},render:function(){return this.$el.empty().append(this.collection.map(function(e){return new l({tagName:"button",attributes:{tabindex:-1,type:"button"},model:e,quicklaunch:!0}).render().$el.attr("tabindex",-1)})),this.$el.find("button").first().removeAttr("tabindex"),this}}),f=a.extend({attributes:{role:"presentation",dontprocessonmobile:"true"},tagName:"li",options:{dontProcessOnMobile:!0},className:"launcher dropdown",id:"io-ox-launcher",$ul:$('<ul class="launcher-dropdown dropdown-menu dropdown-menu-right" role="menu">'),$toggle:$('<a href="#" class="launcher-btn btn btn-link dropdown-toggle" tabindex="0" dontprocessonmobile="true">').attr("aria-label",d("Navigate to:")).append($(n.launcher).attr("title",d("All Applications"))),initialize:function(){a.prototype.initialize.apply(this,arguments),this.listenTo(this.collection,"add remove launcher:update launcher:sort",this.update),this.update()},update:function(){this.$ul.empty(),this.collection.forLauncher().forEach(function(e,t){this.append(new l({model:e,pos:t+1}).render().$el)}.bind(this)),_.device("smartphone")&&this.collection.where({closable:!0}).forEach(function(e){this.append(new l({model:e}).render().$el)}.bind(this))}});return ox.once("core:load",function(){ox.manifests.loadPluginsFor("io.ox/core/notifications").done(function(){o.point("io.ox/core/notifications/badge").invoke("register",self,{})})}),o.point("io.ox/core/appcontrol").extend({id:"init",index:100,draw:function(){var e,o,n,a,r,s;function l(){var t;0===o&&null===n&&($("#io-ox-refresh-icon .apptitle").attr("aria-label",d("Refresh")),a?(s=s||$("#io-ox-refresh-icon").find("i")).hasClass("fa-spin")&&(s.addClass("fa-spin-paused"),t=!1,setTimeout(function(){t=!0},2546),s.on("animationiteration",function(e){t&&$(e.target).removeClass("fa-spin")})):$("#io-ox-refresh-icon").removeClass("io-ox-progress"))}$("#io-ox-core").append(e=$('<div id="io-ox-launchgrid-overlay">').on("click",c)),_.device("smartphone")&&e.on("touchstart",function(e){e.preventDefault(),c()}),o=0,n=null,a=_.device("webkit || firefox || ie > 9"),r=a?500:1500,s=null,t.on("start",function(e,t,i){0===o&&(null!==n||i.silent||($("#io-ox-refresh-icon .apptitle").attr("aria-label",d("Currently refreshing")),a?(s=s||$("#io-ox-refresh-icon").find("i")).hasClass("fa-spin")||s.addClass("fa-spin").removeClass("fa-spin-paused"):$("#io-ox-refresh-icon").addClass("io-ox-progress")),clearTimeout(n),n=setTimeout(function(){n=null,l()},r)),o++}),t.on("stop",function(){o=Math.max(0,o-1),l()}),ox.ui.apps.on("launch resume",function(e){e.get("floating")||($(".launcher-dropdown").find(".lcell[data-app-name]").removeClass("active").end().find('.lcell[data-app-name="'+e.get("name")+'"]').addClass("active"),$("#io-ox-quicklaunch").find(".lcell[data-id]").removeClass("active").end().find('.lcell[data-id="'+e.get("name")+'"]').addClass("active"),_.defer(function(){$(document).trigger("resize")}))})}}),o.point("io.ox/core/appcontrol").extend({id:"skiplinks",index:150,draw:function(){this.append($('<a class="skip-links sr-only sr-only-focusable" href="#">').append($("<span>").text(d("Skip to main content"))))}}),o.point("io.ox/core/appcontrol").extend({id:"logo",index:300,draw:function(){function e(){if(n.parent().hasClass("logo-btn")&&n.parent().replaceWith(n),/^https?:/.test(a))n.wrap($('<a class="btn btn-link logo-btn">').attr({href:a,target:"_blank"}));else if(ox.tabHandlingEnabled&&/^io\.ox\/office\/portal/.test(a)){var e=require("io.ox/core/api/tab"),t=a.substring(0,"io.ox/office/portal/".length),i=e.createUrl({app:a},{exclude:"folder",suffix:"office?app="+t});n.wrap($('<a class="btn btn-link logo-btn">').attr({href:i,target:"_blank"}))}else if(a){var o=r.get("autoStart");if("autoStart"===a&&"none"===o)return;n.wrap($('<button type="button" class="logo-btn btn btn-link">').on("click",function(){ox.ui.apps.get(o.replace(/\/main$/,""))&&ox.launch(o)}))}}var n,t=r.get("logoFileName","logo.png"),a=r.get("logoAction",!1);
1this.append(n=$('<div id="io-ox-top-logo">').append($("<img>").attr({alt:ox.serverConfig.productName,src:ox.base+"/apps/themes/"+ox.theme+"/"+t}))),ox.openedInBrowserTab||ox.tabHandlingEnabled&&"io.ox/files/detail"===_.url.hash("app")||(e(),r.on("change:logoAction change:autoStart",e))}}),o.point("io.ox/core/appcontrol").extend({id:"left",index:350,draw:function(){var e;_.device("smartphone")||(e=$('<ul class="taskbar list-unstyled" role="toolbar">'),this.append($('<div id="io-ox-topleftbar">').append(e)),o.point("io.ox/core/appcontrol/left").invoke("draw",e))}}),o.point("io.ox/core/appcontrol").extend({id:"quicklauncher",index:400,draw:function(){var e;_.device("smartphone")||(e=window.quicklaunchers=new h,this.append(e.render().$el))}}),o.point("io.ox/core/appcontrol/right").extend({id:"launcher",index:120,draw:function(){_.device("smartphone")&&s.launcher.call(this)}}),o.point("io.ox/core/appcontrol").extend({id:"search",index:500,draw:function(){var e=$('<div id="io-ox-topsearch">');this.append(e)}}),o.point("io.ox/core/appcontrol").extend({id:"right",index:600,draw:function(){var e=$
1('<ul class="taskbar list-unstyled" role="toolbar">');this.append($('<div id="io-ox-toprightbar">').append(e)),o.point("io.ox/core/appcontrol/right").invoke("draw",e),_.defer(function(){e.find(".dropdown-toggle:visible:first").removeAttr("tabindex")})}}),o.point("io.ox/core/appcontrol").extend({id:"show",index:1e4,draw:function(){this.attr("role","banner").show()}}),o.point("io.ox/core/appcontrol/left").extend({id:"launcher",index:100,draw:function(){_.device("smartphone")||s.launcher.call(this)}}),_.extend(u,{LauncherView:l,LaunchersView:f})}),define("io.ox/core/main/autologout",["io.ox/core/main/logout","settings!io.ox/core","gettext!io.ox/core"],function(r,n,s){function a(){return null!==h&&null!==f}function e(){var a;ox.tabHandlingEnabled&&x&&y(),m&&null===g?w():(a=Math.ceil((c+p-_.now())/1e3))<=u&&null===g&&require(["io.ox/backbone/views/modal"],function(t){function e(e){return s.ngettext("You will be automatically signed out in %1$d second","You will be automatically signed out in %1$d seconds",e,e)}var i=a,o=$("<span>").text(e(i)),n=setInterval(function(){i<=0?(clearInterval(n),r({autologout:!0})):(i--,o.text(e(i)))},1e3);clearTimeout(h),g&&(ox.off("logout:failed",g.logoutFailed),g.close()),(g=new t({async:!0,title:s("Automatic sign out"),backdrop:!0}).build(function(){this.$body.append(o),this.$el.addClass("auto-logout-dialog")}).addCancelButton().addButton({action:"retry",label:s("Retry"),className:"btn-default"}).addButton({action:"force",label:s("Sign out now")}).open()).on("close",function(){w(),clearInterval(n),g=null,ox.handleLogoutError=!1}),g.on("force",function(){var e;w(),clearInterval(n),g.$el.hasClass("logout-failed")?(g.pause(),(e=new t({async:!0,title:s("Are you sure?"),backdrop:!0}).build(function(){this.$body.append($('<div class="alert alert-danger">').text(s("Forcing logout may cause data loss.")))}).addCancelButton().addButton({action:"force",label:s("Force sign out")}).open()).on("cancel",function(){g.resume()}),e.on("force",function(){r({force:!0}),g.close(),this.close()})):r()}),g.on("retry",function(){w(),clearInterval(n),r()}),g.logoutFailed=function(e){var t;g&&(ox.handleLogoutError=!0,t=e[0]&&e[0].error?e[0].error:e[0],g.idle(),g.$el.toggleClass("logout-failed",!0),g.$el.find('[data-action="force"]').text(s("Force sign out")),g.$body.empty().append($('<div class="alert alert-danger">').append($("<div>").text(s("Logout failed.")),_.isString(t)?$("<div>").text(t):"")))},ox.on("logout:failed",g.logoutFailed)})}function t(){m=!0}function l(){0<(p=b())&&null===h&&($(document).on("mousedown mousemove scroll touchstart touchmove keydown",t),w(),f=setInterval(e,1e3*o))}function d(){f&&h&&(clearTimeout(h),clearInterval(f),h=f=null,ox.tabHandlingEnabled&&(p=0),$(document).off("mousedown mousemove scroll touchstart touchmove keydown",t))}function i(){d(),l()}var c,o,u,p,h,f,g,m,v,x,b,w,y;o=10,p=0,g=f=h=null,x=v=m=!(u=30),b=function(){return parseInt(n.get("autoLogout",0),10)},w=function(){clearTimeout(h),h=setTimeout(function(){r({autologout:!0})},p),c=_.now(),m=!1},y=$.noop,ox.autoLogout={start:l,stop:d,restart:i,debug:function(){o=1,u=10,b=function(){return 12e3},i()},logout:r.bind(null,{autologout:!0})},ox.tabHandlingEnabled&&require(["io.ox/core/api/tab"],function(o){function i(){o.propagate("propagateLeaderChanged",{exceptWindow:o.getWindowName()})}y=function(){o.propagate("propagatePause",{})},w=function(){clearTimeout(h),p<=0||(h=setTimeout(function(){r({autologout:!0})},p),c=_.now(),m=!1,v||(c=_.now()+1e3),v&&o.propagate("propagateResetAutoLogoutTimeout",{exceptWindow:o.getWindowName()}))},n.on("change:autoLogout",function(e){o.propagate("propagateSettingsAutoLogout",{val:e,exceptWindow:o.getWindowName()})}),o.communicationEvents.listenTo(o.communicationEvents,"propagateResetAutoLogoutTimeout",function(){v=!1,g&&g.close(),a()&&w()}),o.communicationEvents.listenTo(o.communicationEvents,"propagateSettingsAutoLogout",function(e){var t=parseInt(e.val,10);n.set("autoLogout",t,{silent:!0}),(0===t?d:l)()}),o.communicationEvents.listenTo(o.communicationEvents,"nextWindowActive",function(){v=!0,i()}),o.communicationEvents.listenTo(o.communicationEvents,"propagatePause",function(){v&&w()}),o.communicationEvents.listenTo(o.communicationEvents,"propagateLeaderChanged",function(){v=!1,a()&&w()}),o.sessionEvents.listenTo(o.sessionEvents,"before:propagatedLogout",function(){g&&g.close(),d()}
1),require(["io.ox/core/tk/visibility-api-util"]).done(function(e){$(e).on("visibility-changed",function(e,t){!1===t.currentHiddenState&&(v=!0,i(),a()&&w())})}),o.communicationEvents.listenTo(o.communicationEvents,"beforeunload",function(e){var t,i;e||(t=(i=_.first(_.filter(o.getWindowList(),function(e){return e.windowName!==o.getWindowName()})))?i.windowName:"")&&o.propagate("nextWindowActive",{targetWindow:t})}),_.extend(ox.autoLogout,{start:function(){x=!1},stop:function(){x=!0}}),v=!0,i()}),n.on("change:autoLogout",function(e){return 0===parseInt(e,10)?d():void l()}),l()}),define("io.ox/core/main/debug",[],function(){var e=$.noop;return/\bcore/.test(_.url.hash("debug"))&&(e=function(){var e=_(arguments).toArray(),t=_.now()-ox.t0;e.unshift("core ("+(t/1e3).toFixed(1)+"s): "),console.log.apply(console,e)}),e}),define("io.ox/core/main/apps",["io.ox/core/api/apps","io.ox/core/capabilities","io.ox/core/desktop","io.ox/core/main/icons","gettext!io.ox/core"],function(e,t,i,o,n){i.createApp({id:"io.ox/mail",name:"io.ox/mail",title:n.pgettext("app","Mail"),requires:"webmail",refreshable:!0,searchable:!0,settings:!0,icon:o["io.ox/mail"]}),i.createApp({name:"io.ox/mail/detail",requires:"webmail",refreshable:!0}),i.createApp({id:"io.ox/calendar",name:"io.ox/calendar",title:n.pgettext("app","Calendar"),searchable:!0,settings:!0,requires:"calendar",refreshable:!0,icon:o["io.ox/calendar"]}),i.createApp({name:"io.ox/calendar/detail",requires:"calendar",refreshable:!0}),i.createApp({id:"io.ox/contacts",name:"io.ox/contacts",title:n.pgettext("app","Address Book"),refreshable:!0,requires:"contacts",searchable:!0,settings:!0,icon:o["io.ox/contacts"]}),i.createApp({name:"io.ox/contacts/detail",requires:"contacts",refreshable:!0}),i.createApp({id:"io.ox/portal",name:"io.ox/portal",title:n.pgettext("app","Portal"),requires:"portal",refreshable:!0,settings:!0,icon:o["io.ox/portal"]}),i.createApp({id:"io.ox/files",name:"io.ox/files",title:n.pgettext("app","Drive"),requires:"infostore",refreshable:!0,searchable:!0,settings:t.has("!guest"),icon:o["io.ox/files"]}),i.createApp({name:"io.ox/files/detail",requires:"infostore",refreshable:!0}),i.createApp({id:"io.ox/tasks",name:"io.ox/tasks",title:n.pgettext("app","Tasks"),requires:"tasks",refreshable:!0,searchable:!0,settings:t.has("delegate_tasks"),icon:o["io.ox/tasks"]}),i.createApp({name:"io.ox/tasks/detail",requires:"tasks",refreshable:!0}),i.createApp({id:"io.ox/chat",name:"io.ox/chat",title:n.pgettext("app","Chat"),requires:"chat",device:"!smartphone",settings:!0,icon:o["io.ox/chat"]}),ox.debug&&i.createApp({id:"io.ox/notes",name:"io.ox/notes",title:n.pgettext("app","Notes"),requires:"notes && infostore",device:"!smartphone",refreshable:!0,searchable:!0}),i.createApp({id:"io.ox/editor",name:"io.ox/editor",title:n("Editor"),settings:!1,requires:"infostore",visible:!1,deeplink:!0}),i.createApp({id:"io.ox/search",name:"io.ox/search",title:n("Search"),requires:"search",device:"smartphone",settings:!1,icon:o["io.ox/search"]}),i.createApp({id:"io.ox/settings",name:"io.ox/settings",title:n("Settings"),refreshable:!0})}),define("io.ox/core/main/logout",["io.ox/core/session","io.ox/core/http","io.ox/core/extensions","io.ox/core/capabilities","io.ox/backbone/views/modal","settings!io.ox/core","gettext!io.ox/core"],function(o,n,a,r,i,s,l){function d(e){var t,i,o=(t=r.has("guest")?s.get("customLocations/guestLogout")||ox.serverConfig.guestLogoutLocation:s.get("customLocations/logout")||ox.serverConfig.logoutLocation,_.url.vars(t||ox.logoutLocation||""));e.autologout&&(i=-1<o.indexOf("#")?"&":"#",o=o+i+"autologout=true"),_.url.redirect(_.url.vars(o)),function(e){if(/#autologout=true/.test(e)){var t=document.createElement("a");return t.href=e,location.host===t.host&&location.pathname===t.pathname}}(o)&&_.defer(function(){location.reload(!0)})}a.point("io.ox/core/logout").extend({id:"tabLogoutFollower",index:"first",logout:function(t){if(!ox.tabHandlingEnabled)return $.when();var i=$.Deferred();function o(e,t){try{d(t)}finally{e.reject()}}return t.skipSessionLogout?require(["io.ox/core/api/tab"],function(e){try{e.setLoggingOutState(e.LOGGING_OUT_STATE.FOLLOWER),ox.trigger("logout"),n.disconnect(),ox.cache.clear().always(function(){o(i,t)})}catch(e){ox.debug&&console.warn("clear storage at logout did not work",e),o(i,t)}}):i.resolve(),i}}),a.point("io.ox/core/logout").extend({id:"confirmLogout",index:100,logout:function(e){if(!ox.tabHandlingEnabled||!e.manualLogout)return $.when();var i=$.Deferred();
1return require(["io.ox/core/api/tab"],function(e){e.otherTabsLiving().then(function(){require(["io.ox/backbone/views/modal"],function(e){var t=new e({async:!0,title:l("Sign out"),backdrop:!0}).build(function(){this.$body.append($("<div>").text(l("Are you sure you want to sign out from all related browser tabs?")))}).addCancelButton().addButton({action:"force",label:l("Sign out")}).open();t.on("close",function(){t=null,i.reject()}),t.on("force",function(){i.resolve()})})},function(){i.resolve()})}),i.promise()}}),a.point("io.ox/core/logout").extend({id:"tabLogoutLeader",index:150,logout:function(t){if(!ox.tabHandlingEnabled)return $.when();var i=$.Deferred();return require(["io.ox/core/api/tab"],function(e){try{e.setLoggingOutState(e.LOGGING_OUT_STATE.LEADER),e.propagate("propagateLogout",{autologout:t.autologout,exceptWindow:e.getWindowName(),storageKey:e.DEFAULT_STORAGE_KEYS.SESSION})}catch(e){ox.debug&&console.warn("propagate logout did not work",e)}finally{i.resolve()}}),i}}),a.point("io.ox/core/logout").extend({id:"hideUI",index:200,logout:function(){var e=$.Deferred();return $("#background-loader").fadeIn(250,function(){$("#io-ox-core").hide(),e.resolve()}),e}}),a.point("io.ox/core/logout").extend({id:"saveRestorePoint",index:300,logout:function(e){n.pause();var t=$.Deferred();return e.autologout||ox.online?$.when.apply($,ox.ui.apps.map(function(e){return e.saveRestorePoint()})).always(t.resolve):ox.ui.App.canRestore().then(function(e){e?($("#io-ox-core").show(),$("#background-loader").hide(),new i({title:l("Sign out"),description:l("Unsaved documents will be lost. Do you want to sign out now?")}).addButton({label:l("Cancel"),action:"No",className:"btn-default"}).addButton({label:l("Sign out"),action:"Yes"}).on("No",function(){t.reject()}).on("Yes",function(){$("#io-ox-core").hide(),$("#background-loader").show(),t.resolve()}).open()):t.resolve()}),s.save(),n.resume(),t}}),a.point("io.ox/core/logout").extend({id:"clearCache",logout:function(){return ox.cache.clear()}}),a.point("io.ox/core/logout").extend({id:"logout-button-hint",logout:function(){return n.pause(),s.set("features/logoutButtonHint/active",!1).save(),n.resume()}}),a.point("io.ox/core/logout").extend({id:"savePendingSettings",index:1e12,logout:function(){n.pause();var e=$.Deferred();return $.when.apply($,_(s.getAllPendingSettings()).map(function(e){return e.save(void 0,{force:!0})})).always(e.resolve),n.resume(),e}});return function(e){e=_.extend({autologout:!1},e||{});var t=a.point("io.ox/core/logout").list(),i=_.stepwiseInvoke(t,"logout",this,new a.Baton(e)).always(function(){return"rejected"!==i.state()||e.force?void(ox.tabHandlingEnabled&&e.skipSessionLogout||o.logout().always(function(){d(e)})):($("#io-ox-core").show(),$("#background-loader").fadeOut(250),ox.trigger("logout:failed",arguments))})}}),define("io.ox/core/main/offline",["io.ox/core/notifications","gettext!io.ox/core"],function(t,e){var i=!1;function o(e){i||($("#io-ox-offline").text(e).stop().show().animate({bottom:"0px"},200,function(){i=!0}),t.yell("screenreader",e))}function n(){i&&$("#io-ox-offline").stop().animate({bottom:"-41px"},200,function(){$(this).hide(),i=!1})}ox.on({"connection:online":function(){n(),ox.online=!0},"connection:offline":function(){o(e("Offline")),ox.online=!1},"connection:up":function(){ox.online&&n()},"connection:down":function(){ox.online&&o(e("Server unreachable"))}}),ox.online||$(window).trigger("offline")}),define("io.ox/core/main/refresh",["io.ox/core/session","io.ox/core/http","io.ox/core/extensions","io.ox/core/capabilities","settings!io.ox/core"],function(e,t,i,o,n){var a,r;return r=_.now(),i.point("io.ox/core/refresh").extend({action:_.throttle(function(){if(ox.online&&""!==ox.session)try{ox.trigger("refresh^")}catch(e){console.error("io.ox/core/refresh:default",e.message,e)}},1e4),reset:function(){r=_.now()+parseInt(n.get("refreshInterval",3e5),10)}}),a=function(){i.point("io.ox/core/refresh").invoke("action"),i.point("io.ox/core/refresh").invoke("reset")},n.on("change:refreshInterval",function(){i.point("io.ox/core/refresh").invoke("reset")}),i.point("io.ox/core/refresh").invoke("reset"),setInterval(function(){_.now()>r&&(i.point("io.ox/core/refresh").invoke("action"),i.point("io.ox/core/refresh").invoke("reset"))},1e4),a}),define("io.ox/core/main/registry",["settings!io.ox/core"],function(t){var i,o;i={"mail-compose":"io.ox/mail/compose/main","client-onboarding":"io.ox/
1onboarding/clients/wizard"},o={},ox.registry={set:function(e,t){o[e]=t},get:function(e){return o[e]||t.get("registry/"+e)||i[e]},call:function(e,t){var i=this.get(e),o=_(arguments).toArray().slice(2);return ox.load([i]).then(function(e){return e.run&&_.isFunction(e.run)?e.run.apply(e,o):e.reuse&&e.getApp&&!e.reuse(t,o[0])?e.getApp().launch().then(function(){return this[t].apply(this,o)}):void 0})}}}),define("io.ox/core/main/stages",["io.ox/core/extensions","io.ox/core/notifications","io.ox/core/capabilities","io.ox/core/api/apps","io.ox/core/folder/api","io.ox/core/main/debug","settings!io.ox/core","settings!io.ox/contacts","gettext!io.ox/core"],function(s,h,f,u,g,m,p,v,i){function x(e){var t=(e||"").split(/:/),i=t[0],o=t[1]||"";return/\.\./.test(i)?(console.error("app names must not contain relative paths"),{app:void 0}):{app:/\/main$/.test(i)?i:i+"/main",method:o,name:i.replace(/\/main$/,"")}}function l(e,t){t.forEach(e.disable,e)}function d(t,i){t.each(function(e){i.indexOf(e.id)<0&&t.disable(e.id)})}var e=$("#io-ox-appcontrol");return s.point("io.ox/core/stages").extend({id:"first",index:100,run:function(){m('Stage "first"')}},{id:"app_register",index:105,run:function(){return require(["io.ox/core/main/apps","io.ox/core/main/warning"])}},{id:"appcheck",index:110,run:function(e){m('Stage "appcheck"');var t,i,o,n=_.url.hash(),a=!("!!"in n);"infostore"===n.m&&(n.m="files"),a&&n.app&&n.folder&&n.id&&0!==n.folder.indexOf("virtual/")&&n.id.indexOf(",")<0?(t=/^\d+\./.test(n.id)?n.id.replace(/\./,"/"):n.id,i=/^io.ox\/(mail|contacts|calendar|tasks)$/.test(n.app),_.url.hash({app:i?n.app+"/detail":n.app,folder:n.folder,id:t}),e.isDeepLink=!0):n.m&&n.f&&n.i?(i=/^(mail|contacts|calendar|tasks)$/.test(n.m),_.url.hash({app:"io.ox/"+(i?n.m+"/detail":n.m),folder:n.f,id:n.i}),e.isDeepLink=!0):n.m&&n.f&&(_.url.hash({app:"io.ox/"+n.m,folder:n.f}),e.isDeepLink=!0),_.url.hash({m:null,f:null,i:null,"!!":void 0,"!":null}),!_.device("smartphone")||"io.ox/mail"!==(o=_([].concat(p.get("autoStartMobile","
1io.ox/mail"))).filter(function(e){return!_.isUndefined(e)&&!_.isNull(e)}))[0]&&o.push("io.ox/mail");var r,s=_.url.hash("app"),l=s&&ox.ui.apps.get(x(s).name),d=a&&l&&l.get("deeplink"),c=void 0!==_.url.hash("mailto")&&s===ox.registry.get("mail-compose")+":compose";l&&(l.get("refreshable")||d)?e.autoLaunch=s.split(/,/).filter(function(e){return!!u.get(e.replace(/(:.*|\/main)$/,""))}):f.has("webmail")&&c?e.autoLaunch=["io.ox/mail/main"]:(l&&_.url.hash({app:null,folder:null,id:null}),e.autoLaunch="none"===p.get("autoStart")?[]:(r=_.map(u.forLauncher(),function(e){return e.get("path")}),_([].concat(p.get("autoStart"),r)).chain().filter(function(e){return!_.isUndefined(e)&&(!_.isNull(e)&&(!!/^io.ox\/settings(\/main)?$/.test(e)||0<=r.indexOf(/main$/.test(e)?e:e+"/main")))}).first(1).value()))}},{id:"autoLaunchApps",index:120,run:function(e){m('Stage "autoLaunchApps"'),e.autoLaunchApps=_(e.autoLaunch).chain().map(function(e){return x(e).app}).compact().value()}},{id:"startLoad",index:130,run:function(o){function e(i){return function(e){var t=e&&e.message||"";throw console.error("core: Failed to load:",i,t,e,o),e}}m('Stage "startLoad"'),o.loaded=$.when(s.loadPlugins().fail(e("loadPlugins")),require(o.autoLaunchApps).fail(e("autoLaunchApps")),require(["io.ox/core/api/account"]).then(function(e){var t=$.Deferred();return e.all().always(t.resolve),t},e("account")))}},{id:"secretCheck",index:250,run:function(){var e;m('Stage "secretCheck"'),ox.online&&ox.rampup&&ox.rampup.oauth&&((e=ox.rampup.oauth.secretCheck)&&!e.secretWorks&&(require(["i
1o.ox/keychain/secretRecoveryDialog"],function(e){e.show()}),ox.debug&&console.error("Couldn't decrypt accounts: ",e.diagnosis)))}},{id:"drawDesktop",index:500,run:function(){s.point("io.ox/core/desktop").invoke("draw",$("#io-ox-desktop"),{}),ox.ui.windowManager.on("empty",function(e,t,i){var o;t?(s.point("io.ox/core/desktop").invoke("draw",$("#io-ox-desktop"),{}),ox.ui.screens.show("desktop"),"none/main"!==(o=x(i||p.get("autoStart","io.ox/mail/main")).app)&&ox.launch(o)):ox.ui.screens.show("windowmanager")})}},{id:"load",index:600,run:function(e){return m('Stage "load"',e),e.loaded}},{id:"popoutViever",index:605,run:function(){var e,t,i,o,n,a,r;ox.tabHandlingEnabled&&"true"!==_.url.hash("office:disable-openInTabs")&&"io.ox/files/detail"===_.url.hash("app")&&(e=s.point("io.ox/core/appcontrol"),l(e,["quicklauncher"]),t=s.point("io.ox/core/appcontrol/left"),l(t,["launcher"]),i=s.point("io.ox/core/appcontrol/right"),l(i,["refresh-mobile","notifications","settings-dropdown"]),o=s.point("io.ox/core/appcontrol/right/help"),d(o,["help","feedback","divider-first","about"]),n=s.point("io.ox/core/appcontrol/right/settings"),d(n,[]),a=s.point("io.ox/core/appcontrol/right/account"),d(a,["logout"]),r=s.point("io.ox/core/appcontrol/right/account/signouts"),d(r,["logout"]))}},{id:"topbars",index:610,run:function(){if(m('Stage "load" > loaded.done'),s.point("io.ox/core/appcontrol").invoke("draw",e),_.device("smartphone")&&s.point("io.ox/core/mobile").invoke("draw"),s.point("io.ox/core/topbar").isEnabled("default")||($("#io-ox-screens").css("top","0px"),e.hide()),s.point("io.ox/core/plugins").invoke("draw"),m('Stage "load" > autoLaunch ...'),!ox.tabHandlingEnabled)return ox.ui.App.restore();require(["io.ox/core/api/tab"],function(e){return!e.isParentTab()||ox.ui.App.restore()})}},{id:"restoreLaunch",index:620,run:function(e){var t,u=_.copy(_.url.hash()),p=0<e.autoLaunch.length;_(e.autoLaunch).chain().map(x).each(function(e,t){var i,o,n,a,r,s,l,d,c;0===t&&(p=!1),_.device("smartphone")&&0<t||_.device("smartphone")&&ox.ui.apps.where({restored:!0,name:e.name}).length||((o=_(u).pick("folder","id")).first=!0,m("Auto launch:",e.app,o),/detail\/main$/.test(e.app)&&e.app.indexOf("files/detail/main")<0?(n=e.app.replace(/\/detail/,""),(a=ox.launch(n,o)).done(function(){_.delay(function(){ox.launch(e.app,{cid:_.cid(o)})},1e3)})):a=ox.launch(e.app,o),i=e.method,"io.ox/files"===u.app&&void 0!==u.id&&require(["io.ox/core/viewer/main","io.ox/files/api"],function(t,e){g.get(u.folder).done(function(){e.get(u).done(function(e){(new t).launch({files:[e],folder:u.folder})})}).fail(function(e){_.url.hash("id",null),h.yell(e)})}),i&&a.done(function(){_.isFunction(this[i])&&this[i]()}),r=_.url.hash("reg"),s=_(_.url.hash()).reduce(function(e,t,i){return"showfeedbackdialog"===i.toLowerCase()?t:e}),r&&ox.registry.get(r)&&(l=(_.url.hash("regopt")||"").split(","),d={},_.each(l,function(e){c=e.split(":"),d[c[0]]=c[1]}),a.done(function(){ox.registry.call(r,"client-onboarding",{data:d})})),"true"===s&&f.has("feedback")&&a.done(function(){require(["plugins/core/feedback/register"],function(e){e.show()})}),v.get("features/furigana",!1)&&require(["l10n/ja_JP/io.ox/register"]))}),(p||ox.rampup&&ox.rampup.errors)&&(t=(t=_.pluck(ox.rampup.errors,"error").join("\n\n"))||i("The requested application is not available at this moment."),h.yell({type:"error",error:t,duration:-1}))}},{id:"curtain",index:700,run:function(){m('Stage "curtain"');var e=$.Deferred();return $("#background-loader").idle().fadeOut(250,e.resolve),e}},{id:"ready",index:1e12,run:function(){m("DONE!"),ox.trigger("core:ready")}}),{restore:function(e){return i(1===e?"The below item was open last time you exited %1$s.":"The below items were open last time you exited %1$s.",ox.serverConfig.productName)+" "+i('Please click "Continue" if you\'d like to continue editing.')+" "+i(1===e?"If you do not wish to keep the item, please click on the trash icon.":"If you do not wish to keep an item, please click on the trash icon.")}}}),define("io.ox/core/main/topbar_right",["io.ox/core/session","io.ox/core/http","io.ox/core/extensions","io.ox/core/extPatterns/stage","io.ox/core/capabilities","io.ox/core/notifications","io.ox/backbone/mini-views/helplink","io.ox/backbone/mini-views/dropdown","io.ox/backbone/mini-views/upsell","io.ox/core/main/logout","io.ox/core/main/refresh","io.ox/core/main/addLauncher","io.ox/contacts/api","io.ox/core/api/user","settings!io.ox/core","gettext!io.ox/core"],function(o,e,a,t,n,i,r,s,l,d,c,u,p,h,f,g){function m(){var e=ox.ui.App.getCurrentFloatingApp()||ox.ui.App.getCurrentApp();return e&&e.getContextualHelp?e.getContextualHelp():_.extend({base:"help",target:"index.html"},e&&e.get("help"))}var v,x={about:function(){this.link("about",g("About"),function(e){e.preventDefault(),require(["i
1o.ox/core/about/about"],function(e){e.show()})})},onboarding:function(){var i,o;_.device("android")&&(i=_.device("smartphone")?"android.phone":"android.tablet"),_.device("ios")&&(i=_.device("smartphone")?"apple.iphone":"apple.ipad"),this.append(o=$('<a href="#" data-app-name="io.ox/settings" data-action="client-onboarding" role="menuitem" tabindex="-1">').text(_.device("desktop")?g("Connect your Device"):g("Connect this Device"))),require(["io.ox/onboarding/clients/api"],function(e){e.enabledDevices(i).then(function(e){var t=!!_.device("desktop")||(e[i]||!1);o.toggleClass("disabled ui-disabled",!t).attr("aria-disabled",!t).on("click",function(e){return e.preventDefault(),t?void require(["io.ox/onboarding/clients/wizard"],function(e){e.run()}):e.stopPropagation()})})})}};a.point("io.ox/core/appcontrol/right").extend({id:"upsell",index:50,draw:function(){var e;_.device("smartphone")||(e=new l({tagName:"li",className:"launcher",attributes:{role:"presentation"},id:"secondary-launcher",requires:"active_sync || caldav || carddav",customize:function(){$("i",this.$el).addClass("launcher-icon")}})).visible&&this.append(e.render().$el)}}),a.point("io.ox/core/appcontrol/right").extend({id:"notifications",index:100,draw:function(){var e;(n.has("webmail")||n.has("calendar")||n.has("tasks"))&&(e=this,ox.online?e.append(i.attach(5e3)):ox.once("connection:online",function(){e.append(i.attach(5e3))}))}}),a.point("io.ox/core/appcontrol/right").extend({id:"refresh-mobile",index:200,draw:function(){var t;function e(){var e=parseInt(f.get("refreshInterval",3e5),10)/6e4;return t.attr("title",g("Refresh. Current interval (%1$s min) can be customized in settings.",e))}_.device("smartphone")||(t=$('<i class="fa fa-refresh launcher-icon" aria-hidden="true">'),this.append(u("right",t,function(){return c(),$.when()},g("Refresh")).attr("id","io-ox-refresh-icon")),e(),f.on("change:refreshInterval",e))}}),a.point("io.ox/core/appcontrol/right").extend({id:"help-dropdown",index:300,draw:function(){if(!_.device("smartphone")){if(a.point("io.ox/core/appcontrol/right/help").list().length<=1){var e=new r({iconClass:"fa-question launcher-icon",href:m});if(e.$el.hasClass("hidden"))return;return this.append(u("right",e.render().$el.attr("tabindex",-1)).attr("id","io-ox-context-help-icon"))}var t=$('<ul id="topbar-help-dropdown" class="dropdown-menu dropdown-menu-right" role="menu">'),i=$('<a href="#" class="dropdown-toggle f6-target" data-toggle="dropdown" tabindex="-1">').attr("aria-label",g("Help")).append('<i class="fa fa-question launcher-icon" aria-hidden="true">').attr("title",g("Help")),o=new s({model:new Backbone.Model({}),attributes:{role:"presentation"},tagName:"li",id:"io-ox-topbar-help-dropdown-icon",className:"launcher dropdown",$ul:t,$toggle:i});a.point("io.ox/core/appcontrol/right/help").invoke("extend",o),this.append(o.render().$el.find("a").attr("tabindex",-1).end())}}}),a.point("io.ox/core/appcontrol/right/help").extend({id:"help",index:100,extend:function(){var e=new r({attributes:{role:"menuitem",tabindex:-1},content:g("Help"),href:m});e.$el.hasClass("hidden")||this.append(e.render().$el)}}),a.point("io.ox/core/appcontrol/right/help").extend({id:"divider-first",index:200,extend:function(){this.divider()}}),a.point("io.ox/core/appcontrol/right/help").extend({id:"divider-second",index:300,extend:function(){this.divider()}}),a.point("io.ox/core/appcontrol/right/help").extend({id:"about",index:400,extend:function(){x.about.apply(this,arguments)}}),a.point("io.ox/core/appcontrol/right").extend({id:"settings-dropdown",index:400,draw:function(){if(!_.device("smartphone")){if(a.point("io.ox/core/appcontrol/right/settings").list().length<=1)return this.append(u("right",$('<i class="fa fa-cog launcher-icon" aria-hidden="true">').attr("title",g("Settings")),function(){ox.launch("io.ox/settings/main")},g("Settings")).attr("id","io-ox-settings-topbar-icon"));var e=$('<ul id="topbar-settings-dropdown" class="dropdown-menu dropdown-menu-right" role="menu">'),t=$('<a href="#" class="dropdown-toggle f6-target" data-toggle="dropdown" tabindex="-1">').attr("aria-label",g("Settings")).append('<i class="fa fa-cog launcher-icon" aria-hidden="true">').attr("title",g("Settings")),i=new s({model:new Backbone.Model({}),attributes:{role:"presentation"},tagName:"li",id:"io-ox-topbar-settings-dropdown-icon",className:"launcher dropdown",$ul:e,$toggle:t});a.point("io.ox/core/appcontrol/right/settings").invoke("extend",i),this.append(i.render().$el.find("a").attr("tabindex",-1).end())}}}),a.point("io.ox/core/appcontrol/right/settings").extend({id:"settings",index:100,extend:function(){_.device("smartphone")||this.link("settings-app",g("Settings"),function(e){return e.preventDefault(),ox.launch("io.ox/sett
1ings/main")})}}),a.point("io.ox/core/appcontrol/right/settings").extend({id:"onboarding",index:200,enabled:n.has("client-onboarding"),extend:function(){_.device("smartphone")||f.get("onboardingWizard")||x.onboarding.apply(this,arguments)}}),a.point("io.ox/core/appcontrol/right/account").extend({id:"user",index:5,extend:function(){var e,t,i;function o(){t.empty().append(p.pictureHalo($('<div class="user-picture" aria-hidden="true">').append($('<span class="initials">').append(h.getTextNode(ox.user_id,{type:"initials"})),$('<i class="fa fa-camera-retro" aria-hidden="true">')),{internal_userid:ox.user_id},{width:40,height:40,fallback:!1}))}!1!==f.get("user/internalUserEdit",!0)&&(n.has("guest")||(e=f.get("user/hidedomainpart",!1)?"email-localpart":"email",(i=$('<li class="user">').append($('<a href="#" data-name="user-picture" class="action" tabindex="-1">').attr("title",g("Change user photo")).append(t=$('<div class="user-picture-container" aria-hidden="true">')),$('<div class="text-container">').append($('<div class="name">').append(h.getTextNode(ox.user_id,{type:"name"})),$('<div class="mail">').append(h.getTextNode(ox.user_id,{type:e}))))).on("click",".action",function(e){e.preventDefault(),require(["io.ox/core/settings/user"],function(e){e.openEditPicture()})}),o(),p.on("reset:image update:image",o),h.on("reset:image:"+ox.user_id+" update:image:"+ox.user_id,o),h.on("update",o),this.$ul.append(i),this.divider()))}}),a.point("io.ox/core/appcontrol/right/account").extend({id:"upsell",index:50,extend:function(){var e=new l({tagName:"li",id:"topbar-dropdown",attributes:{role:"presentation"},requires:"active_sync || caldav || carddav",title:g("Upgrade your account"),customize:function(){$("i",this.$el).css({width:"auto"})}});e.visible&&(this.$ul.append(e.render().$el),this.divider())}}),a.point("io.ox/core/appcontrol/right/account").extend({id:"refresh-mobile",index:80,extend:function(){_.device("smartphone")&&this.link("refresh-mobile",g("Refresh"),function(e){return e.preventDefault(),c(),$.when()})}}),a.point("io.ox/core/appcontrol/right/account").extend({id:"settings-mobile",index:90,extend:function(){_.device("smartphone")&&this.link("settings-mobile",g("Settings"),function(e){return e.preventDefault(),ox.launch("io.ox/settings/main")})}}),a.point("io.ox/core/appcontrol/right/account").extend({id:"onboarding-mobile",index:120,enabled:n.has("client-onboarding"),extend:function(){_.device("smartphone")&&!f.get("onboardingWizard")&&x.onboarding.apply(this,arguments)}}),a.point("io.ox/core/appcontrol/right/account").extend({id:"change-user-data",index:150,extend:function(){!1!==f.get("user/internalUserEdit",!0)&&this.link("my-contact-data",g("Edit personal data"),function(e){e.preventDefault(),require(["io.ox/core/settings/user"],function(e){e.openModalDialog()})})}}),a.point("io.ox/core/appcontrol/right/account").extend({id:"change-user-password",index:175,extend:function(){var t;n.has("edit_password && guest")&&(t=function(e){return g(e?"Add login password":"Change login password")},this.link("change-password",t(f.get("password/emptyCurrent")),function(e){e.preventDefault(),require(["plugins/portal/userSettings/register"],function(e){e.changePassword()})}),this.listenTo(f,"change:password/emptyCurrent",function(e){this.$el.find('[data-name="change-password"]').text(t(e))}.bind(this)))}}),a.point("io.ox/core/appcontrol/right/account").extend({id:"app-specific-help-mobile",index:200,extend:function(){var e;_.device("smartphone")&&(e=new r({attributes:{role:"menuitem",tabindex:-1},content:g("Help"),href:m}),this.divider(),e.$el.hasClass("hidden")||this.append(e.render().$el))}}),a.point("io.ox/core/appcontrol/right/account").extend({id:"about-mobile",index:400,extend:function(){_.device("smartphone")&&x.about.apply(this,arguments)}}),a.point("io.ox/core/appcontrol/right/account").extend({id:"logout",index:1e3,extend:function(){a.point("io.ox/core/appcontrol/right/account/signouts").invoke("extend",this)}}),a.point("io.ox/core/appcontrol/right/account/signouts").extend({id:"logout",index:100,extend:function(){this.link("logout",g("Sign out"),function(e){e.preventDefault(),d({manualLogout:!0})})}}),a.point("io.ox/core/appcontrol/right").extend({id:"account",index:1e3,draw:function(){var e=ox.openedInBrowserTab?g("Sign out"):g("My account"),t=$('<ul id="topbar-account-dropdown" class="dropdown-menu dropdown-menu-right" role="menu">'),i=$('<a href="#" class="dropdown-toggle f6-target" data-toggle="dropdown" tabindex="-1">').attr("aria-label",e),o=new s({model:new Backbone.Model({}),attributes:{role:"presentation"},tagName:"li",id:"io-ox-topbar-account-dropdown-icon",className:"launcher dropdown",$ul:t,$toggle:i});function n(){i.empty().append(p.pictureHalo($('<div class="contact-picture" aria-hidden="true">').attr("title",e).append(h.getTextNode(ox.user_id,{type:"initials"})),{internal_userid:ox.user_id},{width:40,height:40,fallback:!1}))}n(),a.point("io.ox/core/appcontrol/right/account").invoke("extend",o),this.append(o.render().$el.find("a").attr("tabindex",-1).end()),p.on("reset:image update:image",n),h.on("reset:image:"+ox.user_id+" update:image:"+ox.user_id,n),h.on("update",n)}}),!0===f.get("features/dedicatedLogoutButton",!1)&&_.device("!small")&&a.point("io.ox/core/appcontrol/right").extend({id:"logout-button",index:2e3,draw:function(){var e=u("right",$('<i class="fa fa-sign-out launcher-icon" aria-hidden="true">'),function(){d({manualLogout:!0})},g("Sign out"));e.find("a").attr("data-action","sign-out").tooltip({title:g("Sign out"),placement:function(e,t){return $(window).width()-$(t).offset().left-t.offsetWidth<80?"left":"auto"}}),this.append(e)}}),(v=_.clone(f.get("features/logoutButtonHint",{}))).enabled&&a.point("io.ox/core/appcontrol/right").extend({id:"logout-button-hint",index:2100,draw:function(){var t;f.set("features/logoutButtonHint/active",!0).save(),_.isBoolean(v.active)&&v.active&&(_.device("reload")&&o.isAutoLogin()||((t=this.find('[data-action="sign-out"], #io-ox-topbar-account-dropdown-icon > a').first()).popover({content:v[ox.language]||g("You forgot to sign out last time. Always use the sign-out button when you finished your work."),template:'<div class="popover popover-signout" role="tooltip"><div class="arrow"></div><div class="popover-content popover-content-signout"></div></div>',placement:"bottom",container:"body"}),this.get(0).addEventListener("click",function(e){e.target.classList.contains("popover-content-signout")&&e.stopImmediatePropagation(),t.popover("destroy")},!0),$(document).one("click",t.popover.bind(t,"destroy")),_.defer(t.popover.bind(t,"show"))))}}),new t("io.ox/core/stages",{id:"client-onboarding-hint",index:3e3,run:function(e){var t,i;n.has("!client-onboarding")||_.device("smartphone")&&(_.device("reload")&&o.isAutoLogin()||(t=_.extend({enabled:!0,remaining:2},f.get("features/clientOnboardingHint",{}))).enabled&&t.remaining&&(e.data.popups.push({name:"client-onboarding-hint"}
1),(i=$("#io-ox-appcontrol #io-ox-topbar-account-dropdown-icon > a")).popover({content:g("Did you know that you can take %1$s with you? Just click this icon and choose 'Connect your device' from the menu.",ox.serverConfig.productName),template:'<div class="popover popover-onboarding" role="tooltip"><div class="arrow"></div><div class="popover-content popover-content-onboarding"></div></div>',placement:"bottom",container:"body"}),_.defer(i.popover.bind(i,"show")),document.body.addEventListener("click",function e(){f.set("features/clientOnboardingHint/remaining",Math.max(0,t.remaining-1)).save();i.popover("destroy");document.body.removeEventListener("click",e,!0)},!0)))}})}),define("io.ox/core/main/warning",["io.ox/core/notifications","io.ox/core/folder/api","gettext!io.ox/core"],function(t,e,i){e.on("warn:hidden",function(e){e&&t.yell("info",i('Folder with name "%1$s" will be hidden. Enable setting "Show hidden files and folders" to access this folder again.',e.title))}),ox.on("http:error",function(e){switch(e.code){case"MSG-1000":case"MSG-1001":case"MSG-1036":case"MSG-1038":case"MSG-1039":case"MSG-1040":case"MSG-1031":case"MSG-0114":case"OAUTH-0013":case"OAUTH-0042":case"OAUTH-0043":case"OAUTH-0044":t.yell(e);break;case"LGI-0016":_.url.redirect(_.url.vars(e.error))}});var o,n=(o=[/^SHR_NOT-\d{4}$/,/^RSS-0007/,/^MSG-1001/],function(e){var t=_.partial(a,e);return!!_.find(o,t)});function a(e,t){return t.test(e)}ox.on("http:warning",function(e){return n(e.code)?t.yell("warning",e.error):void(ox.debug&&console.warn("server response: ",e.error))})}),define("io.ox/core/main",["io.ox/core/desktop","io.ox/core/extensions","io.ox/core/extPatterns/stage","io.ox/core/notifications","io.ox/core/commons","io.ox/core/upsell","io.ox/core/ping","io.ox/core/a11y","io.ox/core/main/logout","io.ox/core/main/refresh","io.ox/core/main/topbar_right","io.ox/core/main/debug","settings!io.ox/core","gettext!io.ox/core","io.ox/backbone/views/window","io.ox/core/main/registry","io.ox/core/main/offline","io.ox/core/relogin","io.ox/core/links","io.ox/core/http_errors","io.ox/backbone/views/disposable","io.ox/tours/get-started","io.ox/core/whatsnew/main","io.ox/core/main/icons","io.ox/core/main/appcontrol","io.ox/core/main/stages","io.ox/core/main/designs","io.ox/core/count/main"],function(e,t,i,o,n,a,r,s,l,d,c,u,p,h){return $("#io-ox-windowmanager").on("scroll",function(){0<this.scrollTop&&(this.scrollTop=0)}),u("core: Loaded"),ox.trigger("core:load"),_.stepwiseInvoke=function(o,n,a){if(!_.isArray(o))return $.when();var r=Array.prototype.slice.call(arguments,3),s=$.Deferred(),l=[];function d(e){l.push(e)}return function e(){if(0===o.length)return s.resolve(l);var t=o.shift();if(t&&_.isFunction(t[n])){var i=t[n].apply(a,r);if(i&&i.promise)return i.done(d).then(e,s.reject)}e()}(),s.promise()},t.point("io.ox/core/mobile").extend({id:"i18n",draw:function(){$(document).trigger("dropdown:translate",h("Close"))}}),{logout:l,launch:function(){""===location.hash&&(location.hash="#!!");var e=t.Baton.ensure({popups:[]});u("core: launch > run stages"),i.run("io.ox/core/stages",e)}}}),define("io.ox/core/links",["io.ox/core/yell","io.ox/core/capabilities"],function(s,e){function t(t,i){require(["io.ox/core/folder/api"],function(e){e.get(i).then(function(){ox.launch(t,{folder:i}).done(function(){"io.ox/calendar/main"===t?this.folders.setOnly(i):this.folder.get()!==i&&this.folder.set(i)})},s)})}function o(e){e.preventDefault();var t=$(this).data(),i=_.deserialize(t.all.match(/#.*/)[0]),o=/^io.ox\/office\//.test(t.app),n=o?{action:"load",file:{folder_id:t.folder,id:t.id},params:i}:_(t).pick("folder","folder_id","id","cid");if(o&&ox.tabHandlingEnabled)return require(["io.ox/core/api/tab"],function(e){e.openChildTab(t.all)});ox.launch(t.app+"/main",n).done(function(){_.isFunction(this.setSettingsPane)?this.setSettingsPane(n):t.folder&&this.folder.get()!==t.folder&&this.folder.set(t.folder)})}$(document).on("click",".deep-link-app",o);function n(e){e.preventDefault();var i=$(this).data();i.id?require(["io.ox/core/viewer/main","io.ox/files/api"],function(t,e){e.get(_(i).pick("folder","id")).then(function(e){(new t).launch({files:[e]})},s)}):t("io.ox/files/main",i.folder)}$(document).on("click",".deep-link-files",n);function a(e){e.preventDefault();var o=$(this).data();ox.launch("io.ox/contacts/main",{folder:o.folder}).done(function(){var e=this,t=o.folder,i=String(o.id||"").replace(/\//,".");e.folder.get()===t?e.getGrid().selection.set(i):e.folder.set(t).done(function(){e.getGrid().selection.set(i)})})}$(document).on("click",".deep-link-contacts",a);function r(i){i.preventDefault();var r=$(this).data();if(r.id)ox.load(["io.ox/core/tk/dialogs","io.ox/calendar/api","io.ox/calendar/view-detail","io.ox/core/folder/api"]).done(function(e,t,o,n){var a=new e.SidePopup({arrow:!_.device("chrome"),tabTrap:!0});_.device("chrome")&&a.setTarget(document.body),a.show(i,function(i){i.busy(),/^\d+\/\d+.\d+$/.test(r.id)&&(r=t.cid(r.id.replace(/\//,"."))),t.get(r).then(function(t){n.get(t.get("folder")).always(function(e){i.idle().append(o.draw(t,{container:i,noFolderCheck:void 0!==e.error}))})},function(e){a.close(),s(e)})})});else{if(r.folder&&"running"===ox.ui.apps.get("io.ox/calendar").get("state"))return void require(["i
1o.ox/core/folder/api"],function(e){e.pool.collections["flat/event/private"]&&e.pool.collections["flat/event/private"].has(r.folder)||e.pool.collections["flat/event/shared"]&&e.pool.collections["flat/event/shared"].has(r.folder)||e.pool.collections["flat/event/public"]&&e.pool.collections["flat/event/public"].has(r.folder)?t("io.ox/calendar/main",r.folder):e.flat({module:"event",cache:!1}).always(function(){t("io.ox/calendar/main",r.folder)})});t("io.ox/calendar/main",r.folder)}}$(document).on("click",".deep-link-calendar",r);function l(e){e.preventDefault();var n=$(this).data();ox.launch("io.ox/tasks/main",{folder:n.folder}).done(function(){var e=this,t=n.folder,i=String(n.id||"").replace(/\//,"."),o=-1<i.indexOf(".")?i:_.cid({folder:t,id:i});$.when().then(function(){if(!e.folder.get()===t)return e.folder.set(t)}).then(function(){if(i)return e.getGrid().selection.set(o)})})}$(document).on("click",".deep-link-tasks",l);function d(e){e.preventDefault();var o,n,a,r=$(this),s=r.data(),l={};require(["io.ox/mail/sanitizer","settings!io.ox/mail"],function(e,t){if(s.address)o=s.address,n=s.name||s.address;else{for(var i in a=r.attr("href").substr(7).split(/\?/,2),o=a[0],n=a[0],l=_.deserialize(a[1]))l[i.toLowerCase()]=l[i];l.body&&"text"!==t.get("messageFormat")&&(l.body=l.body.replace(/\n/g,"<br>"))}ox.registry.call("mail-compose","open",{to:[[n,o]],subject:l.subject||"",content:e.sanitize({content:l.body||"",content_type:"text/html"},{WHOLE_DOCUMENT:!1}).content})})}function c(e){e.preventDefault();var t=$(this).data();require(["io.ox/settings/personalData/api"],function(e){e.trigger("updateStatus")}),ox.launch("io.ox/settings/main",{folder:t.folder}).done(function(){this.setSettingsPane({folder:t.folder})})}$(document).on("click",".deep-link-gdpr",c),e.has("webmail")&&$(document).on("click",".mailto-link",d),ox.on("click:deep-link-mail",function(e,t){var i=e.currentTarget.className.split(" ");0<=i.indexOf("deep-link-files")?n.call(t,e):0<=i.indexOf("deep-link-contacts")?a.call(t,e):0<=i.indexOf("deep-link-calendar")?r.call(t,e):0<=i.indexOf("deep-link-tasks")?l.call(t,e):0<=i.indexOf("deep-link-gdpr")?c.call(t,e):0<=i.indexOf("deep-link-app")?o.call(t,e):0<=i.indexOf("mailto-link")&&d.call(t,e)})}),define("io.ox/core/active",[],function(){var e=!0,t=!0,i=0;function o(){i++,e=t&&i<60&&"visible"===document.visibilityState}return setInterval(o,1e3),$(window).on("mousemove mousedown keydown mousewheel focus",function(){i=0,e=t=!0}),$(document).on("visibilitychange",function(){i=0,o()}),$(window).on("blur",function(){e=t=!1}),function(){return e}}),define("io.ox/core/count/api",["io.ox/core/uuids","settings!io.ox/core"],function(t,e){var i=_.extend({queue:[],add:_.noop},Backbone.Events),o=e.get("count/url")||e.get("tracker/url"),n=o&&!ox.debug&&e.get("count/enabled",!0),a=_(["windows","macos","ios","android"]).find(_.device),r=_(["smartphone","desktop","tablet"]).find(_.device);if(i.disabled=e.get("count/disabled",!n),i.disabled)return i;i.uuid=function(){if(Modernizr.localstorage){var e=window.sessionStorage.getItem("countid");return e||(e=t.randomUUID(),window.sessionStorage.setItem("countid",e)),e}return t.randomUUID()}();var s,l=1e3*parseInt(e.get("count/delay",15),10),d=e.get("count/brand")||e.get("tracker/brand"),c=e.get("count/stats",{});function u(){if(0!==i.queue.length){var t=i.queue.slice(0,100);if(i.queue=i.queue.slice(100,i.queue.length),i.trigger("sync",t),"debug"===o)return console.debug("count",t);$.post({url:o,contentType:"application/json",data:JSON.stringify(t),timeout:1e4}).fail(function(e){return 403===e.status?(i.trigger("forbidden"),clearInterval(s)):void(413!==e.status?(i.trigger("fail",t),[].push.apply(i.queue,t)):i.queue=[])})}}return i.add=function(e,t){!1!==c[e]&&(t=_.extend({stat:e},t),d&&(t.brand=d),i.trigger("add",t),i.queue.push(t))},i.stat=function(e){return!1!==c[e]},i.platform=a,i.device=r,setTimeout(function(){u(),s=setInterval(u,l)},3e3),i}),define("io.ox/core/count/timing",["io.ox/core/count/api","settings!io.ox/core"],function(i,e){i.disabled||("io.ox/mail/main"===e.get("autoStart")&&ox.once("timing:mail:ready",function(e){i.add("t/m/ready",{d:e})}),ox.on("timing:mail:load",function(e){i.add("t/m/load",{d:e})}),ox.on("timing:mail:sanitize",function(e){var t=Number(e.toFixed(0));i.add("t/m/sanitize",{d:t})}))}),define("io.ox/core/count/errors",["io.ox/core/count/api"],function(t){ox.on("yell:error",function(e){t.add("error",{code:e.code})})}),define("io.ox/core/count/eyeballtime",["io.ox/core/count/api","io.ox/core/active"],function(t,i){var o;function n(e){t.add("ebt",{app:e,uuid:t.uuid,t0:ox.t0,d:t.device})}t.disabled||(o={},setInterval(function(){var e,t;!i()||(e=(t=ox.ui.App.getCurrentFloatingApp()||ox.ui.App.getCurrentApp())?t.get("name"):"")&&(void 0===o[e]&&n(e),o[e]=(o[e]||0)+1,60<=o[e]&&(n(e),o[e]=0))},1e3))}),define("io.ox/core/count/nps",["io.ox/core/count/api"],function(t){t.disabled||ox.on("feedback:nps",function(e){t.add("nps",{s:e})})}),define("io.ox/core/count/lifetime",["io.ox/core/count/api"],function(e){e.disabled||setInterval(function(){e.add("lt",{u:e.uuid,t0:ox.t0})},6e4)}),define("io.ox/core/count/sendmail",["io.ox/core/count/api"],function(t){t.disabled||ox.on("mail:send:start",function(e){e&&e.security&&e.meta&&t.add("sm",{e:+e.security.encrypt,s:+e.security.sign,t:e.meta.type})})}),define("io.ox/core/count/appointments",["io.ox/core/count/api"],function(t){t.disabled||ox.on("appointment:create",function(e){_.isNumber(e)&&t.add("ac",{pce:e})})}),define("io.ox/core/count/main",["io.ox/core/count/api","io.ox/core/count/timing","io.ox/core/count/errors","io.ox/core/count/eyeballtime","
1io.ox/core/count/lifetime","io.ox/core/count/nps","io.ox/core/count/sendmail","io.ox/core/count/appointments"],function(e){e.disabled||(e.add("browser"),e.add("device",{platform:e.platform,device:e.device}),e.add("unique",{id:ox.context_id+"/"+ox.user_id}))}),define("io.ox/mail/util",["io.ox/core/extensions","io.ox/core/util","io.ox/core/api/account","io.ox/core/capabilities","settings!io.ox/mail","settings!io.ox/contacts","gettext!io.ox/core"],function(e,d,i,t,n,o,l){function a(e,t){if(!_.isNumber(e))return l("unknown");function i(){return n.format("LT")}var o=$.extend({fulldate:!1,filtertoday:!0},t||{}),n=moment(e);if(o.filtertoday&&moment().isSame(n,"day"))return i();if(o.smart){var a=moment().startOf("day").diff(moment(e).startOf("day"),"day");if(1===a)return l("Yesterday");if(a<=6)return n.format("dddd")}return n.format("l")+(o.fulldate?" "+i():"")}var r,s=[{label:"System",font:"-apple-system,BlinkMacSystemFont,helvetica,sans-serif"},{label:"Andale Mono",font:"andale mono,times"},{label:"Arial",font:"arial,helvetica,sans-serif"},{label:"Arial Black",font:"arial black,avant garde"},{label:"Book Antiqua",font:"book antiqua,palatino"},{label:"Comic Sans MS",font:"comic sans ms,sans-serif"},{label:"Courier New",font:"courier new,courier"},{label:"Georgia",font:"georgia,palatino"},{label:"Helvetica",font:"helvetica"},{label:"Impact",font:"impact,chicago"},{label:"Symbol",font:"symbol"},{label:"Tahoma",font:"tahoma,arial,helvetica,sans-serif"},{label:"Terminal",font:"terminal,monaco"},{label:"Times New Roman",font:"times new roman,times"},{label:"Trebuchet MS",font:"trebuchet ms,geneva"},{label:"Verdana",font:"verdana,geneva"},{label:"Webdings",font:"webdings"},{label:"Wingdings",font:"wingdings,zapf dingbats"}],c=ox.serverConfig.prefix||"/ajax",u=new RegExp('(<img[^>]+src=")'+c,"g"),p=/([^,;"]+|"(\\.|[^"])+")+/,h=/^[,;\s]+/,f=/^("(\\.|[^"])+"\s|[^<]+)(<[^>]+>)$/,g=/(^<|>$)/g,m={};function v(e,t){var i;e.parent&&e.parent.needsfix&&(i=t.id.split("."),t.id=1<t.id.split(".").length?i.splice(1,i.length).join("."):t.id)}function x(e,t,i){return e.test(t)&&-1<i.indexOf(t)}return i.getAllSenderAddresses().done(function(e){_(e).chain().pluck(1).each(function(e){m[e.toLowerCase()]=!0})}),r={replaceImagePrefix:function(e,t){return e=e||"",t=t||"$1"+ox.apiRoot,e.replace(u,t)},parseRecipient:function(e,t){var i,o,n,a=$.trim(e),r=_.extend({localpart:!0},t);return null!==(i=a.match(f))?(n=i[3].replace(g,"").toLowerCase(),o=d.unescapeDisplayName(i[1])):(o=(n=a.replace(g,"").toLowerCase()).split(/@/)[0],r.localpart||(o=null)),[o,n]},parseRecipients:function(e,t){var i,o,n=[],a=t;if(!e)return n;for(;null!==(i=e.match(p));){e=e.substr(i[0].length).replace(h,""),((o=this.parseRecipient(i[0],a))[0]===o[1]||-1<o[1].indexOf("@"))&&n.push(o)}return n},serializeList:function(e,t){for(var i,o,n,a=e[t=t||"from"]||[["",""]],r=0,s=a.length,l=$("<div>");r<s;r++)i={display_name:this.getDisplayName(a[r])},"undisclosed-recipients:;"!==(o=String(a[r][1]||"").toLowerCase())&&(i.email=o),n=d.renderPersonalName(i),i.email&&n.addClass("person-link person-"+t),l.append(n),r<s-1&&l.append($('<span class="delimiter">').text(",   "));return l.contents()},serializeAttachments:function(e,t){for(var i,o,n=0,a=t.length,r=$();n<a;n++)i=t[n].filename||"",o=ox.apiRoot+"/mail?"+$.param({action:"attachment",folder:e.folder_id,id:e.id,attachment:t[n].id,delivery:"download"}),r=r.add($('<a class="attachment-link" target="_blank">').attr("href",o).text(i)),n<a-1&&(r=r.add($('<span class="delimiter">').append($.txt(" • "))));return r},getFontFormats:function(){return n.get("tinyMCE/font_formats",s.map(function(e){return e.label+"="+e.font}).join(";"))},getDefaultStyle:function(){var e=_.device("smartphone")?{}:n.get("defaultFontStyle",{}),t={css:{},string:"",node:$()};return e.size&&"browser-default"!==e.size&&(t.css["font-size"]=e.size),e.family&&(t.css["font-family"]="browser-default"!==e.family?e.family:s[0].font),e.color&&"transparent"!==e.color&&(t.css.color=e.color),t.string=_.reduce(_.pairs(t.css),function(e,t){return e+t[0]+":"+t[1]+";"},""),t.node=$("<div>").css(t.css).attr("data-mce-style",t.string).append("<br>"),t},getDisplayName:function(e,t){if(!_.isArray(e))return"";t=_.extend({reorderDisplayName:!0,showDisplayName:!0,showMailAddress:!1,unescapeDisplayName:!0},t);var i=e[0],o=String(e[1]||"").toLowerCase(),n=i;return t.unescapeDisplayName&&(n=d.unescapeDisplayName(i)),t.showDisplayName?(t.reorderDisplayName&&(n=n.replace(/^([^,.()]+),\s([^,.()]+)$/,"$2 $1")),t.showMailAddress&&n&&o&&(n+=" <"+o+">"),n||o):o},getSender:function(e,t){var i=e[1];if(!t)return[null,i];var o=n.get(["customDisplayNames",i],{});return[(o.overwrite?o.name:e[0]||o.defaultName)||"",i]},hasFrom:function(e){return e&&_.isArray(e.from)&&0<e.from.length&&!!e.from[0][1]},getFrom:function(e,t){e=e||{},t=_.extend({field:"from"},t);var i=_(e[t.field]).chain().map(function(e){return r.getDisplayName(e,t)}).filter(function(e){return""!==e}
1).value();return 0===i.length?$().add($.txt("from"===t.field?l("Unknown sender"):l("No recipients"))):(i=_(i).reduce(function(e,t){return e.add(d.renderPersonalName({name:t}).addClass("person")).add($.txt(", "))},$())).slice(0,-1)},formatSender:function(e,t,i){var o,n=_(arguments).toArray();return _.isArray(n[0])&&(i=t,e=n[0][0],t=n[0][1]),e=d.unescapeDisplayName(e),o=t,t=-1<(o=$.trim(o||"")).indexOf("@")?o.toLowerCase():o,""===e?t:(!1===i?e:'"'+e+'"')+" <"+t+">"},getSubject:function(e,t){var i=$.trim(_.isString(e)?e:e.subject);return""===i?l("No subject"):(n.get("features/cleanSubjects",!1)&&(i=i.replace(/\[[^[]*\]\s*/g,"")),t?i:i.replace(/^((re|ref|aw|fwd|wg|rv|tr)(\[\d+\])?:\s?)+/i,""))},getPriority:function(e){return e&&3===e.priority?$():e&&e.priority<3?$('<span class="high"><i class="fa fa-exclamation" aria-hidden="true"></i></span>').attr("title",l.pgettext("E-Mail","High priority")):$('<span class="low"><i class="fa fa-minus" aria-hidden="true"></i></span>').attr("title",l.pgettext("E-Mail","Low priority"))},getAccountName:function(e){var t=window.unescape(e?e.id:"");return/^default0/.test(t)?l("Primary account"):e&&e.account_name||"N/A"},getTime:a,getDateTime:function(e,t){return t=_.extend({fulldate:!0},t),a(e,t)},getFullDate:function(e){return _.isNumber(e)?moment(e).format("l LT"):l("unknown")},getSmartTime:function(e){var t=_.printf;if(console.warn("This method is deprecated and will be removed with 7.6.0 or at any random date later"),!_.isNumber(e))return l("unknown");var i=new Date,o=i.getTimezoneOffset(),n=i.getTime()-60*o*1e3-e,a=new Date(e),r=0;return a.getDate()===i.getDate()?n<36e5?(r=Math.ceil(n/6e4),String(t(1<r?"%d minutes ago":"%d minute ago",r))):(r=Math.ceil(n/36e5),String(t(1<r?"%d hours ago":"%d hour ago",r))):a.getDate()===i.getDate()-1?"Yesterday":a.getDate()+"."+(a.getMonth()+1)+"."+a.getFullYear()},threadFileSize:function(e){return e.reduce(function(e,t){return e+(t.size||0)},0)},count:function(e){return _(e).reduce(function(e,t){return e+(t.thread?t.thread.length:1)},0)},isToplevel:function(e){return _.isObject(e)&&"folder_id"in e&&!("filename"in e)},isUnseen:function(e){return e=_.isObject(e)?e.flags:e,_.isNumber(e)?32!=(32&e):void 0},isFlagged:function(e){return e=_.isObject(e)?e.flags:e,_.isNumber(e)?8==(8&e):void 0},isDeleted:function(e){return e&&_.isNumber(e.flags)?2==(2&e.flags):void 0},isSpam:function(e){return e&&_.isNumber(e.flags)?128==(128&e.flags):void 0},isAnswered:function(){return _.chain(arguments||[]).flatten().compact().reduce(function(e,t){return e||1==(1&t.flags)},!1).value()},isDecrypted:function(e){return e&&e.security&&e.security.decrypted},isForwarded:function(){return _.chain(arguments||[]).flatten().compact().reduce(function(e,t){return e||256==(256&t.flags)},!1).value()},isAttachment:function(e){return void 0!==(e||{}).parent},isEmbedded:function(e){return!!_.isObject(e)&&(void 0===e.folder_id&&void 0!==e.filename)},asList:_.memoize(function(e){return(e||"").replace(/[\s\n]+/g,",").replace(/(,+),/g,",").replace(/^,|,$/g,"").toLowerCase().split(",")}),isWhiteListed:function(e,t){var i=[].concat(r.asList(n.get("features/trusted/user",t||"")),r.asList(n.get("features/trusted/admin",""))),o=_.isObject(e)?e.from&&e.from.length&&String(e.from[0][1]||""):e||"",i=_.compact(i),o=(o||"").trim().toLowerCase();return _.some(i,function(e){var t=e.trim().replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return o.match(new RegExp(t+"$"))})},authenticity:function(e,t){t.authenticity_preview&&(t=_.extend({},{authenticity:t.authenticity_preview},t));var i=function(e){if(_.isObject(e))return _.isObject(e.authenticity)?e.authenticity.status:e.status}(t),o=n.get("features/authenticity",!1)?n.get("authenticity/level","none"):"none";if(("none"!==o||"trusted"===i)&&/^(fail|suspicious|neutral|none|pass|trusted)$/.test(i))return function(e,t,i){switch(e){case"image":return x(/(fail|suspicious)/,i,t);case"icon":return x(/(fail|suspicious|trusted)/,i,t);case"via":return 1;case"box":return x(/(fail|suspicious|trusted)/,i,t);case"block":return x(/(fail|suspicious)/,i,t);default:return}}(e,o,i)?i:void 0},getAuthenticityMessage:function(e,t){switch(e){case"suspicious":return l("Be careful with this message. It might be spam or a phishing mail.");case"fail":return l("This is a dangerous email containing spam or malware.");case"neutral":return l("We could not verify that this email is from %1$s.",t);case"pass":case"trusted":return l("We could verify that this email is from %1$s.",t);default:return""}},isMalicious:function(){if(!n.get("maliciousCheck"))return _.constant(!1);var t=n.get("maliciousFolders");return _.isArray(t)?function(e){return!!_.isObject(e)&&i.isMalicious(e.folder_id||e.parent&&e.parent.folder_id,t)}:_.constant(!1)}(),byMyself:function(e){return(e=e||{}).from&&e.from.length&&String(e.from[0][1]||"").toLowerCase()in m},hasUnsendReadReceipt:function(e){return!(_.isNumber(e.flags)?512==(512&e.flags):void 0)&&!!e.disp_notification_to},hasOtherRecipients:function(e){var t=[].concat((e=e||{}).to||[],e.cc||[],e.bcc||[]);return 0<_(t).reduce(function(e,t){var i=String(t[1]||"").toLowerCase();return e+(!i||i in m?0:1)},0)},getDefaultSignature:function(e){var t=n.get("defaultSignature")||"",i=n.get("defaultReplyForwardSignature");return/(new|edit)/.test(e)||_.isBoolean(i)?t:i},getInitialDefaultSender:function(){return _(n.get("defaultSendAddress",[]))._wrapped[0]},fixInlineImages:function(e){return e.replace(new RegExp('(<img[^>]+src=")'+ox.abs+ox.apiRoot),"$1"+c).replace(new RegExp('(<img[^>]+src=")'+ox.apiRoot,"g"),"$1"+c).replace(/on(mousedown|contextmenu)="return false;"\s?/g,"").replace(/data-mce-src="[^"]+"\s?/,"")},parseMsgref:function(e,t){var i=_(t.toString().split(e)),o=i.last();return{folder_id:i.without(o).join(e),id:o}},getAttachments:function(e){for(var t,i,o,n=[],a={id:(e=e||{}).id,folder_id:e.folder_id},r=0,s=(e.nested_msgs||[]).length;r<s;r++)t=e.nested_msgs[r],"filename"in(o=t)||!o.attachments||1!==o.attachments.length||null!==o.attachments[0].content?(v(e,t),n.push({id:t.id,content_type:"message/rfc822",filename:t.filename||(t.subject||l("message")).replace(/\s+/g," ")+".eml",title:t.filename||t.subject||"",mail:a,parent:e.parent||a,nested_message:_.extend({},t,{parent:a})})):(i=t.attachments[0],n.push(_.extend({},i,{mail:a,title:t.filename||"",parent:e.parent||a})));for(e.parent&&a&&void 0===a.folder_id&&(a.id=e.parent.id,a.folder_id=e.parent.folder_id),r=0,s=(e.attachments||[]).length;r<s;r++)"attachment"!==(t=e.attachments[r]).disp&&!/^image/.test(t.content_type.toLowerCase())||(v(e,t),n.push(_.extend({},t,{cid:null,mail:a,title:t.filename||"",parent:e.parent||a})));return n}}}),define("io.ox/mail/api",["io.ox/mail/api-legacy","io.ox/core/http","settings!io.ox/core","io.ox/core/api/factory","io.ox/core/folder/api","io.ox/core/api/account","
1io.ox/mail/util","io.ox/core/api/collection-pool","io.ox/core/api/collection-loader","io.ox/core/tk/visibility-api-util","settings!io.ox/mail","gettext!io.ox/mail","io.ox/core/capabilities","io.ox/mail/sanitizer"],function(e,l,t,i,a,n,r,o,s,d,c,u,p,h){function f(e,t){return g[t.color_label]-g[e.color_label]}var g=_("0 1 7 10 6 3 9 2 5 8 4".split(" ")).invert(),m=window.mailpool=o.create("mail"),v=c.get("features/fixtoccbcc"),x=!c.get("features/ignoreDeleted",!1),b=h.isEnabled(),w=c.get("features/sandboxedCSS",!0),y=t.get("pdf/enablePreconversionOnMailFetch",!0);m.map=function(i){var e=_.cid(i),o=this.get(e);return o&&o.get("headers")&&(i.headers||(i.headers={}),i.headers=_.extend(i.headers,o.get("headers"))),_([i].concat(i.attachments)).each(function(e){e&&/^text\/(plain|html)/i.test(e.content_type)&&(e.content_type=String(e.content_type).toLowerCase().split(";")[0])}),o&&v&&["to","cc","bcc"].forEach(function(e){var t=o.get(e);_.isArray(t)&&0<t.length&&delete i[e]}),i};var k=i({module:"mail",keyGenerator:function(e){return e?(e.folder_id||e.folder)+"."+e.id+"."+(e.view||k.options.requests.get.view||""):""},requests:{all:{folder:"default0/INBOX",columns:"601,600,611,102",extendColumns:"io.ox/mail/api/all",sort:"661",order:"desc",deleted:x,cache:!1},list:{action:"list",columns:"102,600,601,602,603,604,605,606,607,608,610,611,614,652,661",extendColumns:"io.ox/mail/api/list"},get:{action:"get",embedded:String(!w),sanitize:String(!b)},getUnmodified:{action:"get",unseen:"true",view:"html",embedded:"true"},search:{action:"search",folder:"default0/INBOX",columns:"601,600,611",extendColumns:"io.ox/mail/api/all",sort:"661",order:"desc",getData:function(i,e){var o={from:603,to:604,cc:605,subject:607,text:-1},n=[];return _(e).each(function(e,t){t in o&&"on"===e&&n.push({col:o[t],pattern:i})}),n}}},cid:function(e){return(e.action||"all")+":"+e.folder+"//"+[e.sort,e.order,e.max||0,!!e.unseen,!!e.deleted].join(".")},filter:function(e){return void 0!==e.folder_id||void 0!==e.folder},pipe:{all:function(e,t){return"102"===t.sort&&(e.sort(f),"desc"===t.order&&e.reverse()),e},get:function(e,t){return _.isObject(e)&&(e.view=t.view),e}},params:{all:function(e){return"thread"===e.sort&&(e.sort=661),e}},simplify:function(e){return e.simplified.unseen=!0,e.simplified}});_.extend(k,e),k.updateViewSettings=function(){k.options.requests.get.view="text",c.get("allowHtmlMessages",!0)&&(k.options.requests.get.view=c.get("allowHtmlImages",!1)?"html":"noimg"),k.trigger("viewChanged")},k.separator=c.get("defaultseparator","/"),k.FLAGS={ANSWERD:1,DELETED:2,DRAFT:4,FLAGGED:8,RECENT:16,SEEN:32,USER:64,SPAM:128,FORWARDED:256},k.COLORS={NONE:0,RED:1,ORANGE:7,YELLOW:10,LIGHTGREEN:6,GREEN:3,LIGHTBLUE:9,BLUE:2,PURPLE:5,PINK:8,GRAY:4},m.get("detail").on("change:flags",function(e){var t=r.isUnseen(e.previous("flags")),i=r.isUnseen(e.get("flags"));t!==i&&a.changeUnseenCounter(e.get("folder_id"),i?1:-1)}),m.get("detail").on("remove",function(e){r.isUnseen(e.get("flags"))&&a.changeUnseenCounter(e.get("folder_id"),-1)});var C,S,T,D,A,M=k.get,N=k.getAll,F=k.search;function E(e){var t=c.get("allowHtmlMessages",!0)?"html":"text";if("text"==t)return"text";if(r.authenticity("block",e))return"noimg";var i="trusted"===r.authenticity("box",e),o=r.isWhiteListed(e);return!i&&!o&&(!c.get("allowHtmlImages",!1)||n.is("spam|confirmed_spam|trash",e.folder_id||e.folder))?"noimg":t}function I(e,t){return _.isArray(e)?e.map(function(e){return/^text\/(plain|html)/i.test(e.content_type)?(e.content_type=String(e.content_type).toLowerCase().split(";")[0],h.sanitize(e,t)):e}):[{content:"",content_type:"text/plain",disp:"inline",id:"1",sanitized:!0,size:0,truncated:!1}]}function P(e,t){return e.attachments=I(e.attachments,t),_.isArray(e.nested_msgs)&&(e.nested_msgs=e.nested_msgs.map(function(e){return e.attachments=I(e.attachments,t),e})),e}function L(e,t){var o=m.get("detail");1===(t=t||e).length&&(k.threads.remove(t[0]),k.threads.touch(t[0])),k.trigger("beforedelete",t),_(t).each(function(e){var t=_.cid(e),i=o.get(t);i&&(i.preserve=!1,o.remove(i))})}function q(e){return m.resetFolder(n.getFoldersByType(e))}function z(e,t){_(e).chain().pluck("folder_id").uniq().map(m.getBySorting.bind(m,t)).flatten().each(function(e){e.sorted=!1})}function O(t,i){return C=!0,l.wait(_.wait(100).then(function(){return l.PUT({module:"mail",params:{action:"delete",harddelete:!!i,returnAffectedFolders:!0,timestamp:_.then()},data:l.simplify(t),appendColumns:!1}).done(function(e){_(e.folders).each(function(e,t){a.pool.getModel(t).set(e)}),k.trigger("delete"),k.trigger("deleted-mails",t),_(t).each(function(e){k.trigger("remove:"+_.ecid(e),e)}),n.is("trash",t[0].folder_id)?k.trigger("deleted-mails-from-trash"):i||q("trash")}).fail(function(){k.trigger("refresh.all")}).always(A)}))}
1function V(e,t,i){try{return(n=[].concat(e)).forEach(function(e){D[_.cid(e)]=!0}),setTimeout(function(){n.forEach(function(e){delete D[_.cid(e)]}),n=null},15e3),C&&!i?(o=e,S=S.concat(o),T.promise()):O(e,i)}finally{L(e,t)}var o,n}k.get=function(o,e){var t,i=_.isObject(o)?_.cid(o):o,n=m.get("detail").get(i),a=!e||void 0===e.cache||e.cache,r="noimg"===o.view||!o.view,s=_.now();return n&&(t=!!n.get("attachments"),a&&!o.src&&t&&r)?$.when(n.toJSON()):(o.view||(o.view=E(_.extend({},o,n&&n.toJSON()))),o.max_size=c.get("maxSize/view",102400),o.process_plain_text=!1,o.pregenerate_previews=String(y),M.call(k,o,!1).done(function(e){var t,i;ox.trigger("timing:mail:load",_.now()-s),o.src||"raw"===o.view||(delete e.cid,t=window.performance?window.performance.now():_.now(),e=P(e,{noImages:"noimg"===o.view}),ox.trigger("timing:mail:sanitize",(window.performance?window.performance.now():_.now())-t),n?(n.set(e),i=n,k.threads.touch(i.toJSON())):m.add("detail",e))}))},k.getAll=function(e,t){return/^default\d+$/.test((e=e||{}).folder)?$.when([]):("from-to"===e.sort&&(e.sort=n.is("sent|drafts",e.folder)?604:603),N.call(this,e,t))},k.search=function(e,t){return"from-to"===t.sort&&(t.sort=n.is("sent|drafts",t.folder)?604:603),F.call(this,e,t)},k.remove=(C=!1,S=[],T=$.Deferred(),D={},A=_.debounce(function(){S.length?(O(S).done(T.resolve).fail(T.reject).fail(function(e,t){"MSG-0039"===t.code&&k.trigger("delete:fail:quota",t,e)}.bind(null,S)),S=[],T=$.Deferred()):C=!1},5e3),V.getRecentlyDeleted=function(){return D},V.isRecentlyDeleted=function(e){return!!D[e]},V),k.archive=function(t){if(_.isArray(t)&&0!==t.length)return L(t),l.wait(l.PUT({module:"mail",params:{action:"archive",timestamp:_.then()},data:l.simplify(t)}).done(function(e){_(_(e).pluck("created")).contains(!0)?n.reload().then(function(){return c.reload()}).done(function(){a.refresh(),k.trigger("refresh.all")}):a.reload(_(e).pluck("id")),k.trigger("archive",t)}))},k.archiveFolder=function(e,t){return t=_.extend({action:"archive_folder",folder:e,days:90},t),l.PUT({module:"mail",params:t,appendColumns:!1}).done(function(){a.refresh(),k.trigger("refresh.all"),k.trigger("archive-folder",e)})},k.getAllThreads=function(e,t){return e=e||{},e=$.extend(e,{action:"threadedAll",columns:e.columns||"601,600,611,102",sort:e.sort||"661",sortKey:"threaded-"+(e.sort||"661"),konfetti:!0,order:e.order||"desc",includeSent:!n.is("sent|drafts",e.folder),cache:!1,deleted:x,max:e.max||500}),N.call(this,e,t,null,!1)};function R(t,i,o){var n=!1,a=i.folder_id||i.folder;return t=_.isArray(t)?t:[t],l.pause(),_(t).map(function(e){var t=e.folder||e.folder_id;return a&&a!==t&&(n=!0),l.PUT({module:"mail",params:{action:o||"update",id:e.id,folder:t,timestamp:_.then()},data:i,appendColumns:!1})}),l.resume().then(function(e){return _(t).each(function(e){k.trigger("update:"+_.ecid(e),e)}),n&&k.trigger("move"),"copy"===o||n?{list:t,response:e}:(k.trigger("update:after"),t)})}function B(e,t){return L(e),q(t?"spam":"inbox"),l.pause(),_(e).map(function(e){return l.PUT({module:"mail",params:{action:"update",id:e.id,folder:e.folder_id,timestamp:_.then()},data:{flags:k.FLAGS.SPAM,value:t},appendColumns:!1})}),a.reload(e[0].folder_id,n.getFoldersByType(t?"spam":"inbox")),l.resume()}function U(i,o,n){return m.resetFolder(n),l.wait(R(o,{folder_id:n},i).then(function(e){k.trigger(i,o,n),a.reload(n,o);var t=_(e.response).find(function(e){return!!e.error});return t?(k.trigger("refresh.all"),$.Deferred().reject(t.error)):"copy"===i?_(e.response).pluck("data"):o}))}k.update=function(){console.error("Do not call this directly because mail is so special")},k.on("not-found",function(){k.trigger("refresh.list")}),k.expunge=function(e){var t=_(m.getByFolder(e)).chain().map(function(e){return e.filter(function(e){return r.isDeleted(e.attributes)})}).flatten().pluck("cid").compact().value();return k.trigger("beforeexpunge",t),_(m.getByFolder(e)).each(function(e){e.set(e.filter(function(e){return!r.isDeleted(e.toJSON())}))}),l.PUT({module:"mail",appendColumns:!1,params:{action:"expunge"},data:[e]}).done(function(){a.reload(e)})},a.on({"before:clear":function(e){_(m.getByFolder(e)).each(function(e){e.reset([])})}
1,"clear remove:mail":function(){var e=n.getFoldersByType("trash");_(e).each(function(e){a.list(e,{cache:!1}),_(m.getByFolder(e)).invoke("expire")})},"changesAfterReloading:mail":function(e){(_(e.changed).has("unread")||_(e.changed).has("total"))&&(_(m.getByFolder(e.id)).invoke("expire"),k.trigger("changesAfterReloading"))}}),k.changeColor=function(e,t){return e=[].concat(e),t=String(t),_(e).each(function(e){e.color_label=t,m.propagate("change",{id:e.id,folder_id:e.folder_id,color_label:parseInt(t,10)||0}),k.threads.touch(e),k.trigger("update:"+_.ecid(e),e)}),l.wait(R(e,{color_label:t})).done(function(){z(e,102)})},k.flag=function(t,i){return t=[].concat(t),_.isUndefined(i)&&(i=_(t).reduce(function(e,t){return!0===e||!r.isFlagged(t)},!1)),_(t).each(function(e){e.flags=i?8|e.flags:-9&e.flags,m.propagate("change",{id:e.id,folder_id:e.folder_id,flags:e.flags}),k.threads.touch(e),k.trigger("update:"+_.ecid(e),e),k.trigger("refresh.flag",t)}),R(t,{flags:k.FLAGS.FLAGGED,value:i}).done(function(){z(t,651),a.reload(t)})},k.markUnread=function(t){return t=[].concat(t),_(t).each(function(e){e.flags=-33&e.flags,m.propagate("change",{id:e.id,folder_id:e.folder_id,flags:e.flags}),k.threads.touch(e),k.trigger("update:"+_.ecid(e),e),k.trigger("refresh.unseen",t)}),R(t,{flags:k.FLAGS.SEEN,value:!1}).done(function(){z(t,651),a.reload(t),k.trigger("after:refresh.unseen",t)})},k.markRead=function(t){t=[].concat(t);var e=!n.is("spam|confirmed_spam|trash",t[0].folder_id);return _(t).each(function(e){e.flags=32|e.flags,m.propagate("change",{id:e.id,folder_id:e.folder_id,flags:e.flags,unseen:!1}),k.threads.touch(e),k.trigger("update:"+_.ecid(e),e),k.trigger("refresh.seen",t),k.trigger("update:set-seen",t)}),R(t,{flags:k.FLAGS.SEEN,value:!0,collect_addresses:e}).done(function(){z(t,651),a.reload(t),k.trigger("after:refresh.seen",t)})},k.allSeen=function(i){return m.get("detail").each(function(e){var t=e.toJSON();t.folder_id===i&&r.isUnseen(t)&&(m.propagate("change",{id:t.id,folder_id:t.folder_id,flags:32|t.flags}),k.threads.touch(t))}),k.trigger("update:set-seen",i),l.PUT({module:"mail",params:{action:"all_seen",folder:i},appendColumns:!1}).done(function(){k.trigger("after:all-seen",i),a.reload(i)})},k.markSpam=function(e){return B(e,!0)},k.noSpam=function(e){return B(e,!1)},k.move=function(e,t,i){try{return U("update",e,t)}finally{L(e,i)}},k.moveAll=function(e,t){return _(m.getByFolder(e)).each(function(e){e.reset([]),e.setComplete(!0)}),l.wait(l.PUT({module:"mail",appendColumns:!1,params:{action:"move_all"},data:{source:e,target:t}})).done(function(){a.reload([e,t])})},k.copy=function(e,t){return U("copy",e,t)},k.autosave=function(e){k.trigger("before:autosave",{data:e});try{var t={action:"autosave",lineWrapAfter:0};return e.security&&e.security.decrypted&&(t.decrypt=!0,e.security.authentication&&(t.authToken=e.security.authentication)),l.wait(l.PUT({module:"mail",params:t,data:e,appendColumns:!1}).then(function(e){var t=n.getFoldersByType("drafts");return m.resetFolder(t),a.reload(t),k.trigger("autosave"),e}))}finally{e.msgref&&L(r.parseMsgref(k.separator,e.msgref))}},k.keepalive=function(e){return l.GET({module:"file",params:{action:"keepalive",id:e}})},k.getUnmodified=function(e){if("folder_id"in e||"folder"in e)return this.get({action:"get",id:e.id,folder:e.folder||e.folder_id,view:"html",decrypt:e.security&&e.security.decrypted},!1).then(P);if("parent"in e){var t=e.id,i=e.parent;return this.get({action:"get",id:e.parent.id,folder:e.parent.folder||e.parent.folder_id,view:"html",decrypt:e.security&&e.security.decrypted},!1).then(function(e){return _.chain(e.nested_msgs).filter(function(e){return e.id===t&&(e.parent=i,!0)}).first().value()}).then(P)}return console.error("api.getUnmodified(). Invalid case.",e),$.Deferred().resolve(e)},k.getSource=function(e){return this.get({action:"get",id:e.id,src:!0,folder:e.folder||e.folder_id,view:"html",embedded:!1},!1)},k.fetchTextPreview=function(e){return l.fixList(e,l.PUT({module:"mail",params:{action:"list",columns:"600,601,663",timezone:"utc",deleted:x},data:l.simplify(e)})).then(function(e){var t={};return _(e).each(function(e){t[_.cid(e)]=e.text_preview||""}),t})},k.saveAttachments=function(e,i){return i=i||t.get("folder/infostore"),e=_.isArray(e)?e:[e],l.pause(),_(e).each(function(e){var t={action:"attachment",id:e.mail.id,folder:e.mail.folder_id,dest_folder:i,attachment:e.id,decrypt:e.security&&e.security.decrypted};e.security&&e.security.authentication&&(t.cryptoAuth=e.security.authentication),e.reEncrypt&&(t.encrypt=!0),l.PUT({module:"mail",params:t,data:{folder_id:i,description:u("Saved mail attachment")},appendColumns:!1})}
1),l.resume().done(function(){require(["io.ox/files/api"],function(e){e.pool.resetFolder(i),e.trigger("add:file")})})},k.getUrl=function(e,t,i){var o,n=_.extend({scaleType:"contain",session:!0},i),a=ox.apiRoot+"/mail";if("zip"===t)return o=_(e).first(),a+"?"+$.param({action:"zip_attachments",folder:(o.parent||o.mail).folder_id,id:(o.parent||o.mail).id,attachment:_(e).pluck("id").join(","),decrypt:o.security&&o.security.decrypted,session:ox.session});if("eml:reference"===t)return this.getUrl(_([].concat(e)).first().parent,"eml");if("eml"===t)return e=[].concat(e),o=_(e).first(),1<e.length?a+"?"+$.param({action:"zip_messages",folder:o.folder_id,id:_(e).pluck("id").join(","),session:ox.session}):a+=(o.subject?"/"+encodeURIComponent(o.subject.replace(/[\\:/]/g,"_")+".eml"):"")+"?"+$.param($.extend(k.reduce(o),{action:"get",src:1,save:1,session:ox.session}));if(e.space)return a=ox.apiRoot+"/mail/compose/"+e.space+"/attachments/"+e.id,n.session&&(a+="?session="+ox.session),a;var r=e.filename?e.filename.replace(/[\\:/]/g,"_").replace(/\(/g,"%28").replace(/\)/,"%29"):void 0,s=n.width&&n.height?"&scaleType="+n.scaleType+"&width="+n.width+"&height="+n.height:"";switch(a+=(e.filename?"/"+encodeURIComponent(r):"")+"?"+$.param({action:"attachment",folder:(e.parent||e.mail).folder_id,id:(e.parent||e.mail).id,attachment:e.id,user:ox.user_id,context:ox.context_id,sequence:1,session:ox.session}),e.security&&e.security.decrypted&&(a+="&decrypt=true",e.security.authentication&&(a+="&cryptoAuth="+encodeURIComponent(e.security.authentication))),t){case"view":case"open":a+="&delivery=view"+s;break;case"download":a+="&delivery=download"}return a},k.getNestedMail=function(e){return l.GET({module:"mail",params:{action:"attachment",folder:(e.parent||e.mail).folder_id,id:(e.parent||e.mail).id,attachment:e.id,as_json:!0}})};var j,H,W=0;function G(){document.title=(H=!H)?u("New mail"):document.customTitle}function J(){document.customTitle&&(document.title=document.customTitle),j&&(clearInterval(j),j=null)}function K(e){return e=String(e).replace(/^thread\./,""),m.get("detail").get(e)}function Y(e){return e.id=e.original_id,e.folder_id=e.original_folder_id,32!=(32&e.flags)&&!n.is("spam|confirmed_spam|trash",e.folder_id)}function X(e){return!r.isDeleted(e)}return k.checkInbox=function(){if(ox.openedInBrowserTab)return $.Deferred().reject();var i=c.get("notificationsForExternalInboxes",!1)?n.getFoldersByType("inbox"):["default0/INBOX"];if(p.has("websocket")&&(i=_(i).without("default0/INBOX")),!i.length)return $.Deferred().reject();var e=_(i).map(function(e){return l.GET({module:"mail",params:{action:"all",folder:e,columns:"610,600,601,611,661,603",unseen:"true",deleted:"false",sort:"
1661",order:"desc",limit:100,timezone:"utc"}})});return $.when.apply($,e).then(function(e){e=1===i.length?e:_(_(arguments).map(function(e){return e[0]})).flatten();var t=_(e).filter(function(e){return e.date>W&&2!=(2&e.flags)});return k.trigger("new-mail",t,e),0<t.length?(W=t[0].date,k.newMailTitle(!0)):W=(new moment).valueOf(),{unseen:e,recent:t||[]}})},k.refresh=function(){if(ox.online&&p.has("webmail")&&!ox.openedInBrowserTab)return k.checkInbox().always(function(){k.trigger("refresh.all")})},k.getDefaultFolder=function(){return a.getDefaultFolder("mail")},k.getAccountIDFromFolder=function(e){return/^default(\d*)\b/.exec(e)[1]},k.beautifyMailText=function(e,t){return t=t||500,e=String(e).replace(/(\r\n|\n|\r)/gm,"").substr(0,t).replace(/-{3,}/g,"---").replace(/<br\s?\/?>(&gt;)+/gi," ").replace(/<br\s?\/?>/gi," ").replace(/<[^>]+(>|$)/g,"").replace(/(http(s?):\/\/\S+)/i,'<a href="$1" target="_blank" rel="noopener">http$2://...</a>').replace(/&#160;/g," ").replace(/\s{2,}/g," "),$.trim(e)},k.importEML=function(e){var t=e.folder||k.getDefaultFolder(),i=new FormData;return i.append("file",e.file),l.UPLOAD({module:"mail",params:{action:"import",folder:t,force:!0},data:i,fixPost:!0}).done(function(){m.resetFolder(t),a.reload(t),k.trigger("refresh.all")})},k.ack=function(r){var s=_.first(r.to)||[];return delete r.to,n.getAddressesFromFolder(r.folder).then(function(e){var t=_.find(e.aliases,function(e){return e[1]===s[1]}),i=t||e.primary,o=i[0],n=i[1],a=o?'"'+o+'" <'+n+">":n;return l.PUT({module:"mail",params:{action:"receipt_ack"},data:_.extend({from:a},r)})})},c.on("change:allowHtmlMessages change:allowHtmlImages change:isColorQuoted",function(){m.get("detail").each(function(e){e.unset("attachments",{silent:!0}),e.unset("security",{silent:!0})})}),c.on("change:allowHtmlMessages",function(e){k.options.requests.get.view=e?"noimg":"text"}),n.on("refresh.all create:account",function(){a.list("1",{cache:!1}).done(function(){a.pool.unfetch()})}),a.on("create",function(e){"mail"===e.module&&k.refresh()}),k.newMailTitle=(j=null,H=!1,$(d).on("visibility-changed",function(e,t){!1===t.currentHiddenState&&J()}),function(e){!_.device("smartphone")&&d.isHidden&&(!0===e?j=j||setInterval(G,1500):J())}),k.pool=m,k.resolve=function(e,t){return t?k.threads.resolve(e):_(e).chain().map(K).compact().invoke("toJSON").value()},k.threads={hash:{},reverse:{},collection:{},contains:function(e){return!!this.hash[e]},getModels:function(e){if(!_.isString(e))return[];var t=this.hash[e]||[e];return _.isEmpty(this.collection)&&(this.collection=m.get("detail")),_(t).chain().map(this.collection.get,this.collection).compact().value()},get:function(e){return _(this.getModels(e)).chain().invoke("toJSON").map(function(e,t){return e.index=t,e}).value()},head:function(e){return e.head||e},touch:function(e){e=_.isString(e)?e:_.cid(e);var t=this.reverse[e];t&&t!==e&&m.propagate("change",_.extend({timestamp:_.now()},_.cid(t)))},resolve:function(e){return _(e).chain().map(function(e){e=String(e).replace(/^thread\.(.+)$/,"$1");var t=k.threads.get(e);return 0<t.length&&t}).flatten().compact().value()},clear:function(){this.hash={},this.reverse={}},add:function(e){var t=_.cid(e);this.hash[t]=e.thread||[t],_(this.hash[t]).each(function(e){this.reverse[e]=t},this)},remove:function(e){e=_.isString(e)?e:_.cid(e);var t=this.reverse[e];t&&this.hash[t]&&(this.hash[t]=_(this.hash[t]).without(e))},size:function(e){e=_.isString(e)?e:_.cid(e);var t=this.reverse[e];return t?(this.hash[t]||[e]).length:1},subject:function(e){return this.collection.get?(e=_.isString(e)?e:_.cid(e),t=this.reverse[e],i=_(this.hash[t]).first(),(o=this.collection.get(i))&&o.get("subject")||(o=this.collection.get(t))?o.get("subject"):""):"";var t,i,o},append:function(e,t){var i=this.reverse[e];i&&((this.hash[i]=this.hash[i]||[]).unshift(t),this.touch(i))}},k.pool.getDependentModels=function(e){return k.threads.getModels(e)},k.allMessagesFolder=c.get("allMessagesFolder","default0/virtual/all"),k.allUnseenMessagesFolder=c.get("allUnseenMessagesFolder"),k.getAllUnseenMessages=function(){return l.GET({module:"mail",params:{action:"all",folder:k.allUnseenMessagesFolder||k.allMessagesFolder,columns:"600,654,655",sort:"661",order:"desc",unseen:!k.allUnseenMessagesFolder,deleted:!!k.allUnseenMessagesFolder,timezone:"utc"}})},k.collectionLoader=new s({module:"mail",getQueryParams:function(e){return"virtual/all-unseen"===e.folder?{action:"all",folder:k.allUnseenMessagesFolder||k.allMessagesFolder,columns:l.defaultColumns.mail.unseen,sort:"661",order:"desc",unseen:!k.allUnseenMessagesFolder,deleted:!!k.allUnseenMessagesFolder,timezone:"utc"}:!0===e.thread?{action:"threadedAll",folder:e.folder,categoryid:e.category_id||e.categoryid,columns:l.defaultColumns.mail.all,sort:e.sort||"661",order:e.order||"desc",includeSent:!n.is("sent|drafts",e.folder),max:(e.offset||0)+300,deleted:x,timezone:"utc"}:{action:"all",folder:e.folder,categoryid:e.category_id||e.categoryid,columns:l.defaultColumns.mail.all,sort:e.sort||"661",order:e.order||"desc",deleted:x,timezone:"utc"}},filter:function(e){return!k.remove.isRecentlyDeleted(_.cid(e))},fail:function(e){return k.trigger("error error:"+e.code,e),e},httpGet:function(e,t){var i=k.allMessagesFolder&&t.folder===k.allMessagesFolder,o=k.allUnseenMessagesFolder&&t.folder===k.allUnseenMessagesFolder,n=i&&!0===t.unseen||o;return n&&(t.limit="0,250"),l.GET({module:e,params:t}).then(function(e){return n?_(e).filter(Y):e})},PRIMARY_PAGE_SIZE:c.get("listview/primaryPageSize",50),SECONDARY_PAGE_SIZE:c.get("listview/secondaryPageSize",200)}),k.processThreadMessage=function(e){var t,i=function(e){if(e.thread)return e.thread;var t=k.threads.get(_.cid(e))||{};return t&&1<t.length?t:[e]}(e);0===(i=_(t=i).filter(X)).length&&(i=t.slice(0,1));
1var o=_(i).last(),n=i.length;e.head=_({threadSize:n}).chain().extend(e).omit("index").value(),_.extend(e,o),e.thread=_(i).map(_.cid),e.threadSize=n,o.thread=_(i).map(_.cid),k.threads.add(e),k.pool.add("detail",i)},k.collectionLoader.noSelect=function(e){return!!/^default\d+$/.test(e.folder)||(!k.allMessagesFolder||e.folder!==k.allMessagesFolder)&&((!k.allUnseenMessagesFolder||e.folder!==k.allUnseenMessagesFolder)&&!a.pool.getModel(e.folder).can("read"))},k.collectionLoader.each=function(e,t,i,o){e["X-Open-Xchange-Share-URL"]&&!e.headers&&(e.headers={"X-Open-Xchange-Share-URL":e["X-Open-Xchange-Share-URL"]},delete e["X-Open-Xchange-Share-URL"]),"threadedAll"===o.action?k.processThreadMessage(e):k.pool.add("detail",e)},k.mailServerDownMessage=u("Unable to connect to mail server. Possible reasons: The mail server is (temporarily) down or there are network connection problems. Please try again in a few minutes."),k}),define("io.ox/mail/api-legacy",["io.ox/core/http","io.ox/core/folder/api","io.ox/contacts/api","io.ox/core/api/account","settings!io.ox/mail"],function(p,h,f,g,s){function i(e,t,i){var o=this,n="edit"===e;"alternative"===i&&(i="text/plain"===t.content_type?"text":"html"),"html"!==(i="text/html"===(i="text/plain"===(i=$.trim(i||"text").toLowerCase())?"text":i)?"html":i)||"text/plain"!==t.content_type||n||(i="text"),"text"===i&&"text/plain"===t.content_type&&n&&(i="raw");var a=t.attachOriginalMessage||"text"===i&&_.device("touch")&&!0===s.get("attachOriginalMessage",!1),r=m.csid();return p.PUT({module:"mail",params:$.extend({},{action:n?"get":e||"",attachOriginalMessage:a,view:i,setFrom:/reply|replyall|forward/.test(e),csid:r,embedded:t.embedded,max_size:t.max_size,decrypt:t.security&&t.security.decrypted,process_plain_text:!1}),data:_([].concat(t)).map(function(e){return o.reduce(e)}),appendColumns:!1}).then(function(e){var t="",i="";return e.csid=r,e.attachments&&e.attachments.length?""===e.attachments[0].content||("text/html"===e.attachments[0].content_type?((i=document.createElement("DIV")).innerHTML=e.attachments[0].content,_(i.getElementsByTagName("BLOCKQUOTE")).each(function(e){e.removeAttribute("style")}),t=i.innerHTML,i=null):t=$.trim(e.attachments[0].content)):e.attachments=e.attachments||[{}],e.attachments[0].content=t,e})}var m={SENDTYPE:{NORMAL:0,REPLY:1,FORWARD:2,EDIT_DRAFT:3,DRAFT:4},csid:function(){return _.uniqueId()+"."+_.now()}};function n(e,t){return t?Math.max(0,Math.min(100,Math.round(e/t*100)))/100:0}return m.replyall=function(e,t){return i.call(this,"replyall",e,t)},m.reply=function(e,t){return i.call(this,"reply",e,t)},m.forward=function(e,t){return i.call(this,"forward",e,t)},m.edit=function(e,t){return i.call(this,"edit",e,t)},m.send=function(n,e,t){function i(e){var t=$.trim(e[0]||"").replace(/^["']+|["']+$/g,""),i=String(e[1]||""),o=e[2]||"";return"/TYPE=PLMN"===o&&!/\/TYPE=PLMN$/.test(i)&&(t=null,i+=o),""!==t&&t!==i||(t=null),[t,i]}var o,a,r,s,l=this;(n=_.clone(n)).from=_(n.from).map(i),n.to=_(n.to).map(i),n.cc=_(n.cc).map(i),n.bcc=_(n.bcc).map(i),n.share_attachments&&n.share_attachments.expiry_date&&(n.share_attachments=_.clone(n.share_attachments),n.share_attachments.expiry_date=_.now()+parseInt(n.share_attachments.expiry_date,10)),n.contacts_ids&&(n.datasources=_.chain(n.contacts_ids).map(function(e){return{args:[{"com.openexchange.groupware.contact.pairs":[{folder:e.folder_id,id:e.id}]}],identifier:"com.openexchange.contact"}}).value()),l.trigger("beforesend",{data:n,files:e,form:t}),ox.trigger("mail:send:start",n,e),a=n,r=e,(s=new FormData).append("json_0",JSON.stringify(a)),_(r).each(function(e,t){e.name?s.append("file_"+t,e,e.name):s.append("file_"+t,e)}),o=p.UPLOAD({module:"mail",params:{action:"new",lineWrapAfter:0,force_json_response:!0},data:s,dataType:"json",fixPost:!0});var d=m.SEND_REFRESH_DELAY,c=n.flags===m.FLAGS.DRAFT,u=n.csid;return m.queue.add(u,o.abort),o.done(function(){f.trigger("maybeNewContact"),l.trigger("send",{data:n,files:e,form:t}),ox.trigger("mail:send:stop",n,e),n.share_attachments&&ox.trigger("please:refresh refresh^")}).fail(function(){ox.trigger("mail:send:fail")}).progress(function(e){c||m.queue.update(u,e.loaded,e.total)}).always(function(){m.queue.remove(u)}).then(function(e){if(setTimeout(function(){var e=_(["inbox","sent","drafts"]).chain().map(function(e){var t=g.getFoldersByType(e);return l.pool.resetFolder(t),t}
1).flatten().value();h.multiple(e,{cache:!1}),l.trigger("refresh.all")},d),_.isObject(e))return e;var t=e.indexOf("{"),i=e.lastIndexOf("}");return-1<t&&-1<i?JSON.parse(e.substr(t,i-t+1)):{}}).then(function(e){return e.error?$.Deferred().reject(e).promise():(e.data&&(i=(t=_(e.data.toString().split(l.separator))).last(),o=t.without(i).join(l.separator),$.when(g.getUnifiedMailboxName(),g.getPrimaryAddress()).done(function(e,t){var i=!1;_.chain(_.union(n.to,n.cc,n.bcc)).each(function(e){e[1]!==t[1]||(i=!0)}),setTimeout(function(){null!==e?h.refresh():i?h.reload(o,g.getInbox()):h.reload(o)},d)})),e);var t,i,o})},m.SEND_REFRESH_DELAY=5e3,m.queue={collection:(new Backbone.Collection).on("add remove change:pct",function(){var t,i=0,o=0;this.each(function(e){i+=e.get("loaded"),o+=e.get("total"),t=e.get("abort")}),this.trigger("progress",{count:this.length,loaded:i,pct:n(i,o),total:o,abort:t})}),add:function(e,t){this.collection.add(new Backbone.Model({id:e,loaded:0,pct:0,total:0,abort:t}))},remove:function(e){var t=this.collection.get(e);this.collection.remove(t)},update:function(e,t,i){var o=this.collection.get(e);o&&o.set({loaded:t,pct:n(t,i),total:i})}},m}),define("io.ox/mail/listview",["io.ox/mail/common-extensions","io.ox/core/extensions","io.ox/mail/util","io.ox/mail/api","io.ox/core/api/account","
1io.ox/core/tk/list","io.ox/core/tk/list-contextmenu","io.ox/core/folder/api","gettext!io.ox/mail","io.ox/mail/view-options","less!io.ox/mail/style"],function(i,r,s,l,e,o,t,n,a){return r.point("io.ox/mail/listview/item").extend({id:"default",index:100,draw:function(e){var t,i,o,n,a;"threadSize"in(t=e.data)||(t.threadSize=Math.max(1,_(t.thread).reduce(function(e,t){return e+(s.isDeleted(t)?0:1)},0))),i=e.data,!s.isDeleted(i)||(o=_(i.thread).findWhere(function(e){return!s.isDeleted(e)}))&&(i=_.extend(i,o)),e.app?(a="horizontal"===(n=e.app.props.get("layout"))||"list"===n,this.closest(".list-item").toggleClass("small",a),r.point("io.ox/mail/listview/item/"+(a?"small":"default")).invoke("draw",this,e)):r.point("io.ox/mail/listview/item/default").invoke("draw",this,e)}},{id:"a11y",index:200,draw:i.a11yLabel}),r.point("io.ox/mail/listview/item/small").extend({id:"unread",index:110,draw:i.unreadClass},{id:"flagged",index:115,draw:i.flaggedClass},{id:"deleted",index:120,draw:i.deleted},{id:"col1",index:100,draw:function(e){var t=$('<div class="list-item-column column-1">');i.envelope.call(t,e),this.append(t)}},{id:"col2",index:200,draw:function(e){var t=$('<div class="list-item-column column-3">');i.paperClip.call(t,e),this.append(t)}},{id:"col3",index:300,draw:function(e){var t=$('<div class="list-item-column column-3">');i.priority.call(t,e),this.append(t)}},{id:"col4",index:400,draw:function(e){var t=$('<div class="list-item-column column-4">');r.point("io.ox/mail/listview/item/small/col4").invoke("draw",t,e),this.append(t)}},{id:"col5",index:500,draw:function(e){var t=$('<div class="list-item-column column-5">');i.answered.call(t,e),0===t.children().length&&i.forwarded.call(t,e),this.append(t)}},{id:"col6",index:600,draw:function(e){var t=$('<div class="list-item-column column-6">');r.point("io.ox/mail/listview/item/small/col6").invoke("draw",t,e),this.append(t)}},{id:"col7",index:700,draw:function(e){var t=$('<div class="list-item-column column-7">');r.point("io.ox/mail/listview/item/small/col7").invoke("draw",t,e),this.append(t)}}),r.point("io.ox/mail/listview/item/small/col4").extend({id:"from",index:100,draw:i.from}),r.point("io.ox/mail/listview/item/small/col6").extend({id:"account",index:100,draw:i.account},{id:"original-folder",index:150,draw:i.folder},{id:"flag",index:200,draw:i.flag},{id:"optionalSize",index:250,draw:i.size},{id:"thread-size",index:300,draw:i.threadSize},{id:"shared-attachement",index:450,draw:i.sharedAttachement},{id:"colorflag",index:200,draw:i.colorflag},{id:"pgp-encrypted",index:600,draw:i.pgp.encrypted},{id:"pgp-signed",index:600,draw:i.pgp.signed},{id:"subject",index:1e3,draw:i.subject},{id:"text-preview",index:1100,draw:function(e){this.append($('<span class="text-preview inline gray">').text(e.data.text_preview||""))}}),r.point("io.ox/mail/listview/item/small/col7").extend({id:"date",index:100,draw:i.date}),r.point("io.ox/mail/listview/item/default").extend({id:"picture",before:"row1",draw:function(e){e.app&&e.app.props.get("contactPictures")&&i.picture.call(this,e)}},{id:"row1",index:100,draw:function(e){var t=$('<div class="list-item-row">');r.point("io.ox/mail/listview/item/default/row1").invoke("draw",t,e),this.append(t)}},{id:"unread",index:110,draw:i.unreadClass},{id:"flagged",index:115,draw:i.flaggedClass},{id:"deleted",index:120,draw:i.deleted},{id:"row2",index:200,draw:function(e){var t=$('<div class="list-item-row">');r.point("io.ox/mail/listview/item/default/row2").invoke("draw",t,e),this.append(t)}},{id:"row3",index:300,draw:function(e){var t;e.app&&e.app.useTextPreview&&(t=$('<div class="list-item-row">'),r.point("io.ox/mail/listview/item/default/row3").invoke("draw",t,e),this.append(t))}}),r.point("io.ox/mail/listview/item/default/row1").extend({id:"date",index:100,draw:i.date},{id:"from",index:300,draw:i.from}),r.point("io.ox/mail/listview/item/default/row2").extend({id:"account",index:100,draw:i.account},{id:"original-folder",index:150,draw:i.folder},{id:"colorflag",index:200,draw:i.colorflag},{id:"flag",index:210,draw:i.flag},{id:"optionalSize",index:250,draw:i.size},{id:"thread-size",index:300,draw:i.threadSize},{id:"paper-clip",index:400,draw:i.paperClip},{id:"shared-attachement",index:350,draw:i.sharedAttachement},{id:"pgp-encrypted",index:450,draw:i.pgp.encrypted},{id:"pgp-signed",index:450,draw:i.pgp.signed},{id:"priority",index:500,draw:i.priority},{id:"subject",index:1e3,draw:function(e){i.subject.call(this,e);var t=this.find(".flags");i.unread.call(t,e),i.answered.call(t,e),i.forwarded.call(t,e)}}),r.point("io.ox/mail/listview/item/default/row3").extend({id:"text-preview",index:100,draw:function(e){this.append($('<div class="text-preview multiline gray">').text(e.data.text_preview||""))}}),r.point("io.ox/mail/listview/notification/empty").extend({id:"default",index:100,draw:i.empty}),r.point("io.ox/mail/listview/notification/error").extend({id:"default",index:100,draw:function(e){this.append($('<i class="fa fa-exclamation-triangle" aria-hidden="true">'),$.txt(a("Error: Failed to load messages")),$('<button type="button" class="btn btn-link">').text(a("Retry")).on("click",{baton:e},function(e){e.data.baton.listView.load()})),ox.trigger("yell:error",e.error)}}),o.extend(t).extend({ref:"io.ox/mail/listview",initialize:function(e){var t;o.prototype.initialize.call(this,e),this.$el.addClass("mail-item"),this.on("collection:load",this.lookForUnseenMessage),this.$el.on("click mousedown",".selectable .seen-unseen-indicator",this.markRead.bind(this)),e&&e.app&&(t=e.app.props,_.extend(this.options,t.pick("thread","sort")),this.listenTo(t,"change:sort",function(e,t){this.options.sort=t})),this.$el.on("scrollend",this.fetchTextPreview.bind(this)),this.on("collection:load collection:reload",this.fetchTextPreview),this.selection&&(this.selection.resolve=function(){return l.resolve(this.get(),this.view.app.isThreaded())})},fetchTextPreview:function(){var e,t,i,o,n,a,r;this.app&&this.app.useTextPreview()&&(t=(e=this.el.scrollTop)+this.el.offsetHeight,i=this.getItems().outerHeight(),o=Math.floor(0,e/i),n=Math.ceil(t/i),r=this.collection.slice(o,n),a=[],r=_(r).filter(function(e){var t=_(l.threads.get(e.cid)).first(),i=t&&!t.text_preview;return i&&!e.hasNoPreview&&a.push(_(t).pick("id","folder_id")),i}),a.length&&l.fetchTextPreview(a).done(function(o){_(r).each(function(e){var t=_(l.threads.get(e.cid)).first(),i=_.cid(t);
1e.set("text_preview",o[i]),""===o[i]&&(e.hasNoPreview=!0)})}))},lookForUnseenMessage:function(){var e,t;this.collection.length&&(e=this.collection.at(0).get("folder_id"),t=this.collection.reduce(function(e,t){return e+s.isUnseen(t.get("flags"))?1:0},0),n.setUnseenMinimum(e,t))},markRead:function(e){var t=$(e.currentTarget).closest(".selectable").data("cid"),i=l.threads.get(t);_(i).reduce(function(e,t){return e||s.isUnseen(t)},!1)?l.markRead(i):l.markUnread(i),e.preventDefault(),e.stopPropagation()},reprocessThread:function(e){var t,i=l.threads.get(e.cid);i.length&&e.get("thread")&&i.length!==e.get("thread").length&&(_.each(i,function(e){delete e.head}),t=_.extend(e.toJSON(),i[0],{thread:i,threadSize:i.length}),l.processThreadMessage(t),e.set(t,{silent:!0}))},map:function(e){if(!this.app||!this.app.isThreaded())return e.toJSON();this.reprocessThread(e);var i=l.threads.head(e.toJSON()),t=l.threads.get(e.cid),o=_(t).reduce(function(e,t){return e||s.isUnseen(t)},!1);i.flags=o?-33&i.flags:32|i.flags;var n=_(t).reduce(function(e,t){return e||s.isFlagged(t)},!1);i.flags=n?8|i.flags:-9&i.flags;var a=_(t).reduce(function(e,t){return e||parseInt(t.color_label||0,10)},0);return i.color_label=a,i.thread=t.map(function(e,t){return _(e).pick(_(i.thread[t]).keys())}),i.subject=l.threads.subject(i)||i.subject||"",i},getCompositeKey:function(e){return this.options.threaded?"thread."+e.cid:e.cid},getContextMenuData:function(e){return this.app.getContextualData(e)}})}),define("io.ox/core/tk/list-control",["io.ox/core/tk/list","io.ox/core/extensions"],function(e,a){function d(e,t,i){void 0===t?e.settings.remove("listview/"+i+"/"+_.display()):e.settings.set("listview/"+i+"/"+_.display(),t),e.settings.save()}var c=Backbone.View.extend({className:"abs list-view-control",events:{"mousedown .resizebar:not(.vertical)":"onResize","mousedown .resizebar.vertical":"onVerticalResize"},applySizeConstraints:function(){var e,t,i,o,n,a,r,s,l;"list"!==this.listView.app.props.get("layout")&&this.$el.is(":visible")&&(t=(e=this.$el.parent()).siblings(".rightside"),i=e.parent(),o=this.$(".resizebar.vertical").is(":visible"),0!==t.length&&(n=o?p(e.height()+t.height(),i.height()):p(e.width()+t.width(),i.width()),a=u(o?c.minHeight:c.minWidth,n),r=u(o?c.maxHeight:c.maxWidth,n),s=o?e.height():e.width(),l=Math.max(a,Math.min(s,r)),o&&e.height()===l||!o&&e.width()===l||(e.css(o?"height":"width",l),t.css(o?"top":"left",l),d(this.listView.app,l,o?"height":"width"))))},onResize:function(e){e.preventDefault();var t,i=this.$el.parent(),o=i.siblings(".rightside"),n=e.pageX-i.width(),a=i.width()+o.width(),r=u(c.minWidth,a),s=u(c.maxWidth,a),l=this.listView.app;0!==o.length&&$(document).on({"mousemove.resize":function(e){t=$(e.target).is("iframe")?Math.max(r,Math.min($(e.target).offset().left+e.pageX-n,s)):Math.max(r,Math.min(e.pageX-n,s)),i.css("width",t),o.css("left",t)},"mouseup.resize":function(){$(this).off("mousemove.resize mouseup.resize").trigger("resize"),d(l,t,"width")}})},onVerticalResize:function(e){e.preventDefault();var t,i=this.$el.parent(),o=i.siblings(".rightside"),n=e.pageY-i.height(),a=i.height()+o.height(),r=u(c.minHeight,a),s=u(c.maxHeight,a),l=this.listView.app;0!==o.length&&$(document).on({"mousemove.resize":function(e){t=Math.max(r,Math.min(e.pageY-n,s)),i.css("height",t),o.css("top",t)},"mouseup.resize":function(){$(this).off("mousemove.resize mouseup.resize").trigger("resize"),d(l,t,"height")}})},resizable:function(){var e;_.device("touch")||(this.$el.append('<div class="resizebar">'),this.$el.append('<div class="resizebar vertical">'),e=this.listView.app.getWindow(),$(window).on("resize.list-control-"+e.id,_.debounce(this.applySizeConstraints.bind(this),100)),e.one("beforequit",function(){$(window).off("resize.list-control-"+e.id)}))},initialize:function(e){this.listView=e.listView,this.id=e.id||"default",this.options=e}
1,render:function(){var e=$('<ul class="toolbar generic-toolbar top" role="toolbar">'),t=a.point(this.id+"/list-view/toolbar/top"),i=$('<ul class="toolbar generic-toolbar visual-focus bottom" role="toolbar">'),o=a.point(this.id+"/list-view/toolbar/bottom"),n=new a.Baton({view:this,app:this.options.app});return t.list().length&&(this.$el.addClass("toolbar-top-visible"),t.invoke("draw",e,n)),o.list().length&&_.device("!smartphone")&&(this.$el.addClass("toolbar-bottom-visible"),o.invoke("draw",i,n)),this.$el.attr({role:"navigation"}).append(e,this.listView.render().$el.addClass("abs"),i),this}});function u(e,t){return"function"==typeof e&&(e=e()),e<0&&(e+=t),e}function p(){return _.chain(arguments).toArray().compact().min().value()}return c.minWidth=270,c.maxWidth=-250,c.minHeight=150,c.maxHeight=-100,c}),define("io.ox/mail/threadview",["io.ox/mail/common-extensions","io.ox/core/extensions","io.ox/mail/api","io.ox/mail/util","io.ox/core/api/backbone","io.ox/mail/detail/view","io.ox/mail/detail/mobileView","io.ox/core/tk/list-dnd","io.ox/core/http","gettext!io.ox/mail","less!io.ox/mail/style","io.ox/mail/listview"],function(e,n,a,r,t,o,s,l,i,d){n.point("io.ox/mail/thread-view").extend({id:"navigation",index:100,draw:function(){this.$el.append($('<nav class="back-navigation generic-toolbar">').append($('<div class="button">').append($('<a href="#" role="button" class="back">').attr("aria-label",d("Back to list")).append($('<i class="fa fa-chevron-left" aria-hidden="true">'),$.txt(" "),$.txt(d("Back")))),$('<div class="position">'),$('<div class="prev-next">').append($('<a href="#" role="button" class="previous-mail">').attr("aria-label",d("Previous message")).append($('<i class="fa fa-chevron-up" aria-hidden="true">')),$('<a href="#" role="button" class="next-mail">').attr("aria-label",d("Next message")).append($('<i class="fa fa-chevron-down" aria-hidden="true">')))).attr("role","navigation"))}}),n.point("io.ox/mail/thread-view").extend({id:"thread-view-list",index:200,draw:function(){this.$el.append($('<div class="thread-view-list scrollable abs">').hide().append($('<div class="thread-view-header">').attr("aria-label",d("Conversation")),this.$messages=$('<div class="thread-view list-view" role="region">')).on("scroll",this.onScrollEnd.bind(this)))}}),n.point("io.ox/mail/thread-view/header").extend({id:"toggle-all",index:100,draw:function(e){e.view.collection.length<=1||this.append($('<a href="#" role="button" class="toggle-all">').append('<i class="fa fa-angle-double-down" aria-hidden="true">').attr("aria-label",d("Open all messages")).tooltip({animation:!1,container:"body",placement:"left",title:d("Open/close all messages")}))}}),n.point("io.ox/mail/thread-view/header").extend({id:"subject",index:200,draw:function(e){var t=1===e.view.collection.length,i=e.view.model.toJSON(),o=e.view.threaded&&a.threads.subject(i)||i.subject;this.append($('<h1 class="subject">').text(r.getSubject(o,t)))}});var c=Backbone.View.extend({tagName:"div",className:"thread-view-control abs",events:{"click .button a.back":"onBack","click .back-navigation .previous-mail":"onPrevious","click .back-navigation .next-mail":"onNext","click .toggle-all":"onToggleAll",keydown:"onKeydown"},empty:function(){this.$messages.empty(),this.$el.scrollTop(0),this.$el.find(".thread-view-list").scrollTop(0).hide(),this.model=null},updateHeader:function(){var e=new n.Baton({view:this}),t=this.$el.find(".thread-view-list > .thread-view-header").empty(),i=1===e.view.collection.length,o=r.getSubject(e.view.model.toJSON(),i);0<this.collection.length&&n.point("io.ox/mail/thread-view/header").invoke("draw",t,e),this.$el.find(".thread-view").toggleClass("multiple-messages",1<this.collection.length).attr("aria-label",o)},updatePosition:function(e){return this.$el.find(".position").text(e),this},togglePrevious:function(e){return this.$el.find(".previous-mail").toggleClass("disabled",!e),this},toggleNext:function(e){return this.$el.find(".next-mail").toggleClass("disabled",!e),this},toggleNavigation:function(e){return this.$el.toggleClass("back-navigation-visible",e),this},onToggle:_.debounce(function(e){var t=0===this.getItems().filter(".expanded").length,i=t?"fa-angle-double-down":"fa-angle-double-up",o=this.$el.find(".toggle-all");o.attr("aria-label",d(t?"Open all messages":"Close all messages")),o.find("i").attr("class","fa "+i),e&&$(e.target).hasClass("expanded")||this.onScrollEnd()},10),onToggleAll:function(e){e.preventDefault();var t=0===this.getItems().filter(".expanded").length;i.pause(),this.collection.each(function(e){this.toggleMail(e.cid,t)},this),i.resume()},toggleMail:function(e,t){var i=this.$messages.children('[data-cid="'+$.escape(e)+'"]').data("view");i&&i.toggle(t)},showMail:function(e){this.toggleMail(e,!0)},autoSelectMail:function(e){if(this.autoSelect){for(var t,i=0;t=this.collection.at(i);i++)if(i===this.collection.length-1||!r.isUnseen(t.toJSON())){if(e)return t.cid;this.showMail(t.cid);break}delete this.autoSelect}else for(var o,n=this.collection.length-1;o=this.collection.at(n);n--)if(0===n||r.isUnseen(o.toJSON())){if(e)return o.cid;this.showMail(o.cid);break}},onScrollEnd:_.debounce(function(){var t=this.$el.find(".thread-view-list");this.getItems().each(function(){var e;$(this).hasClass("placeholder")&&this.offsetTop+$(this).height()>
1t.scrollTop()&&this.offsetTop<t.scrollTop()+t.height()&&((e=$(this).data("view"))&&!e.$el.find("section.body").hasClass("loading")&&(e.placeholder=!1,e.render()))})},100),show:function(e,t){if(e=String(e).replace(/^thread\./,""),!this.model||this.model.cid!==e){var i=a.pool.get("detail"),o=i.get(e);if(!o)return this.empty(),void console.error("ThreadView.show(): Mail not found in pool",e,i);this.model&&this.stopListening(this.model),this.model=o,this.threaded=!!t,this.threaded||delete this.autoSelect,this.listenTo(this.model,"change:thread",this.onChangeModel),this.collection.reset([],{silent:!0}),this.reset()}},reset:function(){var e,t;!this.model||(e=this.threaded?a.threads.get(this.model.cid):[this.model.toJSON()]).length&&(t=0===this.collection.length?"reset":"set",this.collection[t](e))},onReset:function(){0!==this.collection.length?(this.$messages.empty(),this.$el.scrollTop(0),clearTimeout(this.renderItemTimoutId),this.updateHeader(),this.$el.find(".thread-view-list").scrollTop(0).show(),this.nextAutoSelect=this.autoSelectMail(!0),this.$messages.append(this.collection.chain().map(this.renderListItem,this).value()),this.zIndex()):this.empty()},onAdd:function(e){var t=e.get("index"),i=this.getItems(),o=this.renderListItem(e),n=this.$el.data("open");t<i.length?i.eq(t).before(o):this.$messages.append(o),o.position().top<=0&&this.$messages.scrollTop(this.$el.scrollTop()+o.outerHeight(!0)),this.zIndex(),this.updateHeader(),n&&(this.showMail(n),this.$el.data("open",null))},onRemove:function(e){var t=this.getItems(),i=t.filter(function(){return $(this).attr("data-cid")===e.cid}),o=!!i.length&&(i.attr("data-cid")&&t.first().attr("data-cid")),n=this.$messages.scrollTop();0!==i.length&&(i.position().top<n&&this.$messages.scrollTop(n-i.outerHeight(!0)),i.remove(),1===t.length?this.empty():this.updateHeader(),1<t.length&&o&&this.autoSelectMail())},onPoolRemove:function(e){this.collection.remove(e)},onChangeModel:function(){this.reset()},onBack:function(e){e.preventDefault(),this.trigger("back")},onPrevious:function(e){e.preventDefault(),this.trigger("previous")},onNext:function(e){e.preventDefault(),this.trigger("next")},onClick:function(e){var t=$(e.currentTarget).attr("data-cid");this.showMail(t)},onKeydown:function(e){switch(e.which){case 38:e.shiftKey&&this.onNext(e),e.altKey&&this.focusMessage(e,-1);break;case 40:e.shiftKey&&this.onPrevious(e),e.altKey&&this.focusMessage(e,1)}},focusMessage:function(e,t){var i=this.getItems(),o=$(document.activeElement).closest(".list-item"),n=i.index(o);e.preventDefault(),(n+=t)<0||n>=i.length||(o.data("view").toggle(!1),i.eq(n).focus().data("view").toggle(!0),i.eq(n).get(0).scrollIntoView(!0))},initialize:function(e){this.model=null,this.threaded=!0,this.collection=new t.Collection,e=e||{},this.standalone=e.standalone||!1,this.app=e.app,this.listenTo(this.collection,{add:this.onAdd,remove:this.onRemove,reset:this.onReset}),this.listenTo(a.pool.get("detail"),{remove:this.onPoolRemove}),this.$messages=$(),this.$el.data("view",this),this.$el.on("toggle",".list-item",this.onToggle.bind(this)),e.disableDrag||(l.enable({container:this.$el,draggable:!0,selectable:".detail-view-header .contact-picture",simple:!0}),this.$el.on("mouseup",".detail-view-header .contact-picture",function(e){$(e.target).closest("article").focus()}));var i=$.proxy(this.onScrollEnd,this);this.$el.one("remove",function(){$(window).off("resize",i)}),e.app&&this.listenTo(e.app.props,"change:textPreview",function(e,t){this.$el.toggleClass("hide-text-preview",!t),i()}),$(window).on("resize",i)},getItems:function(){return this.$messages.children(".list-item")},render:function(){return this.$el.toggleClass("hide-text-preview",!this.app||!this.app.useTextPreview()),n.point("io.ox/mail/thread-view").invoke("draw",this),this},renderListItem:function(e){var t=this,i=new o.View({supportsTextPreview:!!this.app&&this.app.supportsTextPreviewConfiguration(),tagName:"article",data:e.toJSON(),disable:{"io.ox/mail/detail":"subject"}});return i.on("mail:detail:body:render",function(e){t.trigger("mail:detail:body:render",e)}),i.render(),this.nextAutoSelect===e.cid&&(delete this.nextAutoSelect,i.expand()),i.$el.attr({tabindex:-1})},zIndex:function(){var e=this.getItems(),t=e.length;e.each(function(e){$(this).css("zIndex",t-e)}),this.onScrollEnd()}});n.point("io.ox/mail/mobile/thread-view").extend({id:"thread-view-list",index:100,draw:function(){this.$el.append($('<div class="thread-view-list scrollable abs">').hide().append($('<div class="thread-view-header">').attr("aria-label",d("Conversation")),this.$messages=$('<ul class="thread-view list-view">')).on("scroll",this.onScrollEnd.bind(this)))}}),n.point("io.ox/mail/detail").extend({id:"remove-halo-link",index:"last",draw:function(){_.device("!smartphone")||this.find(".halo-link").removeClass("halo-link")}});var u=c.extend({initialize:function(){this.model=null,this.threaded=!0,this.collection=new t.Collection,this.listenTo(this.collection,{add:this.onAdd,remove:this.onRemove,reset:this.onReset}),this.listenTo(a.pool.get("detail"),{remove:this.onPoolRemove}),this.$messages=$()},renderListItem:function(e){var t=new s.HeaderView({tagName:"li",data:e.toJSON(),disable:{"io.ox/mail/detail":["subject","actions"],"io.ox/mail/detail/header":["paper-clip"],"io.ox/mail/detail/header/row1":["color-picker","flag-toggle","security"]}});return t.render().$el.attr({role:"listitem",tabindex:"0"}),t.$el},renderMail:function(e){e=String(e).replace(/^thread\.(.+)$/,"$1");var t=a.pool.get("detail").get(e);
1if(t){var i=new s.DetailView({tagName:"li",data:t.toJSON()});return this.mail=t.toJSON(),i.render().toggle().$el.attr({role:"listitem",tabindex:"0"})}},render:function(){return n.point("io.ox/mail/thread-view/header").disable("toggle-all"),n.point("io.ox/mail/thread-view").invoke("draw",this),this}});return{Desktop:c,Mobile:u}}),define("io.ox/mail/actions",["io.ox/core/extensions","io.ox/backbone/views/actions/util","io.ox/mail/api","io.ox/mail/util","io.ox/files/api","io.ox/core/folder/api","io.ox/core/print","io.ox/core/api/account","io.ox/core/notifications","io.ox/core/viewer/views/types/typesutil","settings!io.ox/mail","gettext!io.ox/mail"],function(r,e,a,i,o,n,t,s,l,d,c,u){var p=e.Action;function h(e){if(!(1<e.selection.length)&&(!e.collection.has("multiple")||e.isThread)){var t=e.first();return i.hasFrom(t)&&!f(t)}}function f(e){return t=e.folder_id,_.contains(s.getFoldersByType("drafts"),t)||0<(4&e.flags);var t}function g(i){return function(e){var t=e.first();require(["io.ox/mail/compose/checks"],function(e){e.replyToMailingList(_.cid(t),i,t).then(function(e){ox.registry.call("mail-compose","open",{type:e,original:{folderId:t.folder_id,id:t.id,security:t.security}})})})}}function m(e){e.e.clientX&&e.e.clientY||$('.io-ox-mail-window .list-item[tabindex="0"]').trigger("focus")}function v(e,t){return!1!==e&&(!!s.isPrimary(t.folder_id)&&(!s.isUnifiedFolder(t.folder_id)&&!s.is("archive",t.folder_id)))}function x(i,o,n){return function(t){require(["io.ox/mail/actions/copyMove"],function(e){e.multiple({list:t.array(),baton:t,type:i,label:o,success:n})})}}function b(e,t){return!1!==e&&(!!s.isPrimary(t.folder_id)&&(!s.is("spam|confirmed_spam|sent|drafts",t.folder_id)&&!i.isSpam(t)))}function w(e,t){return!1!==e&&(!!s.isPrimary(t.folder_id)&&(!(s.getFoldersByType("spam").concat(s.getFoldersByType("confirmed_spam")).indexOf(t.folder_id)<0)&&(s.is("spam|confirmed_spam",t.folder_id)||i.isSpam(t))))}new p("io.ox/mail/actions/compose",{capabilities:"!guest",action:function(e){ox.registry.call("mail-compose","open",null,{folderId:e.app.folder.get()})}}),new p("io.ox/mail/actions/reply-all",{collection:"some && toplevel",matches:h,action:g("replyall")}),new p("io.ox/mail/actions/reply",{collection:"some && toplevel",matches:h,action:g("reply")}),new p("io.ox/mail/actions/forward",{capabilities:"!guest",collection:"some && toplevel",action:function(e){var t=(t=e.selection&&1<e.selection.length?e.selection.map(function(e){return _.cid(_.cid(e).replace(/^thread./,""))}):[e.first()]).map(function(e){return{id:e.id,folderId:e.folder_id,security:e.security}});ox.registry.call("mail-compose","open",{type:"forward",original:t})}}),new p("io.ox/mail/actions/delete",{collection:"toplevel && some && delete",action:"io.ox/mail/actions/delete"}),new p("io.ox/mail/actions/edit",{collection:"one && toplevel",matches:function(e){var t=e.first();return t&&f(t)},action:function(e){var t=e.first(),i=_(ox.ui.apps.models).find(function(e){return e.refId===t.id});if(i)return i.launch();ox.registry.call("mail-compose","open",{type:"edit",original:{folderId:t.folder_id,id:t.id,security:t.security}})}}),new p("io.ox/mail/actions/edit-copy",{collection:"one && toplevel",matches:function(e){var t=e.first();return t&&f(t)},action:function(e){var t=e.first();ox.registry.call("mail-compose","open",{type:"copy",original:{folderId:t.folder_id,id:t.id,security:t.security}}).done(function(e){var t=e.app.model;t.set("subject",u("[Copy] %1$s",t.get("subject")))})}}),new p("io.ox/mail/actions/source",{collection:"some && toplevel",matches:function(e){if(!(e.selection&&1<e.selection.length))return!(e.collection.has("multiple")&&!e.isThread)},action:"io.ox/mail/actions/source"}),new p("io.ox/mail/actions/filter",{capabilities:"mailfilter_v2",collection:"some && toplevel",matches:function(e){return!(e.collection.has("multiple")&&!e.isThread)},action:function(a){require(["io.ox/mail/mailfilter/settings/filter"],function(e){e.initialize().then(function(e,t,i){var o={data:{obj:i.model.protectedMethods.buildFactory("io.ox/core/mailfilter/model",i.api).create(i.model.protectedMethods.provideEmptyModel())}},n={id:"allof",tests:[_.copy(i.filterDefaults.tests.subject),i.filterDefaults.tests.address?_.copy(i.filterDefaults.tests.address):_.copy(i.filterDefaults.tests.from)]};n.tests[0].values=[a.data.subject],n.tests[1].values=[a.data.from[0][1]],o.data.obj.set("test",n),r.point("io.ox/sett
1ings/mailfilter/filter/settings/detail").invoke("draw",void 0,o,t)})})}}),new p("io.ox/mail/actions/print",{device:"!smartphone",collection:"some && (read || !toplevel)",action:function(e){t.request("io.ox/mail/print",e.array())}}),new p("io.ox/mail/actions/flag",{toggle:c.get("features/flag/star"),collection:"some",matches:function(e){return!_(e.array()).every(i.isFlagged)},action:function(e){a.flag(e.data,!0).then(function(){m(e)})}}),new p("io.ox/mail/actions/unflag",{toggle:c.get("features/flag/star"),collection:"some",matches:function(e){return _(e.array()).any(i.isFlagged)},action:function(e){a.flag(e.data,!1).then(function(){m(e)})}}),new p("io.ox/mail/actions/archive",{capabilities:"archive_emails",collection:"some && delete",matches:function(e){return e.array().reduce(v,!0)},action:function(e){var t=_.isArray(e.data)?e.data:[e.data];a.archive(t).then(function(){m(e)})}}),new p("io.ox/mail/actions/triggerFlags",{collection:"some",action:function(){var e=$(".dropdown.flag-picker").data();$(document).trigger("click.bs.dropdown.data-api"),_.delay(function(){e.view.open()},200)}}),new p("io.ox/mail/actions/move",{collection:"toplevel && some && delete",action:x("move",u("Move"),{single:u("Email has been moved"),multiple:u("Emails have been moved")})}),new p("io.ox/mail/actions/copy",{collection:"toplevel && some",action:x("copy",u("Copy"),{single:u("Email has been copied"),multiple:u("Emails have been copied")})}),new p("io.ox/mail/actions/mark-unread",{collection:"toplevel && change:seen",matches:function(e){return e.array().reduce(function(e,t){return e||!i.isUnseen(t)},!1)},action:function(e){var t=n.ignoreSentItems(e.array());a.markUnread(t).then(function(){m(e)})}}),new p("io.ox/mail/actions/mark-read",{collection:"toplevel && change:seen",matches:function(e){return e.array().reduce(function(e,t){return e||i.isUnseen(t)},!1)},action:function(e){var t=n.ignoreSentItems(e.array());a.markRead(t).then(function(){m(e)})}}),new p("io.ox/mail/actions/spam",{capabilities:"spam",collection:"some && delete && toplevel",matches:function(e){return e.array().reduce(b,!0)},action:function(i){a.markSpam(i.array()).done(function(e){var t=_(e).chain().pluck("error").compact().first().value();t&&l.yell(t),m(i)}).fail(function(e){l.yell(e),a.trigger("refresh.all")})}}),new p("io.ox/mail/actions/nospam",{capabilities:"spam",collection:"some && delete && toplevel",matches:function(e){return e.array().reduce(w,!0)},action:function(i){a.noSpam(i.array()).done(function(e){var t=_(e).chain().pluck("error").compact().first().value();t&&l.yell(t),m(i)})}}),new p("io.ox/mail/actions/save",{device:"!ios",collection:"some && read",action:function(t){require(["io.ox/mail/actions/save"],function(e){e.multiple(t.array())})}}),new p("io.ox/mail/actions/add-to-portal",{capabilities:"portal",collection:"one && toplevel",action:function(t){require(["io.ox/mail/actions/addToPortal"],function(e){e(t)})}}),new p("io.ox/mail/actions/sendmail",{collection:"some",action:function(r){require(["io.ox/core/api/user"],function(e){s.getAllSenderAddresses().done(function(a){e.getCurrentUser().done(function(e){var t=r.data,i=t.to.concat(t.cc).concat(t.bcc).concat(t.from),o=(o=_.compact([e.get("email1"),e.get("email2"),e.get("email3")])).concat(_(a).pluck(1)),n=_(i).filter(function(e){return o.indexOf(e[1])<0});0===n.length&&(n=i),n=_(n).uniq(!1,function(e){return e[1]}),ox.registry.call("mail-compose","open",{to:n})})})})}}),new p("io.ox/mail/actions/createdistlist",{capabilities:"contacts",collection:"some",action:function(t){require(["io.ox/mail/actions/create"],function(e){e.createDistributionList(t)})}}),new p("io.ox/mail/actions/invite",{capabilities:"calendar",collection:"some",action:function(t){require(["io.ox/mail/actions/create"],function(e){e.createAppointment(t)})}}),new p("io.ox/mail/actions/reminder",{capabilities:"tasks",collection:"one && toplevel",action:function(t){require(["io.ox/mail/actions/reminder"],function(e){e(t)})}}),new p("io.ox/mail/attachment/actions/view",{collection:"some",matches:function(e){return e.array().some(function(e){var t=new o.Model(e);return d.canView(t)})},action:function(t){var i=t.list||t.array(),o=t.array()[0];ox.load(["io.ox/mail/actions/viewer"]).done(function(e){e({files:i,selection:o,restoreFocus:t.restoreFocus,openedBy:t.openedBy})})}}),new p("io.ox/mail/attachment/actions/download",{device:"!ios || ios >= 11",collection:"some",action:function(e){var t=e.array(),i=1===t.length?a.getUrl(_(t).first(),"download"):a.getUrl(t,"zip");
1require(["io.ox/core/download"],function(e){e[_.device("ios")?"window":"url"](i)})}}),new p("io.ox/mail/attachment/actions/save",{capabilities:"infostore",collection:"some",action:function(t){require(["io.ox/mail/actions/attachmentSave"],function(e){e.multiple(t.array())})}}),new p("io.ox/mail/attachment/actions/vcard",{capabilities:"contacts",collection:"one",matches:function(e){var t=e.first(),i=/\.vcf$/i.test(t.filename),o=/^text\/(x-)?vcard/i.test(t.content_type),n=/^text\/directory/i.test(t.content_type);return i&&n||o},action:function(t){require(["io.ox/mail/actions/vcard"],function(e){e(t)})}}),new p("io.ox/mail/attachment/actions/ical",{capabilities:"calendar",collection:"some",matches:function(e){var t=e.first(),i=t.filename&&!!t.filename.match(/\.ics$/i),o=t.content_type&&!!t.content_type.match(/^text\/calendar/i),n=t.content_type&&!!t.content_type.match(/^application\/ics/i);return!a.pool.get("detail").get(_.cid(t.mail)).get("imipMail")&&(i||o||n)},action:function(t){require(["io.ox/mail/actions/ical"],function(e){e(t)})}});var y=[{id:"reply",prio:"hi",mobile:"lo",title:u("Reply"),ref:"io.ox/mail/actions/reply",section:"standard"},{id:"reply-all",prio:"hi",mobile:"hi",title:u("Reply all"),ref:"io.ox/mail/actions/reply-all",section:"standard"},{id:"forward",prio:"hi",mobile:"hi",title:u("Forward"),ref:"io.ox/mail/actions/forward",section:"standard"},{id:"edit",prio:"hi",mobile:"lo",title:u("Edit"),ref:"io.ox/mail/actions/edit",section:"standard"},{id:"delete",prio:"hi",mobile:"lo",title:u("Delete"),ref:"io.ox/mail/actions/delete",section:"standard"},{id:"spam",prio:"lo",mobile:"lo",title:u("Mark as spam"),ref:"io.ox/mail/actions/spam",section:"flags"},{id:"nospam",prio:"lo",mobile:"lo",title:u("Not spam"),ref:"io.ox/mail/actions/nospam",section:"flags"},{id:"sendmail",prio:"lo",title:u("Send new email"),ref:"io.ox/mail/actions/sendmail",section:"recipients"},{id:"invite-to-appointment",prio:"lo",title:u("Invite to appointment"),ref:"io.ox/mail/actions/invite",section:"recipients"},{id:"save-as-distlist",prio:"lo",title:u("Save as distribution list"),ref:"io.ox/mail/actions/createdistlist",section:"recipients"},{id:"move",prio:"lo",title:u("Move"),ref:"io.ox/mail/actions/move",section:"file-op"},{id:"copy",prio:"lo",title:u("Copy"),ref:"io.ox/mail/actions/copy",section:"file-op"},{id:"archive",prio:"lo",title:u.pgettext("verb","Archive"),ref:"io.ox/mail/actions/archive",section:"file-op"},{id:"print",prio:"lo",mobile:"none",title:u("Print"),ref:"io.ox/mail/actions/print",section:"export"},{id:"save-as-eml",prio:"lo",mobile:"none",title:u("Save as file"),ref:"io.ox/mail/actions/save",section:"export"},{id:"source",prio:"lo",mobile:"lo",title:u("View source"),ref:"io.ox/mail/actions/source",section:"export"},{id:"filter",prio:"lo",mobile:"none",title:u("Create filter rule"),ref:"io.ox/mail/actions/filter",section:"file-op"},{id:"reminder",prio:"lo",mobile:"none",title:u("Reminder"),ref:"io.ox/mail/actions/reminder",section:"keep"},{id:"add-to-portal",prio:"lo",mobile:"none",title:u("Add to portal"),ref:"io.ox/mail/actions/add-to-portal",section:"keep"}];r.point("io.ox/mail/links/inline").extend(y.map(function(e,t){return e.index=100+100*t,e.mobile=e.mobile||e.prio||"none",e})),new p("io.ox/mail/actions/label",{id:"label",collection:"toplevel some",action:$.noop}),r.point("io.ox/mail/attachment/links").extend({id:"vcard",mobile:"hi",index:50,title:u("Add to address book"),ref:"io.ox/mail/attachment/actions/vcard"},{id:"ical",mobile:"hi",index:50,title:u("Add to calendar"),ref:"io.ox/mail/attachment/actions/ical"},{id:"view_new",index:100,mobile:"hi",title:u("View"),ref:"io.ox/mail/attachment/actions/view"},{id:"download",index:400,mobile:"hi",title:u("Download"),ref:"io.ox/mail/attachment/actions/download"},{id:"save",index:500,mobile:"hi",title:u("Save to %1$s",u.pgettext("app","Drive")),ref:"io.ox/mail/attachment/actions/save"},{id:"viewer",index:600,mobile:"hi",label:u("View"),ref:"io.ox/mail/actions/viewer"}),r.point("io.ox/mail/dnd/actions").extend({id:"importEML",index:10,label:u("Drop here to import this email"),action:function(e,t){t.queues.importEML.offer(e,{folder:t.folder.get()})}}),r.point("io.ox/mail/folderview/premium-area").extend({index:100,id:"inline-premium-links",draw:function(e){this.append(e.renderActions("io.ox/mail/links/premium-links",e))}})}),define("io.ox/mail/actions/attachmentQuota",["io.ox/core/notifications","io.ox/core/strings","settings!io.ox/core","gettext!io.ox/mail"],function(d,c,u,p){return{checkQuota:function(e,t){var o,n,i=e,a=u.get("properties"),r=t||0,s=require("io.ox/core/capabilities").has("publish_mail_attachments"),l={};if(i.length)return o=s?-1:a.attachmentQuotaPerFile,n=s?-1:a.attachmentQuota,_.find(i,function(e){var t=e.filename||e.name||e.subject,i=e.file_size||e.size;if(i){if(r+=i,0<n&&n<r)return l.error=p('The file "%1$s" cannot be uploaded because it exceeds the total attachment size limit of %2$s',t,c.fileSize(n)),l.reason="filesize",!0;
1if(0<o&&o<i)return l.error=p('The file "%1$s" cannot be uploaded because it exceeds the maximum file size of %2$s',t,c.fileSize(o)),l.reason="filesize",!0;if(s){if(0<a.infostoreMaxUploadSize&&i>a.infostoreMaxUploadSize)return l.error=p('The file "%1$s" cannot be uploaded because it exceeds the attachment publication maximum file size of %2$s',t,c.fileSize(a.infostoreMaxUploadSize)),l.reason="filesizeAutoPublish",!0;if(0<a.infostoreQuota&&r>a.infostoreQuota-a.infostoreUsage)return l.error=p('The file "%1$s" cannot be uploaded because it exceeds the infostore quota limit of %2$s',t,c.fileSize(a.infostoreQuota)),l.reason="quotaAutoPublish",!0}}}),!l.error||(d.yell("error",l.error),!1)}}}),define.async("io.ox/mail/toolbar",["io.ox/core/extensions","io.ox/backbone/views/actions/util","io.ox/core/tk/flag-picker","io.ox/mail/api","io.ox/core/capabilities","io.ox/backbone/mini-views/dropdown","io.ox/backbone/views/toolbar","io.ox/core/api/mailfilter","settings!io.ox/core","settings!io.ox/mail","gettext!io.ox/mail","io.ox/mail/actions","less!io.ox/mail/style","io.ox/mail/folderview-extensions"],function(i,e,t,o,n,a,r,s,l,d,c){var u=i.point("io.ox/mail/toolbar/links"),p=$.when(),h={compose:{prio:"hi",mobile:"hi",title:c("Compose"),tooltip:c("Compose new email"),drawDisabled:!0,ref:"io.ox/mail/actions/compose"},edit:{prio:"hi",mobile:"lo",title:c("Edit draft"),ref:"io.ox/mail/actions/edit"},"edit-copy":{prio:"hi",mobile:"lo",title:c("Edit copy"),ref:"io.ox/mail/actions/edit-copy"},reply:{prio:"hi",mobile:"lo",icon:"fa fa-reply",title:c("Reply to sender"),drawDisabled:!0,ref:"io.ox/mail/actions/reply"},"reply-all":{prio:"hi",mobile:"lo",icon:"fa fa-reply-all",title:c("Reply to all recipients"),drawDisabled:!0,ref:"io.ox/mail/actions/reply-all"},forward:{prio:"hi",mobile:"lo",icon:"fa fa-mail-forward",title:c("Forward"),drawDisabled:!0,ref:"io.ox/mail/actions/forward"},delete:{prio:"hi",mobile:"lo",icon:"fa fa-trash-o",title:c("Delete"),drawDisabled:!0,ref:"io.ox/mail/actions/delete"},spam:{prio:"hi",mobile:"lo",icon:"fa fa-ban",title:c("Mark as spam"),ref:"io.ox/mail/actions/spam"},nospam:{prio:"hi",mobile:"lo",icon:"fa fa-thumbs-up",title:c("Not spam"),ref:"io.ox/mail/actions/nospam"},category:{prio:"hi",mobile:"none",icon:"fa fa-folder-open-o",title:c("Set category"),ref:"io.ox/mail/actions/category",customize:function(t){d.get("categories/enabled")&&require(["io.ox/mail/categories/picker"],function(e){e.attach(this,{props:t.app.props,data:t.data})}.bind(this))}},color:{prio:"hi",mobile:"none",icon:"fa fa-bookmark-o",title:c("Set color"),ref:"io.ox/mail/actions/color",customize:function(e){d.get("features/flag/color")&&t.attach(this,{data:e.data})}},flag:{prio:"hi",mobile:"lo",icon:"fa fa-star",title:c.pgettext("verb","Flag"),ref:"io.ox/mail/actions/flag"},unflag:{prio:"hi",mobile:"lo",icon:"fa fa-star-o",title:c.pgettext("verb","Unflag"),ref:"io.ox/mail/actions/unflag"},archive:{prio:"hi",mobile:"lo",icon:"fa fa-archive",title:c.pgettext("verb","Archive"),ref:"io.ox/mail/actions/archive"},"mark-read":{prio:"lo",mobile:"lo",title:c("Mark as read"),ref:"io.ox/mail/actions/mark-read",section:"flags"},"mark-unread":{prio:"lo",mobile:"lo",title:c("Mark as unread"),ref:"io.ox/mail/actions/mark-unread",section:"flags"},move:{prio:"lo",mobile:"lo",title:c("Move"),ref:"io.ox/mail/actions/move",section:"file-op"},copy:{prio:"lo",mobile:"lo",title:c("Copy"),ref:"io.ox/mail/actions/copy",section:"file-op"},print:{prio:"lo",mobile:"lo",title:c("Print"),ref:"io.ox/mail/actions/print",section:"export"},"save-as-eml":{prio:"lo",mobile:"lo",title:c("Save as file"),ref:"io.ox/mail/actions/save",section:"export"},source:{prio:"lo",mobile:"none",title:c("View source"),ref:"io.ox/mail/actions/source",section:"export"},reminder:{prio:"lo",mobile:"none",title:c("Reminder"),ref:"io.ox/mail/actions/reminder",section:"keep"},"add-to-portal":{prio:"lo",mobile:"none",title:c("Add to portal"),ref:"io.ox/mail/actions/add-to-portal",section:"keep"}},f=0;_(h).each(function(e,t){u.extend(_.extend({id:t,index:f+=100},e))});var g,m,v=e.Action;function x(){var e,t;this.model&&(e=this.$el.find('[data-name="contactPictures"]').parent(),"vertical"===(t=this.model.get("layout"))||"compact"===t?e.show():e.hide())}
1function b(t){require(["io.ox/mail/categories/edit"],function(e){e.open(t)})}function w(e){e.preventDefault(),require(["io.ox/mail/mailfilter/vacationnotice/view"],function(e){e.open()})}return new v("io.ox/mail/actions/category",{capabilities:"mail_categories",collection:"some",matches:function(e){return!!e.app.props.get("categories")},action:$.noop}),new v("io.ox/mail/actions/color",{toggle:d.get("features/flag/color"),collection:"some",action:$.noop}),i.point("io.ox/mail/toolbar/links").extend({id:"view-dropdown",index:1e4,custom:!0,draw:function(e){var t;_.device("smartphone")||((t=new a({el:this,caret:!0,model:e.app.props,label:c("View")})).render().$el.addClass("dropdown pull-right").attr("data-dropdown","view"),i.point("io.ox/mail/toolbar/links/view-dropdown").invoke("draw",t,e))}}),i.point("io.ox/mail/toolbar/links/view-dropdown").extend({id:"layout",index:100,draw:function(){this.group(c("Layout")).option("layout","vertical",c("Vertical"),{radio:!0,group:!0}),_.device("desktop")&&this.option("layout","compact",c("Compact"),{radio:!0,group:!0}),this.option("layout","horizontal",c("Horizontal"),{radio:!0,group:!0}).option("layout","list",c("List"),{radio:!0,group:!0}).divider()}}),i.point("io.ox/mail/toolbar/links/view-dropdown").extend({id:"categories",index:200,draw:function(e){n.has("mail_categories")&&!_.device("smartphone")&&this.group(c("Inbox")).option("categories",!0,c("Use categories"),{group:!0}).link("categories-config",c("Configure")+" …",_.bind(b,this,e.app.props),{icon:!0,group:!0}).divider()}}),i.point("io.ox/mail/toolbar/links/view-dropdown").extend({id:"options",index:300,draw:function(e){var t=this;function i(){t.$('[data-name="textPreview"]').toggle(e.app.supportsTextPreviewConfiguration())}t.group(c("Options")).option("folderview",!0,c("Folder view"),{group:!0}),"alternative"!==l.get("selectionMode")&&t.option("checkboxes",!0,c("Checkboxes"),{group:!0}),e.app.supportsTextPreview()&&t.option("textPreview",!0,c("Text preview"),{group:!0}),t.option("contactPictures",!0,c("Contact pictures"),{group:!0}).option("exactDates",!0,c("Exact dates"),{group:!0}).option("alwaysShowSize",!0,c("Message size"),{group:!0}).divider(),t.listenTo(e.app.props,"change:layout",x),i(),e.app.on("folder:change",i),x.call(t)}}),i.point("io.ox/mail/toolbar/links/view-dropdown").extend({id:"vacation-notice",index:400,draw:(m=s.getConfig().then(function(e){g=!!_(e.actioncmds).findWhere({id:"vacation"})},function(){g=!1}),p=p.then(function(){return m}),function(){n.has("mailfilter_v2")&&g&&this.link("vacation-notice",c("Vacation notice"),w)})}),i.point("io.ox/mail/toolbar/links/view-dropdown").extend({id:"mail-attachments",index:500,draw:function(e){l.get("folder/mailattachments",{}).all&&this.link("attachments",c("All attachments"),function(e,t){t.preventDefault();var i=l.get("folder/mailattachments",{});ox.launch("io.ox/files/main",{folder:i.all}).done(function(){this.folder.set(i.all)})}.bind(null,e.app))}}),i.point("io.ox/mail/toolbar/links/view-dropdown").extend({id:"statistics",index:600,draw:function(e){this.link("statistics",c("Statistics"),function(t,e){e.preventDefault(),require(["io.ox/mail/statistics"]).done(function(e){e.open(t)})}.bind(null,e.app))}}),i.point("io.ox/mail/mediator").extend({id:"toolbar",index:1e4,setup:function(e){var i;_.device("smartphone")||(i=new r({point:"io.ox/mail/toolbar/links",title:e.getTitle()}),e.getWindow().nodes.body.addClass("classic-toolbar-visible").prepend(i.$el),e.updateToolbar=function(e){var t={data:[],folder_id:this.folder.get(),app:this,isThread:this.isThreaded()};i.setSelection(e.map(_.cid),function(){return t.data=o.resolve(e,t.isThread),t})},e.forceUpdateToolbar=function(e){i.selection=null,this.updateToolbar(e)})}}),i.point("io.ox/mail/mediator").extend({id:"update-toolbar",index:10200,setup:function(t){_.device("smartphone")||(t.updateToolbar([]),t.listView.on("selection:change",function(){t.updateToolbar(t.listView.selection.get())}),t.listView.on("change",function(e){"flags"in e.changed&&t.forceUpdateToolbar(t.listView.selection.get())}))}}),p}),define("io.ox/mail/import",["io.ox/core/extensions","io.ox/mail/api","io.ox/core/api/account","
1io.ox/core/tk/upload","io.ox/core/dropzone","io.ox/core/notifications","gettext!io.ox/mail"],function(e,o,n,a,r,s,l){e.point("io.ox/mail/mediator").extend({id:"import-eml",index:1e12,setup:function(t){var e,i;!1!==t.settings.get("features/importEML")&&(e=t.getWindow(),t.queues={importEML:a.createQueue({start:function(){e.busy()},progress:function(i){return o.importEML({file:i.file,folder:i.options.folder}).done(function(e){var t=_(e.data||[]).first()||{};"Error"in(i.response=t)?s.yell("error",t.Error):s.yell("success",l("Mail has been imported"))}).fail(s.yell)},stop:function(){e.idle()},type:"importEML"})},(i=new(r.Inplace.extend({isSupported:function(){return!n.isUnifiedFolder(t.folder.get())}}))({caption:l("Drop EML file here for import"),filter:/\.eml$/i})).on({show:function(){t.right.removeClass("preview-visible"),t.listControl.$el.stop().hide()},hide:function(){t.listControl.$el.fadeIn("fast")},drop:function(e){t.queues.importEML.offer(e,{folder:t.folder.get()})},invalid:function(){s.yell("error",l("Mail was not imported. Only .eml files are supported."))}}),t.left.append(i.render().$el.addClass("abs")))}})}),define("io.ox/mail/folderview-extensions",["io.ox/core/extensions","io.ox/core/capabilities","gettext!io.ox/mail"],function(e,t,i){function o(t){t.preventDefault(),require(["io.ox/mail/accounts/settings"],function(e){e.mailAutoconfigDialog(t)})}t.has("multiple_mail_accounts")&&e.point("io.ox/mail/folderview/sidepanel/links").extend({id:"add-account",index:300,draw:function(){_.device("!smartphone")&&this.append($("<div>").append($('<a href="#" data-action="add-mail-account" role="button">').text(i("Add mail account")).on("click",o)))}})}),define("io.ox/mail/mobile-navbar-extensions",["io.ox/core/extensions"],function(e){e.point("io.ox/mail/mobile/navbar").extend({id:"btn-left",index:100,draw:function(e){e.left&&this.$el.append($('<div class="navbar-action left">').append($("<a>").append($('<i class="fa fa-chevron-left" aria-hidden="true">'),e.left)))}}),e.point("io.ox/mail/mobile/navbar").extend({id:"header",index:200,draw:function(e){this.$el.append($('<div class="navbar-title">').text(e.title))}}),e.point("io.ox/mail/mobile/navbar").extend({id:"btn-right",index:300,draw:function(e){e.right&&this.$el.append($('<div class="navbar-action right">').append($("<a>").append(e.right)))}})}),define("io.ox/mail/mobile-toolbar-actions",["io.ox/core/extensions","io.ox/backbone/views/toolbar","io.ox/backbone/views/actions/mobile","io.ox/mail/api","io.ox/core/capabilities","gettext!io.ox/mail"],function(a,e,t,r,i,o){var n={compose:{prio:"hi",mobile:"hi",title:o("Compose"),icon:"fa fa-pencil",ref:"io.ox/mail/actions/compose",drawDisabled:!0},reply:{prio:"hi",mobile:"hi",icon:"fa fa-reply",title:o("Reply to sender"),ref:"io.ox/mail/actions/reply",drawDisabled:!0},"reply-all":{prio:"hi",mobile:"hi",icon:"fa fa-reply-all",title:o("Reply to all recipients"),ref:"io.ox/mail/actions/reply-all",drawDisabled:!0},forward:{prio:"hi",mobile:"hi",icon:"fa fa-mail-forward",title:o("Forward"),ref:"io.ox/mail/actions/forward",drawDisabled:!0},delete:{prio:"hi",mobile:"hi",icon:"fa fa-trash-o",title:o("Delete"),ref:"io.ox/mail/actions/delete",drawDisabled:!0},move:{prio:"hi",mobile:"lo",title:o("Move"),ref:"io.ox/mail/actions/move",section:"file-op",drawDisabled:!0},"mark-read":{prio:"hi",mobile:"lo",title:o("Mark as read"),ref:"io.ox/mail/actions/mark-read",section:"flags",drawDisabled:!0},"mark-unread":{prio:"hi",mobile:"lo",title:o("Mark as unread"),ref:"io.ox/mail/actions/mark-unread",section:"flags",drawDisabled:!0},copy:{prio:"hi",mobile:"lo",title:o("Copy"),ref:"io.ox/mail/actions/copy",section:"file-op"},archive:{prio:"hi",mobile:"lo",icon:"fa fa-archive",title:o.pgettext("verb","Archive")},spam:{prio:"hi",mobile:"lo",title:o("Mark as spam"),ref:"io.ox/mail/actions/spam"},nospam:{prio:"hi",mobile:"lo",title:o("Not spam"),ref:"io.ox/mail/actions/nospam"},flag:{prio:"hi",mobile:"lo",title:o("Flag"),ref:"io.ox/mail/actions/flag"},unflag:{prio:"hi",mobile:"lo",title:o("Unflag"),ref:"io.ox/mail/actions/unflag"},color:{prio:"hi",mobile:"lo",title:o("Set color..."),ref:"io.ox/mail/actions/triggerFlags"}},s={listView:"io.ox/mail/mobile/toolbar/listView",multiselect:"io.ox/mail/mobile/toolbar/listView/multiselect",threadView:"io.ox/mail/mobile/toolbar/threadView",detailVie
1w:"io.ox/mail/mobile/toolbar/detailView"};t.addAction(s.listView,n,["compose"]),t.addAction(s.multiselect,n,["compose","delete","forward","move","archive"]),t.addAction(s.threadView,n,["compose"]),t.addAction(s.detailView,n,["reply","reply-all","delete","forward","mark-read","mark-unread","spam","flag","unflag","nospam","copy","color"]),t.createToolbarExtensions(s);var l=_.debounce(function(e){var t,i,o,n;e&&(t=this.isThreaded(),0===(i=r.resolve(e,t)).length&&(t=!1),i=1===i.length?i[0]:i,o=a.Baton({data:i,isThread:t,selection:e,app:this}),(n=this.pages.getCurrentPage()).navbar.setBaton(o),n.toolbar&&n.toolbar.setBaton(o),n.secondaryToolbar&&n.secondaryToolbar.setBaton(o))},50);a.point(s.multiselect).extend({id:"update-button-states",index:1e4,draw:function(e){0===e.data.length?$("a.mobile-toolbar-action, .mobile-toolbar-action a",this).addClass("ui-disabled"):$("a.mobile-toolbar-action, .mobile-toolbar-action a",this).removeClass("ui-disabled")}}),a.point("io.ox/mail/mediator").extend({id:"toolbar-mobile",index:10100,setup:function(e){_.device("smartphone")&&(e.updateToolbar=l)}}),a.point("io.ox/mail/mediator").extend({id:"update-toolbar-mobile",index:10300,setup:function(t){_.device("smartphone")&&(t.updateToolbar(),t.listView.on("selection:change change selection:action",function(){var e=t.pages.getCurrentPage();"folderTree"!==e.name&&(e.toolbar&&e.toolbar.baton.threadMember||t.updateToolbar(t.listView.selection.get()))}),t.threadView.$el.on("showmail",function(){var e=a.Baton({threadMember:!0,data:t.threadView.mail,isThread:!1,app:t});t.pages.getPageObject("detailView").toolbar.setBaton(e)}))}}),a.point("io.ox/mail/mediator").extend({id:"change-mode-toolbar-mobile",index:10400,setup:function(o){_.device("smartphone")&&o.props.on("change:checkboxes",function(e,t){var i=o.pages.getCurrentPage();o.pages.toggleSecondaryToolbar(i.name,t)})}})}),define("io.ox/core/util",["io.ox/core/extensions","settings!io.ox/core","static/3rd.party/purify.min.js"],function(a,e,t){var i=ox.serverConfig.prefix||"/ajax",o=/(\S{30,})/g,n=/(\S{30})/g,r=/([^.,;:-=()]+[.,;:-=()])/,s=new RegExp("^"+i);a.point("io.ox/core/person").extend({id:"default",index:100,draw:function(e){!1!==e.html?this.append(e.html):this.text(e.halo.name)}});var l,d,c,u,p,h,f,g,m,v,x,b,w=/(((http|https|ftp|ftps):\/\/|www\.)[^\s"]+)/gim,y={replacePrefix:function(e,t){return(e=e||"").replace(s,t=t||"")},renderPersonalName:function(e,t){var i={name:(e=_.extend({$el:void 0,html:!1,tagName:"span"},e)).full_name||e.display_name||e.name||e.cn||e.email,email:e.email,email1:e.email,user_id:e.user_id};e.contact&&(i.contact=e.contact),t&&t.nohalo&&(e.$el=$("<span>"));var o=new a.Baton({data:t||{},halo:i,html:e.html}),n=e.$el||(i.email||i.user_id?$('<a href="#" role="button" class="halo-link">').attr("title",i.email).data(i):$("<"+e.tagName+">"));return a.point("io.ox/core/person").invoke("draw",n.empty(),o),n},unescapeDisplayName:function(e){for(e=$.trim(e||"");1<e.length&&/^["'\\\s]/.test(e[0])&&e[0]===e.substr(-1);)e=$.trim(e.substr(1,e.length-2));return e=(e=e.replace(/\\"/g,'"')).replace(/\\{2}/g,"\\")},fixUrlSuffix:function(i,o){return o=o||"",{url:i=i.replace(/([.,;!?<>(){}[\]|]+)$/,function(e,t){return")"===t&&(i.match(/\)/g)||[]).length===(i.match(/\(/g)||[]).length||"]"===t&&(i.match(/\]/g)||[]).length===(i.match(/\[/g)||[]).length?t:(o=t+o,"")}),suffix:o}},removeQuotes:function(e){return $.trim(e).replace(/^["'\\]+|["'\\]+$/g,"").replace(/\\?"/g,"")},urlify:function(e){return e=(e||"").replace(w,function(e){var t=this.fixUrlSuffix(e);return $('<a target="_blank" rel="noopener">').attr("href",t.url).append(y.breakableHTML(t.url)).prop("outerHTML")+t.suffix}.bind(this)),e=t.sanitize(e,{ALLOW_DATA_ATTR:!1,ALLOWED_TAGS:["a","wbr"],ALLOWED_ATTR:["target","rel","href"],SAFE_FOR_JQUERY:!0}),e=y.injectAttribute(e,"a","rel","noopener")},injectAttribute:function(e,t,i,o){var n=document.createElement("div");return n.innerHTML=e,_(n.getElementsByTagName(t)).each(function(e){e.setAttribute(i,o)}),n.innerHTML},breakableHTML:function(e){var t=String(e||"").replace(o,function(e){return _(e.split(r)).map(function(e){return 0===e.length?"":e.length<30?e+"​":e.replace(n,"$1​")}).join("")});return _(t.split("​")).map(_.escape).join("<wbr>").replace(/\u00a0/g," <wbr>")},breakableText:function(e){var t=String(e||"").replace(/(\S{20})/g,"$1​");return"​"===t[t.length-1]&&(t=t.slice(0,-1)),t},isValidMailAddress:(p=/^"[^"]+"$/,h=/@/,f=/["\\,:; ]/,g=/^\./,m=/\.\./,v=/^\[(\d{1,3}\.){3}\d{1,3}\]$/,x=/^\[IPv6(:\w{0,4}){0,8}\]$/i,b=/[a-z0-9]$/i,function(e){return function(e){if(""===e)return!0;var t=e.lastIndexOf("@");if(t<=0)return!1;var i=e.substr(0,t),o=e.substr(t+1);return!(64<i.length&&0<i.length)&&(!(255<o.length)&&(!(!p.test(i)&&(h.test(i)||g.test(i)||m.test(i)||f.test(i)))&&!!(v.test(o)||x.test(o)||b.test(o))))}($.trim(e))}),isValidPhoneNumber:(c=/^\+?[0-9 .,;\-/()*#]+$/,u=/^\+\d{0,2}$/,function(e){return""===(t=$.trim(e))||!u.test(t)&&c.test(t);var t}),getDeepLink:function(e,t){var i,o="";return void 0===t.folder_id?i="&folder="+encodeURIComponent(t.id):(i="&folder="+encodeURIComponent(t.folder_id),o="&id="+(/^[\d/]+$/.test(t.id)?t.id:encodeURIComponent(t.id))),ox.abs+ox.root+"/#!&app="+e+i+o},getAddresses:function(e){return/^[^,;\s]+$/.test(e)?[e]:(String(e).match(/("[^"]+"|'[^']+'|\w[\w\u00C0-\u024F.!#$%&'*+-/=?^_`{|}~]*)@[^,;>\x20\t\n]+|[\w\u00C0-\u024F][\w\u00C0-\u024F\-'\x20]+\s<[^>]+>|("[^"]+"|'[^']+')\s<[^>]+>/g)||[]).map(function(e){return e.replace(/^([^"]+)\s</,'"$1" <')})},getShardingRoot:(l=location.host+ox.apiRoot,d=[].concat(e.get("shardingSubdomains",l)),function(e){var t=0;return 0===e.indexOf("//"+l)&&(e=e.substr(l.length+2)),1<d.length&&(t=function(e){for(var t=e.length-1,i=0;t;t--)i+=e.charCodeAt(t);return i}(e)%d.length),/^\//.test(e)||(e="/"+e),ox.debug?"//"+l+e:"//"+d[t]+e}
1),getScrollBarWidth:_.memoize(function(){var e=$("<div>").css({visibility:"hidden",width:100,overflow:"scroll"}).appendTo("body"),t=$("<div>").css({width:"100%"}).appendTo(e).outerWidth();return e.remove(),100-t})};return y}),define("io.ox/core/api/factory",["io.ox/core/http","io.ox/core/cache","io.ox/core/event","io.ox/core/extensions","io.ox/core/api/backbone"],function(p,r,e,s,t){function i(a){return _.isObject(a)?_(o).reduce(function(e,t){var i=t.split(":"),o=i[0],n=i[1]||i[0];return o in a&&(e[n]=a[o]),e},{}):a}var o="id: folder_id:folder folder: recurrence_position:".split(" "),n=function(s){(s=$.extend(!0,{id:null,keyGenerator:null,module:"",requests:{all:{action:"all",timezone:"utc"},list:{action:"list",timezone:"utc"},get:{action:"get",timezone:"utc"},search:{action:"search",timezone:"utc"},remove:{action:"delete"}},cid:function(e){return e.folder+"//"+(e.sortKey||e.sort)+"."+e.order+"."+(e.max||e.limit||0)},done:{},fail:{},pipe:{},params:{},filter:null},s||{})).id=s.id||s.module,_.each(s.requests,function(e){e.extendColumns&&(e.columns=n.extendColumns(e.extendColumns,s.module,e.columns),delete e.extendColumns)});var l={all:new r.SimpleCache(s.id+"-all"),list:new r.ObjectCache(s.id+"-list",!1,s.keyGenerator),get:new r.ObjectCache(s.id+"-get",!1,s.keyGenerator)},d={},c={},u={DELIM:"//",options:s,cid:s.cid,getAll:function(e,t,i,o){var n=$.extend({},s.requests.all,e||{}),a=s.cid(n);t=void 0===t||!!t,i=i||l.all;function r(){var t=s.params.all?s.params.all(_.copy(n,!0)):n;return p.GET({module:s.module,params:t,processResponse:void 0===o||o}).then(function(e){var i=$.when();return/(^5,|,5,|5$)/.test(t.columns)?$.when.apply($,_(e).map(function(e){var t=_.cid(e);return void 0===c[t]?(c[t]=e.last_modified,i):e.last_modified>c[t]?(c[t]=e.last_modified,$.when(u.caches.list.remove(t),u.caches.get.remove(t)).done(function(){u.trigger("update:"+_.ecid(e),e)})):void 0})).then(function(){return e}):e},function(e){throw u.trigger("error error:"+e.code,e),e}).then(function(e){return(s.pipe.all||_.identity)(e,n)}).then(function(e){return $.when(i.add(a,e)).then(function(){return e})})}return(t?i.get(a,r,function(){!1!==ox.serverConfig.persistence&&(a in d||(d[a]=!0,setTimeout(function(){u.refresh()},5e3)))}):r()).then(s.pipe.allPost).done(s.done.all||$.noop)},getList:function(t,e,i){t=t?[].concat(t):[],s.filter&&(t=_(t).filter(s.filter)),i=i||{},e=void 0===e||!!e;function o(){var e=_.extend({},s.requests.list);return i.allColumns&&(e.columns=p.getAllColumns(s.module,!0)),i.unseen&&(e.unseen=!0),p.fixList(t,p.PUT({module:s.module,params:e,data:p.simplify(t)})).then(function(e){return(s.pipe.list||_.identity)(e)}).then(function(e){var t=i.allColumns?"add":"merge";return $.when(l.list.add(e),l.get[t](e)).then(function(){return e})})}return 0===t.length?$.Deferred().resolve([]).done(s.done.list||$.noop):(e?l.list.get(t,o):o()).then(s.pipe.listPost).done(s.done.list||$.noop)},get:function(e,i){function t(){return p.GET({module:s.module,params:(e=o,(t=_.copy(e,!0)).folder=t.folder||t.folder_id,delete t.folder_id,t)}).then(function(e){return(s.pipe.get||_.identity)(e,o)},function(e){throw u.trigger("error error:"+e.code,e),e}).then(function(e){return i?$.when(l.get.add(e),l.list.merge(e).done(function(e){e&&u.trigger("refresh.list")})).then(function(){return e}):e}).fail(function(e){_.call(s.fail.get,e,o,s)});var e,t}var o=$.extend({},s.requests.get,e);return((i=void 0===i||!!i)?l.get.get(o,t,s.pipe.getCache):t()).then(s.pipe.getPost).done(s.done.get||$.noop)},localRemove:function(e,t,i){return _(e).filter(function(e){return!0!==t[i(e)]})},updateCaches:function(e,t){e=e||[],e=_.isArray(e)?e:[e];var i,o={},n={},a=r.defaultKeyGenerator;return _(e).each(function(e){o[a(e)]=n[e.folder_id]=!0}),e.length<100?(i=_(n).map(function(e,t){var i=u.caches.all;return i.grepKeys(t+"//").then(function(e){return $.when.apply($,_(e).map(function(t){return i.get(t).then(function(e){return e?("data"in e?e.data=u.localRemove(e.data,o,a):e=u.localRemove(e,o,a),i.add(t,e)):$.when()})}))})}),e.length&&(i.push(u.caches.list.remove(e)),i.push(u.caches.get.remove(e)))):(i=[u.caches.all.clear()],e.length&&(i.push(u.caches.list.clear()),i.push(u.caches.get.clear()))),u.resetTrashFolders&&i.push(u.resetTrashFolders()),$.when.apply($,i).done(function(){t||_(e).each(function(e){u.trigger("delete:"+_.ecid(e))}),o=n=i=e=null})},remove:function(i,e){i=i||[],i=_.isArray(i)?i:[i],e=_.extend({local:!1,force:!1},e||{});var t=$.extend({},s.requests.remove,{timestamp:_.then()}),o=p.simplify(i);e.force&&(t.harddelete=!0);function n(e){var t={};return _(i).each(function(e){t[e.folder_id]=e.folder_id}),$.when.apply($,_(t).map(function(e){return u.caches.all.grepRemove(e+"//")})).then(function(){return $.Deferred()[e.error?"reject":"resolve"](e)})}function a(){u.trigger("refresh.all"),u.trigger("delete",i)}return u.trigger("beforedelete",i),u.updateCaches(i).then(function(){return u.trigger("refresh:all:local"),!0!==e.local?p.PUT({module:s.module,params:t,data:o,appendColumns:!1}).then(n,n).always(a):a()})},needsRefresh:function(e,t,i){return l.all.keys(e+"//"+t+"."+i).then(function(e){return null!==e})},reduce:i,caches:l};return s.requests.search&&(u.search=function(e,t){var i=$.extend({},s.requests.search,t||{}),o=i.getData;return t=t||{},s.requests.search.omitFolder&&!1!==t.omitFolder&&delete i.folder,delete i.omitFolder,delete i.getData,p.PUT({module:s.module,params:i,data:o(e,t)}).then(function(e){return(s.pipe.search||_.identity)(e)})}),s.requests.advancedsearch&&(u.advancedsearch=function(e,t){var i=$.extend({},s.requests.advancedsearch,t||{}),o=i.getData;return t=t||{},s.requests.advancedsearch.omitFolder&&!1!==t.omitFolder&&delete i.folder,delete i.omitFolder,delete i.getData,p.PUT({module:s.module,params:i,data:o(e,t)}).then(function(e){return e})}),e.extend(u),u.refresh=function(){return ox.online?$.when(u.caches.all.clear(),u.caches.list.clear()).done(function(){u.trigger("refresh.all")}):$.when()},ox.on("refresh^",function(){u.refresh()}),u.Model=t.Model,u.Collection=t.Collection,u};return n.reduce=i,n.extendColumns=function(e,t,i){var o={},n={},a=p.getColumnMapping(t);return _.each(a,function(e,t){n[e]=t}),_.each(i.split(","),function(e){o[e]=1}),_.chain(s.point(e).invoke("columns")).flatten(!0).each(function(e){o[n[e]||e]=1}),_.keys(o).join()},n}
1),define("io.ox/core/api/collection-pool",["io.ox/core/api/backbone"],function(i){var o={},a={},r=!1,s=!1,t=i.Collection.extend({_removeModels:function(e,t){return e=_(e).filter(function(e){return!0!==e.preserve}),i.Collection.prototype._removeModels.call(this,e,t)}});function l(e,n){if(!r)try{_(a[e]).each(function(e){var t,i=n.changed.cid?n.previous("cid"):n.cid,o=e.collection.get(i);o&&(r=!0,delete(t=n.toJSON()).index,o.set(t))})}catch(e){ox.debug&&console.warn("error in collection pool propagateChange",e)}finally{r=!1}}function d(i){var o={};_(i).each(function(e,t){"detail"!==t&&0!==t.indexOf("search")&&(e.collection.expired?(e.collection.reset(),delete i[t]):e.collection.each(function(e){o[e.cid]=!0,_(this.getDependentModels(e.cid)).each(function(e){o[e.cid]=!0})},this))},this);var e=this.get("detail").filter(function(e){return void 0===e["index/virtual/favorites/infostore"]&&(void 0===e["index/virtual/favoriteFiles/infostore"]&&!o[e.cid])});this.get("detail").remove(e,{silent:!0}),o=null,_(i).each(function(e,t){"detail"!==t&&!1!==e.collection.gc&&e.collection.expire()})}function n(o,e){var n=a[o]||(a[o]={});e=e||{},this.Collection=e.Collection||t,this.Model=e.Model||i.Model,this.getCollections=function(){return n},this.get=function(e){var t=n[e];if(t)return t.access=_.now(),t.collection;var i=new this.Collection;return n[e]={access:_.now(),collection:i},i.expired=!1,i.complete=!1,i.sorted=!0,i.expire=function(){this.expired=!0,this.trigger("expire")},i.setComplete=function(e){e!==this.complete&&(this.complete=e,this.trigger("complete",e))},i.cid=e,i.on({remove:function(e,i){if(!r&&!s)try{_(a[e]).each(function(e){var t=e.collection.get(i.cid);t&&(t.preserve=i.preserve,r=!0,e.collection.remove(t))})}catch(e){ox.debug&&console.warn("error in collection pool propagateRemove",e)}finally{r=!1}}.bind(this,o),change:l.bind(this,o)})},this.getModule=function(){return o},this.gc=function(){d.call(this,n)},ox.on("refresh^",_.throttle(d.bind(this,n),5e3))}return n.create=function(e,t){return o[e]||(o[e]=new n(e,t))},n.inspect=function(){_(o).each(function(e,t){var i=0,o=e.getCollections();_(o).each(function(e){i+=_(e.collection).size()}),console.debug("Pool:",t,"Model count:",i,"Collections:",o)})},n.preserve=function(e){s=!0,e&&e(),s=!1},_.extend(n.prototype,{getDefault:function(){return new this.Collection},propagate:function(e,t){"change"===e&&l.call(this,this.getModule(),new this.Model(t))},map:_.identity,add:function(e,t){1===arguments.length&&(t=e,e="detail");var i=this.get(e);return t=_([].concat(t)).map(this.map,i),i.add(t,{merge:!0,parse:!0}),i},resolve:function(e){var t=this.get("detail"),i=this.Model;return _([].concat(e)).map(function(e){return e instanceof i?e:t.get(_.cid(e))||{}})},getDetailModel:function(e){var t,i=_.cid(e),o=this.get("detail");return(t=o.get(i))||(t=new this.Model(e),void 0!==e.folder_id&&void 0===e.parent&&o.add(t)),t},grep:function(){var i=arguments;return _(this.getCollections()).chain().filter(function(e,t){return _(i).reduce(function(e,t){return e&&-1<this.indexOf(t)}.bind(t),!0)}).pluck("collection").value()},getByFolder:function(e){return this.grep("folder="+e+"&")},getBySorting:function(e,t){return this.grep("folder="+t+"&","sort="+e)},getDependentModels:function(){return[]},resetFolder:function(e){var t=this,i=_([].concat(e)).chain().map(function(e){return t.getByFolder(e)}).flatten().uniq();return i.invoke("expire"),i},preserveModel:function(i,o){_(this.getCollections()).each(function(e){var t=e.collection.get(i);t&&(t.preserve=!!o)})}}),n}),define("io.ox/core/api/collection-loader",["io.ox/core/api/collection-pool","io.ox/core/http"],function(l,s){var d={load:"reset",paginate:"add",reload:"set"};function e(e){var t,i;function r(t,i,e,o,n){var a="load"===i?o.PRIMARY_PAGE_SIZE:o.SECONDARY_PAGE_SIZE;if("paginate"===i&&0<t.length){var r=_(n).first(),s=t.last().toJSON();if(s&&s.head&&(s=s.head),r&&r.head&&(r=r.head),_.cid(r)!==_.cid(s))return ox.debug&&console.warn("paginate compare fail",_.cid(r),_.cid(s),n),e.thread="threadedAll"===e.action,void o.reload(e,a)}l.preserve(function(){var e=d[i];t.preserve&&"reload"===i?t[e](n,{parse:!0,add:!0,remove:!1,sort:!1}):t[e](n,{parse:!0})}),"load"===i?t.setComplete(n.length<a):"paginate"===i&&t.setComplete(n.length<=1),t.trigger(i)}function s(e,t,i){e.trigger(t+":fail",i)}function a(t,e){var i="paginate"===e?Math.max(this.collection.length-1,0):0;this.collection.trigger("before:"+e);var o=_.lfo(r,this.collection,e,t,this),n=_.lfo(s,this.collection,e),a=this;return this.fetch(t).done(function(e){a.addIndex(i,t,e),a.done(),o(e)}).fail(function(e){a.done(),n(e),a.fail(e)})}_.extend(this,{columns:"1,20",module:"mail",ignore:"limit max"},e),this.pool=l.create(this.module),this.ignore=(t=String(this.ignore).split(" "),i={},_(t).each(function(e){i[e]=!0}),i),this.collection=null,this.loading=!1,this.load=function(e){var t;if(!1!==(e=this.getQueryParams(e||{}))){if(e.limit="0,"+this.PRIMARY_PAGE_SIZE,t=this.collection=this.getCollection(e),this.loading=!1,this.isBad(e.folder)||(0<t.length||t.complete)&&!t.expired&&t.sorted&&!t.preserve){var i=t.CUSTOM_PAGE_SIZE||this.PRIMARY_PAGE_SIZE;return t.length>i&&(t.reset(t.first(i),{silent:!0}),t.complete=!1),_.defer(function(){t.trigger(t.complete?"reset load cache 
1complete":"reset load cache")}),t}return this.loading=!0,_.defer(a.bind(this),e,"load"),t}},this.paginate=function(e){var t=this.collection;if(this.loading)return t;var i=Math.max(0,t.length-1);return e=this.getQueryParams(_.extend({offset:i},e)),this.isBad(e.folder)||(e.limit=i+","+(t.length+this.SECONDARY_PAGE_SIZE),this.loading=!0,_.defer(a.bind(this),e,"paginate")),t},this.reload=function(e,t){var i=this.collection;if(this.loading)return i;if(e=this.getQueryParams(_.extend({offset:0},e)),this.isBad(e.folder))return i;var o=Math.ceil((i.length-this.PRIMARY_PAGE_SIZE)/this.SECONDARY_PAGE_SIZE)*this.SECONDARY_PAGE_SIZE+this.PRIMARY_PAGE_SIZE,n=Math.max(i.length+(t||0),o);return e.limit="0,"+(0===n?this.PRIMARY_PAGE_SIZE:n),this.loading=!0,_.defer(a.bind(this),e,"reload"),i}}function t(e){return!this.ignore[e]}function i(e){var t=this[e];return e+"="+(_.isString(t)?t:JSON.stringify(t))}return _.extend(e.prototype,{PRIMARY_PAGE_SIZE:50,SECONDARY_PAGE_SIZE:200,cid:function(e){return _(e||{}).chain().keys().filter(t,this).map(i,e).value().sort().join("&")||"default"},getDefaultCollection:function(){return this.pool.getDefault()},getCollection:function(e){var t=this.cid(e);return this.pool.get(t)},before:function(){},each:function(){},after:function(){},addIndex:function(i,o,e){this.before(i,o,e),_(e).each(function(e,t){e.index=i+t,this.each(e,t,i,o)},this),this.after(i,o,e)},noSelect:function(){return!1},virtual:function(){return!1},isBad:function(e){return!e&&0!==e},fetch:function(t){var e=this.module,i=e+"/"+_.cacheKey(_.extend({session:ox.session},t)),o=ox.rampup[i],n=this.noSelect(t),a=this.virtual(t),r=this;return o?(delete ox.rampup[i],$.when(o)):n?$.when([]):a?$.when(a):s.wait().then(function(){return r.httpGet(e,t).then(function(e){return r.filter&&(e=_(e).filter(r.filter)),r.useSlice?Array.prototype.slice.apply(e,t.limit.split(",")):e})})},httpGet:function(e,t){return this.useSlice&&(t=_(t).omit("limit")),s.GET({module:e,params:t})},getQueryParams:function(){return{}},done:function(){this.loading=!1},fail:function(){}}),e}),define("io.ox/mail/common-extensions",["io.ox/core/extensions","io.ox/mail/util","io.ox/mail/api","io.ox/core/api/account","
1io.ox/core/strings","io.ox/core/folder/api","io.ox/core/folder/title","io.ox/core/notifications","io.ox/contacts/api","io.ox/contacts/util","io.ox/core/api/user","io.ox/core/api/collection-pool","io.ox/core/tk/flag-picker","io.ox/core/capabilities","io.ox/backbone/views/toolbar","settings!io.ox/mail","io.ox/core/attachments/view","io.ox/backbone/views/action-dropdown","io.ox/backbone/views/actions/util","gettext!io.ox/mail"],function(l,d,r,c,o,n,e,a,u,p,t,i,s,h,f,g,m,v,x,b){function w(e){return e.app&&e.app.listView&&e.app.listView.loader&&"search"===e.app.listView.loader.mode}function y(e,t,i){var o=i.data.thread&&i.data.thread[0]||i.data,n=d.authenticity("image",o),a=c.is("spam",i.data.folder_id);if(n||a)return e.text("!");var r=function(e){if(!_.isArray(e)||!e.length)return"";var t=d.getDisplayName(e[0]);return p.getInitials({display_name:t})}(i.data.from);e.text(r);var s=_.isArray(t)?t&&t[0]&&t[0][1]:t;return u.pictureHalo(e,{email:s},{width:40,height:40,effect:"fadeIn",fallback:!1})}var k,C,S,T={a11yLabel:function(e){var t,i=e.data,o=r.threads.size(i),n=i.from||[["",""]],a=[];d.isUnseen(i)&&a.push(b("Unread")),d.isFlagged(i)&&a.push(b("Flagged")),e.data.color_label&&g.get("features/flag/color")&&a.push(b("Color %1$s",s.colorName(e.data.color_label))),a.push(d.getDisplayName(n[0]),i.subject,d.getTime(i.date)),1<o&&a.push(b.ngettext("Thread contains %1$d message","Thread contains %1$d messages",o,o)),i.attachment&&a.push(b("has attachments")),t=a.join(", ")+".",this.attr({"aria-hidden":!0}).parent().attr({"aria-label":t.replace(/["<]/g,function(e){return'"'===e?"&quot":"<"===e?"&lt;":e})})},authenticity:function(e){var t,i,o,n=d.authenticity("box",e&&e.model.toJSON());n&&(t=$('<section class="authenticity">'),i=e.data.from||[],o=_.chain(i).map(function(e){return String(e[1]||"").toLowerCase()}).compact().value().join(", "),t.append($("<div>").addClass("message "+n.toLowerCase()).append($("<b>").text(/(fail|suspicious)/.test(n)?b("Warning:")+" ":b("Note:")+" "),$.txt(d.getAuthenticityMessage(n,o)))),this.append(t))},picture:function(e){var t=e.data,i=e.app.props.get("thread"),o=r.threads.size(t),n=(!i||o<=1)&&!w(e)&&c.is("sent|drafts",t.folder_id)?t.to:t.from,a=$('<div class="contact-picture" aria-hidden="true">');this.append(w(e)&&t.picture?y(a,t.picture):y(a,n,e))},senderPicture:function(e){var t=e.data.from,i=$('<div class="contact-picture" aria-hidden="true">');this.append(y(i,t,e))},date:function(e,t){var i=e.data.date;t=_.extend({fulldate:e.app&&e.app.props.get("exactDates"),smart:!(e.app&&e.app.props.get("exactDates"))},t),_.isNumber(i)&&this.append($('<time class="date gray">').attr("datetime",moment(i).toISOString()).text(d.getDateTime(i,t)))},smartdate:function(e){T.date.call(this,e,{fulldate:!1,smart:!0})},fulldate:function(e){T.date.call(this,e,{fulldate:!0,smart:!1})},from:function(t){var i={folder:t.data.folder_id,field:"from",showDisplayName:!0};_.each(T.fromPipeline,function(e){e.call(this,t,i)}),this.append($('<div class="from">').attr("title",i.mailAddress).append($('<span class="flags">'),d.getFrom(t.data,_.pick(i,"field","reorderDisplayName","showDisplayName","unescapeDisplayName"))))},fromDetail:function(e){var a=$('<div class="from">'),r=e.data,t=r.from||[],s=t.length,l=d.authenticity("icon",r);_(t).each(function(e){var t,i,o=String(e[1]||"").toLowerCase(),n=d.getDisplayName(e);o&&(a.addClass(1<s||_.device("smartphone")?"no-max-height":"").append(t=$('<a href="#" role="button" class="halo-link">').data({email:o,email1:o}).append($('<span class="sr-only">').text(b("From:"))).append($('<span class="person-link person-from ellipsis">').text(n)).addClass(n===o&&l?"authenticity-sender "+l:"")),i=_.device("smartphone")&&!!n&&("pass"===l||c.is("sent",r.folder_id)),n===o||i||t.append($('<span class="address">').text("<"+o+">").addClass(l?"authenticity-sender "+l:"")),l&&t.append($('<span data-toggle="popover" data-container="body" class="authenticity">').attr("aria-label",d.getAuthenticityMessage(l,o)).popover({placement:_.device("smartphone")?"auto":"right",trigger:"focus hover",content:d.getAuthenticityMessage(l,o)}).append($('<i class="fa" aria-hidden="true">').addClass(function(){return/(pass|trusted)/.test(l)?"fa-check":/(fail|suspicious)
1/.test(l)?"fa-exclamation-triangle":"fa-question"}).addClass(l?"authenticity-icon-"+l:""))),_.device("smartphone")&&-1<n.indexOf("@")&&a.addClass("show-address"))}),a.append('<div class="spacer">'),this.append(a)},fromPipeline:{field:function(e,t){1<e.data.threadSize||c.is("sent|drafts",t.folder)&&(t.field="to")},fieldSearch:function(e,t){var i;w(e)&&(i=e.app&&e.app.get("find"),t.field=i&&c.is("sent|drafts",i.getFolderFacetValue())?"to":"from")},displayName:function(e,t){var i;t.reorderDisplayName=t.unescapeDisplayName="from-to"!==e.options.sort,"from-to"===e.options.sort&&(i=n.pool.getModel(t.folder).get("capabilities")||0,t.showDisplayName=!!(4096&i))},address:function(e,t){t.mailAddress=d.getFrom(e.data,{field:t.field,showDisplayName:!1}).text()}},size:function(e){var t,i;e.app&&608!==e.app.props.get("sort")&&!e.app.props.get("alwaysShowSize")||(t=e.data,_.isNumber(t.size)&&(i=d.threadFileSize(t.thread||[t]),this.append($('<span class="size">').text(o.fileSize(i,1)))))},unreadClass:function(e){var t=d.isUnseen(e.data);this.closest(".list-item").toggleClass("unread",t)},deleted:function(e){this.parent().toggleClass("deleted",d.isDeleted(e.data))},colorflag:function(e){var t,i;g.get("features/flag/color")&&(i="fa-bookmark",(t=e.data.color_label)<=0||((e.app&&e.app.isThreaded()||e.options.threaded)&&e.data.thread&&t!==e.data.thread[0].color_label&&(i="fa-bookmark-o",t=0),this.append($('<i class="color-flag fa" aria-hidden="true">').addClass(i).addClass(0<t?"flag_"+t:"multiple-colors"))))},flag:function(e){g.get("features/flag/star")&&d.isFlagged(e.data)&&this.append($('<span class="flag">').append(T.flagIcon.call(this).attr("title",b("Flagged"))))},flagIcon:function(){return $('<i class="fa" aria-hidden="true">')},flaggedClass:function(e){g.get("features/flag/star")&&this.closest(".list-item").toggleClass("flagged",d.isFlagged(e.data))},flagToggle:function(t){var i;g.get("features/flag/star")&&!d.isEmbedded(t.data)&&(i=this,t.view.listenTo(t.view.model,"change:flags",_.partial(U,t.view)),n.get(t.data.folder_id).done(function(e){n.can("write",e)&&!n.is("unifiedfolder",e)&&i.append($('<a href="#" role="button" class="flag io-ox-action-link" data-action="flag">').append(T.flagIcon.call(this)).each(_.partial(R,t.data)).on("click",{model:t.view.model},B))}))},threadSize:function(e){var t;(e.app&&e.app.isThreaded()||e.options.threaded)&&((t=r.threads.size(e.data))<=1||this.append($('<div class="thread-size" aria-hidden="true">').append($('<span class="number drag-count">').text(t))))},paperClip:function(e){e.data.attachment&&this.append($('<i class="fa fa-paperclip has-attachments" aria-hidden="true">'))},sharedAttachement:function(e){e.model&&_.has(e.model.get("headers"),"X-Open-Xchange-Share-URL")&&this.append($('<i class="fa fa-cloud-download is-shared-attachement" aria-hidden="true">'))},pgp:{encrypted:function(e){(/^multipart\/encrypted/.test(e.data.content_type)||e.model.get("security")&&e.model.get("security").decrypted)&&this.append($('<i class="fa fa-lock encrypted" aria-hidden="true">'))},signed:function(e){(/^multipart\/signed/.test(e.data.content_type)||e.model.get("security")&&e.model.get("security").signatures)&&this.append($('<i class="fa fa-pencil-square-o signed" aria-hidden="true">'))}},priority:function(e){var t=d.getPriority(e.data);t.length&&this.append($('<span class="priority" aria-hidden="true">').append(t))},envelope:function(){return $('<i class="fa seen-unseen-indicator" aria-hidden="true">').appendTo(this)},unread:function(e){d.isUnseen(e.data)&&T.envelope.call(this).attr("title",b("Unread"))},answered:function(e){var t=e.data,i=_.cid(t),o=r.threads.get(i);d.isAnswered(o,t)&&this.append('<i class="icon-answered fa fa-reply" aria-hidden="true">')},forwarded:function(e){var t=e.data,i=_.cid(t),o=r.threads.get(i);d.isForwarded(o,t)&&this.append('<i class="icon-forwarded fa fa-mail-forward" aria-hidden="true">')},subject:function(e){var t=e.data,i=1===e.data.threadSize,o=d.getSubject(t,i);this.append($('<div class="subject" role="presentation">').append($('<span class="flags" role="presentation">'),$('<span class="drag-title" role="presentation">').text(o).attr("title",o)))},title:function(e){var t=d.getSubject(e.data);this.closest(".list-item").attr("title",t)},account:function(e){c.isUnifiedFolder(e.data.folder_id)&&this.append($('<span class="account-name">').text(e.data.account_name||""))},empty:function(){this.attr("role","option").text(b("Empty"))},folder:function(e){var t;e.data.original_folder_id&&(t=e.app&&e.app.folder&&"virtual/all-unseen"===e.app.folder.get(),(w(e)||t)&&this.append($('<span class="original-folder">').append(n.getTextNode(e.data.original_folder_id))))},recipients:function(e){var t,i=e.data,o=i.cc&&0<i.cc.length,n=i.to&&0<i.to.length,a=i.bcc&&0<i.bcc.length,r=n||o||a,s=$('<div class="recipients">');r?(n&&s.append($('<span class="io-ox-label">').append($.txt(b("To")),$.txt("  ")),d.serializeList(i,"to"),$.txt("   ")),o&&s.append($('<span class="io-ox-label">
1').append($.txt(b.pgettext("CC","Copy")),"  "),d.serializeList(i,"cc"),$.txt("   ")),a&&s.append($('<span class="io-ox-label">').append($.txt(b("Blind copy")),"  "),d.serializeList(i,"bcc"),$.txt("   ")),this.append(s),3<(t=s.find(".person-link")).length&&(s.children().slice(4).hide(),s.append($('<a role="button" href="#" class="show-all-recipients">').text(b("and %1$d others",t.length-2)).on("click",V)))):this.append(s.append($.txt(" ")))},attachmentList:function(e){if(0===e.attachments.length)return $.when();(e.model?e.model.get("headers"):e.data.headers||{})["X-Open-Xchange-Share-Type"]&&this.hide();_.once(function(){S=m.View.extend({renderContent:O})})();var r=e.attachments.map(function(e){return e.group="mail",e}),s=new m.Collection(r),t=!!this.data("view"),i=this.data("view")||new m.List({AttachmentView:S,collection:s,el:this,mode:g.get("attachments/layout/detail/"+_.display(),"list")});i.openByDefault=g.get("attachments/layout/detail/open",i.openByDefault),i.$header.empty(),i.render();var o=new f({el:i.$header.find(".links")[0],inline:!0,simple:!0,dropdown:!1,strict:!1,point:"io.ox/mail/attachment/links"});return i.renderInlineLinks=function(){var e=this.getValidModels();e.length&&o.setSelection(_(e).pluck("id"),{data:_(e).invoke("toJSON")})},i.listenTo(i.collection,"add remove reset",i.renderInlineLinks),i.listenTo(e.model,"change:imipMail",i.renderInlineLinks),i.listenTo(e.model,"change:sharingMail",i.renderInlineLinks),i.renderInlineLinks(),t||(i.$el.on("click","li.item",function(e){var t,i,o,n=$(e.currentTarget),a=$(e.target);a.hasClass("dropdown-toggle")||(t=n.attr("data-id"),s.get(t).toJSON(),t=n.attr("data-id"),i=s.get(t).toJSON(),o=l.Baton({simple:!0,data:i,list:r,restoreFocus:a,openedBy:"io.ox/mail/details"}),x.invoke("io.ox/mail/attachment/actions/view",o))}),i.on("change:layout",function(e){g.set("attachments/layout/detail/"+_.display(),e).save()})),i.$el.find('[role="toolbar"]').find('a[role="menuitem"]').attr("role","button"),i},flagPicker:function(e){g.get("features/flag/color")&&s.draw(this,e)},unreadIndicator:function(e){var t;d.isEmbedded(e.data)||(t=this,n.get(e.data.folder_id).done(function(e){(n.can("write",e)||n.is("unifiedfolder",e))&&t.append($('<span class="unread-toggle">').attr("aria-label",b("Marked as unread")).append($('<i class="fa fa-fircle" aria-hidden="true">')))}))},unreadToggle:function(t){var i;d.isEmbedded(t.data)||(i=this,t.view.listenTo(t.view.model,"change:flags",_.partial(z,t.view)),n.get(t.data.folder_id).done(function(e){(n.can("write",e)||n.is("unifiedfolder",e))&&i.append($('<a href="#" role="button" class="unread-toggle io-ox-action-link" data-action="unread-toggle">').append('<i class="fa" aria-hidden="true">').each(_.partial(L,t.data)).on("click",{model:t.view.model},q))}))},disabledLinks:function(e){d.authenticity("block",e.data)&&!d.isMalicious(e.data)&&(function(){this.append($('<div class="notification-item disabled-links">').append($('<button type="button" class="btn btn-default btn-sm">').text(b("Enable Links")),$('<div class="comment">').text(b("Links have been disabled to protect you against potential spam")),$('<button type="button" class="close">').attr("title",b("Close")).append('<i class="fa fa-times" aria-hidden="true">')))}.call(this,e.model),this.on("click",".disabled-links > .btn-default",{view:e.view},P),this.on("click",".disabled-links > .close",function(e){$(e.target).closest(".disabled-links").remove()}))},externalImages:function(t){E.call(this,t.model),this.on("click",".external-images > .btn-default",{view:t.view},function(e){l.point("io.ox/mail/externalImages").cascade(this,t).then(function(){!function(e){e.preventDefault();var t=e.data.view;t.trigger("load"),t.$el.find(".external-images").remove(),r.getUnmodified(t.model.pick("id","folder","folder_id","parent","security")).done(function(e){t.trigger("load:done"),t.model.set(e)})}(e)})}),this.on("click",".external-images > .close",function(e){$(e.target).closest(".external-images").remove()}),t.view.listenTo(t.model,"change:modified",E.bind(this))},phishing:(C=_(g.get("phishing/headers",["phishing-test"])),function(e){F.call(this,e.model),e.view.listenTo(e.model,"change:headers",F.bind(this))}
1),plainTextFallback:function(e){N.call(this,e.model),e.view.listenTo(e.model,"change:warnings",N.bind(this))},dispositionNotification:(k={},function(e){M.call(this,e.model),this.on("click",".disposition-notification .btn",{view:e.view,model:e.model},D),this.on("click",".disposition-notification .close",{view:e.view,model:e.model},A),e.view.listenTo(e.model,"change:disp_notification_to",M.bind(this))})};function D(e){e.preventDefault();var t=e.data.view,i=_.cid(t.model.cid);t.model.set("disp_notification_to",""),k[t.model.cid]=!0,r.ack({folder:i.folder_id,id:i.id,to:e.data.model.get("to")}).done(function(){a.yell("success",b("A read receipt has been sent"))})}function A(e){e.preventDefault();var t=e.data.view;k[t.model.cid]=!0}function M(e){this.find(".disposition-notification").remove(),k[e.cid]||d.hasUnsendReadReceipt(e.toJSON())&&g.get("sendDispositionNotification",!1)&&(c.is("drafts",e.get("folder_id"))||this.append($('<div class="alert alert-info disposition-notification notification-item">').append($('<button type="button" class="btn btn-primary btn-sm">').text(b("Send a read receipt")),$('<div class="comment">').text(b("The sender wants to get notified when you have read this email")),$('<button type="button" class="close" data-dismiss="alert">').attr("title",b("Close")).append('<i class="fa fa-times" aria-hidden="true">'))))}function N(e){this.find(".warnings").length||e.get("warnings")&&this.append($('<div class="alert alert-error warnings">').text(e.get("warnings").error))}function F(e){this.find(".phishing").length||_(e.get("headers")).find(function(e,t){if(C.contains(t))return this.append($('<div class="alert alert-error phishing">').text(b("Warning: This message might be a phishing or scam mail"))),!0},this)}function E(e){if(1!==e.get("modified"))return this.find(".external-images").remove();this.append($('<div class="notification-item external-images">').append($('<button type="button" class="btn btn-default btn-sm">').text(b("Show images")),$('<div class="comment">').text(b("External images have been blocked to protect you against potential spam")),$('<button type="button" class="close">').attr("title",b("Close")).append('<i class="fa fa-times" aria-hidden="true">')))}function I(e,t,i){e.options.disable=e.options.disable||{};var o=e.options.disable[t];_.isString(o)&&(e.options.disable[t]=[].concat(o)),e.options.disable[t]=(e.options.disable[t]||[]).concat(i)}function P(e){e.preventDefault();var t=e.data.view;t.trigger("load"),t.$el.find(".disabled-links").remove(),I(t,"io.ox/mail/detail/source","disable-links"),I(t,"io.ox/mail/detail/content-general","disable-links"),I(t,"io.ox/mail/detail/notifications","disabled-links"),t.redraw()}function L(e,t,i){var o=d.isUnseen(e)?b("Mark as read"):b("Mark as unread");$(i).attr({"aria-label":o}).find(".fa").attr("title",o)}function q(e){e.preventDefault();var t=e.data.model.toJSON();d.isUnseen(t)?r.markRead(t):r.markUnread(t)}function z(e,t){var i=e.$("a.unread-toggle");L(t.toJSON(),0,i)}function O(){var e,t,i=this.model.toJSON();new v({backdrop:!0,caret:!1,data:i,el:this.$(".file"),point:"io.ox/mail/attachment/links",title:this.model.getShortTitle(),list:this.model.collection.toJSON()}),e=r.getUrl(i,"download"),t=(this.model.get("content_type")||"unknown").split(/;/)[0],this.$el.attr({title:this.model.getTitle(),draggable:!0,"data-downloadurl":t+":"+this.model.getTitle().replace(/:/g,"")+":"+ox.abs+e}).on("dragstart",function(e){$(this).css({display:"inline-block"}),e.originalEvent.dataTransfer.setData("DownloadURL",this.dataset.downloadurl)}),t&&!/^image\//.test(t)&&this.$el.addClass("no-image")}function V(e){e.preventDefault(),$(this).parent().children().show(),$(this).hide()}function R(e,t,i){var o=d.isFlagged(e)?b("Flagged"):b("Not flagged");$(i).attr("aria-label",o).find(".fa").attr("title",o)}function B(e){e.preventDefault();var t=e.data.model.toJSON();d.isFlagged(t)?r.flag(t,!1):r.flag(t,!0)}function U(e,t){var i=e.$("a.flag.io-ox-action-link");R(t.toJSON(),0,i)}return T}),define("io.ox/core/tk/list",["io.ox/backbone/views/disposable","io.ox/backbone/mini-views/contextmenu-utils","io.ox/core/tk/list-selection","io.ox/core/tk/list-dnd","io.ox/core/extensions"],function(e,t,r,s,l){var i={13:"enter",27:"escape",32:"space",37:"cursor:left",38:"cursor:up",39:"cursor:right",40:"cursor:down"};function o(){return $.when()}function d(e){return e&&parseInt(e.getAttribute("data-index"),10)}return e.extend({tagName:"ul",className:"list-view",scaffold:$('
1<li class="list-item"><div class="list-item-checkmark"><i class="fa fa-checkmark" aria-hidden="true"></i></div><div class="list-item-content"></div><div class="list-item-swipe-conent"></div></li>'),busyIndicator:$('<li class="busy-indicator" role="presentation"><i class="fa fa-chevron-down" aria-hidden="true"></i></li>'),notification:$('<li class="abs notification hidden" role="presentation"></li>'),pullToRefreshIndicator:$('<div class="pull-to-refresh" style="transform: translate3d(0, -70px,0)"><div class="spinner slight-drop-shadow" style="opacity: 1"><i id="ptr-spinner" class="fa fa-refresh" aria-hidden="true"></i></div></div>'),onItemFocus:function(){this.toggleFocus(!0)},onItemBlur:function(){this.mousedown||this.toggleFocus(!1)},onKeepFocus:function(e){e.target===this.el&&e.pageX&&this.restoreFocus()},onContextMenu:function(){},restoreFocus:function(e){var t=this.getItems(),i=t.filter(".selected");0!==i.length?1===i.length?i.focus():1===i.filter(document.activeElement).length?i.filter(document.activeElement).focus():i.last().focus():e&&this.selection.select(0,t)},onItemKeydown:function(e){i[e.which]&&this.trigger(i[e.which],e),t.macOSKeyboardHandler(e),e.isKeyboardEvent&&this.onContextMenu(e)},onScroll:_.throttle(function(){var e;this.disposed||this.isBusy||!this.loader.collection||this.collection.complete||!this.$el.is(":visible")||(e=this.$el.outerHeight(),(this.el.scrollTop+e)/this.el.scrollHeight<.8||(this.addBusyIndicator(),this.processPaginate()))},20),onLoad:function(){this.idle(),this.isComplete()||this.onScroll()},onComplete:function(e){this.toggleComplete(!1!==e)},processPaginate:function(){!this.options.pagination||this.isBusy||this.isComplete()||this.paginate()},getCompositeKey:function(e){return e.isFolder&&e.isFolder()?"folder."+e.get("id"):e.cid},onModelChange:function(){this.disposed||this.load()},empty:function(){this.idle(),this.toggleComplete(!1),this.getItems().remove(),delete this.currentLabel,this.$(".list-item-label").remove(),this.selection&&this.selection.reset(),this.$el.scrollTop(0)},renderNotification:function(e,t){var i=l.Baton({app:this.app,options:this.options,listView:this,error:t}),o=l.point(this.ref+"/notification/"+e),n=!this.collection.length,a=this.$(".notification").attr("role","error"===e?"alert":"presentation").empty();n&&o.keys().length&&o.invoke("draw",a,i),a.toggleClass("hidden",!n)},renderEmpty:function(){this.renderNotification("empty")},renderError:function(e){this.idle(),this.renderNotification("error",e)},onReset:function(){var t=this;this.empty(),this.collection.each(function(e){t.$el.append(t.renderListItem(e,!0))}),this.trigger("reset",this.collection,this.firstReset),this.firstReset&&(this.trigger("first-reset",this.collection),this.firstReset=!1),this.firstContent&&this.collection.length&&(this.trigger("first-content",this.collection),this.firstContent=!1),this.trigger("listview:reset")},onAdd:function(e){this.queue.add(e).render()},lastElementOfLabel:function(e){var t=e.prev(),i=e.next(),o=e.attr("data-label");return t.attr("data-label")!==o&&i.attr("data-label")!==o},onRemove:function(e){var t=this.getItems(),i=this.getCompositeKey(e),o=t.filter('[data-cid="'+$.escape(i)+'"]'),n=o.hasClass("selected");0!==o.length&&(o[0].offsetTop<this.el.scrollTop&&(this.el.scrollTop-=o.outerHeight(!0)),this.selection&&this.selection.remove(i,o),this.options.labels&&this.lastElementOfLabel(o)&&o.prev().remove(),o.remove(),this.trigger("remove-mobile"),n&&this.selection.triggerChange(),1<t.length&&_.defer(function(){this.disposed||this.$el.trigger("scroll")}.bind(this)),this.trigger("remove",e))},onBatchRemove:function(e){var i={};_(e).each(function(e){var t;_.isObject(e)?(t=e.cid||_.cid(e),i[t]=!0):i[e]=!0});var t,o,n=this.getItems();0!==n.length&&(t=n.filter(".selected")[0],n.filter(function(){var e=$
1(this).attr("data-cid");return!!i[e]}).remove(),this.renderEmpty(),!t||((o=$(t).position().top)<0||o>this.el.offsetHeight)&&t.scrollIntoView())},onSort:function(){if(!this.queue.list.length){for(var e,t,i,o={},n=this.getItems().toArray(),a=_(n).sortBy(d),r=0,s=0,l=a.length;r<l;r++)if(e=a[r],t=n[s],o[r]=!0,this.options.labels&&(i=this.getLabel(this.collection.get($(e).attr("data-cid"))),$(e).attr("data-label",i)),e===t)for(;o[d(n[++s])];);else t&&this.el.insertBefore(e,t);this.options.labels&&_.defer(function(){var i,o,n=this;this.$el.find(".list-item").toArray().forEach(function(e){var t;$(e).hasClass("list-item-label")?(i=$(e).text(),$(e).next().hasClass("appointment")&&$(e).next().attr("data-label")===i&&o!==i?o=i:$(e).remove()):(t=$(e).attr("data-label"))!==o&&(o=i=t,n.el.insertBefore(n.renderListLabel(t)[0],e))})}.bind(this))}},onTouchStart:function(e){var t,i,o,n;this.options.noPullToRefresh||(t=0===this.$el.scrollTop(),o=(i=e.originalEvent.touches[0]).pageY,n=i.pageX,t&&(this.pullToRefreshStartY=o,this.pullToRefreshStartX=n))},onTouchMove:function(e){var t,i,o=e.originalEvent.touches[0].pageY,n=o-this.pullToRefreshStartY;!this.pullToRefreshStartY||this.isPulling||this.isSwiping||5<=o-this.pullToRefreshStartY&&(e.preventDefault(),e.stopPropagation(),this.selection.isScrolling=!0,this.isPulling=!0,this.$el.prepend(this.pullToRefreshIndicator)),this.isPulling&&n<=300?(this.pullToRefreshTriggerd=!1,e.preventDefault(),e.stopPropagation(),t=1.2*n,i=70/150*n-70,this.pullToRefreshIndicator.css("-webkit-transform","translate3d(0,"+i+"px,0)"),$("#ptr-spinner").css("-webkit-transform","rotateZ("+t+"deg)"),this.selection.isScrolling=!0,150<=o-this.pullToRefreshStartY&&(this.pullToRefreshTriggerd=!0)):this.isPulling&&300<=n&&(e.preventDefault(),e.stopPropagation())},onTouchEnd:function(e){this.pullToRefreshTriggerd?(this.pullToRefreshIndicator.css({transition:"transform 50ms","-webkit-transform":"translate3d(0,0,0)"}),$("#ptr-spinner").addClass("fa-spin"),this.options.app.trigger("pull-to-refresh",this),e.preventDefault(),e.stopPropagation()):this.isPulling&&(this.removePullToRefreshIndicator(!0),e.preventDefault(),e.stopPropagation()),this.selection.isScrolling=!1,this.pullToRefreshStartY=null,this.isPulling=!1,this.pullToRefreshTriggerd=!1,this.pullToRefreshStartY=null},removePullToRefreshIndicator:function(e){var t=this;e?(t.pullToRefreshIndicator.css({transition:"transform 50ms","-webkit-transform":"translate3d(0,-70px,0)"}),setTimeout(function(){t.disposed||t.pullToRefreshIndicator.removeAttr("style").remove()},100)):setTimeout(function(){t.disposed||(t.pullToRefreshIndicator.addClass("scale-down"),setTimeout(function(){t.disposed||(t.pullToRefreshIndicator.removeAttr("style").removeClass("scale-down"),$("#ptr-spinner").removeClass("fa-spin"),t.pullToRefreshIndicator.remove())},100))},250)},onChange:function(e){var t=this.$el.find('li[data-cid="'+$.escape(this.getCompositeKey(e))+'"]'),i=this.getBaton(e),o=e.changed.index,n=_.keys(e.changed);void 0!==o&&t.attr("data-index",o),(void 0===o||1<n.length)&&l.point(this.ref+"/item").invoke("draw",t.children().eq(1).empty(),i),this.trigger("change",e)},onChangeCID:function(e){var t=e.clone();t.set(e.previousAttributes()),this.$el.find('li[data-cid="'+$.escape(this.getCompositeKey(t))+'"]').attr("data-cid",this.getCompositeKey(e))},initialize:function(e){this.options=_.extend({pagination:!0,draggable:!1,selection:!0,scrollable:!0,swipe:!1,labels:!1},e),this.toggleFocus=_.debounce(function(e){this.disposed||(this.$el.attr("tabindex",e?-1:0),this.$el.toggleClass("has-focus",e))},10);var t,i,o={},n=!1,a=this;this.options.selection?(this.selection=new r(this,this.options.selection),o={"focus .list-item":"onItemFocus","blur .list-item":"onItemBlur",click:"onKeepFocus",contextmenu:"onContextMenu","keydown .list-item":"onItemKeydown"},_.device("smartphone")&&_.extend(o,{touchstart:"onTouchStart",touchend:"onTouchEnd",touchmove:"onTouchMove"}),_.device("!smartphone")&&this.$el.addClass("visible-selection"),s.enable({draggable:!0,container:this.$el,selection:this.selection}),n=!0,this.$el.addClass("f6-target")):this.toggleCheckboxes(!1),this.options.scrollable&&this.$el.addClass("scrollpane"),this.options.pagination&&(o.scroll="onScroll"),this.options.collection&&(this.setCollection(this.collection),this.collection.length&&this.onReset()),this.options.draggable&&!n&&s.enable({draggable:!0,container:this.$el,selection:this.selection}),this.options.labels&&(this.filter=function(){return!$(this).hasClass("list-item-label")}),this.ref=this.ref||e.ref,this.app=e.app,this.model=new Backbone.Model,this.isBusy=!1,this.firstReset=!0,this.firstContent=!0,this.delegateEvents(o),this.model.on("change",_.debounce(this.onModelChange,10),this),_.bindAll(this,"busy","idle"),_.device("!smartphone")&&this.$el.addClass("visible-selection"),_.device("smartphone")&&(i=0,this.selection&&(this.selection.isScrolling=!1,this.$el.scroll(function(){a.$el.scrollTop()!==i&&(a.selection.isScrolling=!0,i=a.$el.scrollTop()),t&&clearTimeout(t),t=setTimeout(function(){a.disposed||(a.selection.isScrolling=!1)},500)}))),this.queue={list:[],add:function(e){return this.list.push(e),this},render:_.debounce(function(){this.disposed||this.renderListItems()}.bind(this),10),iterate:function(e){try{this.list.forEach(e.bind(a))}catch(e){ox.debug&&console.error("ListView.iterate",e)}finally{this.list=[]}}}},forwardCollectionEvents:function(e){var t=_(arguments).toArray().slice(1);t.unshift("collection:"+e),this.trigger.apply(this,t)},setCollection:function(e){if(e)return this.collection&&this.stopListening(this.collection),this.collection=e,this.toggleComplete(this.collection.complete),this.toggleExpired(!1),this.listenTo(e,{all:this.forwardCollectionEvents,add:this.onAdd,change:this.onChange,"change:cid":this.onChangeCID,remove:this.onRemove,reset:this.onReset,sort:this.onSort,"before:load":this.busy,load:this.onLoad,"load:fail":this.renderError,"before:paginate":this.busy,paginate:this.idle,"paginate:fail":this.idle,complete:this.onComplete,reload:this.idle,expire:this.onExpire}),this.listenTo(e,{add:this.renderEmpty,remove:this.renderEmpty,reset:this.renderEmpty}),this.selection&&this.selection.reset(),this.trigger("collection:set"),this},onExpire:function(){this.toggleExpired(!1)},toggleExpired:function(e){this.collection.expired=e},toggleComplete:function(e){this.options.pagination||(e=!0),this.$el.toggleClass("complete",e)},isComplete:function(){return this.collection&&this.collection.complete},toggleCheckboxes:function(e){this.$el.toggleClass("hide-checkboxes",void 0===e?void 0:!e)},getItems:function(){var e=this.$el.find(".list-item");return this.filter&&(e=e.filter(this.filter)),e},setFilter:function(e){this.filter=e;var t=this.$el.find(".list-item");t.removeClass("hidden"),this.filter?(t.not(this.filter).addClass("hidden"),t.filter(this.filter).each(function(e){$(this).addClass(e%2?"even":"odd")})):t.removeClass("even odd")},connect:function(t){this.collection&&this.stopListening(this.collection),this.collection=t.getDefaultCollection(),this.options.pagination&&!this.loader&&(this.onScroll=this.onScroll.bind(this),this.listenToDOM(window,"resize",this.onScroll)),this.loader=t,this.load=function(e){this.empty(),t.load(_.extend(this.model.toJSON(),e)),this.setCollection(t.collection)},this.paginate=function(e){t.paginate(_.extend(this.model.toJSON(),e))},this.reload=function(e){t.reload(_.extend(this.model.toJSON(),e))}},load:o,paginate:o,reload:o,map:function(e){return e.toJSON()},render:function(){return this.options.selection&&this.$el.attr({"aria-multiselectable":!0,role:"listbox",tabindex:0}),this.$el.attr("data-ref",this.ref),this.addNotification(),_.device("phantomjs")&&this.$el.addClass("no-transition"),this},redraw:function(){var n=l.point(this.ref+"/item"),a=this.collection;this.getItems().each(function(e,t){var i,o;e>=a.length||(i=a.at(e),o=this.getBaton(i),n.invoke("draw",$(t).children().eq(1).empty(),o))}.bind(this))},createListItem:function(){var e=this.scaffold.clone();return this.options.selection&&e.addClass("selectable").attr({"aria-selected":!1,role:"option",tabindex:"-1"}),e},getPreviousLabel:function(e){for(var t=e;0<t.length&&!t.hasClass("list-item-label");)t=t.prev();return t.text()},renderListLabel:function(e){return $('<li class="list-item list-item-label" role="presentation">').text(e)},renderListItem:function(e,t){var i,o=this.createListItem(),n=this.getBaton(e),a=o.children().eq(1);return t&&this.options.labels&&(i=this.getLabel(e),this.currentLabel!==i&&(this.$el.append(this.renderListLabel(i)),this.currentLabel=i)),this.options.useButtonMarkup&&o.children().wrapAll('<button type="button" class="btn-u
1nstyled">'),o.attr({"data-cid":this.getCompositeKey(e),"data-index":e.get("index")}),this.options.labels&&o.attr("data-label",this.getLabel(e)),l.point(this.ref+"/item").invoke("draw",a,n),o},renderListItems:function(){this.idle();var r=this.getItems();this.queue.iterate(function(e){var t,i,o,n=e.has("index")?e.get("index"):this.collection.indexOf(e),a=this.renderListItem(e,!1);n<r.length?(o=r.eq(n),this.options.labels&&(t=this.getLabel(e))!==(i=this.getPreviousLabel(o))&&(o=o.prev()),r.splice(n,0,a),o.before(a),a[0].offsetTop<=this.el.scrollTop&&(this.el.scrollTop+=a.outerHeight(!0))):(this.$el.append(a),r.push(a)),this.options.labels&&(i=this.getPreviousLabel(a),(t=this.getLabel(e))!==i&&a.before(this.renderListLabel(t))),this.trigger("add",e,n),this.trigger("add:"+e.cid,e,n)}),this.onSort()},getBaton:function(e){var t=this.map(e);return l.Baton({data:t,model:e,app:this.app,options:this.options})},getBusyIndicator:function(){return this.$el.find(".busy-indicator")},addNotification:function(){this.notification.clone().appendTo(this.$el)},addBusyIndicator:function(){var e=this.getBusyIndicator();return e.index()<this.$el.children().length&&e.appendTo(this.$el),e.length?e:this.busyIndicator.clone().appendTo(this.$el)},removeBusyIndicator:function(){this.getBusyIndicator().remove()},busy:function(){if(!this.isBusy)return this.$(".notification").css("display","none"),this.addBusyIndicator().busy({immediate:!0}).find("i").remove(),this.isBusy=!0,this},idle:function(t){if(t&&t.error&&require(["io.ox/core/yell"],function(e){e(t)}),this.isBusy)return this.removeBusyIndicator(),this.isBusy=!1,this.$(".notification").css("display",""),this},getPosition:function(){return this.selection.getPosition()},hasNext:function(){return!!this.collection&&(this.getPosition()+1<this.collection.length||!this.isComplete())},next:function(){this.hasNext()?this.selection.next():this.processPaginate()},hasPrevious:function(){return!!this.collection&&0<=this.getPosition()-1},previous:function(){this.hasPrevious()?this.selection.previous():this.$el.scrollTop(0)},focus:function(){0===this.getItems().filter(".selected").focus().length&&this.$el.focus()}})}),define("io.ox/mail/view-options",["io.ox/core/extensions","io.ox/backbone/mini-views/dropdown","io.ox/backbone/mini-views/common","io.ox/core/api/account","gettext!io.ox/mail","io.ox/core/commons","io.ox/core/folder/contextmenu","io.ox/core/api/collection-loader","io.ox/core/http","io.ox/mail/api","io.ox/core/folder/api","settings!io.ox/mail"],function(r,a,e,n,s,t,l,c,u,p,d,h){var i={id:"search",index:100,draw:function(d){var t=d.app.listView,i=new c({module:"mail",mode:"search",getQueryParams:function(e){var t,i,o=e.criteria,n=[],a=o.from||o.von||o.de,r=o.to||o.an||o.a||o.para,s=o.subject||o.betreff||o.sujet||o.asunto,l=o.year||o.y||o.jahr||o.ano;return a&&n.push(["=",{field:"from"},a]),r&&n.push(["or",["=",{field:"to"},r],["=",{field:"cc"},r],["=",{field:"bcc"},r]]),s&&n.push(["=",{field:"subject"},s]),l&&(t=Date.UTC(l,0,1),i=Date.UTC(l,11,31),n.push(["and",[">",{field:"date"},String(t)],["<",{field:"date"},String(i)]])),o.words&&_(o.words.split(" ")).each(function(e){n.push(["or",["=",{field:"content"},e],["=",{field:"subject"},e]])}),o.addresses&&_(o.addresses.split(" ")).each(function(e){n.push(["or",["=",{field:"to"},e],["=",{field:"cc"},e],["=",{field:"bcc"},e],["=",{field:"content"},e]])}),"true"===o.attachment&&n.push(["=",{field:"content_type"},"multipart/mixed"]),o.after&&n.push([">",{field:"date"},String(o.after)]),o.before&&n.push(["<",{field:"date"},String(o.before)]),{action:"search",folder:"all"===o.folder?p.allMessagesFolder:d.app.folder.get(),columns:"102,600,601,602,603,604,605,606,607,608,610,611,614,652,656,661,X-Open-Xchange-Share-URL",sort:e.sort||"661",order:e.order||"desc",timezone:"utc",data:{filter:["and"].concat(n)}}},fetch:function(e){return u.wait().then(function(){return u.PUT({module:"mail",params:_(e).omit("data"),data:e.data})})},each:function(e){p.pool.add("detail",e)},PRIMARY_PAGE_SIZE:100,SECONDARY_PAGE_SIZE:100}),o=$('<div class="_hurz">').appendTo(this);
1require(["io.ox/backbone/views/search"],function(e){new e({el:o[0],point:"io.ox/mail/search/dropdown"}).build(function(){var e=this;d.app.on("folder:change",function(){e.cancel()}),d.app.folderView.tree.$el.on("click",function(){e.cancel()})}).on("search",function(e){t.connect(i),t.model.set({criteria:e,thread:!1,sort:661,order:"desc"}),t.$el.parent().find('.grid-options [data-name="thread"]').addClass("disabled")}).on("cancel",function(){var e=t.$el.parent().find('.grid-options [data-name="thread"]');e.hasClass("disabled")&&(t.connect(p.collectionLoader),t.model.unset("criteria"),e.removeClass("disabled"))}).render()})}},o=_.device("desktop")&&!navigator.webdriver&&h.get("prototypes/search",!1);function f(e,t){if("virtual/all-unseen"===e.folder.get())return t.hide();t.toggle(!e.props.get("find-result"))}function g(e){var t=!!e.data.state;if(e.data.app.folderView.forceOpen=t,e.data.app.props.set("folderview",t),e.data.state)e.data.app.folderView.tree.getNodeView(e.data.app.folder.get()).$el.focus();else{var i=e.data.app.listView,o=i.selection.get().reduce(function(e,t){return e||i.selection.getNode(t)},null);if(o)i.selection.focus(0,o);else{var n=require("io.ox/mail/util"),a=i.selection.view.collection,r=a.models.find(function(e){return!n.isUnseen(e.get("flags"))});if(r)return i.selection.select(a.indexOf(r));i.$el.focus()}}}function m(e){e.getWindow().nodes.sidepanel.show(),o?e.getWindow().nodes.main.find('.toolbar-item[data-action="open-folder-view"]').hide():e.getWindow().nodes.main.find(".list-view-control").removeClass("toolbar-bottom-visible")}o&&r.point("io.ox/mail/list-view/toolbar/top").extend(i),r.point("io.ox/mail/search/dropdown").extend({id:"default",index:100,render:function(){this.model.set("folder","current"),this.$dropdown.append(this.select("folder",s("Search in"),[{value:"current",label:s("Current folder")},{value:"all",label:s("All folders")}]),this.input("subject",s("Subject")),this.input("from",s("From")),this.input("to",s("To")),this.input("words",s("Contains words")),this.dateRange(),this.checkbox("attachment",s("Has attachments")),this.button())}}),r.point("io.ox/mail/view-options").extend({id:"sort",index:100,draw:function(i){var o=this.data("view"),e=i.app.folder.get();o.listenTo(i.app,"folder:change",function(){var e,t=i.app.folder.get();e=o.$('a[data-value="from-to"]'),e.contents().last().replaceWith(n.is("sent|drafts",t)?s("To"):s("From")),(e=o.$('a[data-value="602"]')).toggleClass("hidden",!d.pool.getModel(t).supports("ATTACHMENT_MARKER"))}),o.option("sort",661,s("Date"),{radio:!0}).option("sort","from-to",n.is("sent|drafts",e)?s("To"):s("From"),{radio:!0}).option("sort",651,s("Unread"),{radio:!0}).option("sort",608,s("Size"),{radio:!0}).option("sort",607,s("Subject"),{radio:!0}),d.pool.getModel(e).supports("ATTACHMENT_MARKER")&&o.option("sort",602,s("Attachments"),{radio:!0}),h.get("features/flag/color")&&this.data("view").option("sort",102,s("Color"),{radio:!0}),h.get("features/flag/star")&&this.data("view").option("sort",660,s("Flag"),{radio:!0})}}),r.point("io.ox/mail/view-options").extend({id:"order",index:200,draw:function(){this.data("view").divider().option("order","asc",s("Ascending"),{radio:!0}).option("order","desc",s("Descending"),{radio:!0})}}),r.point("io.ox/mail/view-options").extend({id:"thread",index:300,draw:function(e){!1!==e.app.settings.get("threadSupport",!0)&&this.data("view").divider().option("thread",!0,s("Conversations"))}}),r.point("io.ox/mail/list-view/toolbar/"+(o?"bottom":"top")).extend({id:"dropdown",index:1e3,draw:function(e){var t=e.app,i=t.props,o=new a({tagName:"li",className:"dropdown grid-options toolbar-item margin-auto",attributes:{role:"presentation"},caret:!0,label:s.pgettext("dropdown","Sort"),dataAction:"sort",model:i,tabindex:-1});r.point("io.ox/mail/view-options").invoke("draw",o.$el,e),this.append(o.render().$el.find(".dropdown-menu").addClass("dropdown-menu-right").end().on("dblclick",function(e){e.stopPropagation()}));var n=_.partial(f,t,o.$el);t.props.on("change:find-result",n),t.on("folder:change",n),n()}}),r.point("io.ox/mail/all-options").extend({id:"default",index:100,draw:function(e){var i=e.app,o=l.extensions,n=this.$ul,a=["markFolderSeen","moveAllMessages","archive","divider","empty"];"virtual/all-unseen"===i.folder.get()||i.props.get("find-result")||i.props.get("categories")?a=["selectAll"]:this.header(s("All messages in this folder")),i.folder.getData().done(function(e){var t=new r.Baton({data:e,module:"mail",listView:i.listView});a.forEach(function(e){o[e].call(n,t)})})}}),r.point("io.ox/mail/list-view/toolbar/"+(o?"bottom":"top")).extend({id:"all",index:200,draw:function(e){var t=e.app,i=t.props,o=new a({tagName:"li",attributes:{role:"presentation"},className:"dropdown grid-options toolbar-item",caret:!0,label:s.pgettext("dropdown","All"),dataAction:"all",model:i});function n(){o.prepareReuse().render(),r.point("io.ox/mail/all-options").invoke("draw",o,e)}r.point("io.ox/mail/all-options").invoke("draw",o,e),this.append(o.render().$el.on("dblclick",function(e){e.stopPropagation()})),t.props.on("change:find-result change:categories",n),t.on("folder:change",n)}}),r.point("io.ox/mail/list-view/toolbar/bottom").extend({id:"toggle-folderview",index:100,draw:function(e){this.append($('<button type="button" class="btn btn-link toolbar-item pull-left" data-action="open-folder-view">').attr("aria-label",s("Open folder view")).append($('<i class="fa fa-angle-double-right" aria-hidden="true">').attr("title",s("Open folder view"))).on("click",{app:e.app,state:!0},g)),o&&e.app.getWindow().nodes.main.find(".list-view-control").removeClass("toolbar-bottom-visible"),e.app.on({"folderview:open":m.bind(null,e.app),"folderview:close":function(e){e.getW
1indow().nodes.sidepanel.hide(),o?e.getWindow().nodes.main.find('.toolbar-item[data-action="open-folder-view"]').show():e.getWindow().nodes.main.find(".list-view-control").addClass("toolbar-bottom-visible")}.bind(null,e.app)}),e.app.folderViewIsVisible()&&_.defer(m,e.app)}}),r.point("io.ox/mail/sidepanel").extend({id:"toggle-folderview",index:1e3,draw:function(e){var t=_.uniqueId("control");this.addClass("bottom-toolbar").append($('<div class="generic-toolbar bottom visual-focus" role="region">').attr("aria-labelledby",t).append($('<button type="button" class="btn btn-link toolbar-item" data-action="close-folder-view">').attr({id:t,"aria-label":s("Close folder view")}).append($('<i class="fa fa-angle-double-left" aria-hidden="true">').attr("title",s("Close folder view"))).on("click",{app:e.app,state:!1},g)))}}),r.point("io.ox/mail/sidepanel").extend({id:"help",index:1100,draw:t.help}),r.point("io.ox/mail/sidepanel").extend({id:"premium-area",index:1e4,draw:function(e){this.append(t.addPremiumFeatures(e.app,{append:!1,upsellId:"folderview/mail/bottom",upsellRequires:"active_sync"}))}})}),define("io.ox/core/api/backbone",[],function(){var e=Backbone.Model.extend({idAttribute:"cid",initialize:function(){this.cid=this.attributes.cid=_.cid(this.attributes),this.on("change:id",this.updateCID.bind(this))},updateCID:function(){this.set("cid",this.cid=_.cid(this.attributes))},toString:function(){return"Model("+this.cid+")"}});return{Model:e,Collection:Backbone.Collection.extend({comparator:"index",model:e,parse:function(e){_.isArray(e)||(e=[e]);var t=this.model;return _(e).map(function(e){return e instanceof t?e:new t(e)})}})}}),define("io.ox/mail/detail/view",["io.ox/backbone/views/disposable","io.ox/backbone/views/toolbar","io.ox/mail/common-extensions","io.ox/core/extensions","io.ox/mail/api","io.ox/mail/util","io.ox/core/api/collection-pool","io.ox/mail/detail/content","io.ox/core/a11y","io.ox/core/capabilities","gettext!io.ox/mail","text!themes/default/io.ox/mail/detail/content.css","less!io.ox/mail/detail/style","less!io.ox/mail/style","io.ox/mail/actions"],function(e,i,t,a,r,s,o,l,n,d,c,u){var p=0;a.point("io.ox/mail/detail").extend({id:"unread-class",index:p+=100,draw:t.unreadClass}),a.point("io.ox/mail/detail").extend({id:"flagged-class",index:p+=100,draw:t.flaggedClass}),a.point("io.ox/mail/detail").extend({id:"subject",index:p+=100,draw:function(e){var t=s.getSubject(e.data);this.append($('<h1 class="subject">').text(t))}}),a.point("io.ox/mail/detail").extend({id:"header",index:p+=100,draw:function(e){var t=$('<header class="detail-view-header">');a.point("io.ox/mail/detail/header").invoke("draw",t,e),this.append(t)}});var h=0;a.point("io.ox/mail/detail/header").extend({id:"threadcontrol",index:h+=100,draw:function(e){var t=e.data,i=s.getSubject(t),o=s.hasFrom(t)?c("Email from %1$s: %2$s",s.getDisplayName(t.from[0]),i):i;this.append($('<h2 class="toggle-mail-body">').append($('<button type="button" class="toggle-mail-body-btn">').attr("aria-expanded",e.view.$el.hasClass("expanded")).append($('<span class="sr-only">').text(o))))}}),a.point("io.ox/mail/detail/header").extend({id:"picture",index:h+=100,draw:t.senderPicture}),a.point("io.ox/mail/detail/header").extend({id:"drag-support",index:h+=100,draw:function(e){this.find(".contact-picture").attr({"data-drag-data":_.cid(e.data),"data-drag-message":s.getSubject(e.data)})}}),a.point("io.ox/mail/detail/header").extend({id:"unread-toggle",index:h+=100,draw:t.unreadToggle},{id:"paper-clip",index:h+=100,draw:t.paperClip},{id:"rows",index:h+=100,draw:function(e){for(var t,i=1;i<=5;i++)t=$('<div class="detail-view-row row-'+i+' clearfix">'),a.point("io.ox/mail/detail/header/row"+i).invoke("draw",t,e),this.append(t)}}),a.point("io.ox/mail/detail/header/row1").extend({id:"from",index:h+=100,draw:t.fromDetail},{id:"priority",index:h+=100,draw:t.priority},{id:"security",index:h+=100,draw:t.security},{id:"date",index:h+=100,draw:t.fulldate},{id:"flag-toggle",index:h+=100,draw:t.flagToggle},{id:"color-picker",index:1200,draw:t.flagPicker}),a.point("io.ox/mail/detail/header/row2").extend({id:"sender",index:100,draw:function(e){a.point("io.ox/mail/detail/header/sender").invoke("draw",this,e)}}),a.point("io.ox/mail/detail/header/sender").extend({id:"default",index:100,draw:function(e){var t,i=e.data,o=i.from||[];s.authenticity("via",i)&&e.data.authenticity&&e.data.authenticity.domain_mismatch&&e.data.authenticity.from_domain&&this.append($('<div class="sender">').append($('<span class="io-ox-label">').append($.txt(c("Via")),$.txt("  ")),$('<span class="address">').text(e.data.authenticity.from_domain))),"headers"in i&&"Sender"in i.headers&&(t=s.parseRecipients(i.headers.Sender),o[0]&&o[0][1]===t[0][1]||this.append($('<div class="sender">').append($('<span class="io-ox-label">').append($.txt(c("Via")),$.txt("  ")),$('<span class="address">').text((t[0][0]||"")+" <"+t[0][1]+">"))))}}),a.point("io.ox/mail/detail/header/row3").extend({id:"recipients",index:100,draw:function(e){a.point("io.ox/mail/detail/header/recipients").invoke("draw",this,e)}}),a.point("io.ox/mail/detail/header/recipients").extend({id:"default",index:100,draw:t.recipients}),a.point("io.ox/mail/detail/header/row4").extend({id:"different-subject",index:100,draw:function(e){var t,i,o,n=e.data;1!==n.threadSize&&(t=r.threads.subject(n),i=s.getSubject(t,!1),o=s.get
1Subject(n,!1),""!==t&&i!==o&&this.append($('<span class="io-ox-label">').text(c("Subject")+"  "),$('<span class="different-subject">').text(o)))}}),a.point("io.ox/mail/detail/header/row5").extend({id:"inline-links",index:100,draw:function(e){var t;e.view.$el.hasClass("expanded")&&!e.view.placeholder&&((t=new i({el:this[0],point:"io.ox/mail/links/inline",inline:!0})).$el.attr("data-toolbar","io.ox/mail/links/inline"),t.setSelection([_.cid(e.data)],{data:e.data}))}}),a.point("io.ox/mail/detail").extend({id:"notifications",index:p+=100,draw:function(e){var t=$('<section class="notifications">');a.point("io.ox/mail/detail/notifications").invoke("draw",t,e),this.append(t)}}),a.point("io.ox/mail/detail").extend({id:"warnings",index:p+=100,draw:function(e){var t=$('<section class="warnings">');a.point("io.ox/mail/detail/warnings").invoke("draw",t,e),this.append(t)}}),a.point("io.ox/mail/detail").extend({id:"preview-text",index:p+=100,draw:function(e){e.view.supportsTextPreview&&e.data.text_preview&&this.append($('<section class="text-preview">').text(e.data.text_preview+(100<=e.data.text_preview.length?"...":"")))}}),a.point("io.ox/mail/detail/warnings").extend({id:"plaintextfallback",index:100,draw:t.plainTextFallback});var f=0;a.point("io.ox/mail/detail/notifications").extend({id:"phishing",index:f+=100,draw:t.phishing}),a.point("io.ox/mail/detail/notifications").extend({id:"authenticity",index:f+=100,draw:t.authenticity}),a.point("io.ox/mail/detail/notifications").extend({id:"disposition-notification",index:f+=100,draw:t.dispositionNotification}),a.point("io.ox/mail/detail/notifications").extend({id:"external-images",index:f+=100,draw:t.externalImages}),a.point("io.ox/mail/detail/notifications").extend({id:"disabled-links",index:500,draw:t.disabledLinks}),a.point("io.ox/mail/detail").extend({id:"error",index:p+=100,draw:function(){this.append($('<section class="error">').hide())}}),a.point("io.ox/mail/detail").extend({id:"body",index:900,draw:function(){this.append($('<section class="attachments">'),$('<section class="body user-select-text focusable" tabindex="-1">'))}}),a.point("io.ox/mail/detail/body").extend({id:"iframe",index:100,draw:function(e){var t=$('<iframe src="" class="mail-detail-frame">').attr("title",c("Email content")).on("load",function(){t.contents().on("click",'a[rel="noopener"], area[target="_blank"]',function(e){_.device("noopener")||-1<($(this).attr("class")||"").indexOf("deep-link")||(e.preventDefault(),blankshield.open($(this).attr("href")))})});a.point("io.ox/mail/detail/body/iframe").invoke("draw",t,e),this.idle().append(t)}}),a.point("io.ox/mail/detail/body").extend({id:"content-flags",index:200,draw:function(e){var t;e.content&&(t=$(e.content),this.closest("article").toggleClass("content-links",!!t.find("a").length))}}),a.point("io.ox/mail/detail/body/iframe").extend({id:"content",index:100,draw:function(e){var t=l.get(e.data,{},e.flow),i=$(t.content),o=0,n=function(e){e.target=this[0],this.trigger(e)}.bind(this);function a(){o=0}function r(e){this.document.body&&e.data.iframe.parent().addBack().height(this.document.body.scrollHeight)}function s(e){o<=0&&(o=2,e.data.iframe.height(""),r.call(this,e),this.requestAnimationFrame(function(){o--}))}e.content=t.content,t.isText&&(i=$("<body>").append(i)),this.on("load",function(){_.defer(function(){var e=$
1(this.contentDocument).find("html");e.attr("lang")||e.attr("lang",$("html").attr("lang")),e.on("keydown mousemove click",n),_.device("ios && smartphone")&&e.addClass("ios smartphone"),$(this.contentDocument).find("head").append("<style>"+u+"</style>"),$(this.contentDocument).find("body").replaceWith(i),i.find("table").each(function(){"100%"!==this.getAttribute("height")&&"100%"!==(this.style||{}).height||(this.setAttribute("height",""),$(this).css("height","initial"))}),$(this.contentWindow).on("complete toggle-blockquote",{iframe:$(this)},r).on("resize",{iframe:$(this)},s).on("dragover drop",!1).trigger("resize")}.bind(this))}),i.find("img").on("load error",function(){$(this).off().trigger("complete")}),$(window).on("resize",a),this.on("dispose",function(){$(window).off("resize",a),$(this.contentWindow).off()})}}),a.point("io.ox/mail/detail/body/iframe").extend({id:"events",index:200,draw:function(){this.on("load",function(){_.defer(function(){$(this.contentDocument).find("html").on("click",".mailto-link, .deep-link-tasks, .deep-link-contacts, .deep-link-calendar, .deep-link-files, .deep-link-gdpr, .deep-link-app",function(e){ox.trigger("click:deep-link-mail",e,this)})}.bind(this))})}}),a.point("io.ox/mail/detail/body/iframe").extend({id:"max-size",index:1200,after:"content",draw:function(t){this.on("load",function(){_.defer(function(){var e;_(t.data.attachments).some(function(e){return e.truncated})&&(e="api/mail?"+$.param({action:"get",view:"document",forceImages:!0,folder:t.data.folder_id,id:t.data.id,session:ox.session}),$(this.contentDocument).find(".mail-detail-content").append($('<div class="max-size-warning">').append($.txt(c("This message has been truncated due to size limitations.")),$.txt(" "),$('<a role="button" target="_blank">').attr("href",e).text(1!==t.model.get("modified")?c("Show entire message"):c("Show entire message including all external images")))),$(this.contentWindow).trigger("complete"))}.bind(this))})}}),a.point("io.ox/mail/detail/attachments").extend({id:"attachment-list",index:200,draw:function(e){0!==e.attachments.length&&t.attachmentList.call(this,e)}});var g=o.create("mail");return{View:e.extend({className:"list-item mail-item mail-detail f6-target focusable",events:{keydown:"onToggle","click .detail-view-header":"onToggle","click .text-preview":"onToggle","click .toggle-mail-body-btn":"onToggle",'click a[data-action="retry"]':"onRetry"},onChangeFlags:function(){this.$el.toggleClass("unread",s.isUnseen(this.model.get("flags"))),this.$el.toggleClass("flagged",s.isFlagged(this.model.get("flags")))},onChangeAttachments:function(){var e,t,i;this.model.changed.attachments&&_.isEqual(this.model.previous("attachments"),this.model.get("attachments"))||(e=this.model.toJSON(),t=a.Baton({view:this,model:this.model,data:e,attachments:s.getAttachments(e)}),i=this.$el.find("section.attachments").empty(),a.point("io.ox/mail/detail/attachments").invoke("draw",i,t),ox.trigger("mail:detail:attachments:render",this),this.model.previous("attachments")&&this.model.get("attachments")&&this.model.previous("attachments")[0].content!==this.model.get("attachments")[0].content&&this.onChangeContent())},getEmptyBodyNode:function(){return this.$el.find("section.body").empty()},onChangeSubject:function(){var e=this.$el.find("h1.subject");return e.text(s.getSubject(this.model.get("subject"))),e},onChangeContent:function(){var e=this.model.toJSON(),t=a.Baton({view:this,model:this.model,data:e,attachments:s.getAttachments(e)}),i=this.$el.find("section.body"),o=this.getEmptyBodyNode(),n=this;t.disable(this.options.disable),i.css("min-height",this.model.get("visualHeight")||null),_.delay(function(){n.disposed||(a.point("io.ox/mail/detail/body").invoke("draw",o,t),ox.trigger("mail:detail:body:render",n),n.trigger("mail:detail:body:render",n),i=o=n=null)},20)},onChangeRecipients:_.debounce(function(){var e,t,i;this.disposed||(e=this.model.toJSON(),t=a.Baton({data:e,model:this.model,view:this}),i=this.$(".recipients").empty(),a.point("io.ox/mail/detail/header/recipients").invoke("draw",i,t))},10),onToggle:function(e){if(("keydown"!==e.type||13===e.which||32===e.which)&&!$(e.target).closest("a").length){if(!$(e.currentTarget).hasClass("toggle-mail-body-btn")){var t=n.getTabbable(this.$el);if(0<=t.index(e.target))return;if(t.find($(e.target)).length)return}$(e.target).hasClass("dropdown-menu")||$(e.target).hasClass("overlay")||0===this.$el.siblings().length&&this.$el.hasClass("expanded")||(this.$el.find(".collapsed-blockquote").hide(),this.$el.find(".blockquote-toggle").show(),this.toggle())}},onRetry:function(e){e.preventDefault(),this.$("section.error").hide(),this.$("section.body").show(),this.toggle(!0)},onUnseen:function(){var e=this.model.toJSON();this.model.cid!==r.setToUnread&&s.isToplevel(e)&&r.markRead(e)},onLoad:function(e){var t;null!==this.model&&(e&&this.model.set(e),t=this.model.get("unseen")||s.isUnseen(this.model.get("flags")),this.$el.find("section.body").removeClass("loading"),this.trigger("load:done"),this.$el.find(".detail-view-row.row-5").hasClass("inline-toolbar-container")||(this.$el.empty(),this.render()),this.onChangeSubject(),this.onChangeAttachments(),this.onChangeContent(),t?this.onUnseen():r.trigger("update:set-seen",[{id:this.model.get("id"),folder_id:this.model.get("folder_id")}]))},onLoadFail:function(e){this.$el&&(this.trigger("load:fail"),this.trigger("load:done"),this.$el.attr("data-loaded",!1),this.$("section.error").empty().show().append($('<i class="fa fa-exclamation-triangle" aria-hidden="true">'),$("<h4>").text(c("Error: Failed to load message content")),$("<p>").text(e.error),$('<a href="#" role="button" data-action="retry">').text(c("Retry"))),ox.trigger("yell:error",e))},toggle:function(e){this.placeholder=!1;var t=this.$el,i=t.find(".toggle-mail-body-btn");t.toggleClass("expanded",e);var o,n=t.hasClass("expanded");return i.attr("aria-expanded",n),this.$el.trigger("toggle"),"false"===t.attr("data-loaded")&&n?(t.attr("data-loaded",!0),t.find("section.body").addClass("loading"),this.trigger("load"),this.loaded?this.onLoad():(o=_.cid(this.model.cid),1===_(o).size()&&void 0!==o.id&&this.model.has("parent")?r.getNestedMail(this.model.attributes).pipe(this.onLoad.bind(this),this.onLoadFail.bind(this)):r.get(_.extend({},o,{unseen:this.model.cid===r.setToUnread})).pipe(this.onLoad.bind(this),this.onLoadFail.bind(this)))):n&&this.$el.find(".mail-detail-frame").contents().find(".mail-detail-content").trigger("resize"),this},expand:function(){return this.toggle(!0)},initialize:function(e){this.options=e||{},this.model=g.getDetailModel(e.data),this.loaded=e.loaded||!1,this.listenTo(this.model,"change:flags",this.onChangeFlags),this.listenTo(this.model,"change:attachments",this.onChangeAttachments),this.listenTo(this.model,"change:to change:cc change:bcc",this.onChangeRecipients),this.placeholder=!0,this.supportsTextPreview=e.supportsTextPreview,this.on({load:function(){this.$("section.body").busy({immediate:!0}).empty()},"load:done":function(){this.$("section.body").idle()},"load:fail":function(){this.$("section.body").hide()}})},redraw:function(){this.$el.empty(),this.render(),this.$el.hasClass("expanded")&&(this.onChangeAttachments(),this.onChangeContent())},render:function(){var e=this.model.toJSON(),t=a.Baton({data:e,model:this.model,view:this});return t.disable(this.options.disable),this.$el.attr({"data-cid":this.model.cid,"data-loaded":"false"}),this.$el.data({view:this,model:this.model}),this.placeholder?a.point("io.ox/mail/detail").get("body").invoke("draw",this.$el,t):(this.$el.children("section.body,section.attachments").remove(),a.point("io.ox/mail/detail").invoke("draw",this.$el,t)),this.$el.toggleClass("placeholder",this.placeholder),ox.trigger("mail:detail:render",this),this}})}}),define("io.ox/mail/detail/mobileView",["io.ox/mail/detail/view","io.ox/mail/common-extensions","io.ox/core/extensions","io.ox/mail/api","io.ox/mail/util","io.ox/mail/detail/content","gettext!io.ox/mail","less!io.ox/mail/style"],function(e,t,n,i,a,o,r){var s=0;n.point("io.ox/mail/mobile/detail").extend({id:"unread-class",index:s+=100,draw:t.unreadClass}),n.point("io.ox/mail/mobile/detail").extend({id:"flagged-class",index:s+=100,draw:t.flaggedClass}),n.point("io.ox/mail/mobile/detail").extend({id:"header",index:s+=100,draw:function(e){var t=$('<header class="mobile-detail-view-mail detail-view-header">');n.point("io.ox/mail/mobile/detail/header").invoke("draw",t,e),this.append(t)}});var l=0;return n.point("io.ox/mail/mobile/detail/header").extend({id:"drag-support",index:l+=100,draw:function(e){this.attr({"data-drag-data":_.cid(e.data),"data-drag-message":a.getSubject(e.data)})}}),n.point("io.ox/mail/mobile/detail/header").extend({id:"actions",index:l+=100,draw:t.actions}),n.point("io.ox/mail/mobile/detail/header").extend({id:"from",index:l+=100,draw:t.fromDetail}),n.point("io.ox/mail/mobile/detail/header").extend({id:"priority",index:l+=100,draw:t.priority}),n.point("io.ox/mail/mobile/detail/header").extend({id:"paper-clip",index:l+=100,draw:t.paperClip}),n.point("io.ox/mail/mobile/detail/header").extend({id:"recipients",index:l+=100,draw:t.recipients}),n.point("io.ox/mail/mobile/detail/header").extend({id:"unread-indicator",index:l+=100,draw:t.unreadIndicator}),n.point("io.ox/mail/mobile/detail/header").extend({id:"subject",index:l+=100,draw:function(e){var t=a.getSubject(e.data);this.append($('<h1 class="subject">').text(t))}}),n.point("io.ox/mail/mobile/detail/header").extend({id:"date",index:l+=100,draw:t.fulldate}),n.point("io.ox/mail/mobile/detail/header").extend({id:"flags",index:l+=100,draw:function(e){var t=$('<span class="flags">').appendTo(this);n.point("io.ox/mail/mobile/detail/header/flags").invoke("draw",t,e)}}),n.point("io.ox/mail/mobile/detail/header/flags").extend({id:"security",index:l+=100,draw:t.security}),n.point("io.ox/mail/mobile/detail/header/flags").extend({id:"flag-toggle",index:l+=100,draw:t.flagToggle}),n.point("io.ox/mail/mobile/detail/header/flags").extend({id:"color-picker",index:1300,draw:function(e){t.flagPicker.call(this,e)}}),n.point("io.ox/mail/mobile/detail").extend({id:"notifications",index:s+=100,draw:function(e){var t=$('<section class="notifications">');n.point("io.ox/mail/detail/notifications").invoke("draw",t,e),this.append(t)}}),n.point("io.ox/mail/mobile/detail").extend({id:"body",index:500,draw:function(){this.append($('<section class="attachments">'),$('<section class="body user-select-text">'))}}),n.point("io.ox/mail/mobile/detail/attachments").extend({id:"attachment-list",index:100,draw:function(e){0!==e.attachments.length&&t.attachmentList.call(this,e)}}),n.point("io.ox/mail/mobile/detail/attachments").extend({id:"attachment-preview",index:200,draw:t.attachmentPreview}),n.point("io.ox/mail/mobile/detail/body").extend({id:"iframe+content",index:100,draw:function(t){var i=this;n.point("io.ox/mail/detail/body").get("iframe",function(e){e.invoke("draw",i,t)}
1),n.point("io.ox/mail/detail/body").get("content",function(e){e.invoke("draw",i,t)})}}),n.point("io.ox/mail/mobile/detail/body").extend({id:"max-size",after:"content",draw:function(e){var t;_(e.data.attachments).some(function(e){return e.truncated})&&(t="api/mail?"+$.param({action:"get",view:"document",folder:e.data.folder_id,id:e.data.id,session:ox.session}),this.append($('<div class="max-size-warning">').append($.txt(r("This message has been truncated due to size limitations.")),$.txt(" "),$('<a role="button" target="_blank">').attr("href",t).text(r("Show entire message")))))}}),{HeaderView:e.View.extend({events:{"click .detail-view-header":"onClick"},onClick:function(e){$(e.target).hasClass("show-all-recipients")||this.$el.trigger("showmail")},toggle:function(){return this}}),DetailView:e.View.extend({onChangeAttachments:function(){var e=this.model.toJSON(),t=n.Baton({data:e,attachments:a.getAttachments(e),view:this}),i=this.$el.find("section.attachments").empty();n.point("io.ox/mail/mobile/detail/attachments").invoke("draw",i,t),this.model.previous("attachments")&&this.model.get("attachments")&&this.model.previous("attachments")[0].content!==this.model.get("attachments")[0].content&&this.onChangeContent()},onChangeContent:function(){var e=this.model.toJSON(),t=n.Baton({view:this,model:this.model,data:e,attachments:a.getAttachments(e)}),i=this.getEmptyBodyNode();t.disable(this.options.disable),n.point("io.ox/mail/mobile/detail/body").invoke("draw",i,t)},render:function(){var e=this.model.toJSON(),i=n.Baton({data:e,model:this.model,view:this}),t=a.getSubject(e),o=a.hasFrom(e)?r("Email from %1$s: %2$s",a.getDisplayName(e.from[0]),t):t;return _(this.options.disable).each(function(e,t){_.isArray(e)?_(e).each(function(e){i.disable(t,e)}):i.disable(t,e)}),this.$el.attr({"aria-label":o,"data-cid":this.cid,"data-loaded":"false"}),this.$el.data({view:this,model:this.model}),this.baton=i,n.point("io.ox/mail/mobile/detail").invoke("draw",this.$el,i),$('[data-page-id="io.ox/mail/detailView"]').trigger("header_ready"),this}})}}),define("io.ox/core/tk/list-dnd",["io.ox/core/extensions","io.ox/core/collection","gettext!io.ox/core","io.ox/core/tk/draghelper"],function(N,F,o){function e(e){var t,i;return(t=this.find(".selected .drag-title"),i=", ",t=t.map(function(){return $.trim($(this).attr("title")||$(this).text())}),$.makeArray(t).join(i||""))||o.ngettext("%1$d item","%1$d items",e.length,e.length)}var E;return{enable:_.device("touch")?$.noop:function(o){var n,i,a,r,s=(o=_.extend({container:$(),data:null,delegate:!1,draggable:!1,dragMessage:e,dragType:"",dropzone:!1,dropzoneSelector:".selectable",dropType:"",selection:null,selectable:".selectable",simple:!1},o)).container||$(),l=!1,d=null,t=15,c=15,u=0,p=0,h=0,f=0,g=Math.abs;function m(e){h=e.pageX+t,f=e.pageY+c,(5<=g(u-h)||5<=g(p-f))&&(r.left=h+"px",r.top=f+"px",u=h,p=f)}function v(){s.trigger("selection:dragstart")}function x(e){var t;e.isDefaultPrevented()||(e.preventDefault(),t=$(this).find(".folder-arrow:first"),$(this).addClass("dnd-over"),t.length&&(clearTimeout(E),E=setTimeout(function(){this.trigger("click")}.bind(t),1500)))}function b(){clearTimeout(E),$(this).removeClass("dnd-over")}var w,y,k=(w=0,y=null,{move:function(e){w=e.pageY-$(this).offset().top},out:function(){clearInterval(y),y=null},over:function(){var e,t,i,o;y||(e=this.clientHeight,y=setInterval(function(){t=w<e/2?-1:1,24<(i=Math.min(w,e-w))||(o=i<8?3:1,this.scrollTop+=t*o)}.bind(this),5))}});function C(e){$("body").addClass("dragging"),$(document).off("mousemove.dnd",C);var t=a.reduce(function(e,t){var i=$(t).find(".drag-count");return e+(i.length?parseInt(i.text(),10):1)},0);d=$('<div class="drag-helper">'),N.point("io.ox/core/tk/draghelper").invoke("draw",d,new N.Baton({container:s,count:t||n.length,data:n,source:i,dragMessage:o.dragMessage})),r=d[0].style,u=p=h=f=0,m(e),d.appendTo(document.body),l=!0,$(document).one("mousemove.dnd",v).on("mousemove.dnd",m).on("mouseover.dnd",".folder-tree",k.over).on("mouseout.dnd",".folder-tree",k.out).on("mousemove.dnd",".folder-tree",k.move).on("mouseover.dnd",o.dropzoneSelector,x).on("mouseout.dnd",o.dropzoneSelector,b).on("keyup.dnd",S)}function S(e){27===e.which&&T()}function T(){$("body").removeClass("dragging"),k.out(),$(document).off("mousemove.dnd mouseup.dnd mouseover.dnd mouseout.dnd ke
1yup.dnd"),$(".dropzone").each(function(){var e=$(this),t=e.attr("data-dropzones");if(e.attr("data-delegate")&&t)return e.off("mouseup.dnd",t);(t?e.find(t):e).off("mouseup.dnd")}),$(".dnd-over").removeClass("dnd-over"),s.trigger("selection:dragstop"),null!==d&&null!==d&&($("body").removeClass("dragging"),d.remove(),d=r=null),i=a=n=null}function D(e){var t,i;e.isDefaultPrevented()||($("body").removeClass("dragging"),e.preventDefault(),clearTimeout(E),l&&(t=$(this).attr("data-model")||$(this).attr("data-id")||$(this).attr("data-cid")||$(this).attr("data-obj-id"),i=new N.Baton({data:n,dragType:o.dragType,dropzone:this,target:t}),$(this).trigger("selection:drop",[i])))}function A(e){var t=Math.abs(e.pageX-e.data.x),i=Math.abs(e.pageY-e.data.y);(15<t||15<i)&&$(document).off("mousemove.dnd").on("mousemove.dnd",C)}function M(e){return 0===e.indexOf("folder.")?{folder_id:"folder",id:e.replace(/^folder./,"")}:_.cid(e.replace(/^thread./,""))}o.draggable&&s.on("mousedown.dnd",o.selectable,function(e){l=!1,i=$(this),a=_(s.find(".selected")),n=i.attr("data-drag-data")?[i.attr("data-drag-data")]:a.map(function(e){return $(e).attr("data-cid")});var t=new F(_(n).map(M));t.getProperties(),t.isResolved()&&!t.has("delete")||($(".dropzone").each(function(){var e=$
1(this),t=e.attr("data-dropzones");if(e.attr("data-delegate")&&t)return e.on("mouseup.dnd",t,D);(t?e.find(t):e).on("mouseup.dnd",D)}),$(document).on("mousemove.dnd",{x:e.pageX,y:e.pageY},A).on("mouseup.dnd",T),e.preventDefault())}),o.delegate&&s.attr("data-delegate",!0),o.dropzone&&(null===o.selection&&console.error("list-dnd: Selection required for dropzone!",o),s.addClass("dropzone").attr("data-dropzones",o.dropzoneSelector).on("drop",function(e,t){t.dropType=o.dropType,o.selection.trigger("selection:drop",t)}))}}}),define("io.ox/core/print",["io.ox/core/http","io.ox/core/notifications","gettext!io.ox/core"],function(e,t,l){var a={mail:"super-mail-template.tmpl",contacts:"super-contacts-template.tmpl",tasks:"super-tasks-template.tmpl"},d={};function c(e){return(e||"").replace(/[#%&§/$*!`´'"=:@+^\\.+?{}|]/g,"_")}var u={request:function(t,i){var o;function n(){require([t]).then(function(e){_.isFunction(e.open)?e.open(i,o):console.error('Missing function "open" in:',t,e)},function(){console.error("Failed to load print manager")})}return _.device("desktop")?(o=this.openURL(ox.base+"/busy.html"),n()):ox.load(["io.ox/backbone/views/modal"]).done(function(e){var t=$('<iframe frameborder="0" style="width:100%;height:100%;">').attr("src",ox.base+"/busy.html"),i=.9*window.innerHeight;new e({title:l("Print"),width:.9*window.innerWidth,height:i}).addCancelButton().addButton({label:l("Print"),action:"print"}).build(function(){i-=100,this.$body.css({height:i,maxHeight:i}).append(t)}).on("print",function(){o.print()}).open(),o=t[0].contentWindow,n()}),o},smart:function(s){(s=_.extend({get:$.noop,selection:[],i18n:{},file:ox.base+"/print.html",meta:{}},s)).selection=_.chain(s.selection).toArray().compact(),e.pause(),$.when.apply($,_.chain(s.selection).map(function(e){return _.isString(e)?e:_.cid(e)}).uniq().map(function(e,t){return s.get(_.cid(e)).then(function(e){return s.process?s.process(e,t,s):e})}).value()).done(function(){var e=_.chain(arguments).toArray(),t=e.value().length;s.filter&&(e=e.filter(s.filter)),s.sortBy&&(e=e.sortBy(s.sortBy)),e=e.value();var n,a,i,o=(a={data:e,i18n:(n=s).i18n,meta:s.meta,length:e.length,filtered:t-e.length},i="print_"+_.now(),window[i]=function(e){try{var t=n.selector||"script",i=$(e.body).find('[type="text/template"]').filter(t).html(),o=(n.title||"").trim();$(e.body).html('<div class="print-wrapper">'+$.trim(_.template(i)(a))+"</div>"),n.meta.classes&&$(e.body).addClass(n.meta.classes),e.title=c(ox.serverConfig.pageTitle||"")+c(o.length?" "+o:"")+" "+l("Printout")}catch(e){console.error(e)}},i),r=s.file+"?"+o;_.defer(function(){s.window?(s.window.location=r,d[o]=s.window):d[o]=u.openURL(r),function(){for(var e in d)d[e]&&d[e].closed&&(delete d[e],delete window[e])}()})}).fail(function(){s.window&&s.window.close(),t.yell({type:"error",headline:l("Error"),message:1===s.selection.length?l("Cannot print this item"):l("Cannot print these items")})}),e.resume()},getWindowOptions:function(){var e={width:750,height:Math.min(screen.availHeight-100,1050),top:40};return e.left=(screen.availWidth-e.width)/2>>0,e.string="width="+e.width+",height="+e.height+",left="+e.left+",top="+e.top+",menubar=no,toolbar=no,location=no,scrollbars=yes,status=no",e},getWindow:function(e){var t="print_"+_.now(),i=this.getWindowOptions(e);return window.open(e,t,i.string)},open:function(e,t,i){var o,n={action:"get"};return"printCalendar"===e&&delete n.action,_.isArray(t)?n.data=JSON.stringify(t):_.isObject(t)&&(n.folder=t.folder_id||t.folder,n.id=t.id),n.format="template",n.template=a[e]||"default.tmpl",n.session=ox.session,o=ox.apiRoot+"/"+e+"?"+$.param(_.extend(n,i)),this.getWindow(o)},openURL:function(e){return this.getWindow(e||ox.base+"/blank.html")},interim:function(e){return console.warn("Temporary solution; replace by open()",e),this.openURL(e)}};return u}),define("io.ox/contacts/api",["io.ox/core/extensions","io.ox/core/http","io.ox/core/api/factory","io.ox/core/notifications","io.ox/core/cache","io.ox/contacts/util","io.ox/core/util","l10n/ja_JP/io.ox/collation","settings!io.ox/contacts","io.ox/core/capabilities"],function(r,s,e,n,t,l,c,a,d,u){function o(e){return e.id?(e.birthday&&moment.utc(e.birthday).year()<=1&&(e.birthday=l.julianToGregorian(e.birthday)),e.anniversary&&moment.utc(e.anniversary).year
1()<=1&&(e.anniversary=l.julianToGregorian(e.anniversary))):_(e).each(function(e){e.birthday&&moment.utc(e.birthday).year()<=1&&(e.birthday=l.julianToGregorian(e.birthday)),e.anniversary&&moment.utc(e.anniversary).year()<=1&&(e.anniversary=l.julianToGregorian(e.anniversary))}),e}function p(i,o){return o=o||{mode:"update"},_(i).each(function(e,t){""!==e&&void 0!==e||("update"===o.mode?i[t]=null:delete i[t])})}var h=e({module:"contacts",requests:{all:{action:"all",folder:"6",columns:"ja_JP"===ox.locale?"20,1,101,555,556,557,607":"20,1,101,607",extendColumns:"io.ox/contacts/api/all",sort:"607",order:"asc"},list:{action:"list",columns:"20,1,101,500,501,502,505,508,510,519,520,524,526,528,555,556,557,569,592,597,602,606,607,616,617,5,2",extendColumns:"io.ox/contacts/api/list"},get:{action:"get"},search:{action:"search",columns:"20,1,101,500,501,502,505,520,524,555,556,557,569,592,602,606,607,616,617,5,2",extendColumns:"io.ox/contacts/api/list",sort:"609",getData:function(e,t){t=t||{},e+="*";var i={orSearch:!0,admin:d.get("showAdmin",!1),emailAutoComplete:!!t.emailAutoComplete},o=!0,n={names:{display_name:e,first_name:e,last_name:e,email1:e,email2:e,email3:e},addresses:{street_home:e,postal_code_home:e,city_home:e,state_home:e,country_home:e,street_business:e,postal_code_business:e,city_business:e,state_business:e,country_business:e,street_other:e,postal_code_other:e,city_other:e,state_other:e,country_other:e},phones:{telephone_business1:e,telephone_business2:e,telephone_home1:e,telephone_home2:e,telephone_other:e,fax_business:e,telephone_callback:e,telephone_car:e,telephone_company:e,fax_home:e,cellular_telephone1:e,cellular_telephone2:e,fax_other:e,telephone_isdn:e,telephone_pager:e,telephone_primary:e,telephone_radio:e,telephone_telex:e,telephone_ttytdd:e,telephone_ip:e,telephone_assistant:e}};return _(t).each(function(e,t){_(n).chain().keys().contains(t).value()&&"on"===e&&(i=_(i).extend(n[t]),o=!1)}),o&&(i=_(i).extend(n.names)),r.point("io.ox/contacts/api/search").invoke("getData",i,e,t),i}},advancedsearch:{action:"advancedSearch",columns:"20,1,101,500,501,502,505,520,524,555,556,557,569,592,602,606,607,616,617",extendColumns:"io.ox/contacts/api/list",sort:"607",getData:function(i,e){var t,o={names:"display_name first_name last_name yomiFirstName yomiLastName company yomiCompany email1 email2 email3".split(" "),addresses:"street_home postal_code_home city_home state_home country_home street_business postal_code_business city_business state_business country_business street_other postal_code_other city_other state_other country_other".split(" "),phones:"telephone_business1 telephone_business2 telephone_home1 telephone_home2 telephone_other fax_business telephone_callback telephone_car telephone_company fax_home cellular_telephone1 cellular_telephone2 fax_other telephone_isdn telephone_pager telephone_primary telephone_radio telephone_telex telephone_ttytdd telephone_ip telephone_assistant".split(" ")},n=["or"],a=!0;return e=e||{},i.indexOf("*")+i.indexOf("?")<-1&&(i="*"+i+"*"),_(e).each(function(e,t){_(o).chain().keys().contains(t).value()&&"on"===e&&(_(o[t]).each(function(e){n.push(["=",{field:e},i])}),a=!1)}),a&&_(o.names).each(function(e){n.push(["=",{field:e},i])}),t={filter:n},r.point("io.ox/contacts/api/search").invoke("getData",t,i,e),t}}},pipe:{get:function(e){return e.user_id&&(e.internal_userid=e.user_id),e&&e.distribution_list&&e.distribution_list.length&&"ja_JP"===ox.locale&&(_(e.distribution_list).each(function(e){e.email=e.mail,e.sort_name_without_mail=e.sort_name}),e.distribution_list.sort(a.sorterWithMail),_(e.distribution_list).each(function(e){_(e).omit("email","sort_name_without_mail")})),o(e)},all:function(e){if("ja_JP"===ox.locale)return _(e).each(function(e){e.email=e.email1||e.email2||e.email3||"",e.sort_name_without_mail=e.sort_name}),e.sort(a.sorterWithMail),_(e).each(function(e){_(e).omit("email","sort_name_without_mail")}),e;for(var t,i=0,o=0;t=e[i++];)""===t.sort_name&&o++;return 0<o&&(e=e.slice(o).concat(e.slice(0,o))),e},list:function(e){return _(e).each(function(e){null===e.birthday&&delete e.birthday,null===e.distribution_list&&delete e.distribution_list}),e},listPost:function(e){return _(e).each(function(t){h.caches.get.dedust(t,"last_modified").then(function(e){e&&h.trigger("update:contact",t)})}),h.trigger("list:ready"),e},search:o,advancedsearch:o}}),f=h.getList;function g(e,t){""!==e[t]&&void 0!==e[t]||delete e[t]}h.getList=function(e,t,i){return!u.has("gab")&&i&&i.check&&_.isFunction(i.check)?_(e).any(function(e){return!i.check(e)})?(delete i.check,f.apply(this,arguments)):(new $.Deferred).resolve(e):f.apply(this,arguments)},h.create=function(t,e){g(t,"email1"),g(t,"email2"),g(t,"email3"),t.birthday&&moment.utc(t.birthday).local(!0).year()<=1&&(t.birthday=l.gregorianToJulian(t.birthday)),t.anniversary&&moment.utc(t.anniversary).local(!0).year()<=1&&(t.anniversary=l.gregorianToJulian(t.anniversary));var i,o={module:"contacts",data:t,appendColumns:!1,fixPost:!0};return t=p(t,{mode:"create"}),e?window.FormData&&e instanceof window.File?(i="UPLOAD",o.data=new FormData,o.data.append("file",e),o.data.append("json",JSON.stringify(t)),o.params={action:"new"}):(i="FORM",o.form=e,o.action="new"):(i="PUT",o.params={action:"new"}),s[i](o).then(function(e){return e=e.data||e,h.get({id:e.id,folder:t.folder_id})}).then(function(e){return $.when(h.caches.all.grepRemove(e.folder_id+h.DELIM),m.clear()).then(function(){return h.trigger("create",{id:e.id,folder:e.folder_id}),h.trigger("refresh.all"),e})})},h.update=function(i){var e=i.attachments,o=!1;return _.isEmpty(i.data)?e?$.when().then(function(){return h.trigger("update:"+_.ecid(i)),h.trigger("update",i),{folder_id:i.folder,id:i.id}}):$.when():(i.data.birthday&&moment.utc(i.data.birthday).local(!0).year()<=1&&(i.data.birthday=l.gregorianToJulian(i.data.birthday)),i.data.anniversary&&moment.utc(i.data.anniversary).local(!0).year()<=1&&(i.data.anniversary=l.gregorianToJulian(i.data.anniversary)),i.data=p(i.data,{mode:"update"}),(_(i.data).has("email1")||_(i.data).has("email2")||_(i.data).has("email3"))&&(o=!0),s.PUT({module:"contacts",params:{action:"update",id:i.id,folder:i.folder,timestamp:i.last_modified||_.then(),timezone:"UTC"},data:i.data,appendColumns:!1}).then(function(){return h.get({id:i.id,folder:i.folder},!1).then(function(e){return $.when(o?h.caches.get.clear():"",h.caches.get.add(e),o?h.caches.all.clear():h.caches.all.grepRemove(i.folder+h.DELIM),o?h.caches.list.clear():h.caches.list.remove({i
1d:i.id,folder:i.folder}),m.clear(),e.user_id?(t=e,require(["io.ox/core/api/user"]).then(function(e){return $.when(e.caches.get.remove({id:t.user_id}),e.caches.all.clear(),e.caches.list.remove({id:t.user_id}))})):"").done(function(){h.trigger("update:"+_.ecid(e),e),h.trigger("update",e),h.trigger("refresh.all"),""===i.data.image1&&(h.trigger("update:image",e),h.trigger("reset:image reset:image:"+_.ecid(e),e))});var t})}))},h.editNewImage=function(t,e,i){function o(e){return $.when(h.caches.get.clear(),h.caches.list.clear(),m.clear()).then(function(){h.trigger("refresh.list"),h.trigger("update:"+_.ecid(t)),h.trigger("update:image",{id:t.id,folder:t.folder_id})}),e}if("FormData"in window&&i instanceof window.File){var n=new FormData;return n.append("file",i),n.append("json",JSON.stringify(e)),s.UPLOAD({module:"contacts",params:{action:"update",id:t.id,folder:t.folder_id,timestamp:_.then()},data:n,fixPost:!0}).then(o)}return s.FORM({module:"contacts",action:"update",form:i,data:e,params:{id:t.id,folder:t.folder_id,timestamp:_.then()}}).then(o)},h.remove=function(e){return h.trigger("beforedelete",e),e=_.isArray(e)?e:[e],s.PUT({module:"contacts",params:{action:"delete",timestamp:_.then(),timezone:"UTC"},appendColumns:!1,data:_(e).map(function(e){return{folder:e.folder_id,id:e.id}})}).then(function(){return $.when(h.caches.all.clear(),h.caches.list.remove(e),m.clear())}).fail(function(e){n.yell("error",e.error)}).done(function(){_(e).map(function(e){h.trigger("delete:"+_.ecid(e),e),h.trigger("delete",e)}),h.trigger("refresh.all")})},h.on("refresh^",function(){h.caches.get.clear()}),h.on("refresh.all:import",function(){h.caches.list.clear(),m.clear(),h.caches.get.clear(),h.trigger("import"),h.trigger("refresh.all")});var m=new t.SimpleCache("contacts-fetching");h.clearFetchCache=function(){return m.clear()},h.getByEmailaddress=function(t){return t=t||"",m.get(t).then(function(e){return null!==e?e:""===t?{}:(s.isPaused()||(s.pause(),_.defer(s.resume.bind(s))),s.PUT({module:"contacts",params:{action:"search",admin:d.get("showAdmin",!1),columns:"20,1,500,501,502,505,520,555,556,557,569,602,606,524,592",timezone:"UTC"},sort:609,data:{email1:t,email2:t,email3:t,orSearch:!0,exactMatch:!0}}).then(function(e){return(e=e.filter(function(e){return!e.mark_as_distributionlist})).length?(e.sort(function(e,t){return t.image1_url?1:-1}),e.sort(function(e,t){return"6"===String(t.folder_id)?1:-1}),(e=e[0]).image1_url&&(e.image1_url=e.image1_url.replace(/^https?:\/\/[^/]+/i,""),e.image1_url=c.replacePrefix(e.image1_url),e.image1_url=c.getShardingRoot(e.image1_url)),m.add(t,e)):m.add(t,{})}))})},h.getFallbackImage=function(e){return ox.base+"/apps/themes/"+ox.theme+"/fallback-image-"+(e||"contact")+".png"};var v,x,i=ox.t0;function b(e,t,i,o){return 1===i.width||"error"===o.type?(v[e]=null,t.fallback?x:null):v[e]=e}function w(o,n,a){return _.defer(function(){return a.lazyload||a.container||_.first(o.closest(".scrollpane, .scrollable:not(.swiper-slide), .scrollpane-lazyload"))?(a.fallback&&o.css("background-image","url("+x+")"),o.attr("data-original",n).on("load.lazyload error.lazyload",function(e,t){var i=b(n,a,t,e);i&&o.text("").attr("data-original",i).css("background-image","url("+i+")"),o=n=a=null,$(this).off(".lazyload")}).lazyload()):void $(new Image).on("load error",function(e){var t=b(n,a,this,e);t&&o.text("").css("background-image","url("+t+")"),o=null,$(this).off()}).attr("src",n)}),o}function y(e){return $.extend({},{width:_.device("retina")?2*e.width:e.width,height:_.device("retina")?2*e.height:e.height,scaleType:e.scaleType,user:ox.user_id,context:ox.context_id,sequence:!1!==e.sequence?e.sequence:void 0,uniq:!1!==e.uniq?i:void 0})}h.on("update:image",function(){i=_.now()}),h.pictureHalo=(v={},x=h.getFallbackImage(),function(e,t,i){var o,n,a,r=_.extend({width:48,height:48,scaleType:"cover",lazyload:!1,effect:"show",urlOnly:!1,fallback:!0},i),s=(n=t,a=_.pick(r,"fallback"),h.looksLikeResource(n)?"resource":h.looksLikeGroup(n)||h.looksLikeDistributionList(n)?"group":_.isString(n.image1_url)&&""!==n.image1_url?"image_url":n.user_id||n.userid||n.userId||n.internal_userid?"user":(n.contact_id||n.id)&&(n.folder_id||n.folder)?"contact":n.mail||n.email||n.email1?"email":a.fallback?"fallback":void 0),l=function(e,t,i){var o={};switch(i){case"user":o.user_id=e.user_id||e.userid||e.userId||e.internal_userid;break;case"contact":o.contact_id=e.contact_id||e.id,o.folder_id=e.folder_id||e.folder;break;case"email":o.email=e.email&&String(e.email).toLowerCase()||e.mail&&String(e.mail).toLowerCase()||e.email1&&String(e.email1).toLowerCase()}return o.sequence=e.last_modified||1,_.extend(o,y(t))}(t,r,s);switch(t.facet&&t.facet.hasPersons()&&t.data.item&&(t.image1_url=t.data.item.image_url),s){case"resource":o=h.getFallbackImage("resource");break;case"group":o=h.getFallbackImage("group");break;
1case"image_url":o=t.image1_url=c.replacePrefix(t.image1_url)+"&"+$.param(l),o=c.getShardingRoot(o);break;case"fallback":o=x}if(o)return r.urlOnly?o:w(e,o,_.pick(r,"container","lazyload","fallback"));if((o=c.getShardingRoot("/contacts/picture?action=get&"+$.param(l)))in v){var d=v[o]||(r.fallback?x:null);return r.urlOnly?d:d?e.text("").css("background-image","url("+d+")"):e}try{return r.urlOnly?o:w(e,o,r)}finally{t=e=r=l=null}}),h.getContactPhoto=function(e,t){t=_.extend({size:48,fallback:!1,initials:!0},t);var i=this.getContactPhotoUrl(e,t.size)||t.fallback&&h.getFallbackImage(),o=$('<div class="contact-photo" aria-hidden="true">');return!i&&t.initials&&o.text(l.getInitials(e)),i&&o.css("background-image","url("+i+")"),o.toggleClass("empty",!i),o},h.getContactPhotoUrl=function(e,t){var i={width:t,height:t,sequence:!1,uniq:!1};return e.image1_url?c.getShardingRoot(c.replacePrefix(e.image1_url)+"&"+$.param(y(i))):""},h.getDisplayName=function(t,i){i=_.extend({halo:!0,stringify:"getDisplayName",tagName:"a"},i);var o=t.display_name||"",n=$("<"+i.tagName+">").text(" "),a=t.email,r=function(e){i.halo&&/@/.test(t.email)&&u.has("contacts")&&n.addClass("halo-link").attr("href","#").data({display_name:e,email1:a}),n.text(e+" ")},s=function(){_.defer(function(){n=r=s=e=i=null})},e=function(e){if(_.isArray(e)&&(e=e[0]),_.isString(e))return r(e);e&&(_.isEmpty(e)?r(o):r(l[i.stringify](e)),s())};return t&&t.full_name?(e(t.full_name),s()):t&&(t.last_name||t.first_name)?(e(t),s()):h.getByEmailaddress(t.email).done(e).fail(s),n};function k(i,t,o){return i=_.isArray(i)?i:[i],s.pause(),_(i).map(function(e){return s.PUT({module:"contacts",params:{action:t||"update",id:e.id,folder:e.folder_id||e.folder,timezone:"UTC",timestamp:e.timestamp||_.then()},data:{folder_id:o},appendColumns:!1})}),s.resume().then(function(e){var t=$.Deferred();return _(e).each(function(e){e.error&&(n.yell(e.error),t.reject(e.error))}),"rejected"===t.state()?t:$.when.apply($,_(i).map(function(e){return $.when(h.caches.all.grepRemove(o+h.DELIM),h.caches.all.grepRemove(e.folder_id+h.DELIM),h.caches.list.remove({id:e.id,folder:e.folder_id}))}))}).done(function(){h.trigger("refresh.all")})}var C,S;function T(e){return e.length>=C}function D(e){return(_(e.split(" ")).find(T)||"").substr(0,C)}function A(o){var e=D(o),t=M.cache[e],n=o.split(" ");if(t)return t.then(function(e){return _(e).filter(function(i){return _(n).every(function(e){var t=new RegExp("\\b"+e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"));return _(i.fulltext).some(function(e){return t.test(e)||-1<e.indexOf(o)})})})})}function M(e,t){e=$.trim(e).toLowerCase();var i,o,n,a=(t=_.extend({admin:!1,email:!0,sort:"609",columns:"1,2,5,20,101,500,501,502,505,519,520,524,555,556,557,569,592,602,606,607",cache:!0,limit:0},t)).cache&&A(e);return a||(i=e,o=s.GET({module:"contacts",params:{action:"autocomplete",query:D(e),admin:t.admin,email:t.email,sort:t.sort,columns:t.columns,right_hand_limit:t.limit}}),n=D(i),M.cache[n]=o.then(function(e){return _(e).map(function(t){return t.fulltext=_(S).map(function(e){return String(t[e]||"").toLowerCase()}),t.fulltext=_(t.fulltext).compact(),t})}),A(e))}return h.move=function(e,t){return k(e,"update",t)},h.copy=function(e,t){return k(e,"copy",t)},h.birthdays=function(e){var t=_.now(),i=_.extend({action:"birthdays",start:t,end:t+6048e5,columns:"1,20,500,501,502,503,504,505,511",timezone:"UTC"},e||{});return s.GET({module:"contacts",params:i}).then(o)},h.looksLikeResource=function(e){return"mailaddress"in e&&"description"in e||"cuType"in e&&"RESOURCE"===e.cuType},h.looksLikeGroup=function(e){return"members"in e},h.looksLikeDistributionList=function(e){return!!e.mark_as_distributionlist},h.pendingAttachments={},h.autocomplete=(C=Math.max(1,d.get("search/minimumQueryLength",3)),S=d.get("search/autocompleteFields","display_name,email1,email2,email3,first_name,last_name").split(","),d.get("showDepartment")&&S.push("department"),M.cache={},M),h.on("create update delete",function(){h.trigger("maybeNewContact")}),h.on("maybeNewContact",function(){h.autocomplete.cache={}}),h}),define("io.ox/core/tk/flag-picker",["io.ox/mail/api","io.ox/core/folder/api","gettext!io.ox/mail","io.ox/backbone/mini-views/dropdown","less!io.ox/core/tk/flag-picker"],function(o,n,a,r){var s={
1NONE:a("None"),RED:a("Red"),BLUE:a("Blue"),GREEN:a("Green"),GRAY:a("Gray"),PURPLE:a("Purple"),LIGHTGREEN:a("Light green"),ORANGE:a("Orange"),PINK:a("Pink"),LIGHTBLUE:a("Light blue"),YELLOW:a("Yellow")},l={NONE:0,RED:1,BLUE:2,GREEN:3,GRAY:4,PURPLE:5,LIGHTGREEN:6,ORANGE:7,PINK:8,LIGHTBLUE:9,YELLOW:10},d="fa fa-bookmark-o",c="fa fa-bookmark",u={div:$("<div>"),list:$('<ul class="dropdown-menu" role="menu">'),listItem:$("<li>"),menuItemLink:$('<a href="#" role="menuitem" class="io-ox-action-link">'),flag:$('<span class="flag-example" aria-hidden="true">'),setColorLink:$('<a href="#">').attr("aria-label",a("Set color")),dropdownIcon:$('<i class="flag-dropdown-icon" aria-hidden="true">').attr("title",a("Set color"))},p={appendDropdown:function(e,t){e.addClass("dropdown-toggle"),e.parent().addClass("dropdown flag-picker");var i=u.list.clone().on("click","a",{data:t},p.change).append(_(l).map(function(e,t){return u.listItem.clone().append(u.menuItemLink.clone().append(0<e?u.flag.clone().addClass("flag_bg_"+e):$(),$.txt(s[t])).attr({"data-color":e,"data-action":"color-"+t.toLowerCase()}))}));new r({el:e.parent(),$toggle:e,$ul:i}).render()},draw:function(e,t){var i,o=t.data,n=Math.max(0,o.color_label||0);e.append(u.div.clone().append(i=u.setColorLink.clone().append(u.dropdownIcon.clone().attr({"data-color":n,title:a("Set color")}).addClass("flag_"+n+" "+(n?c:d))))),this.appendDropdown(i,o),t.view&&t.view.listenTo(t.model,"change:color_label",this.update)},change:function(e){e.preventDefault();var t=e.data.data,i=$(e.currentTarget).attr("data-color")||"0",t=n.ignoreSentItems(t);o.changeColor(t,i).then(function(){e.clientX&&e.clientY||$('.io-ox-mail-window:visible .list-item[tabindex="0"]').trigger("focus")})},update:function(e){var t=Math.max(0,e.get("color_label")||0),i="flag-dropdown-icon ";i+=0===t?d:c,i+=" flag_"+t,this.$el.find(".flag-dropdown-icon").attr({class:i,"data-color":t})},attach:function(e,t){this.appendDropdown(e,t.data)},colorName:function(e){if(_.isNumber(e))return s[_.invert(l)[e]]}};return p}),define("io.ox/backbone/views/disposable",[],function(){var e=Backbone.View.extend({constructor:function(){Backbone.View.prototype.constructor.apply(this,arguments),this.$el.data("view",this),this.$el.on("dispose",function(){this.dispose(!0)}.bind(this))},dispose:function(e){for(var t in e||this.$el.off().removeData(),this.trigger("dispose"),this.onDispose(),this.off().stopListening(),this)this.hasOwnProperty(t)&&(this[t]=null);this.disposed=!0},onDispose:function(){},listenToDOM:function(e,t,i){$(e).on(t,$.proxy(i,this)),this.on("dispose",function(){$(e).off(t,i)})}});return Backbone.DisposableView=e}),define("io.ox/backbone/views/extensible",["io.ox/backbone/views/disposable","io.ox/core/extensions"],function(t,i){var o={};return t.extend({constructor:function(e){this.options=e||{},this.point=i.point(this.point||this.options.point),t.prototype.constructor.apply(this,arguments),this.busy=function(){return this.disableFormElements(),this.activeElement=this.activeElement||document.activeElement,this.$el.css("opacity",.5),this}.bind(this),this.idle=function(){this.enableFormElements(),this.$el.css("opacity",""),$.contains(this.el,this.activeElement)&&$(this.activeElement).focus();return this.activeElement=null,this}.bind(this),this.$el.attr("data-point",this.options.point),this.extensions&&this.extend(this.extensions)},extend:function(e){if(o[this.point.id])return this;ox.debug&&!this.point.id&&console.warn("Using extend on extensible view without point.id. Be sure this is what you want. Function will be called in every extensible view without point.id (most modal dialogs for example)");var i=100;return _(e).each(function(e,t){this.point.extend({id:t,index:i,render:e}),i+=100},this),this},invoke:function(e){var t=new i.Baton({view:this,model:this.model});return this.point.invoke(e||"render",this,t),o[this.point.id]=!0,this},inject:function(e){return _.extend(this,e)},build:function(e){return e.call(this),this},render:function(){return this.invoke("render")},disableFormElements:function(){this.$(":input").each(function(){"cancel"!==$(this).attr("data-action")&&$(this).toggleClass("disabled",$(this).prop("disabled")).prop("disabled",!0)})},enableFormElements:function(){this.$(":input").each(function(){$(this).prop("disabled",$(this).hasClass("disabled")).removeClass("disabled")})}})}),define("io.ox/backbone/mini-views/abstract",[],function(){return Backbone.View.extend({initialize:function(e){var t=this.options=e||{};void 0===t.validate&&(t.validate=!0),t.id&&!t.name&&(t.name=t.id),this.$el.on("dispose",function(e){this.dispose(e)}.bind(this)),this.$el.data("view",this),this.model&&t.name&&(this.name=t.name,this.listenTo(this.model,"valid:"+t.name,this.valid),this.listenTo(this.model,"invali
1d:"+t.name,this.invalid)),this.setup&&this.setup(t)},valid:function(){this.$el.trigger("valid")},invalid:function(e,t){this.$el.trigger("invalid",[e,t])},dispose:function(){this.stopListening(),this.model=null}})}),define("io.ox/backbone/mini-views/dropdown",["io.ox/backbone/mini-views/abstract","io.ox/core/a11y"],function(e,i){function u(e,t){return e.addClass("checkbox-color color-flags-no-checkbox").css("background-color",t)}return e.extend({tagName:"div",className:"dropdown",events:{"shown.bs.dropdown":"onShown","hidden.bs.dropdown":"resetDropdownOverlay",'keydown *[data-toggle="dropdown"]':"onKeyDown",ready:"onReady",contextmenu:"onContextMenu"},onContextMenu:function(e){e.preventDefault()},onReady:function(){_.device("smartphone")&&!this.options.dontProcessOnMobile||(!1!==this.smart||this.$overlay)&&this.$el.hasClass("open")&&(this.$ul.css({width:"auto",height:"auto"}),this.adjustBounds())},resetDropdownOverlay:function(){$(document).trigger("click.bs.dropdown.data-api"),this.$overlay&&(this.$ul.removeAttr("data-original-id"),this.$placeholder.before(this.$ul).detach(),this.$el.removeClass("open"),this.$ul.attr("style",this.$ul.data("style")||"").removeData("style"),this.$overlay.remove(),this.$toggle.attr("aria-expanded",!1),delete this.$overlay,this.lastEvent&&9===this.lastEvent.which&&(this.lastEvent.shiftKey?i.getPreviousTabbable(this.$toggle).focus():i.getNextTabbable(this.$toggle).focus(),delete this.lastEvent))},setDropdownOverlay:function(){var t=this;this.$overlay=$('<div class="smart-dropdown-container dropdown open" role="navigation">',this.onReady.bind(this)).addClass(this.$el.prop("className")),this.$ul.data("style",this.$ul.attr("style")),this.adjustBounds(),this.$ul.attr("data-original-id",this.$placeholder.attr("id")),this.$ul.before(this.$placeholder).detach(),$("body").append(this.$overlay.append($('<div class="abs">').on("mousewheel touchmove",!1).on("click contextmenu",function(e){return e.stopPropagation(),t.resetDropdownOverlay(),!1}),this.$ul))},adjustBounds:function(){var e,t=!!this.options.dropup,i=this.$ul.get(0).getBoundingClientRect(),o=parseInt(this.$ul.css("margin-top")||0,10),n=parseInt(this.$ul.css("margin-left")||0,10),a={top:i.top-o,left:i.left-n,width:i.width,height:"auto"},r=this.$toggle.offset(),s=this.$toggle.outerWidth(),l=$(window).width(),d=$(window).height(),c=$("#io-ox-appcontrol");t?(e=this.$el.get(0).getBoundingClientRect().top,a.top=e-i.height,a.height=i.height,a.height=Math.min(d-this.margin-a.top,a.height),a.left=Math.max(this.margin,a.left),a.left=Math.min(l-a.width-this.margin,a.left)):i.top+i.height>d-this.margin?(r.left+s+i.width+this.margin<l?a.left=r.left+s+this.margin:a.left=r.left-i.width-this.margin,a.top=d-this.margin-i.height,a.top=Math.max(a.top,c.offset().top+c.height()+this.margin),a.height=i.height,a.height=Math.min(d-this.margin-a.top,a.height)):(11===_.browser.IE&&(a.bottom="auto"),a.left=Math.max(this.margin,a.left),a.left=Math.min(l-a.width-this.margin,a.left)),a.top<0&&(a.height=a.height+a.top,a.top=0,this.$overlay.addClass("scrollable")),this.$toggle.data("fixed")&&(a.left=i.left),this.$ul.css(a)},onShown:function(){!1!==this.smart&&(_.device("smartphone")&&!this.options.dontProcessOnMobile||(this.setDropdownOverlay(),this.$overlay.hasClass("scrollable")&&this.$ul.scrollTop(this.$ul.height())))},onKeyDown:function(e){var t;this.$el.hasClass("open")&&this.$overlay&&(t=i.getTabbable(this.$ul),40===e.which&&t.first(":visible").focus(),38===e.which&&t.last(":visible").focus(),27===e.which&&(this.$toggle.trigger("click"),e.stopImmediatePropagation(),e.preventDefault()))},onKeyDownMenu:function(e){9===e.which&&(this.lastEvent=e)},open:function(){this.$el.hasClass("open")||this.$overlay||this.$toggle.trigger("click")},close:function(){(this.$el.hasClass("open")||this.$overlay)&&this.$toggle.trigger("click")},onClick:function(e){var t,i,o=$(e.currentTarget),n=o.attr("href"),a=o.attr("data-name"),r=o.data("value"),s=o.data("toggle-value"),l=o.data("toggle"),d=this.options.keep||"true"===o.attr("data-keep-open");n&&0!==n.length&&"#"!==n||(e.preventDefault(),d&&e.stopPropagation(),o.hasClass("disabled")||(!e.isPropagationStopped()&&this.$overlay&&this.$placeholder&&!this.options.noDetach&&(t=$('<div class="hidden">'),o.before(t).detach(),this.$placeholder.append(o),this.$el.trigger(_.extend({},e,{type:"mousedown"})),this.$el.trigger("track",e.currentTarget),this.$el.trigger(e),t.replaceWith(o)),this.trigger("click",o.data()),this.model&&(!this.options.allowUndefined&&void 0===r||(i=r,l&&(i=void 0===s?!this.model.get(a):this.model.get(a)===r?s:r),this.options.saveAsArray&&(i=[i]),this.model.set(a,i)))))},setup:function(){this.$ul=this.options.$ul||this.$ul||$('<ul class="dropdown-menu" role="menu">'),this.$placeholder=$('<div class="hidden">').attr("id",_.uniqueId("dropdown-placeholder-")),this.smart=this.options.smart,this.margin=this.options.margin||8,this.$ul.on("click","a",$.proxy(this.onClick,this)),this.$ul.on("key
1down","a",$.proxy(this.onKeyDownMenu,this)),this.model&&this.listenTo(this.model,"change",this.options.update||this.update),this.options.dontProcessOnMobile&&(this.$el.attr("dontProcessOnMobile",!0),this.$ul.attr("dontProcessOnMobile",!0))},update:function(){var o=this.$ul;this.model&&(_(this.model.changed).each(function(t,e){var i=o.find('[data-name="'+e+'"]');i.children("i").each(function(e,t){var i=$(t),o=i.data("color");i.removeClass("fa-check").addClass("fa-none"),o&&u(i,o)}),i.each(function(){var e=$(this);e.filter("[role=menuitemcheckbox][aria-checked]").attr({"aria-checked":_.isEqual(e.data("value"),t)}),_.isEqual(e.data("value"),t)&&e.children("i").each(function(e,t){var i=$(t),o=i.data("color");i.removeClass("fa-none").addClass("fa-check"),o&&u(i,o)})})},this),this.label())},label:function(){},stringify:function(e){return _.isObject(e)?JSON.stringify(e):e},append:function(e,t){return(t&&t.group?this.$ul.find('[role="group"]:last'):this.$ul).append($('<li role="presentation">').append(e)),this},option:function(e,t,i,o){o=_.extend({prefix:"",toggleValue:void 0,radio:!1},o);var n=this.model?this.model.get(e):void 0,a=_.isEqual(n,t),r=o.radio?"menuitemradio":"menuitemcheckbox",s=_.isFunction(i)?$("<div>").append(i()).text():i,l=o.prefix?[o.prefix,s].join(" "):void 0,d=$('<i class="fa fa-fw" aria-hidden="true">').addClass(a?"fa-check":"fa-none"),c=$('<a href="#" draggable="false">').attr({role:r,"aria-checked":a,"data-keep-open":!!o.keepOpen||void 0,"data-name":e,"data-value":this.stringify(t),"data-toggle":_.isBoolean(t)||void 0!==o.toggleValue,"data-toggle-value":o.toggleValue,"aria-label":l,title:o.title,tabindex:"-1"});return o.color&&c.addClass("color-flag"),c.on("dragstart",!1).data("value",t).append(o.color?u(d,o.color).attr({"data-color":o.color,"data-color-label":o.color}):d,o.icon||$(),_.isFunction(i)?i():$.txt(i)),this.append(c,_.pick(o,"group"))},forceOpen:function(e){this.$el.attr("forceOpen",e)},link:function(e,t,i,o){o=o||{};var n=$('<a href="#" draggable="false" role="menuitem" tabindex="-1">').attr("data-name",e).on("dragstart",!1).append(o.icon?$('<i class="fa fa-fw" aria-hidden="true">'):$(),$.txt(t));return o.data&&n.data(o.data),i&&n.on("click",{},i),this.append(n)},header:function(e){return this.$ul.append($('<li class="dropdown-header" role="separator">').append($('<span aria-hidden="true">').text(e))),this},group:function(e,t){return this.header(e),this.$ul.append($('<div role="group">').attr("aria-label",e).append(t)),this},divider:function(){return this.$ul.append('<li class="divider" role="separator">'),this},render:function(){$(this.$el,function(){this.trigger("ready")}.bind(this));var e,t=(e=this.options.label,_.isFunction(e)?e():_.isObject(e)?e:$.txt(e)),i=this.options.aria?this.options.aria:null,o='<a href="#" draggable="false">';return _.isString(t)&&(i+=" "+t),this.options.buttonToggle&&(o='<button type="button" draggable="false" class="btn btn-link">'),this.$el.append(this.$toggle=this.options.$toggle||this.$toggle||$(o).attr({"aria-label":i,"data-action":this.options.dataAction,title:this.options.title||null,ondragstart:_.device("firefox")?"return false;":null}).append($('<span class="dropdown-label">').append(t),this.options.caret?$('<i class="fa fa-caret-down" aria-hidden="true">'):[]),this.$ul),this.label(),this.ensureA11y(),this},ensureA11y:function(){var e=this.$ul.children("li");this.$toggle.attr({"aria-haspopup":!0,"aria-expanded":!1,"data-toggle":"dropdown"}),this.$toggle.is("a")&&this.$toggle.attr("role","button"),this.options.tabindex&&this.$toggle.attr("tabindex",this.options.tabindex),this.$ul.not("[role]").attr({role:"menu"}),e.filter(":not([role])").attr({role:"presentation"}),e.find("a:not([role])").attr({role:"menuitem",tabindex:"-1"})},prepareReuse:function(){return this.$toggle&&this.$toggle.remove(),this.$ul&&this.$ul.empty(),this},dispose:function(){this.$overlay&&this.$overlay.remove(),e.prototype.dispose.call(this,arguments)}})}),define("io.ox/backbone/mini-views/toolbar",["io.ox/backbone/views/disposable","io.ox/core/a11y","gettext!io.ox/core"],function(e,t,i){return e.extend({className:"classic-toolbar-container",events:{"mousedown ul.classic-toolbar > li > a":"onMousedown"},initialize:function(e){this.options=_.extend({tabindex:0},e),this.$list=this.createToolbar()},createToolbar:function(){return $('<ul class="classic-toolbar" role="toolbar">').attr({"aria-label":this.options.title?i("%1$s toolbar. Use cursor keys to navigate.",this.options.title):i("Actions. Use cursor keys to navigate.")}).on("click","a",$.preventDefault)},render:function(){return this.$el.append(this.$list),this},getButtons:function(){return this.$el.find("ul.classic-toolbar > li > a").not(":hidden")},disableButtons:function(){return this.getButtons().off().tooltip("hide").tooltip("disable"),this},replaceToolbar:function(e){var t,i,o;return $.contains(this.el,document.activeElement)&&(o=(i=(t=$(document.activeElement)).data("action"))?'*[data-action="'+i+'"]':">> li:eq("+t.closest("li").index()+") "+t.prop("tagName")+":first"),e.append(e.children(".pull-right")),this.$el.find("ul.classic-toolbar").tooltip("hide").replaceWith(e),o&&this.$(o).focus(),this},initButtons:function(){this.$links=this.getButtons().attr({role:"button",tabindex:-1}),this.$links.first().attr({tabindex:this.options.tabindex})},onMousedown:function(e){this.$links.attr("tabindex",-1),$(e.currentTarget).attr("tabindex",this.options.tabindex)}})}),define("io.ox/backbone/mini-views/helplink",["settings!io.ox/core","gettext!io.ox/core"],function(t,i){return Backbone.View.extend({tagName:"a",className:"io-ox-context-help",events:{click:"onClick"},onClick:function(e){e.preventDefault();var t=this.options.href,i=this.options;
1require(["io.ox/help/main"],function(e){i.simple?window.open(e.getAddress(i),"_blank"):e.reuse(i)||e.getApp(i).launch()}),!1!==i.metrics&&require(["io.ox/metrics/main"],function(e){e.isEnabled()&&(e.trackPage({id:"io.ox/help"}),e.trackEvent({app:"core",target:"toolbar",type:"click",action:"help",detail:t.substr(t.lastIndexOf("#")+1)}))})},initialize:function(e){this.options=_.extend({base:"help",content:$('<i class="fa" aria-hidden="true">').attr("title",i("Online help")),href:"index.html",iconClass:"fa-question-circle",context:"",modal:!1},e),_.isString(this.options.content)||this.options.content.addClass(this.options.iconClass),t.get("features/showHelpLinks",!0)||this.$el.addClass("hidden")},render:function(){return this.$el.hasClass("hidden")||(this.$el.append(this.options.content).attr({href:"#",target:"_blank","aria-label":i("Online help")}),this.options.context&&(e=i("Online help: %1$s",this.options.context),this.$el.attr("aria-label",e).find("i").attr("title",e).end())),this;var e}})}),define("io.ox/backbone/mini-views/upsell",["io.ox/core/upsell","settings!io.ox/core"],function(t,i){return Backbone.View.extend({tagName:"div",events:{"click a":"onClick"},onClick:function(e){e.preventDefault(),t.trigger({type:"custom",id:this.opt.id,missing:t.missing(this.opt.requires)})},initialize:function(e){this.opt=_.extend({icon:i.get("upsell/defaultIcon","fa-star"),enabled:!0},e,i.get("features/upsell/"+e.id),i.get("features/upsell/"+e.id+"/i18n/"+ox.language)),/^folderview\//.test(e.id)&&(this.setElement('<li role="presentation">'),this.$el.addClass(this.className)),this.$el.addClass("io-ox-upsell-link"),this.customize=this.opt.customize,this.icon=this.opt.icon,this.visible=this.opt.enabled&&!t.has(this.opt.requires)&&t.enabled(this.opt.requires)},render:function(){var i,e;return this.visible?(i=this,e=$('<a href="#">').css("color",this.opt.color).text(this.opt.title).append(_(this.icon.split(/ /)).map(function(e,t){if(""!==e)return $('<i class="fa" aria-hidden="true">').addClass(e).css({"margin-left":0===t&&i.opt.title&&0<i.opt.title.length?"0.5em":"",color:i.opt.color})})),/^folderview\//.test(this.opt.id)&&e.attr("role","treeitem"),this.$el.append(e),this.customize&&_.isFunction(this.customize)&&this.customize()):this.$el.hide(),this}})}),define("io.ox/backbone/mini-views/quota",["gettext!io.ox/core","io.ox/core/api/quota","io.ox/core/strings","io.ox/backbone/mini-views/upsell","io.ox/core/capabilities","settings!io.ox/mail"],function(i,a,t,o,e,n){return Backbone.View.extend({tagName:"div",initialize:function(e){this.options=_.extend({module:"mail",quotaField:"quota",usageField:"use",renderUnlimited:!0,sizeFunction:function(e){return t.fileSize(e,"smart")},upsellLimit:-1},e),this.$el.addClass("io-ox-quota-view"),a.mailQuota.on("change",this.updateQuota.bind(this)),a.fileQuota.on("change",this.updateQuota.bind(this)),this.$el.hide()},close:function(){a.mailQuota.off("change",this.updateQuota),a.fileQuota.off("change",this.updateQuota)},getQuota:function(e){var t=this.options,i=t.module,o=t.quotaField,n=t.usageField;return!e&&t.quota&&t.usage?$.when({quota:t.quota,usage:t.usage}):(e&&("file"===t.module&&a.requestFileQuotaUpdates(),a.reload()),a.load().then(function(e){return{quota:e[i][o],usage:e[i][n]}}))},updateQuota:function(){var e=this.options,t=a.getModel(e.module).toJSON();void 0!==t[e.quotaField]&&void 0!==t[e.usageField]&&(e.quota=t[e.quotaField],e.usage=t[e.usageField],this.render())},renderTitle:function(e){var t;this.$el.append($('<div class="quota-description">').append($('<div class="title">').text(this.options.title),t=$('<div class="numbers">'))),e.quota<=0?t.text("mail"!==this.options.module||n.get("folder/inbox")?i("unlimited"):i("unknown")):t.text(e.usage<e.quota?i("%1$s of %2$s",this.options.sizeFunction(e.usage),this.options.sizeFunction(e.quota)):i("%1$s of %2$s",this.options.sizeFunction(e.quota),this.options.sizeFunction(e.quota)))},renderBar:function(e){var t;e.quota<=0||(t=Math.max(5,Math.min(100,Math.round(e.usage/e.quota*100))),e.quota||(t=100),e.usage||(t=0),this.$el.append($('<div class="progress">').append($('<div class="progress-bar">').css("width",t+"%").addClass(t<90?"default":"bar-danger"))))},renderUpsell:function(e){var t,i;this.options.upsell&&((i=(t=new o(this.options.upsell)).opt.upsellLimit||this.options.upsellLimit)<=0||e.quota>=i||this.$el.append(t.render().$el))},render:function(){return e.has("guest")||this.getQuota().done(function(e){_.isUndefined(e.quota)||_.isUndefined(e.usage)||!this.options.renderUnlimited&&e.quota<=0||(this.$el.empty(),this.renderTitle(e),this.renderBar(e),this.renderUpsell(e),this.$el.show())}.bind(this)),this}})}),define("io.ox/core/tk/upload",["io.ox/core/event","io.ox/core/extensions","io.ox/core/notifications","io.ox/core/folder/api","io.ox/core/api/filestorage","gettext!io.ox/core","less!io.ox/core/tk/upload.less"],function(d,i,c,a,e,u){function n(e){return e.originalEvent&&e.originalEvent.dataTransfer&&(_.browser.Firefox&&"dragleave"!==e.type?"none"!==e.originalEvent.dataTransfer.dropEffect:"none"===e.originalEvent.dataTransfer.dropEffect)&&(_(e.originalEvent.dataTransfer.types).contains("Files")||_(e.originalEvent.dataTransfer.types).contains("application/x-moz-file"))}var t=Backbone.DisposableView.extend({className:"abs dropzone-overlay",initialize:function(e){require(["less!io.ox/core/tk/upload"]),this.options=_.extend({point:"",app:void 0,scrollable:".scrollable"},e),this.actions=[];var t=i.point(e.point);t.each(function(e){t.isEnabled(e.id)&&this.actions.push(e)}.bind(this)),this.listenToDOM(document,"dragover",this.toggleOverlay.bind(this,!0)),this.listenToDOM(document,"dragleave drop mouseout",this.toggleOverlay.bind(this,!1))},events:{dragenter:"onDragEnter",dragover:"onDragOver",dragleave:"onDragLeave",drop:"onDrop"},toggleOverlay:function(e,t){"mouseout"!==t.type&&this.$el.hasClass("locked")||(n(t)||this.$el.hasClass("visible"))&&this.$el.toggleClass("visible",e).css(this.getDimensions())},getDimensions:function(){var e=this.$el.closest(this.options.scrollable),t=e.scrollTop(),i=e.outerHeight(),o=e.children().outerHeight();return{top:t,bottom:Math.max(0,o-i-t)}},show:function(){this.$(".dropzone-floating").addClass("visible"),this.$el.closest(this.options.scrollable).addClass("scrollable-disabled")},hide:function(){this.$el.removeClass("locked"),this.$(".dropzone-floating").removeClass("visible"),this.$el.closest(this.options.scrollable).removeClass("scrollable-disabled")},render:function(){return this.$el.append($('<div class="abs dropzone-floating">').append(_.map(this.actions,function(e){return $('<div class="dropzone-floating-action dropzone">').attr({"data-id":e.id}).append($('<span class="dndignore">').html(e.label))}))),this},onDragEnter:function(e){if(($(e.target).hasClass("dndignore")?$(e.target).parent():$(e.target)).addClass("hover"),$(e.target).hasClass("dropzone-overlay")){if(!n(e))return;return $(e.target).addClass("locked"),this.show()}$(e.target).hasClass("dropzone-floating")&&(!n(e)||0<$("body > .io-ox-dialog-wrapper").length||this.show())},onDragLeave:function(e){($(e.target).hasClass("dndignore")?$(e.target).parent():$(e.target)).removeClass("hover"),_.defer(function(){this.disposed||this.$(".hover").length||this.$el.hasClass("hover")||this.hide()}.bind(this))},onDrop:function(e){var t=(e=e.originalEvent||e).dataTransfer.files,i=$(e.target).closest(".dropzone-floating-action").attr("data-id"),o=_.findWhere(this.actions,{id:i});if(!o)return this.hide();if(_.browser.Chrome)for(var n=e.dataTransfer.items,a=0;a<n.length;a++){if(n[a].webkitGetAsEntry().isDirectory)return c.yell("error",u("Uploading folders is not supported.")),!1}return o.action&&_.each(t,function(e){o.action.apply(o.extension,[e].concat(this.options.app))}.bind(this)),o.multiple&&o.multiple.apply(o.extension,[t].concat(this.options.app)),this.hide(),!1},onDragOver:function(e){return e.preventDefault(),!1}});function o(a){require(["less!io.ox/core/tk/upload"]);function e(e){if(n(e)&&!(0<$("body > .io-ox-dialog-wrapper").length))return clearTimeout(t),$("body").addClass("io-ox-dropzone-active").append(i),!1}function r(){return $("body").removeClass("io-ox-dropzone-active"),i.detach(),!1}var s,t,l=this,i=$('<div class="abs io-ox-dropzone-multiple-overlay">').on("click",void 0);d.extend(this),_(a.actions||[]).each(function(n){var e,t=(e=$('<div class="io-ox-dropzone-action">'),i.append(e),e);t.append($('<div class="dropzone">').on({dragenter:function(){s&&s.removeClass("io-ox-dropzone-hover"),(s=t).addClass("io-ox-dropzone-hover")},dragleave:function(e){_.browser.IE&&($(e.target).hasClass("dropzone")||$(e.target).hasClass("dndignore"))||t.removeClass("io-ox-dropzone-hover")},drop:function(e){var t=(e=e.originalEvent||e).dataTransfer.files;if(s&&s.removeClass("io-ox-dropzone-hover"),_.browser.Chrome&&21<_.browser.Chrome)for(var i=e.dataTransfer.items,o=0;o<i.length;o++){if(i[o].webkitGetAsEntry().isDirectory)return c.yell("error",u("Uploading folders is not supported.")),r(),!1}if("importEML"===a.actions[0].id)for(o=0;o<t.length;o++){if(!/(\.eml)$/i.test(t[o].name))return c.yell("error",u("Mail was not imported. Only .eml files are supported.")),r(),!1}for(o=0;o<t.length;o++)"mailAttachment"===a.actions[0].id?l.trigger("drop",t[o]):l.trigger("drop",n.id,t[o],n);return l.trigger("drop-multiple",n,$.makeArray(t)),r(),!1}}).append($('<span class="dndignore">').html(n.label)))});var o=!1;this.remove=function(){o&&(o=!1,$(document).off("dragenter",e).off("drop",r),i.off("dragenter dragover dragend dragleave drop"))},this.include=function(){o||(o=!0,$(document).on("dragenter",e),i.on({dragenter:function(){return clearTimeout(t),!1},dragover:function(e){return clearTimeout(t),e.preventDefault(),!1},dragleave:function(e){t=setTimeout(function(){r()},200),e.stopPropagation()},drop:function(e){return e.preventDefault(),r(),!1}}))}}function r(){this.enabled=!1,this.bind=$.noop,this.unbind=$.noop,this.remove=$.noop,this.include=$.noop}function s(t){t?t.progress||console.warn('The delegate to a queue should implement a "progress" method!'):console.warn("No delegate supplied to file processing queue."),t=_.extend({start:$.noop,stop:$.noop,changed:$.noop,progress:function(){return $.when()},type:!1},t||{}),d.extend(this);var o=[],i=0,n=!1;
1this.next=function(){if(!n){if(0===o.length||o.length<=i)return this.stop();n=!0;var t=this;0===i&&this.start(),this.progress().always(function(e){e&&e.error&&(/^(FLS-0024|OX-0023|OX-0507)$/.test(e.code)||e.error_params&&e.error_params.length&&/^429 /.test(e.error_params[0]))?t.stop():(n=!1,i++,t.queueChanged())})}},this.validateFiles=function(i,e){return!e.folder||t&&"importEML"===t.type?$.when([]):a.get(e.folder).then(function(t){return a.is("infostore",t)?require(["io.ox/core/api/quota"]).then(function(e){return e.checkQuota(t,i)}):$.when([])}).then(function(t){return 0===t.length?[]:require(["io.ox/core/tk/upload-problems"]).then(function(e){return e.report(i,t)})},function(e){return c.yell(e),$.Deferred().reject([e])})},this.offer=function(e,t){var i=this,o=[].concat(e);this.validateFiles(o,t).then(function(){i.fillQueue(e,t),i.queueChanged()})},this.fillQueue=function(e,t){var i=[].concat(e);_(i).each(function(e){o.push({file:e,options:t})})},this.length=0,this.remove=function(e){o.splice(e,1),e===i&&i--},this.queueChanged=function(){this.length=o.length,t.changed(o[i],i,o),this.trigger("changed",o[i],i,o),this.next()},this.dump=function(){console.info("this",this,"file",o[i],"position",i,"files",o)},this.start=function(){ox.autoLogout.stop(),t.start(o[i],i,o),this.trigger("start",o[i],i,o)},this.progress=function(){var e=t.progress(o[i],i,o);return this.trigger("progress",e,o[i],i,o),e},this.stop=function(){ox.autoLogout.start(),t.stop(o[i],i,o),this.trigger("stop",o[i],i,o),i=0,n=!(o=[])}}return{dnd:{enabled:_.device("!touch"),createDropZone:function(e){return e=e||{},this.enabled?new o(e):new r(e.node)},FloatingDropzone:t},createQueue:function(e){return new s(e)}}}),define("io.ox/core/dropzone",[],function(){var t="dragenter dragover dragleave drop",e=_.throttle(function(e){if($("html").hasClass("dndmask-enabled")!==e){if($("html").toggleClass("dndmask-enabled",e),!e)return $(".dndmask").remove();$("iframe:visible").each(function(){var e=_.uniqueId("overlay-"),i=$(this).attr("data-overlay",e).before($('<div id="'+e+'" class="dndmask">').on(t,function(e){var t=$.Event(e.type,{offsetX:e.offsetX,offsetY:e.offsetY});$("body",i.contents()).trigger(t)}))})}},100);ox.on("drag:start",_.partial(e,!0)),ox.on("drag:stop",_.partial(e,!1));var i=Backbone.View.extend({className:"inplace-dropzone",events:{drop:"onDrop","dragenter .dropzone-overlay":"onDragenter","dragover .dropzone-overlay":"onDragover","dragleave .dropzone-overlay":"onDragleave"},onLeave:function(e){this.leaving&&(ox.trigger("drag:stop",this.cid),this.hide(e))},onDrag:function(e){if(this.$el.parent().is(":visible")&&this.isSupported())switch(e.type){case"dragenter":case"dragover":if(ox.trigger("drag:start",this.cid),this.stop(e),this.leaving=!1,this.checked)return;if(this.checked=!0,!this.isValid(e))return;return this.visible||this.show(),!1;case"dragleave":this.leaving=!0,clearTimeout(this.timeout),this.timeout=setTimeout(this.onLeave.bind(this),100,e);break;case"drop":return ox.trigger("drag:stop",this.cid),this.stop(e),this.hide(),!1}},isSupported:_.constant(!0),stop:function(e){e.preventDefault(),e.stopPropagation()},show:function(){this.visible=!0,this.$el.show(),this.trigger("show"),$(window).trigger("resize")},hide:function(){this.visible=this.checked=!1,this.$el.hide().removeClass("dragover"),this.trigger("hide")},initialize:function(e){this.options=e,this.checked=!1,this.visible=!1,this.leaving=!1,this.timeout=-1,this.eventTarget=e.eventTarget,this.folderSupport=e&&e.folderSupport,this.onDrag=this.onDrag.bind(this),$(document).on(t,this.onDrag),_.device("firefox")&&(this.onMouseenter=this.onMouseenter.bind(this),$(document).on("mouseenter",this.onMouseenter)),this.eventTarget&&(this.eventTargetDocument="#document"===this.eventTarget.prop("nodeName")?this.eventTarget.get(0):this.eventTarget.prop("ownerDocument"),this.eventTargetDocument!==document&&$(this.eventTargetDocument).on(t,this.onDrag),this.onDrop=this.onDrop.bind(this),this.onDragenter=this.onDragenter.bind(this),this.onDragover=this.onDragover.bind(this),this.onDragleave=this.onDragleave.bind(this),this.eventTarget.on("drop",this.onDrop).on("dragenter",this.onDragenter).on("dragover",this.onDragover).on("dragleave",this.onDragleave)),this.$el.on("dispose",function(e){this.dispose(e)}.bind(this))},isValid:function(e){return(!_.isFunction(this.isEnabled)||this.isEnabled(e))&&this.isFile(e)},isEnabled:!0,isFile:function(e){var t=e.originalEvent.dataTransfer;return _(t.types).contains("Files")||_(t.types).contains("application/x-moz-file")},filterDirectories:function(e){var i,t=new $.Deferred,o=_(e.files).toArray();return e.items&&(_.browser.Chrome&&21<_.browser.Chrome||_.browser.firefox&&50<=_.browser.firefox||_.browser.edge)?(i=e.items,t.resolve(_(o).filter(function(e,t){return!i[t].webkitGetAsEntry().isDirectory}))):$.when.apply(this,_(o).map(function(e){if(!e.type&&e.size<=16384){var t=new $.Deferred,i=new FileReader;return i.onloadend=function(){t.resolve(i.error)},i.readAsDataURL(e),t}return $.when()})).done(function(){var i=arguments;t.resolve(_(o).filter(function(e,t){return!i[t]}))}),t},getFiles:function(e){var t=e.originalEvent.dataTransfer,i=t.files.length,o=this.options.filter;return this.filterDirectories(t).then(function(e){return e.length&&i===e.length||0===i||require(["i
1o.ox/core/yell","gettext!io.ox/core"],function(e,t){e("error",t("Uploading folders is not supported in this display area."))}),_.isRegExp(o)?_(e).filter(function(e){return o.test(e.name)}):e})},getFilesAndFolders:function(e){var t=e.originalEvent.dataTransfer,s=[],i=t.items;function l(i,o){var e,t,n,a,r=$.Deferred();return i.isFile?i.file(function(e){s.push({file:e,fullPath:i.fullPath,preventFileUpload:!1,isEmptyFolder:!1}),r.resolve()}):i.isDirectory&&(e=i.createReader(),t=$.Deferred(),n=[],(a=function(){e.readEntries(function(e){e.length?(n=n.concat(e),a()):t.resolve(n)},function(e){t.reject(e)})})(),t.then(function(e){var t=[];e.length;e.forEach(function(e){t.push(l(e,o+i.name+"/"))}),$.when.apply($,t).then(function(){r.resolve()},function(e){r.reject(e)})},function(e){r.reject(e)})),r}var o=_.map(i,function(e){return l(e.webkitGetAsEntry(),"")});return $.when.apply($,o).then(function(){return s})},onDragenter:function(e){$(e.currentTarget).parent().addClass("dragover")},onDragover:function(e){e.originalEvent.dataTransfer.dropEffect="copy"},onDragleave:function(e){$(e.currentTarget).parent().removeClass("dragover")},onMouseenter:function(e){this.visible&&(e.relatedTarget||e.toElement||_.delay(function(){this.leaving=!0,clearTimeout(this.timeout),this.onLeave(e)}.bind(this),50))},onDrop:function(t){var i=this;(i.folderSupport?this.getFilesAndFolders(t):this.getFiles(t)).then(function(e){i.trigger(0<e.length?"drop":"invalid",e,t)},function(){i.trigger("invalid",[],t)})},render:function(){return this.$el.hide().append($('<div class="abs dropzone-caption">').text(this.options.caption||""),$('<div class="abs dropzone-dragover"><i class="fa fa-check" aria-hidden="true"></i></div>'),$('<div class="abs dropzone-overlay">')),this},dispose:function(){this.stopListening(),$(document).off(t,this.onDrag),_.device("firefox")&&$(document).off("mouseenter",this.onMouseenter),this.eventTarget&&(this.eventTargetDocument!==document&&$(this.eventTargetDocument).off(t,this.onDrag),this.eventTarget.off("drop",this.onDrop).off("dragenter",this.onDragenter).off("dragover",this.onDragover).off("dragleave",this.onDragleave))}});return $(document).on("dragover drop",!1),{Inplace:i}}),define("io.ox/core/strings",["io.ox/core/locale","gettext!io.ox/core"],function(r,s){var l;return{shortenUri:function(e,t){var i=(e=null!=e?e:"").replace(/^https?:\/\//,""),o=i.length-t;if(o<=0)return i;var n=i.length/2,a=n-o/2-1,r=n+o/2+1;return i.substring(0,a)+"..."+i.substring(r,i.length)},fileSize:function(e,t){var i=0,o=(l=l||[s("B"),s("KB"),s("MB"),s("GB"),s("TB"),s("PB"),s("EB"),s("ZB"),s("YB")]).length,n=!1;10<t&&(t=10),"smart"===t&&(t=3,n=!0);
1for(var a=Math.pow(10,t||0);1024<=e&&i<o;)e/=1024,i++;return 1024===(e=Math.round(e*a)/a)&&(e/=1024,i++),n&&i<3&&(t=0),0===i&&(t=0),s("%1$d %2$s",n?r.number(e,0,t):r.number(e,t),l[i])},size:function(e,t){var i=encodeURI(e).split(/%(?:u[0-9A-F]{2})?[0-9A-F]{2}|./).length-1;return t?(i/1024).toFixed():i}}}),define("io.ox/core/attachments/backbone",["io.ox/core/folder/title","io.ox/core/capabilities","io.ox/contacts/api","settings!io.ox/mail"],function(t,r,o,s){function n(){var t,e=0,i=$.Deferred(),o=function(){e=Math.floor(e+t/10),i.notify({loaded:e,total:t}),1<=e/t?i.resolve({data:["133713371337"]}):_.delay(o,1e3)};this.upload=function(e){return t=e.size,o(),i}}var l=/\.((?:doc|dot|pot|pps|ppt|xls|xlt)[mx]?|o[dt][cfgipst]|odm|pdf|ppam?|rtf|txt|xlam?|xlsb)$/i,d=/\.(gif|bmp|jpe?g|gmp|png|psd|tif?f|heic?f?)$/i,c={localFile:function(i){var t=2*(_.device("retina")?240:120);return require(["io.ox/contacts/widgets/canvasresize"]).then(function(e){return e(i.fileObj||i.get("originalFile"),{width:t,height:t,crop:!1,quality:80})}).then(function(e){var t=_.clone(i.get("meta"));return t.previewUrl=e,i.set("meta",t),e})},contact:function(e){var t=_.clone(e.get("meta"));return t.previewUrl=e.get("image1_url")||o.getFallbackImage(),e.set("meta",t),$.Deferred().resolve(t.previewUrl)},file:function(i){var o=$.Deferred(),n=_.device("retina")?240:120;return require(["io.ox/files/api"],function(e){var t=_.clone(i.get("meta"));t.previewUrl=e.getUrl(i.toJSON(),"view")+"&scaleType=cover&width="+n+"&height="+n,d.test(i.get("filename"))||(t.previewUrl+="&format=preview_image&session="+ox.session),o.resolve(t.previewUrl),i.set("meta",t)},o.reject),o},mail:function(o){var n=$.Deferred(),a=_.device("retina")?240:120;return require(["io.ox/mail/api"],function(e){var t=_.clone(o.get("meta"));t.previewUrl=e.getUrl(o.toJSON(),"view")+"&scaleType=cover&width="+a+"&height="+a;var i=o.get("security");i&&i.authentication&&(t.previewUrl+="&decrypt=true&cryptoAuth="+encodeURIComponent(i.authentication)),d.test(o.get("filename")||o.get("name"))||(t.previewUrl+="&format=preview_image&session="+ox.session),n.resolve(t.previewUrl),o.set("meta",t)},n.reject),n}},e=Backbone.Model.extend({defaults:function(){return{filename:"",disp:"attachment",uploaded:1,meta:{}}},initialize:function(e){var t;e instanceof window.Blob&&(this.fileObj=e,this.set("filename",e.name,{silent:!0}),this.set("uploaded",0,{silent:!0}),this.set("file_size",e.size,{silent:!0})),this.isContact()&&(t=(this.get("display_name")||this.get("sort_name")||"vcard").replace(/\s/,"_").concat(".vcf"),this.set("filename",t,{silent:!0}))},getTitle:function(){return this.get("com.openexchange.file.sanitizedFilename")||this.get("filename")||this.get("name")},getShortTitle:function(e){return t(this.getTitle(),e||30)},getSize:function(){var e=this.get("originalFile")?this.get("originalFile").size:void 0;return this.get("file_size")||this.get("size")||e||0},getExtension:function(){var e=String(this.get("filename")||this.get("name")||"").split(".");return 1===e.length?"":e.pop().toLowerCase()},isFileAttachment:function(){return("attachment"===this.get("disp")||"ATTACHMENT"===this.get("contentDisposition")||"inline"===this.get("disp"))&&"INLINE"!==this.get("contentDisposition")&&!!this.getTitle()},isContact:function(){return"contact"===this.get("group")},isLocalFile:function(){return"localFile"===this.get("group")},needsUpload:function(){return 0===this.get("uploaded")},previewUrl:function(e){e=e||{};var t,i=r.has("document_preview"),o=this.get("filename")||this.get("name"),n=this.fileObj||this.get("originalFile");
1if(this.isLocalFile()&&o.match(/psd|tif/))return null;if(!this.isFileAttachment())return null;if(!d.test(o)&&!(i&&l.test(o)||this.isContact()))return null;if("localFile"===this.get("group")&&i&&l.test(o))return null;if("localFile"===this.get("group")&&n.size>=s.get("features/imageResize/fileSizeMax",10485760))return null;if(t=!!this.get("meta")&&this.get("meta").previewUrl)return t;var a=c[this.get("group")];return a?e.delayExecution?a.bind(this,this):a(this):null},upload:function(){var e,i;"FormData"in window&&((new FormData).append("file",this.fileObj),e=(new n).upload(this.fileObj),i=this,e.then(function(){var e=o.getFallbackImage(),t=_.clone(i.get("meta"));t.previewUrl=t.previewUrl||e,i.set("meta",t),i.trigger("upload:complete")},function(){},function(e){i.set("uploaded",e.loaded/e.total)}))}});return{Model:e,Collection:Backbone.Collection.extend({model:e,fileAttachments:function(){return this.filter(function(e){return e.isFileAttachment()})},mailAttachments:function(){return this.filter(function(e){return"inline"===e.get("disp")||"attachment"===e.get("disp")}).map(function(e,t){var i;return 0===t&&"text/plain"===e.attributes.content_type?(i=e.pick("content_type","content")).raw=!0:i=e.attributes,i})},getSize:function(){return this.reduce(function(e,t){return e+t.getSize()},0)},isValidModel:function(e){return e.isFileAttachment()},getValidModels:function(){return this.filter(this.isValidModel,this)}})}}),define("io.ox/core/attachments/view",["io.ox/core/extensions","io.ox/core/attachments/backbone","io.ox/core/strings","gettext!io.ox/core","io.ox/backbone/views/extensible","less!io.ox/core/attachments/style"],function(i,e,t,o,n){var a=n.extend({scrollStep:120,openByDefault:!1,events:{"click .toggle-details":"onToggleDetails","click .toggle-mode":"onToggleMode","click .scroll-left":"scrollLeft","click .scroll-right":"scrollRight"},initialize:function(e){this.options=_.extend({AttachmentView:s,editable:!1,mode:"list"},e),this.listenTo(this.collection,"add",this.addAttachment),this.$el.addClass("mail-attachment-list").addClass(_.device("touch")?"touch":""),this.options.editable&&this.$el.addClass("editable"),"preview"===this.options.mode&&this.$el.addClass("show-preview"),this.$header=$('<div class="header">'),this.$list=$('<ul class="inline-items">'),this.$preview=$('<ul class="inline-items preview">'),this.$footer=$("<footer>"),this.isListRendered=!1,this.listenTo(this.collection,"add remove reset",function(){var e=this.getValidModels().length;this.$el.toggleClass("empty",0===e),this.updateScrollControls(),this.renderSummary(e),this.openByDefault&&this.toggleDetails(!0)}),this.listenTo(this.collection,"remove",function(){this.$preview.trigger("scroll")}),this.$el.toggleClass("empty",0===this.getValidModels().length)},render:function(){var e=_.uniqueId("list-container-"),t=_.uniqueId("preview-container-");return this.renderHeader(),this.$el.append(this.$header,$('<div class="list-container">').attr("id",e).append(this.$list),$('<div class="preview-container">').attr("id",t).append($('<button type="button" class="scroll-left"><i class="fa fa-chevron-left" aria-hidden="true"></i></button>'),this.$preview,$('<button type="button" class="scroll-right"><i class="fa fa-chevron-right" aria-hidden="true"></i></button>')),this.$footer),this.openByDefault&&this.toggleDetails(!0),this.updateScrollControls(),this.updateAriaControls(),this.$header.find(".toggle-mode").attr("aria-controls",[e,t].join(" ")),this},renderHeader:function(){this.$header.append($('<a href="#" class="toggle-details" aria-expanded="false" role="button">').append($('<i class="fa fa-paperclip" aria-hidden="true">'),$('<span class="summary">'),$('<i class="fa toggle-caret" aria-hidden="true">')),$('<span class="links" role="presentation">'),$('<a href="#" class="pull-right toggle-mode" role="button">').attr("title",o("Toggle preview")).append('<i class="fa" aria-hidden="true">')),this.renderSummary()},renderSummary:function(e){e=e||this.getValidModels().length,this.$header.find(".summary").text(o.ngettext("%1$d attachment","%1$d attachments",e,e))},renderList:function(){function e(e,t,i){t.append(e.map(this.renderAttachment.bind(this,i)))}var t=this.getValidModels();e.call(this,t,this.$list,"list"),e.call(this,t,this.$preview,"preview"),this.isListRendered=!0},renderAttachment:function(e,t){return new this.options.AttachmentView({point:this.options.point,mode:e,model:t}).render().$el},addAttachment:function(e){this.isListRendered&&this.collection.isValidModel(e)&&(this.$list.append(this.renderAttachment("list",e)),this.$preview.append(this.renderAttachment("preview",e)))},getValidModels:function(){return this.collection.getValidModels()}
1,updateAriaControls:function(){var e=this.$el.hasClass("show-preview")?this.$(".preview-container").attr("id"):this.$(".list-container").attr("id");this.$header.find(".toggle-details").attr("aria-controls",e),this.$header.find(".toggle-mode").attr("aria-pressed",this.$el.hasClass("show-preview"))},toggleDetails:function(e){this.$el.toggleClass("open",!0===e||void 0),this.$header.find(".toggle-details").attr("aria-expanded",this.$el.hasClass("open")),this.trigger("change:expanded",this.$el.hasClass("open")),this.isListRendered||this.renderList()},onToggleDetails:function(e){e.preventDefault(),this.toggleDetails(),this.updateScrollControls()},onToggleMode:function(e){e.preventDefault(),this.$el.toggleClass("show-preview"),this.trigger("change:layout",this.$el.hasClass("show-preview")?"preview":"list"),this.$preview.trigger("scroll"),this.updateScrollControls(),this.updateAriaControls(),$(window).trigger("resize")},scrollLeft:function(){this.scrollList(-1)},scrollRight:function(){this.scrollList(1)},scrollList:function(e){var t=this.getScrollIndex()+e,i=this.getMaxScrollIndex();t<0||i<t||(this.updateScrollControls(t),this.$preview.stop(!0,!1).animate({scrollLeft:t*this.scrollStep},"fast"))},getScrollIndex:function(){return Math.ceil(this.$preview.scrollLeft()/this.scrollStep)},getMaxScrollIndex:function(){var e=this.$preview.width(),t=this.$preview.prop("scrollWidth");return Math.max(0,Math.ceil((t-e)/this.scrollStep))},updateScrollControls:function(e){void 0===e&&(e=this.getScrollIndex());var t=this.getMaxScrollIndex();this.$(".scroll-left").prop("disabled",e<=0),this.$(".scroll-right").prop("disabled",t<=e)}}),r=Backbone.View.extend({className:"preview",events:{keydown:"onKeydown"},initialize:function(){this.listenTo(this.model,"change:id",this.render),this.$el.on("error.lazyload",this.fallback.bind(this))},lazyload:function(e){_.defer(function(){this.$el.lazyload({container:this.$el.closest("ul"),effect:"fadeIn",previewUrl:e})}.bind(this))},getColor:function(e){return/^do[ct]x?$/.test(e)?"#2C5897":/^xlsx?|o[dt]s$/.test(e)?"#1D7047":/^p[po]tx?$/.test(e)?"#D04423":/^pdf$/.test(e)?"#C01E07":/^(zip|gz|gzip|tgz)$/.test(e)?"#FF940A":void 0},fallback:function(){var e,t=this.model.getExtension();t&&(e=this.getColor(t),this.$el.append($('<div class="abs fallback ellipsis">').css({color:e&&"white",backgroundColor:e}).text(t)))},render:function(){var e=this.model.previewUrl({delayExecution:!0});return _.isString(e)?(this.$el.addClass("lazy").attr("data-original",e),this.lazyload()):null!==e?(this.$el.addClass("lazy"),this.lazyload(e)):this.fallback(),this.$el.attr("tabindex","0"),this},onKeydown:function(e){13!==e.which&&32!==e.which||($(e.target).trigger("click"),e.preventDefault(),e.stopPropagation())}}),s=Backbone.View.extend({tagName:"li",className:"item",events:{"click .remove":"onRemove"},attributes:function(){return{"data-id":this.model.get("id")||this.model.cid}},initialize:function(e){this.options=_.extend({mode:"list"},e),this.preview="preview"===this.options.mode&&new r({model:this.model,el:this.el}),this.listenTo(this.model,{"change:uploaded":function(e){var t=100*e.get("uploaded");0==t&&this.render(),this.$(".progress").width(t+"%")},"change:file_size change:size":this.render,"upload:complete":function(){this.render()},remove:this.onRemoveModel});var t=this.options.point?this.options.point+"/view":"io.ox/core/attachment/view";i.point(t).invoke("initialize",this)},onRemove:function(e){e.preventDefault(),this.model.collection.remove(this.model)},onRemoveModel:function(){this.remove()},render:function(){return this.$el.empty().append($('<span class="file">'),$('<span class="filesize">'),this.model.needsUpload()?$('<div class="progress-container">').append($('<div class="progress">')):$()),this.preview&&this.preview.render(),this.preview||this.renderFileSize(),this.renderContent(),this.renderControls(),this},renderFileSize:function(){var e=this.model.getSize();0<e&&this.$(".filesize").text(" ("+t.fileSize(e,1)+")")},renderContent:function(){this.$(".file").attr("title",this.model.getTitle()).text(this.model.getShortTitle(_.device("smartphone")?23:50))},renderControls:function(){this.$el.append($('<a href="#" class="control remove">').attr("title",o("Remove attachment")).append($('<i class="fa fa-tras
1h-o" aria-hidden="true">')))}});return{List:a,View:s,Preview:r,Model:e.Model,Collection:e.Collection}}),define("io.ox/core/api/user",["io.ox/core/http","io.ox/core/api/factory","io.ox/contacts/util","io.ox/core/capabilities"],function(a,e,n,o){function t(t){return t.id?(t.birthday&&moment.utc(t.birthday).local(!0).year()<=1&&(t.birthday=n.julianToGregorian(t.birthday)),t.anniversary&&moment.utc(t.anniversary).local(!0).year()<=1&&(t.anniversary=n.julianToGregorian(t.anniversary))):_(t).each(function(e){e.birthday&&moment.utc(e.birthday).local(!0).year()<=1&&(e.birthday=n.julianToGregorian(e.birthday)),t.anniversary&&moment.utc(t.anniversary).local(!0).year()<=1&&(t.anniversary=n.julianToGregorian(t.anniversary))}),t}var r=e({module:"user",keyGenerator:function(e){return"string"==typeof e||"number"==typeof e?e:String(e.id)},requests:{all:{columns:"1,20,500",extendColumns:"io.ox/core/api/user/all",sort:"500",order:"asc"},list:{action:"list",columns:"1,20,500,501,502,505,524,555,606,614,616",extendColumns:"io.ox/core/api/user/list"},get:{action:"get"},search:{action:"search",columns:"1,20,500,524",extendColumns:"io.ox/core/api/user/search",sort:"500",order:"asc",getData:function(e){return{pattern:e}}}},pipe:{get:t,search:t}});ox.rampup.user&&ox.rampup.user.id===ox.user_id&&(r.caches.get.add(ox.rampup.user),r.caches.list.add(ox.rampup.user)),r.update=function(i){return _.isEmpty(i.data)?$.when():require(["io.ox/contacts/api"]).then(function(t){return i.data.birthday&&moment.utc(i.data.birthday).local(!0).year()<=1&&(i.data.birthday=n.gregorianToJulian(i.data.birthday)),i.data.anniversary&&moment.utc(i.data.anniversary).local(!0).year()<=1&&(i.data.anniversary=n.gregorianToJulian(i.data.anniversary)),i.data=_(i.data).each(function(e,t){""!==e&&void 0!==e||(i.data[t]=null)}),a.PUT({module:"user",params:{action:"update",id:i.id,folder:i.folder,timestamp:i.timestamp||_.then()},data:i.data,appendColumns:!1}).then(function(){return r.get({id:i.id},!1).then(function(e){return $.when(r.caches.get.add(e),r.caches.all.clear(),r.caches.list.remove({id:i.id}),t.caches.get.remove({folder_id:e.folder_id,id:e.contact_id}),t.caches.all.grepRemove(i.folder+t.DELIM),t.caches.list.remove({id:e.contact_id,folder:i.folder}),t.clearFetchCache()).then(function(){return e}).done(function(){r.trigger("update:"+_.ecid(e),e),r.trigger("update",e),r.trigger("refresh.list"),null===i.data.image1&&(t.trigger("update:image",e),r.trigger("reset:image reset:image:"+i.id,{id:i.id})),"6"===String(e.folder_id)&&o.has("!gab")||t.get({folder_id:e.folder_id,id:e.contact_id}).done(function(e){t.trigger("update:"+_.ecid(e),e),t.trigger("update",e)})})})})})},r.editNewImage=function(t,e,i){function o(e){return $.when(r.caches.get.clear(),r.caches.all.clear(),r.caches.list.clear()).then(function(){r.trigger("refresh.list"),require(["io.ox/contacts/api"]).then(function(e){e.trigger("update:image",{id:t.id}),r.trigger("update update:image update:image:"+t.id,{id:t.id})})}),e}if("FormData"in window&&i instanceof window.File){var n=new FormData;return n.append("file",i),n.append("json",JSON.stringify(e)),a.UPLOAD({module:"user",params:{action:"update",id:t.id,timestamp:t.timestamp||_.then()},data:n,fixPost:!0}).then(o)}return a.FORM({module:"user",action:"update",form:i,data:e,params:{id:t.id,folder:t.folder_id,timestamp:t.timestamp||_.then()}}).then(o)},r.getName=function(e){return r.get({id:e}).then(function(e){return e.display_name||e.email1||""})},r.getGreeting=function(e){return r.get({id:e}).then(function(e){return e.first_name||e.display_name||e.email1||""})},r.getTextNode=function(e,t){var i=_.extend({type:"name"},t),o=i.node||document.createTextNode("");return r.get({id:e}).done(function(e){var t="";"name"===i.type?t=e.display_name||e.email1:"email"===i.type?t=e.email1||e.display_name:"email-localpart"===i.type?t=(e.email1||e.display_name||"").replace(/@.*$/,""):"initials"===i.type&&(t=n.getInitials(e)),o.nodeValue=t}).always(function(){_.defer(function(){o=null})}),o},r.getLink=function(e,t){return t=t?$.txt(t):r.getTextNode(e),$('<a href="#" class="halo-link">').append(t).data({internal_userid:e})}
1,r.getCurrentUser=function(){return require(["io.ox/core/settings/user"]).then(function(e){return e.getCurrentUser()})};var i=r.get;return r.get=function(){return!arguments.length||_.isEmpty(arguments)||_.isObject(arguments[0])&&void 0===arguments[0].id?i({id:ox.user_id}):i.apply(this,arguments)},r.me=function(){return ox.rampup.user?$.when(ox.rampup.user):r.get()},r.on("update:"+_.ecid({folder_id:6,id:ox.user_id}),function(){require(["io.ox/core/api/account"],function(e){e.reload()})}),r.getNameExtended=function(e,t){if(void 0===e)return $.Deferred().reject({error:"Unknown User"});var i=(e=e.get?e.attributes:e)[(t=t||"created")+"_from"],o=r.checkForName(i);return o?$.when(o):(i=0===e[t+"_by"]&&i&&r.isMyself(i)?ox.user_id:e[t+"_by"])?r.getName(i):$.Deferred().reject({error:"Unknown User"})},r.getTextNodeExtended=function(e,t){if(void 0===e)return"";e=e.get?e.attributes:e,t=t||"created";var i=document.createTextNode(""),o=e[t+"_from"],n=r.checkForName(o);return n?i.nodeValue=n:(o=0===e[t+"_by"]&&o&&r.isMyself(o)?ox.user_id:e[t+"_by"])&&r.getTextNode(o,{node:i}),i},r.isMyself=function(e){return e.entity===ox.user_id||e.identifier===String(ox.user_id)||!!("guest"===e.type&&e.contact&&ox.rampup&&ox.rampup.user&&e.contact.email1===ox.rampup.user.email1)},r.checkForName=function(e){if(e){var t=_.isEmpty(e.contact)?e.display_name:n.getFullName(e.contact);return!t&&e.displayName&&(t=e.displayName),!t&&!r.isMyself(e)&&e.contact&&e.contact.email1&&(t=e.contact.email1),t}},r}),define("io.ox/core/api/group",["io.ox/core/http","io.ox/core/api/factory"],function(i,e){var o=e({module:"group",keyGenerator:function(e){return String(e.id)},requests:{all:{columns:"1,20",extendColumns:"io.ox/core/api/group/all",s
1ort:"500",order:"asc"},list:{},get:{},search:{action:"search",columns:"1,20,500,524",extendColumns:"io.ox/core/api/group/search",getData:function(e){return{pattern:e}}}}});function n(){o.caches.all.clear(),o.caches.list.clear(),o.caches.get.clear()}var t,a=Backbone.Model.extend({defaults:{display_name:"",members:[],name:""},initialize:function(){var e=this.get("members");_.isString(e)&&""!==e&&this.set("members",e.split(",").map(function(e){return parseInt(e,10)}),{silent:!0}),this.on("change:display_name",function(){this.set("name",this.getName())}),this.set("name",this.getName())},getName:(t={"ä":"ae","ö":"oe","ü":"ue","ß":"ss"},function(){return this.has("id")&&this.get("name")?this.get("name"):this.get("display_name").trim().toLowerCase().replace(/[äöüß]/g,function(e){return t[e]}).replace(/\W+/g,"_")})}),r=Backbone.Collection.extend({comparator:function(e){return(e.get("display_name")||"").toLowerCase()},model:a});return o.collection=new r,o.getModel=function(e){return o.collection.get(e)||new a},o.create=function(e){return i.PUT({module:"group",params:{action:"new"},data:e,appendColumns:!1}).then(function(e){return o.get({id:e.id}).done(function(e){o.collection.add(e,{parse:!0}),o.trigger("create",e),n()})})},o.update=function(t){return i.PUT({module:"group",params:{action:"update",id:t.id,timestamp:_.then()},data:_(t).pick("name","display_name","members"),appendColumns:!1}).done(function(){var e=o.collection.get(t.id);e&&e.set(t),o.trigger("update",t),n()})},o.refreshGroup=function(t){return o.collection.get(t)?o.get({id:t},!1).done(function(e){return o.collection.get(t).set(e)}):$.when()},o.remove=function(t){return o.trigger("before:remove",t),i.PUT({module:"group",params:{action:"delete",timestamp:_.then()},data:{id:t},appendColumns:!1}).done(function(){var e=o.collection.get(t);e&&o.collection.remove(e),o.trigger("remove",t),n()})},o.getName=function(e){return o.get({id:e}).then(function(e){return e.display_name||e.name||""})},o.getTextNode=function(e){var t=document.createTextNode("");return o.get({id:e}).done(function(e){t.nodeValue=e.display_name}).always(function(){_.defer(function(){t=null})}),t},o}),define("io.ox/core/api/resource",["io.ox/core/http","io.ox/core/api/factory"],function(i,e){var o=e({module:"resource",keyGenerator:function(e){return String(e.id)},requests:{all:{},list:{},get:{},search:{action:"search",getData:function(e){return{pattern:e}}}}});function n(){o.caches.all.clear(),o.caches.list.clear(),o.caches.get.clear()}var t,a=Backbone.Model.extend({defaults:{description:"",display_name:"",name:"",mailaddress:""},initialize:function(){this.on("change:display_name",function(){this.set("name",this.getName())}),this.set("name",this.getName())},getName:(t={"ä":"ae","ö":"oe","ü":"ue","ß":"ss"},function(){return this.has("id")&&this.get("name")?this.get("name"):this.get("display_name").trim().toLowerCase().replace(/[äöüß]/g,function(e){return t[e]}).replace(/\W+/g,"_")})}),r=Backbone.Collection.extend({comparator:function(e){return(e.get("display_name")||"").toLowerCase()},model:a});return o.collection=new r,o.getModel=function(e){return o.collection.get(e)||new a},o.create=function(e){return i.PUT({module:"resource",params:{action:"new"},data:e,appendColumns:!1}).then(function(e){return o.get({id:e.id}).done(function(e){o.collection.add(e,{parse:!0}),o.trigger("create",e),n()})})},o.update=function(t){return i.PUT({module:"resource",params:{action:"update",id:t.id,timestamp:_.then()},data:_(t).pick("description","display_name","mailaddress","name"),appendColumns:!1}).done(function(){var e=o.collection.get(t.id);e&&e.set(t),o.trigger("update",t),n()})},o.remove=function(t){return o.trigger("before:remove",t),i.PUT({module:"resource",params:{action:"delete",timestamp:_.then()},data:{id:t},appendColumns:!1}).done(function(){var e=o.collection.get(t);e&&o.collection.remove(e),o.trigger("remove",t),n()})},o}),define("io.ox/core/api/quota",["io.ox/core/http","io.ox/core/capabilities","settings!io.ox/core"],function(n,t,i){var a,e=Backbone.Model.extend({defaults:{quota:-1,use:0,countquota:-1,countuse:0},constructor:function(e){this.type=e,this.fetched=!1,Backbone.Model.apply(this,[])},fetch:function(){var e="unified"===i.get("quotaMode","default");return this.fetched||"mail"===this.type&&!t.has("webmail")&&!e||"filestore"===this.type&&!t.has("infostore")&&!e?this.toJSON():n.GET({module:"quota",params:{action:e?"unified":this.type}}).then(function(e){return this.fetched=!0,"filestore"===this.type&&0<i.get("properties/infostoreUsage")&&i.set("properties/infostoreUsage",e.use),this.set(e).toJSON()}.bind(this))}}),o=new e("mail"),r=new e("filestore"),s=!1,l={mailQuota:o,fileQuota:r,checkQuota:function(e,t){return"infostore"!==e.module?{}:n.PUT({module:"folders",params:{action:"checklimits",id:e.id,type:"filestorage"},appendColumns:!1,data:{files:t.map(function(e){return{size:e.size,name:e.name}})}}).then(function(e){return[].concat.apply(e&&e.errors||[])})},getModel:function(e){return"mail"===e?o:r},load:function(){return n.pause(),"unified"!==i.get("quotaMode","default")&&this.mailQuota.fetch(),this.fileQuota.fetch(),n.resume().then(function(){return"unified"===i.get("quotaMode","default")&&(o.fetched=!0,o.set(r.attributes)),{mail:o.toJSON(),file:r.toJSON()}})},reload:function(){o.fetched=!1,s&&(r.fetched=!1),this.load()},getAccountQuota:(a=new Backbone.Collection,function(t,i,e){var o=a.find({account_id:t.replace(/.*:\/\//,""),module:i});return o&&!1!==e?$.when(o):n.GET({module:"quota",params:{account:t,module:i}}).then(function(e){return(e=e||{account_id:t.replace(/.*:\/\//,"")}).module=i,a.add(e)})})};return ox.on("refresh^",function(){l.reload()}),l.requestFileQuotaUpdates=function(){s=!0},l}),define("io.ox/core/api/filestorage",["io.ox/core/http","io.ox/core/event","io.ox/core/extensions"],function(a,e,t){function i(e){var i=["googledrive","dropbox","boxcom","onedrive","xo
1x","xctx"];t.point("io.ox/core/filestorage/service-list").invoke("customize",i),_(e).each(function(t){t=t.get?t.toJSON():t,_(i).each(function(e){t.filestorageService&&0===t.filestorageService.indexOf(e)&&s.push(t.qualifiedId)})}),s=_.uniq(s)}var o={},n=new Backbone.Collection,r=new Backbone.Collection,s=[],l={rampupDone:!1,rampupFailed:!1,rampup:function(){return l.rampupDone?$.Deferred().resolve():(l.rampupFailed&&$.Deferred().reject(),a.pause(),l.getAllServices(),l.getAllAccounts(),a.resume().done(function(e){var t=!1;_(e).each(function(e){e.error&&(t=!0)}),t?(l.rampupDone=!1,l.rampupFailed=!0):(l.rampupDone=!0,l.rampupFailed=!1)}).fail(function(e){return l.rampupFailed=!0,e}))},getAccountsCache:function(){return r},getAllServices:function(e,t){if((t=void 0===t||t)&&n.length)return $.Deferred().resolve(n);var i={action:"all"};return e&&(i.filestorageService=e),a.GET({module:"fileservice",params:i}).then(function(e){return n.reset(e),_(e).each(function(e){try{e.configuration&&0<e.configuration.length&&e.configuration[0].options&&(o[e.configuration[0].options.type]={filestorageService:e.id,configuration:{type:e.configuration[0].options.type}})}catch(e){console.error(e)}}),n})},getService:function(e,t){if(t=_.defaultValue(t,!0),!e)return $.Deferred().reject();if(t&&n.length){var i=n.get(e);if(i)return $.Deferred().resolve(i)}return a.GET({module:"fileservice",params:{action:"get",id:e}}).then(function(e){return new Backbone.Model(e)})},getAllAccounts:function(e){return(e=_.defaultValue(e,!0))&&0<r.length?$.Deferred().resolve(r):a.GET({module:"fileaccount",params:{action:"all",connectionCheck:!0}}).then(function(e){return r.reset(e),i(e),r})},getAccount:function(e,t){if(t=_.defaultValue(t,!0),!e.id||!e.filestorageService)return $.Deferred().reject();if(t&&0<r.length){var i=r.get(e.id);if(i)return $.Deferred().resolve(i)}return a.GET({module:"fileaccount",params:{action:"get",id:e.id,filestorageService:e.filestorageService}}).then(function(e){return new Backbone.Model(e)})},createAccount:function(t){return a.PUT({module:"fileaccount",params:{action:"new"},data:t}).then(function(e){return l.getAccount({id:e,filestorageService:t.filestorageService}).then(function(e){return r.add(e),i([e]),l.trigger("create",r.get(e)),require(["io.ox/core/api/account"],function(e){e.trigger("create:account")}),r.get(e)})})},createAccountFromOauth:function(e,t){if(t=t||{},!e)return $.Deferred().reject();if(l.getAccountForOauth(e))return $.Deferred().reject({code:"EEXISTS"});var i=_.copy(o[e.serviceId],!0);return i?(i.displayName=t.displayName||e.displayName,i.configuration.account=String(e.id),l.createAccount(i)):$.Deferred().reject()},deleteAccount:function(t,e){var i,o=e||{};function n(e){return r.remove(t),s=_(s).without(t.qualifiedId),l.trigger("delete",i||t),require(["io.ox/core/folder/api"],function(e){ox.trigger("account:delete",t.qualifiedId),e.propagate("account:delete")}),e}return t.attributes&&(t=(i=t).attributes),(o.softDelete?$.Deferred().resolve():a.PUT({module:"fileaccount",params:{action:"delete",id:t.id,filestorageService:t.filestorageService}})).then(n,n)},remove:function(e,t){return l.deleteAccount(e,t)},getAccountForOauth:function(t){var i;return _(r.models).each(function(e){e.get("configuration")&&e.get("configuration").account===String(t.id)&&(i=e)}),i},updateAccount:function(e){return a.PUT({module:"fileaccount",params:{action:"update"},data:e}).then(function(){return l.getAccount({id:e.id,filestorageService:e.filestorageService},!1).then(function(e){return r.add(e,{merge:!0}),l.trigger("update",r.get(e)),r.get(e)})})},isStorageAvailable:function(e){return e?!!o[e]:_.keys(o)},consistencyCheck:function(){l.rampupDone&&!l.rampupFailed&&require(["io.ox/oauth/keychain"],function(e){try{var i={},o=e.accounts;_(r.models).each(function(e){var t;"googledrive"!==e.get("filestorageService")&&"dropbox"!==e.get("filestorageService")&&"onedrive"!==e.get("filestorageService")&&"boxcom"!==e.get("filestorageService")||e.get("configuration")&&e.get("configuration").account&&(t=e.get("configuration").account,o.get(t)&&!i[t]?i[t]=!0:l.deleteAccount(e))})}catch(e){ox.debug&&console.error(e)}})},isExternal:function(e,t){var i,o=!1,n=t||{};return l.rampupDone&&e&&e.account_id&&(o=-1!==_(s).indexOf(e.account_id)),o&&(n.type||n.root)&&(i=r.findWhere({qualifiedId:e.account_id}),n.root&&(o=e.id===i.get("rootFolder")),o&&n.type&&(o=i.get("filestorageService"))),o},getAllGuestUserIdentifier:function(){return _.compact(_(r.pluck("metadata")).map(function(e){return e&&e.guestUserIdentifier}))},getAccountMetaData:function(e){var t=r.findWhere({qualifiedId:e});return t?t.get("metadata"):null},getAccountUrl:function(e){var t=r.findWhere({qualifiedId:e}),i=t?t.get("configuration"):null;return i?i.url:null},isFederatedAccount:function(e){var t=l.getAccountMetaData(e);return t?_.has(t,"guestUserIdentifier"):null},getAccountDisplayName:function(e){var t=r.findWhere({qualifiedId:e});return t?t.get("displayName"):null}};
1return e.extend(l),require(["io.ox/core/folder/api"],function(e){e.on("remove:infostore",function(e){var t=/.*:\/\/(\d+)/.exec(e.account_id);null!==t&&t[1]&&r.remove(t[1])})}),l}),define("io.ox/contacts/util",["io.ox/core/util","io.ox/core/extensions","settings!io.ox/contacts","gettext!io.ox/contacts"],function(d,t,c,u){function p(e,t){var i=new Array(e);return i[e-1]=t,{format:"%"+e+"$s",params:i}}function i(e){var t=moment.utc(e).local(!0),i=t.month()<2?Math.floor((t.year()-1)/100):Math.floor(t.year()/100),o=Math.floor(i/4),n=i%4;return Math.abs(864e5*(3*o+n-2))}function o(o,e,t){var n=o;return!0===t&&(n={},_(["title","first_name","last_name","company","display_name","cn"]).each(function(e){var t=$.trim(o[e]);if(!t)if("last_name"===e&&$.trim(o.yomiLastName))t=$.trim(o.yomiLastName);else if("first_name"===e&&$.trim(o.yomiFirstName))t=$.trim(o.yomiFirstName);else{if("company"!==e||!$.trim(o.yomiCompany))return;t=$.trim(o.yomiCompany)}var i="last_name"===e?"strong":"span";n[e]="<"+i+' class="'+e+'">'+_.escape(t)+"</"+i+">"})),e?l.getMailFullNameFormat(o):l.getFullNameFormat(n)}require(["settings!io.ox/contacts"]).then(function(e){e.get("showDepartment")&&($("html").addClass("showDepartment"),t.point("io.ox/core/person").extend({index:"last",id:"department",draw:function(e){"6"===String(e.data.folder_id)&&e.data.department&&this.append($('<span class="department">').text(_.noI18n.format(" (%1$s) ",e.data.department)))}}))});var n,a,r,s,l={getSortName:function(e){return e=_.pick(e,"first_name","last_name","display_name","cn"),this.getFullName(e).toLowerCase()},getFullNameFormat:function(e){var t,i=$.trim(e.first_name),o=$.trim(e.last_name),n=$.trim(e.display_name||e.cn),a=$.trim(e.company),r=$.trim(e.title);if(i&&o){var s=c.get("fullNameFormat","auto"),l=[i,o];return(r=/^(<span class="title">)?(dr\.?|prof\.?)/i.test(t=r)?t:"")&&l.push(r),{format:"firstname lastname"===s?r?"%3$s %1$s %2$s":"%1$s %2$s":"lastname, firstname"===s?r?"%3$s %2$s, %1$s":"%2$s, %1$s":u(r?"%3$s %2$s, %1$s":"%2$s, %1$s"),params:l}}return o?p(2,o):i?p(1,i):a?p(1,a):n?p(4,d.unescapeDisplayName(n)):{format:"",params:[]}},getFullName:function(e,t){var i=o(e,!1,t);return _.noI18n.format(i.format,i.params)},getFullNameWithFurigana:function(e){return this.getFullName(e,!0)},getDisplayName:function(e){return e.display_name?d.unescapeDisplayName(e.display_name):e.last_name&&e.first_name?e.last_name+", "+e.first_name:e.last_name||e.first_name||""},getMailFullNameFormat:function(e){var t=$.trim(e.first_name),i=$.trim(e.last_name),o=$.trim(e.display_name);return i&&t?{format:u.pgettext("mail address","%1$s %2$s"),params:[t,i]}:i?p(2,i):t?p(1,t):o?p(4,d.unescapeDisplayName(o)):{format:"",params:[]}},getMailFullName:function(e,t){var i=o(e,!0,t);return _.noI18n.format(i.format,i.params)},getMailFormat:function(e){return e.email1?p(1,e.email1):e.email2?p(2,e.email2):e.email3?p(3,e.email3):{format:"",params:[]}},getMail:function(e){return e?(e.email1||e.email2||e.email3||e.mail||"").trim().toLowerCase():""},getJob:function(e){var t=_([e.company,e.position]).compact();return t.length?t.join(", "):e.email1||e.email2||e.email3||""},nameSort:function(e,t){var i=void 0===e.display_name?e.mail:e.display_name.toLowerCase(),o=void 0===t.display_name?t.mail:t.display_name.toLowerCase();return i<o?-1:o<i?1:0},calcMailField:function(e,i){var o,t=[e.email1,e.email2,e.email3];return _.each(t,function(e,t){i===e&&(o=t+1)}),o},gregorianToJulian:function(e){return moment.utc(e-i(e)).valueOf()},julianToGregorian:function(e){return moment.utc(e+i(e)).valueOf()},getBirthday:function(e,t){return 1<(e=moment.utc(e)).year()&&1604!==e.year()?e.format("l")+(t?" ("+u("Age: %1$d",moment().diff(e,"years"))+")":""):e.formatCLDR("Md")},getSummaryBusiness:function(e){var t=[e.position,e.company,e.department];return"6"===String(e.folder_id)&&t.splice(1,1),t.map($.trim).filter(Boolean).join(", ")},getSummaryLocation:function(e){return(e.city_business?[e.city_business,e.country_business]:[e.city_home,e.country_home]).map($.trim).filter(Boolean).join(", ")},getImage:function(e,t){if(_.isObject(e)&&(e=e.image1_url),!e)return"";t=_.extend({width:40,height:40,scaleType:"cover"},t),_.device("retina")&&(t.width*=2,t.height*=2);var i=e.replace(/^https?:\/\/[^/]+/i,""),i=d.replacePrefix(i);return d.getShardingRoot(i+"&"+$.param(t))},getInitials:(r=/^.*?([a-z0-9\xC0-\xFF])/i,s=/\s.*?([a-z0-9\xC0-\xFF])\S*$/i,function(e){return f(e).toUpperCase()}),getInitialsColor:(a=(n=["red","orange","yellow","green","cyan","blue","purple","pink"]).length,function(e){return e?n[e[0].charCo
1deAt()%a]:n[0]}),validateDistributionList:function(e){if(e&&_.isArray(e)&&e.length){var t=[];return e=_(e).filter(function(e){return(e=e.attributes||e).mail||e[e.field]||t.push(e),!!e.mail}),t.length&&require(["io.ox/core/yell"],function(e){1!==t.length?e("warning",u("Some contacts could not be added as they have no valid email field.")):e("warning",u("%1$s could not be added as the contact has no valid email field.",t[0].display_name))}),e}}};function h(e){var t=r.exec(e);return t&&t[1]||""}function f(e){var t,i,o=$.trim(e.first_name),n=$.trim(e.last_name),a=$.trim(e.display_name);if(o&&n)return h(o)+h(n);if(a)return h(a)+(t=a,(i=s.exec(t))&&i[1]||"");if(n)return h(n);if(o)return h(o);var r=$.trim(e.email1||e.email2||e.email3||e.email);return r?h(r):""}return l}),define("l10n/ja_JP/io.ox/collation",function(){var c,i="゙ ゙ ゛".split(" "),o="゚ ゚ ゜".split(" "),n="ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ ッ テ ト ハ ヒ フ ヘ ホ ワ ヲ".split(" "),u={},a={},r=0,e=[],p=/^[a-zäöü]/i;u[" "]=r,u[" "]=r++,_([["あ ぁ ア ア ァ","い ぃ イ イ ィ","う ぅ ウ ウ ゥ ゔ ヴ ヴ","え ぇ エ エ ェ","お ぉ オ オ ォ"],["か ゕ カ カ ヵ が ガ ガ","き キ キ ぎ ギ ギ","く ク ク ㇰ ぐ グ ㇰ゙","け ゖ ケ ケ ヶ げ ゲ ゲ","こ コ コ ご ゴ ゴ"],["さ サ サ ざ ザ ザ","し シ シ ㇱ じ ジ ジ","す ス ス ㇲ ず ズ ズ","せ セ セ ぜ ゼ ゼ","そ ソ ソ ぞ ゾ ゾ"],["た タ タ だ ダ ダ","ち チ チ ぢ ヂ ヂ","つ っ ツ ツ ッ ッ づ ヅ ヅ ッ゙","て テ テ で デ デ","と ト ト ㇳ ど ド ド"],["な ナ ナ","に ニ ニ","ぬ ヌ ヌ ㇴ","ね ネ ネ","の ノ ノ"],["は ハ ハ ㇵ ば バ バ ぱ パ パ","ひ ヒ ヒ ㇶ び ビ ビ ぴ ピ ピ","ふ フ フ ㇷ ぶ ブ ブ ぷ プ プ","へ ヘ ヘ ㇸ べ ベ ベ ぺ ペ ペ","ほ ホ ホ ㇹ ぼ ボ ボ ぽ ポ ポ"],["ま マ マ","み ミ ミ","む ム ム ㇺ","め メ メ","も モ モ"],["や ゃ ヤ ヤ ャ","ゆ ゅ ユ ユ ュ","よ ょ ヨ ヨ ョ"],["ら ラ ラ ㇻ","り リ リ ㇼ","る ル ル ㇽ","れ レ レ ㇾ","ろ ロ ロ ㇿ"],["わ ゎ ワ ワ ヮ ヷ ヷ","ゐ ヰ ヸ","ゑ ヱ ヹ","を ヲ ヲ ヺ","ん ン ン"]]).each(function(t){e.push(t[0][0]),_(t).each(function(e){_(e.split(" ")).each(function(e){u[e]=r,a[e]=t[0][0]}),r++})}),c=_(a).keys();function h(e,t){return e&&t&&-1!==n.indexOf(e)&&(t[1]&&-1!==i.indexOf(t[1])&&(e+=i[0]),t[1]&&-1!==o.indexOf(t[1])&&(e+=o[0])),e}var f,t=function(e,t){if(e&&e.email&&t&&t.email&&e.sort_name_without_mail&&t.sort_name_without_mail){var i=f({sort_name:e.sort_name_without_mail},{sort_name:t.sort_name_without_mail});return 0!==i?i:f({sort_name:e.email},{sort_name:t.email})}return f(e,t)};return{sorter:f=function(e,t,i){var o,n=e.sort_name,a=t.sort_name,r=e.fullSortName||n,s=t.fullSortName||a;if(e=e.sort_name[0],t=t.sort_name[0],r===n&&s===a){if(void 0===e&&void 0===t)return 0;if(void 0===e)return 1;if(void 0===t)return-1;if(e!==t&&"_"===e&&t in u)return 1;if(e!==t&&"_"===t&&e in u)return-1}if(void 0===e&&void 0===t)return i||0;if(void 0===t||"_"===t&&"_"!==e&&void 0!==e)return 1;if(void 0===e||"_"===e&&"_"!==t&&void 0!==t)return-1;if(i&&("_"===e||"_"===t))return i;if(e in u&&t in u){var l=e,d=t;return e=h(e,n),t=h(t,a),u[e]===u[t]?(void 0===i&&e!==t&&(i=_(c).indexOf(e)<_(c).indexOf(t)?-1:1),e={sort_name:n.slice(l===e?1:2),fullSortName:r},t={sort_name:a.slice(d===t?1:2),fullSortName:s},f(e,t,i)):u[e]-u[t]==0?i||0:u[e]-u[t]}return e in u?-1:t in u?1:(e=e.toUpperCase())===(t=t.toUpperCase())?(e={sort_name:n.slice(1),fullSortName:r},t={sort_name:a.slice(1),fullSortName:s},f(e,t,i)):p.test(e)||p.test(t)?p.test(e)?p.test(t)?0===(o=e<t?-1:t<e?1:0)?i||0:o:1:-1:0===(o=e<t?-1:t<e?1:0)?i||0:o},sorterWithMail:t,index:e,isKana:function(e){return void 0!==a[e]},getKanaLabel:function(e){return a[e]||""}}}),define("io.ox/core/tk/list-selection",["settings!io.ox/core"],function(e){var a,r=".selectable",s=_.device("touch"),t=_.device("android")&&_.browser.android<"4.4",i=e.get("selectionMode","normal"),o=!1;function n(e,t){switch(t=_.isObject(t)?t:{},this.view=e,this.behavior=t.behavior||i,this._direction="down",this._lastPosition=-1,this.behavior){case"normal":_.extend(this,d);break;case"alternative":_.extend(this,d,c);break;case"simple":_.extend(this,u);break;default:console.error("Unknown selection behavior",this.behavior)}this.registerEvents()}var l={get:function(){return _(this.view.$el.find(r+".selected")).map(function(e){return $(e).attr("data-cid")})},resolve:function(){var t=this.view;return this.get().map(function(e){return t.collection.get(e)})},getItems:function(e){var t=this.view.$el.find(r);return e?t.filter(e):t},getNode:function(e){return this.getItems().filter('[data-cid="'+e+'"]')},getPosition:function(e){var t=(e=e||this.getItems()).index(e.filter(".precursor"));return t!==this._lastPosition&&(this._direction=t<this._lastPosition?"up":"down"),this._lastPosition=t},getDirection:function(){return this._direction},check:function(e){e.addClass("selected").attr("aria-selected",!0),this.triggerSelectEvent("add",e)},uncheck:function(e){e.removeClass("selected no-checkbox").attr({"aria-selected":!1,tabindex:"-1"}),this.triggerSelectEvent("remove",e)},toggle:function(e){e.hasClass("selected")?this.uncheck(e):this.check(e)},triggerSelectEvent:function(e,t){var i=t.map(function(){return $(this).attr("data-cid")}).toArray();this.view.trigger("selection:"+e,i)},set:function(e,t){var i,o,n;_.isArray(e)&&(i=this.getItems(),o={},this.clear(),_(e).each(function(e){var t="string"==typeof e?e:_.cid(e);o[t]=!0}),i=i.filter(function(){return $(this).attr("data-cid")in o}),this.check(i),i.length&&(n=i.last().attr("tabindex","0"),t&&n.focus()),this.triggerChange())},triggerAction:function(e){var t=$(e.currentTarget).attr("data-cid");this.view.trigger("selection:action",[t])},triggerDouble:function(e){var t=$(e.currentTarget).attr("data-cid");this.view.trigger("selection:doubleclick",[t])},triggerChange:function(e,t){e=e||this.getItems();var i=this.get(),o="selection:change";0===i.length?o+=" selection:empty":1===i.length?o+=" selection:one":1<i.length&&(o+=" selection:multiple"),e&&0<e.length&&e.length===i.length&&(1!==e.length||!$(e[0]).hasClass("no-checkbox"))?o+=" selection:all":o+=" selection:subset",this.view.trigger(o,i,t)},clear:function(e){e=e||this.getItems(),this.resetTabIndex(e),this.resetCheckmark(e),this.reset()},reset:function(){this.triggerChange()},remove:function(e,t){(t=t||this.getNode(e)).is(".selected")&&this.triggerChange()},isRange:function(e){return e&&e.shiftKey},isCheckmark:function(e){return e&&$(e.target).is(".list-item-checkmark, .fa.fa-checkmark")},isMultiple:function(e){return e&&(e.metaKey||e.ctrlKey||/35|36/.test(e.which)||this.isCheckmark(e))},isEmpty:function(){return _.isEmpty(this.get())},resetTabIndex:function(e,t){(e=e.filter('[tabindex="0"]')).not(t).attr("tabindex","-1")},resetCheckmark:function(e){e=e.filter(".selected").removeClass("selected no-checkbox").attr("aria-selected",!1),this.triggerSelectEvent("remove",e)},resetSwipe:function(e){var t=e.filter(".swipe-left");return t.removeClass("swipe-left").find(".swipe-left-content").remove(),!!t.length},focus:function(e,t,i){var o=(t=t||this.getItems()).eq(e).attr("tabindex","0");return!1!==i&&(_.device("ie")?_.defer(function(){o.focus()}):o.focus()),_.device("chrome < 48")&&o.hide(0,function(){$(this).show()}),o},pick:function(e,t,i,o){var n;t=t||this.getItems(),this.isRange(i)?this.pickRange(e,t):(t.removeClass("precursor"),n=this.focus(e,t,o).addClass("precursor"),this.isMultiple(i)?this.pickMultiple(n,t):this.pickSingle(n))},pickRange:function(e,t){var i=this.getPosition(t,e),o=Math.min(e,i),n=Math.max(e,i);$(t.slice(o,n+1)).removeClass("no-checkbox"),this.check(t.slice(o,n+1)),this.focus(e,t)},pickMultiple:function(e,t){e.hasClass("selected no-checkbox")?e.removeClass("no-checkbox"):(t.filter(".no-checkbox").removeClass("selected no-checkbox").attr("aria-selected",!1),this.toggle(e))},pickSingle:function(e){this.check(e)},select:function(e,t,i){e>=(t=t||this.getItems()).length||(this.resetCheckmark(t),this.resetTabIndex(t,t.eq(e)),this.pick(e,t,null,i),this.selectEvents(t))},selectEvents:function(e){this.triggerChange(e)},selectAll:function(e){var t=(e=_.isString(e)?this.getItems(e):e||this.getItems()).slice(0,e.length);t.removeClass("no-checkbox precursor"),t.first().addClass("precursor"),this.check(t),this.focus(0,e),this.triggerChange(e)},selectNone:function(){this.clear(),this.triggerChange()},move:function(e){var t=this.getItems(),i=this.getPosition()+e;i<0?i=0:i>=t.length&&(i=t.length-1),this.select(i,t)},previous:function(){this.move(-1),this.view.trigger("selection:action",this.get())},next:function(){this.move(1),this.view.trigger("selection:action",this.get())},dodge:function(){var t=this.getItems(),e=t.filter(".selected"),i=e.length,o=t.index(e.first()),n=t.index(e.last()),a=t.length-1,r=this.select.bind(this),s=this.getDirection(),l=$.contains(this.view.el,document.activeElement);return t.length===i?this.clear():(n===a&&(s="up"),"up"===s&&0<o?r(o-1,t,l):"down"===s&&n<a?r(n+1,t,l):void t.slice(o).each(function(e){if(!$(this).hasClass("selected"))return r(o+e,t,l),!1}))},onCursor:function(e){var t,i,o,n,a,r,s,l,d=this.view.$el.hasClass("grid-layout"),c=/37|39/.test(e.which);!d&&c||(t=this.getItems(),i=$(document.activeElement),a=(o=t.index(i)||0)%(n=parseInt(this.view.$el.attr("grid-count")||1,10)),r=/38|40|35|36/.test(e.which),s=d&&r?n:1,o+=/37|38|36/.test(e.which)?-s:+s,1<s&&/40|35/.test(e.which)&&o>=t.length&&a>=t.length%n&&(o=t.length-1),!1!==(o=this.outOfBounds(o,t))&&(e.preventDefault(),this.isMultiple(e)&&(o=/38|36/.test(e.which)?0:-1),l=t.eq(o),this.resetTabIndex(t,l),this.resetCheckmark(t),this.pick(o,t,e),this.getPosition(),this.isMultiple(e)||this.isRange(e)?this.triggerChange(t,l.attr("data-cid")):this.selectEvents(t)))},outOfBounds:function(e,t){return!(e<0)&&(e>=t.length?(this.view.$el.scrollTop(16777215),!1):e)},onPageUpDown:function(e){e.preventDefault();var t,i=this.getItems().first().outerHeight();i&&(t=Math.floor(this.view.$el.height()/i),33===e.which?this.move(-t):this.move(t))},onKeydown:function(e){switch(e.which){case 13:case 32:this.triggerAction(e);break;case 65:case 97:e.ctrlKey||e.metaKey||o?(e.preventDefault(),this.selectAll()):65!==e.which||e.shiftKey||e.altKey||this.view.trigger("selection:archive",this.get());break;case 91:o=!0,setTimeout(function(){o=!1}
1,2e3);break;case 8:case 46:if(e.ctrlKey||e.metaKey||e.altKey)return;e.preventDefault(),this.view.trigger("selection:delete",this.get(),e.shiftKey);break;case 35:case 36:case 37:case 38:case 39:case 40:this.onCursor(e);break;case 33:case 34:this.onPageUpDown(e)}},onMousedown:function(){this.view.mousedown=!0},onMouseup:function(){this.view.mousedown=!1},onClick:function(e,t){var i,o,n,a;t=t||{},"tap"===e.type&&(e.preventDefault(),e.stopPropagation()),"mousedown"===e.type&&!this.isMultiple(e)&&$(e.currentTarget).is(".selected")||"click"===e.type&&this.isMultiple(e)||(i=this.getItems(),o=$(e.currentTarget),n=i.index(o)||0,a=this.get(),s&&this.resetSwipe(i)||e.isDefaultPrevented()&&"tap"!==e.type||(this.isMultiple(e)||this.resetCheckmark(i),this.resetTabIndex(i,i.eq(n)),this.pick(n,i,e),t.customEvents||_.isEqual(a,this.get())||this.triggerChange(i,$(e.currentTarget).attr("data-cid"))))},onSwipeDelete:function(e){e.preventDefault();var t=$(this.currentSelection).closest(r),i=t.attr("data-cid"),o=t.nextAll(),n=this,a=function(){this.removeAttr("style"),_(this).each(function(e){var t=$(e).data("velocity");t.transformCache={},$(e).data("velocity",t)}),n.view.off("remove-mobile",a)};0<o.length?o.velocity({translateY:"-84px"},{duration:200,complete:function(){n.view.on("remove-mobile",a,o),n.view.trigger("selection:delete",[i]),n.currentSelection.swipeCell.remove(),n.currentSelection.swipeCell=null,$(n.view).removeClass("unfolded"),n.currentSelection.unfolded=n.unfold=!1}}):(n.view.on("remove-mobile",a,o),n.view.trigger("selection:delete",[i]),n.currentSelection.swipeCell.remove(),n.currentSelection.swipeCell=null,$(n.view).removeClass("unfolded"),n.currentSelection.unfolded=n.unfold=!1)},onSwipeMore:function(e){e.preventDefault();var t=$(this.currentSelection).closest(r).attr("data-cid"),i=this;this.view.trigger("selection:more",[t],$(this.currentSelection.btnMore)),_.delay(function(){i.resetSwipeCell.call(i.currentSelection,i)},250)},isAnyCellUnfolded:function(){return!!this.unfold},resetSwipeCell:function(e,t,i){var o=this;try{e.startX=0,e.startY=0,e.unfold=!1,e.target=null,e.otherUnfolded=!1,i?($(o).removeAttr("style"),$(o).removeClass("unfolded"),o.swipeCell&&o.swipeCell.remove(),o.swipeCell=null):$(o).velocity({translateX:[0,t]},{duration:100,complete:function(){$(o).removeAttr("style"),$(o).removeClass("unfolded"),o.swipeCell&&o.swipeCell.remove(),o.swipeCell=null}})}catch(e){console.warn("something went wrong during reset",e)}},onTouchStart:function(e){var t=e.originalEvent.touches[0],i=t.pageX,o=t.pageY,n=$(this).css("transition","");this.startX=i,this.startY=o,this.distanceX=0,this.unfold=this.remove=this.scrolling=this.isMoving=!1,this.unfolded=n.hasClass("unfolded"),this.otherUnfolded=n.siblings().hasClass("unfolded"),!this.unfolded&&this.otherUnfolded&&e.data.resetSwipeCell.call(e.data.currentSelection,e.data,-190)},onTouchMove:function(e){var t,i=e.originalEvent.touches[0].pageX;1<e.originalEvent.touches.length||(this.distanceX=-1*(this.startX-i),this.scrolling=!1,i>this.startX&&!this.unfolded&&this.distanceX<=20||(e.data.isScrolling?this.scrolling=!0:(this.unfolded&&(this.distanceX+=-190),(20<Math.abs(this.distanceX)||this.isMoving)&&(e.preventDefault(),this.isMoving=!0,e.data.view.isSwiping=!0,this.target||(this.target=$(e.currentTarget)),this.swipeCell||(this.swipeCell=$('<div class="swipe-option-cell">').append(this.btnDelete=$('<div class="swipe-button delete">').append($('<i class="fa fa-trash" aria-hidden="true">')),this.btnMore=$('<div class="swipe-button more">').append(this.faBars=$('<i class="fa fa-bars" aria-hidden="true">'))).css("height",this.target.outerHeight()+"px"),this.target.before(this.swipeCell)),(this.distanceX+20<=0||this.unfolded&&this.distanceX<=0)&&(t=this.unfolded?this.distanceX:this.distanceX+20,this.target.css({"-webkit-transform":"translate3d("+t+"px,0,0)",transform:"translate3d("+t+"px,0,0)"})),250<=Math.abs(this.distanceX)&&!this.expandDelete?(this.expandDelete=!0,this.btnDelete.css("width","100%"),this.btnMore.css("width",0),this.faBars.css("opacity",0)):this.expandDelete&&Math.abs(this.distanceX)<=250&&(this.expandDelete=!1,this.btnDelete.css("width","95px"),this.faBars.css("opacity",1),this.btnMore.removeAttr("style"))))))},onTouchEnd:function(e){if(!this.scrolling)if(this.remove=this.unfold=e.data.view.isSwiping=!1,this.isMoving=!1,0<this.distanceX&&!this.unfolded)e.data.resetSwipeCell.call(this,e.data,0,!0);else{if(this.unfolded&&this.distanceX<=10)return e.data.resetSwipeCell.call(e.data.currentSelection,e.data,0===this.distanceX?-190:this.distanceX),!1;if(this.otherUnfolded&&Math.abs(this.distanceX)<=10)return!1;if(40<=Math.abs(this.distanceX)&&(this.unfold=!0),this.expandDelete&&(this.remove=!0,this.unfold=!1),a=$(this),this.unfold)this.expandDelete=!1,a.velocity({translateX:[-190,this.distanceX]},{duration:100,complete:function(){a.addClass("unfolded")}}),e.data.unfold=!0,e.data.currentSelection=this;else if(this.remove){var i=this,o=e.data.view,n=function(){this.removeAttr("style"),_(this).each(function(e){var t=$(e).data("velocity");t&&(t.transformCache={})}),o.off("remove-mobile",n)};$(this).velocity({translateX:["-100%",this.distanceX]},{duration:50,complete:function(){i.btnMore.remove(),i.startX=i.startY=0,a.data("velocity").transformCache={};var e,t=$(i).nextAll();0<t.length?t.velocity({translateY:"-84px"}
1,{duration:200,complete:function(){var e=$(i).closest(r).attr("data-cid");o.on("remove-mobile",n,t),o.trigger("selection:delete",[e]),i.swipeCell.remove(),i.swipeCell=null,$(i).removeClass("unfolded"),i.unfolded=i.unfold=!1}}):(e=$(i).closest(r).attr("data-cid"),o.on("remove-mobile",n,t),o.trigger("selection:delete",[e]),i.swipeCell.remove(),i.swipeCell=null,$(i).removeClass("unfolded"),i.unfolded=i.unfold=!1)}})}else if(this.distanceX)return e.data.resetSwipeCell.call(this,e.data,Math.abs(this.distanceX)),!1;ox.off("delete:canceled").on("delete:canceled",function(){a.removeAttr("style"),a.nextAll().velocity({translateY:NaN})})}},onSwipeLeft:function(e){var t=$(e.currentTarget);t.hasClass("swipe-left")||(this.resetSwipe(this.getItems()),this.renderInplaceRemove(t),t.addClass("swipe-left"))},onSwipeRight:function(e){this.resetSwipe($(e.currentTarget))},inplaceRemoveScaffold:$('<div class="swipe-left-content"><i class="fa fa-trash-o" aria-hidden="true"></i></div>'),renderInplaceRemove:function(e){e.append(this.inplaceRemoveScaffold.clone())},onTapRemove:function(e){e.preventDefault(),e.stopImmediatePropagation();var t=$(e.currentTarget).closest(r).attr("data-cid");this.view.trigger("selection:delete",[t])},onFocus:function(){var e=this.getItems(),t=e.filter('[tabindex="0"]:first'),i=(i=e.index(t))<0?0:i;this.focus(i,e)},getBehavior:function(){return this.behavior}},d={registerEvents:function(){this.view.$el.on("mousedown",$.proxy(this.onMousedown,this)).on("mouseup",$.proxy(this.onMouseup,this)).on("keydown",r,$.proxy(this.onKeydown,this)).on("mousedown click",r,$.proxy(this.onClick,this)).on("focus",$.proxy(function(){this.view.mousedown||this.onFocus()},this)).on("click",r,$.proxy(function(e){this.isMultiple(e)||this.triggerAction(e)},this)).on("dblclick",r,$.proxy(function(e){e.ctrlKey||e.metaKey||this.triggerDouble(e)},this)).on("contextmenu",function(e){e.preventDefault()}),this.view.options.swipe&&(s&&_.device("android || ios")&&!t?this.view.$el.on("touchstart",r,this,this.onTouchStart).on("touchmove",r,this,this.onTouchMove).on("touchend",r,this,this.onTouchEnd).on("tap",".swipe-button.delete",$.proxy(function(e){this.onSwipeDelete(e)},this)).on("tap",".swipe-button.more",$.proxy(function(e){this.onSwipeMore(e)},this)):s&&this.view.$el.on("swipeleft",r,$.proxy(this.onSwipeLeft,this)).on("swiperight",r,$.proxy(this.onSwipeRight,this)).on("tap",".swipe-left-content",$.proxy(this.onTapRemove,this)))}},c={pickSingle:function(e){e.addClass("selected no-checkbox").attr("aria-selected",!0),this.view.trigger("selection:subset")},onKeydown:function(e){var t;32===e.which?(e.preventDefault(),1===(t=this.getItems().filter(".selected")).length?t.find(".list-item-checkmark").trigger("mousedown"):0===t.length&&(t=$(this.getItems()[this.getItems().index($(document.activeElement))])).find(".list-item-checkmark").trigger("mousedown")):l.onKeydown.call(this,e)},outOfBounds:function(e,t){return e<0?0:(e>=t.length&&(e=t.length-1,this.view.$el.scrollTop(16777215)),e)},onClick:function(e){var t=this.get(),i=$(e.currentTarget),o="mousedown"===e.type&&!this.isMultiple(e)&&!i.is(".selected");l.onClick.call(this,e,{customEvents:o}),o&&this.selectEvents(),_.isEqual(t,this.get())&&"mousedown"===e.type&&this.isMultiple(e)&&this.triggerChange(this.getItems(),i.attr("data-cid"))},selectEvents:function(e){var t,i;e=e||this.getItems(),"list"===(this.view.app&&this.view.app.props.get("layout")||"list")?this.triggerChange(e):(t=this.get(),i="selection:change selection:action",e&&0<e.length&&e.length===t.length&&(1!==e.length||!$(e[0]).hasClass("no-checkbox"))?i+=" selection:all":i+=" selection:subset",1<t.length&&(i+=" selection:multiple"),this.view.trigger(i,t))}},u={registerEvents:function(){this.view.$el.addClass("focus-indicator"),this.view.$el.on("click",r,$.proxy(this.onClick,this)).on("keydown",r,$.proxy(this.onKeydown,this)).on("focus",$.proxy(this.onFocus,this)).on("mousedown",$.proxy(this.onMousedown,this)).on("mouseup",$.proxy(this.onMouseup,this)),this.view.on("selection:empty",$.proxy(this.onSelectionEmpty,this))},isMultiple:function(){return!0},isRange:function(){return!1},onSelectionEmpty:function(){0<this.getItems().parent().find("li:focus").length||(this._lastposition=-1)},onFocus:function(){var e,t,i;this.view.mousedown||(t=(e=this.getItems()).filter('[tabindex="0"]:first'),i=e.index(t),this.focus(-1<i?i:0,e))},onClick:function(e){var t=this.getItems(),i=$(e.currentTarget),o=t.index(i);this.resetTabIndex(t,t.eq(o)),this.pick(o,t,e),this.triggerChange(t,i.attr("data-cid")),this.setPosition(e)},onKeydown:function(e){switch(e.which){case 13:case 32:this.onSpace(e);break;case 38:case 40:this.onCursor(e);break;case 65:case 97:(e.ctrlKey||e.metaKey)&&(e.preventDefault(),this.selectAll());break;case 68:case 100:(e.ctrlKey||e.metaKey)&&(e.preventDefault(),this.selectNone(),this.focus(0))}},onSpace:function(e){this.onClick(e),e.preventDefault()},setPosition:function(e,t){this._lastposition=_.isUndefined(t)?this.getItems().index($(e.target).closest("li"))||0:t},getPosition:function(e,t){return-1<this._lastposition?this._lastposition:t},onCursor:function(e){var t=this.getItems(),i=$(document.activeElement),o=t.index(i)||0,n=40===e.which;if(e.preventDefault(),/^(40|38)$/.test(e.which)){if(o+=n?1:-1,o=this.outOfBounds(o,t),this.isRange(e))return this.setPosition(e),this.pickRange(o,t);this.triggerChange(t,i.attr("data-cid")),this.setPosition(e,o),this.focus(o,t)}}};return _.extend(n.prototype,l),n}),define("io.ox/mail/detail/content",["io.ox/mail/api","io.ox/mail/util","io.ox/core/util","io.ox/core/extensions","io.ox/core/capabilities","io.ox/mail/detail/links","io.ox/mail/sanitizer","settings!io.ox/mail","gettext!io.ox/mail"],function(r,t,e,s,i,l,d,c,a){var u=/^text\/
1html$/i,o={empty:function(e){""===e.source&&(e.stopPropagation(),e.source=e.isHTML?'<div class="no-content">'+a("This mail has no content")+"</div>":a("This mail has no content"))},images:function(e){e.source=t.replaceImagePrefix(e.source)},plainTextLinks:function(e){e.isLarge||(e.source=e.source.replace(/(<a href="https?:\/\/[^"]+" target="_blank">https?:\/\/[^<]+<\/a>) &lt;<a href="https?:\/\/[^"]+" target="_blank">https?:\/\/[^<]+<\/a>&gt;/g,"$1"))},removeWBR:function(e){e.isLarge||(e.source=e.source.replace(/<wbr>/g,""))},linkTarget:function(e){e.source=e.source.replace(/<a[^>]*href=(?:"|')((?!https?:\/\/)[^'">]+)(?:"|')[^>]*>/g,p).replace(/<a[^>]*href\s*=\s*(?:"|')(https?:\/\/[^>]+)(?:"|')[^>]*>/g,n)},whitespace:function(e){e.isLarge||(e.source=e.source.replace(/^(<div[^>]+>)(\s|&nbsp;|\0x20|<br\/?>|<p[^>]*>(\s|<br\/?>|&nbsp;|&#160;|\0x20)*<\/p>|<div[^>]*>(\s|<br\/?>|&nbsp;|&#160;|\0x20)*<\/div>)+/g,"$1").replace(/\s*<\/html>\s*$/g,"").replace(/(\s|&nbsp;|\0x20|<br\/?>|<p[^>]*>(\s|<br\/?>|&nbsp;|&#160;|\0x20)*<\/p>|<div[^>]*>(\s|<br\/?>|&nbsp;|&#160;|\0x20)*<\/div>)+<\/div>$/g,""))},linkDisable:function(e){return e.replace(/(<a[^>]*)>/g,'$1 disabled="disabled" aria-disabled="true">')},linkRemoveRef:function(e){return e.replace(/(<a[^>]+?href[\s]*=[\s]*["']).*?(["'][^>]*)>/g,"$1#$2>")},linkRemoveStyle:function(e){return e.replace(/(<a[^>]+?style[\s]*=[\s]*["'])(.*?)(["'][^>]*>)/g,function(e,t,i,o){return t+i.replace(/(^|;|\s)color:[^;]+?($|;)/g,"").replace(/text-decoration:[^;]+?($|;)/g,"")+o})},tableHeight:function(e){(_.browser.safari||e.isHTML)&&(e.source=e.source.replace(/(<table[^>]+?style[\s]*=[\s]*["'])(.*?)(["'][^>]*>)/g,function(e,t,i,o){return t+i.replace(/[^-]height:\s100%\s!important/,"height: auto")+o}))},anchorLinks:function(e){e.isHTML&&this.addEventListener("click",function(e){var t,i;$(e.target).is('a[href^="#"]')&&(e.preventDefault(),t=$.escape($(e.target).attr("href").substr(1)),(i=$(this).find("#"+t+', [name="'+$.escape(t)+'"]')).length&&i[0].scrollIntoView())},!1)},disableLinks:function(e){(t.isMalicious(e.data)||t.authenticity("block",e.data))&&(t.isWhiteListed(e.data)||$(this).addClass("disable-links").on("click",function(){return!1}))},pseudoBlockquotes:function(e){e.isHTML&&h(this,'div[style*="none none none solid"][style*="1.5pt"]',function(e){$(e).replaceWith($('<blockquote type="cite">').append($(e).contents()))})},nested:function(n){var a;!n.isHTML||!("folder_id"in(a=n.data))&&"filename"in a&&h(this,'img[src^="cid:"]',function(e){var t,i="<"+String(e.getAttribute("src")||"").substr(4)+">",o=_.chain(n.data.attachments).filter(function(e){return e.cid===i}).first().value();o&&(t=r.getUrl(_.extend(o,{mail:a.parent}),"view"),e.setAttribute("src",t))})},fixedWidth:function(e){e.isText&&c.get("useFixedWidthFont",!1)&&$(this).addClass("fixed-width-font")},colorQuotes:function(){c.get("isColorQuoted",!0)&&$(this).addClass("colorQuoted")},cleanBlockquotes:function(){h(this,"blockquote",function(e){var t=/border:\s*(none|0)/i.test(e.getAttribute("style"));e.removeAttribute("style"),e.removeAttribute("type"),t&&(e.style.border="0")})},checkLinks:function(e){var a=e.data.headers["X-Open-Xchange-Share-URL"];h(this,"a",function(e){var t,i,o=$(e),n=o.attr("href")||"";if(l.isInternalDeepLink(n))return t=l.parseDeepLink(n),/^(\d+)\.\1\/\d+$/.test(t.id)&&
1(t.id=t.id.replace(/^\d+\./,"")),/^\d+\./.test(t.id)&&(t.id=t.id.replace(/\./,"/")),o.addClass(t.className).data(t),void(a&&o.attr("href")===a&&(ox.ui.apps.get("io.ox/"+t.app)||ox.ui.apps.get(t.app))&&o.addClass("deep-link-app"));o.removeClass("deep-link-files","deep-link-contacts","deep-link-calendar","deep-link-tasks","deep-link-gdpr","deep-link-app"),-1<n.search(/^\s*mailto:/i)?(o.addClass("mailto-link").attr("target","_blank"),-1<(i=o.text()).search(/^mailto:/)&&(i=(i=i.substring(7)).split(/\?/,2)[0],o.text(i))):o.attr("href")?(o.attr({rel:"noopener",target:"_blank"}),o.attr("href",o.attr("href").replace(/"/g,"%22"))):n||o.removeAttr("href")})},autoCollapse:function(e){!1!==e.options.autoCollapseBlockquotes&&!0===c.get("features/autoCollapseBlockquotes",!0)&&(h(this,"blockquote",function(e){var t,i,o,n;(function(e,t){for(;e;)if((e=e.parentNode)&&e.matches&&e.matches(t))return!0;return!1})(e,"blockquote")||f(e).length<500||(t=_.uniqueId("collapsed-blockquote-"),i=$('<button type="button" class="bqt">').attr("title",a("Show quoted text")).append($('<span aria-hidden="true">').text("...")),_.browser.Chrome||i.attr({"aria-controls":t,"aria-expanded":!1}),o=[i],500<(n=f(e,!0).replace(/<\s/g,"<").replace(/\s>/g,">").replace(/("'\s?|\s?'")/g,"").replace(/[-_]{3,}/g,"")).length?o.push($.txt(n.substr(0,210).replace(/\s\S{1,10}$/," ")+"…"),$("<br>"),$.txt("…"+n.substr(-210).replace(/^\S{1,10}\s/," "))):o.push($.txt(n)),$(e).addClass("collapsed-blockquote").hide().attr("id",t).after($('<div class="blockquote-toggle">').append(o)))}),$(this).on("click keydown",".blockquote-toggle",g))}
1,checkSimple:function(){var e=$(this);0===e.find("table").length&&e.addClass("simple-mail")},formSubmit:function(){$(this).on("submit","form",function(e){e.preventDefault();var t=_.uniqueId("blank");blankshield.open("javascript:0",t),this.target=t,setTimeout(this.submit.bind(this))})}};function n(e){return/target="[^"]*"/.test(e)?e.replace(/(target="[^"]*")/i,'target="_blank"'):e.replace(">",' target="_blank" rel="noopener">')}function p(e,t){return/^[^:.#]+:/.test(t)||/^#/.test(t)?e:e.replace(t,"http://"+t)}function h(e,t,i){_(e.querySelectorAll(t)).each(i)}function f(e,t){var i=3===e.nodeType&&String(e.nodeValue).trim()||"",o=i?i+" ":"";return _(e.childNodes).each(function(e){"STYLE"!==e.tagName&&(t&&"BLOCKQUOTE"===e.tagName||(o+=f(e,t)))}),o}function g(e){13!==e.which&&23!==e.which&&"click"!==e.type||(e.preventDefault(),e.stopPropagation(),$(this).hide().prev().show(),_.delay(function(){$(e.delegateTarget).trigger("resize").trigger("toggle-blockquote")},20),$(this).remove())}s.point("io.ox/mail/detail/source").extend({id:"empty",index:100,process:o.empty}),s.point("io.ox/mail/detail/source").extend({id:"images",index:200,process:o.images}),s.point("io.ox/mail/detail/source").extend({id:"plain-text-links",index:300,process:o.plainTextLinks}),s.point("io.ox/mail/detail/source").extend({id:"remove-wbr",index:400,process:o.removeWBR}),s.point("io.ox/mail/detail/source").extend({id:"link-target",index:500,process:o.linkTarget}),s.point("io.ox/mail/detail/source").extend({id:"table-height",index:550,process:o.tableHeight}),s.point("io.ox/mail/detail/source").extend({id:"white-space",index:600,process:o.whitespace}),s.point("io.ox/mail/detail/source").extend({id:"disable-links",index:700,enabled:c.get("maliciousCheck"),process:function(e){(t.isMalicious(e.data)||t.authenticity("block",e.data))&&(t.isWhiteListed(e.data)||(e.source=e.source.replace(/.*/g,o.linkDisable).replace(/.*/g,o.linkRemoveRef).replace(/.*/g,o.linkRemoveStyle)))}}),s.point("io.ox/mail/detail/content-general").extend({id:"anchor-links",index:100,process:o.anchorLinks}),s.point("io.ox/mail/detail/content-general").extend({id:"disable-links",index:200,process:o.disableLinks}),s.point("io.ox/mail/detail/content").extend({id:"pseudo-blockquotes",index:100,process:o.pseudoBlockquotes}),s.point("io.ox/mail/detail/content").extend({id:"nested",index:500,process:o.nested}),s.point("io.ox/mail/detail/content").extend({id:"fixed-width",index:600,process:o.fixedWidth}),s.point("io.ox/mail/detail/content").extend({id:"color-quotes",index:700,process:o.colorQuotes}),s.point("io.ox/mail/detail/content").extend({id:"clean-blockquotes",index:800,process:o.cleanBlockquotes}),s.point("io.ox/mail/detail/content").extend({id:"check-links",index:900,process:o.checkLinks}),s.point("io.ox/mail/detail/content").extend({id:"auto-collapse",index:1e3,process:o.autoCollapse}),s.point("io.ox/mail/detail/content").extend({id:"check-simple",index:1100,process:o.checkSimple}),s.point("io.ox/mail/detail/content").extend({id:"form-submit",index:1200,process:o.formSubmit}),s.point("io.ox/mail/detail/content").extend({id:"image-load",index:1200,process:function(){var e=this;$(e).find('img[src!=""]').each(function(){$(this).on("load error",function(){$(e).trigger("imageload")})})}}),s.point("io.ox/mail/detail/beautify").extend({id:"no-ampersand",process:function(e){e.data=e.data.replace(/&/g,"&amp;")}},{id:"trim",process:function(e){e.data=e.data.trim()}},{id:"carriage-return",process:function(e){e.data=e.data.replace(/\r/g,"")}},{id:"multiple-empty-lines",process:function(e){c.get("transform/multipleEmptyLines",!0)&&(e.data=e.data.replace(/\n{4,}/g,"\n\n\n"))}},{id:"text-to-html",process:function(e){e.data=this.text2html(e.data,{blockquotes:!0,images:!0,links:!0})}},{id:"br",process:function(e){e.data=e.data.replace(/^\s*(<br\s*\/?>\s*)+/g,"")}},{id:"white-space",process:function(e){e.data=e.data.replace(/((>) |( ) )/g,"$1&nbsp;")}});var m,v,x,b,w,y,k,C={extensions:o,get:function(t,e,i){if(!t||!t.attachments)return{content:$(),isLarge:!1,type:"text/plain"};var o,n=new s.Baton(_({data:t,options:e||{},source:"",type:"text/plain",flow:i}).omit(function(e){return void 0===e})),a=/^text\/(plain|html)$/i,r=/^image\//i;try{_(t.attachments).find(function(e){return!("attachment"===e.disp||"none"===e.disp||!a.test(e.content_type))&&(n.type=e.content_type.toLowerCase(),!0)}
1),_(t.attachments).each(function(e){"inline"===e.disp&&(e.content_type===n.type?n.source+=e.content:"text/plain"===n.type&&r.test(e.content_type)&&c.get("allowHtmlMessages",!0)&&(n.source+="\n!(api/image/mail/picture?"+$.param({folder:t.folder_id,id:t.id,uid:e.filename,scaleType:"contain",width:1024})+")\n"))}),n.source=n.source.trim(),n.isHTML=u.test(n.type),n.isText=!n.isHTML,n.isLarge=n.source.length>1024*(_.device("chrome >= 30")?64:32),s.point("io.ox/mail/detail/source").invoke("process",$(),n),n.isHTML?(n.source=d.sanitize({content_type:"text/html",content:n.source}).content,(o=document.createElement("HTML")).innerHTML=n.source,(o=o.getElementsByTagName("body")[0]).className=o.className+" mail-detail-content noI18n",h(o,"script, base, meta",function(e){e.parentNode.removeChild(e)})):((o=document.createElement("DIV")).className="mail-detail-content plain-text noI18n",n.source=C.beautifyPlainText(n.source),o.innerHTML=n.source),o.setAttribute("role","complementary"),o.setAttribute("aria-label",t.subject),s.point("io.ox/mail/detail/content-general").invoke("process",o,n),n.isLarge||s.point("io.ox/mail/detail/content").invoke("process",o,n)}catch(e){console.error("mail.getContent",e.message,e,t)}return{content:o,isLarge:n.isLarge,type:n.type,isText:n.isText}},beautifyPlainText:function(e){var t=s.Baton({data:e});return s.point("io.ox/mail/detail/beautify").invoke("process",this,t),d.simpleSanitize(t.data)},transformForHTMLEditor:function(e){return this.text2html(e,{blockquotes:!0,links:!0})},text2html:(m=/^>+( [^\n]*|)(\n>+( [^\n]*|))*\n?/,v=/^\n+/,x=/^[^\n]*(\n(?![ ]*(> ))[^\n]*)*\n?/,b=/(https?:\/\/.*?)([!?.,>()[\]]+\s|\s|[!?.,>()[\]]+$|$)/gi,w=/([^@"\s<,:;|()[\]\u0100-\uFFFF]+?@[^@\s]*?(\.[\w-]+)+)/g,y=/^!\([^)]+\)$/gm,k={blockquotes:!0,images:!0,links:!0},function e(t,i){var o,n="";for(i=i||k;t;)if(i.blockquotes&&(o=S(m,t)))t=t.substr(o.length),n+='<blockquote type="cite">'+(o=e(o=o.replace(/^(>(>)|> |>$)/gm,"$2"),i).replace(/(<br>)?(<\/?blockquote[^>]*>)(<br>)?/g,"$2").replace(/<br>$/,""))+"</blockquote>";else if(o=S(v,t))t=t.substr(o.length),n+=o.replace(/\n/g,"<div><br></div>");else if(o=S(x,t))t=t.substr(o.length),o=o.replace(/</g,"\r&lt;"),i.images&&(o=o.replace(y,T)),i.links&&/(http|@)/i.test(o)&&(o=o.replace(b,function(e,t,i){return'<a href="'+(t=t.replace(/@/g,"&#64;"))+'" rel="noopener" target="_blank">'+t+"</a>"+i}).replace(w,function(e,t){return'<a href="mailto:'+t+'">'+t+"</a>"})),n+="<div>"+o.replace(/\r/g,"").replace(/\n+/g,function(e){return"</div>"+new Array(e.length).join("<div><br></div>")+"<div>"})+"</div>";else if(t){ox.debug&&console.error("Ooops",n+"\n\n"+t);break}return n=n.replace(/<div><\/div>/g,"")})};function S(e,t){var i=e.exec(t);return i&&i[0]}function T(e){return'<img src="'+e.substr(2,e.length-3)+'" alt="">'}return C}),define("io.ox/mail/detail/links",["io.ox/mail/api","io.ox/core/util","io.ox/core/extensions","settings!io.ox/mail","gettext!io.ox/mail"],function(e,s,t,i,n){function a(e){var t=e.match(/^https?:\/\/([^\/#]+)/i);return null!==t&&0!==t.length&&("test"===t[1]||-1<_(ox.serverConfig.hosts).indexOf(t[1]))}var o,r,l,d,c,u,p,h,f,g,m,v,x=/^(io.ox\/office\/|io.ox\/(contacts|calendar|tasks)\/detail$)/;c="all prefix link app params param name suffix".split(" "),u="all prefix link suffix".split(" "),p={"io.ox/contacts":"contacts","io.ox/calendar":"calendar","io.ox/tasks":"tasks","io.ox/infostore":"files","io.ox/files":"files",infostore:"files"},h={contacts:n("Contact"),calendar:n("Appointment"),tasks:n("Task"),files:n("File"),infostore:n("File"),"io.ox/office/text":n("Document"),"io.ox/office/spreadsheet":n("Spreadsheet")},f={contacts:n("Address Book"),calendar:n("Calendar"),tasks:n("Tasks"),files:n("Folder"),"io.ox/settings":n("Download")},g=/^([\s\S]*)(http[^#]+#!{0,2}&?app=([^&]+)((&(folder|id|item|perspective)=[^&\s]+)+))([\s\S]*)$/i,m=/^([\s\S]*)(http[^#]+#m=(contacts|calendar|tasks|infostore)((&(f|i)=[^&\s]+)+))([\s\S]*)$/i,v=/^([\s\S]*)(https?:\/\/.*?)([!?.,>()]\s[\s\S]*|\s[\s\S]*|[!?.,>()]$|$)/i,o=function(e){return g.test(e)||m.test(e)},r=function(e){return o(e)&&a(e)},l=function(e){var t=String(e).match(g.test(e)?g:m),i=_.object(c,t),o=_.deserialize(i.params,"&");i.app=p[i.app]||i.app,/^(files|infostore)$/.test(i.app)?i.className="deep-link-files":/^(contacts|calendar|tasks)$/.test(i.app)?i.className="deep-link-"+i.app:/^io.ox\/settings$/.test(i.app)&&"virtual/settings/personaldata"===o.folder?i.className="deep-link-gdpr":x.test(i.app)&&(i.className="deep-link-app");var n=String(e).match(v),a=_.object(u,n),r=o.folder&&o.id&&_.cid({folder:o.folder,id:o.id});return $.extend(i,{folder:o.f,id:o.i},{cid:r,folder:o.folder,id:o.id||o.item,perspective:o.perspective},a)};var b=/^([\s\S]*?)(((http|https|ftp|ftps)\:\/\/|www\.)\S+)([\s\S]*)$/i,w=/^([\s\S]*?)(((http|https|ftp|ftps)\:\/\/|www\.)\S+)([\s\S]*)$/i;var y=/^([\s\S]*?)([^"\s<,:;\(\)\[\]\u0100-\uFFFF]+@([a-z0-9äöüß\-]+\.)+[a-z]{2,})([\s\S]*)$/i,k=/^([\s\S]*?)([^"\s<,:;\(\)\[\]\u0100-\uFFFF]+@([a-z0-9äöüß\-]+\.)+[a-z]{2,})([\s\S]*)$/i;var C=/^([\s\S]*?)(?:&quot;([^&]+)&quot;|"([^"]+)"|'([^']+)')(?:\s|<br>)+(?:<|&#60;)([^@]+@[^&].*?)(?:>|&#62;)([\s\S]*)$/;var S={deeplink:{test:function(e){return-1!==e.nodeValue.indexOf("http")&&o(e.nodeValue)},process:d=function(e){var t=l(e.nodeValue),i=("id"in t?h[t.app]:f[t.app])||n("Link"),o=$('<a href="#" target="_blank" class="deep-link" role="button">').attr("href",t.link).text(i);return t.className?(a(t.link)&&o.addClass(t.className).data(t),$(e).parent().attr("href")===t.link&&(e=$(e).parent().get(0)),{node:e,prefix:t.prefix,replacement:o,suffix:t.suffix}):null}},"mail-address-complex":{test:function(e){return-1!==e.nodeValue.indexOf("@")&&(C.test(e.nodeValue)&&0===$(e).closest("a").length)},process:function(e){var t=e.nodeValue.match(C);if(null===t||0===t.length)return e;var i=t[1],o=t[2]||t[3]||t[4],n=t[5],a=t[6];return{node:e,prefix:i,replacement:$('<a href="#" class="mailto-link" target="_blank">').attr("href","mailto:"+n).data({address:n,name:o}).text(o),suffix:a}}},"mail-address":{test:function(e){return-1!==e.nodeValue.indexOf("@")&&(y.test(e.nodeValue)&&0===$(e).closest("a").length)},process:function(e){var t=e.nodeValue.match(k);if(null===t||0===t.length)return e;var i=t[1],o=t[2],n=t[4];return!/(http:|https:)$/i.test(i)&&!/^www\./i.test(o)&&{node:e,prefix:i,replacement:$('<a href="#" class="mailto-link" target="_blank">').attr("href","mailto:"+o).data({address:o}).text(o),suffix:n}}},url:{test:function(e){return!!/(http|www\.)/.test(e.nodeValue)&&(b.test(e.nodeValue)&&0===$(e).closest("a").length)},process:function(e){var t=e.nodeValue.match(w);if(null===t||0===t.length)return e;var i=t[1],o=t[2],n=t[5],a=s.fixUrlSuffix(o,n),r=a.url;return/^http/i.test(r)||(r="http://"+r),{node:e,prefix:i,replacement:$('<a href="#" target="_blank" rel="noopener">').attr("href",r).text(a.url),suffix:a.suffix}}},"long-character-sequences":{test:function(e){var t=e.nodeValue;return 30<=t.length&&/[\S\u00A0]{30}/.test(t)&&0===$(e).closest("a").length},process:function(e){return{node:e,replacement:$.parseHTML(s.breakableHTML(e.nodeValue))}}}};
1function T(e){if(_.isString(e)&&(e=$.txt(e)),3===e.nodeType){var t,i,o,n,a;for(t in S)if((i=S[t]).test(e)&&(o=i.process(e)))return n=o,a=void 0,a=$(),n.prefix&&(a=a.add(T(n.prefix))),a=a.add(n.replacement),n.suffix&&(a=a.add(T(n.suffix))),$(n.node).replaceWith(a),a;return e}}return i.get("features/recognizeDates",!1)&&function(){var a={},r={},o=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],n=["sonntag","montag","dienstag","mittwoch","donnerstag","freitag","samstag"],t=moment().year(),i={names:"(((this|next|last|diesen|nächsten|letzten)\\s)?("+o.join("|")+"|"+n.join("|")+"))",relative:"(yesterday|today|tomorrow|day\\safter\\stomorrow|gestern|heute|morgen|übermorgen)",date:"(\\d{1,2}\\.\\d{1,2}\\.\\d{2,4}|\\d{1,2}\\.\\d{1,2}\\.|(cw|kw|week)\\s?\\d{1,2})",time:"(\\d{1,2}\\:\\d\\d)(\\s?(h|a|am|p|pm))?",range:"((from|von)s)?(\\d{1,2}\\:\\d\\d)s?(-|to|bis)s?(\\d{1,2}\\:\\d\\d)"};i.day="("+i.names+"|"+i.relative+"|"+i.date+")",["day","name","date","time"].forEach(function(e){a[e]=new RegExp(i[e],"i"),r[e]=new RegExp(i[e],"ig")});var e=moment().hour(12).minute(0),s=" 12:00",l="DD.MM.YYYY HH:mm",d="MM/DD/YYYY HH:mm",c=[[/\d{1,2}\.\d{1,2}\.\d{2,4}/,function(e){return moment(e+s,l)}],[/\d{1,2}\.\d{1,2}\./,function(e){return moment(e+t+s,l)}],[/\d{1,2}\/\d{1,2}\/\d{2,4}/,function(e){return moment(e+s,d)}],[/\d{1,2}\/\d{1,2}/,function(e){return moment(e+t+s,d)}],[/(cw|kw|week)\s?(\d{1,2})/i,function(e,t){return f().week(t[2])}]],u=[[/(\d{1,2}):(\d\d)h?/,function(e,t){return moment(0).hour(t[1]).minute(t[2])}],[/(\d{1,2}):(\d\d)\s?(am|pm|a|p)/,function(e,t){return moment(0).hour(t[1]).minute(t[2]).add("p"===f[3][0]?12:0,"h")}]],p={yesterday:function(){return f().subtract(1,"d")},today:f,tomorrow:function(){return f().add(1,"d")},"day after tomorrow":function(){return f().add(2,"d")}},h={gestern:"yesterday",heute:"today",morgen:"tomorrow","übermorgen":"day after tomorrow"};function f(){return moment(e)}function g(e,t){var i,o=function(e){for(var t in c){var i=c[t][0].exec(e);if(i)return c[t][1](e,i)}e=e.toLowerCase(),h[e]&&(e=h[e]);return p[e]?p[e]():(console.error('Unsupported date "'+e+'"'),moment())}(null===e?t:e);return o.isValid()?(null!==e&&(i=function(e){for(var t in u){var i=u[t][0].exec(e);if(i)return u[t][1](e,i)}return 0}(t))&&i.isValid()&&o.hour(i.hour()).minute(i.minute()),'<a href="#" class="calendar-link" data-start-time="'+o+'" role="button">'+t+"</a>"):t}_.range(0,7).forEach(function(e){var t=o[e],i=n[e];p["this "+t]=function(){return f().day(e)},p["last "+t]=function(){return f().day(e-7)},p["next "+t]=p[t]=function(){return f().day(e+7)},h["diesen "+i]="this "+t,h["letzten "+i]="last "+t,h["nächsten "+i]=h[i]="next "+t}),$(document).on("click",".calendar-link",function(e){e.preventDefault();var t=$(this).data("startTime"),i=$(this).data("endTime")||t+36e5;ox.load(["io.ox/calendar/edit/main"]).done(function(e){e.getApp().launch().done(function(){this.create({start_date:t,end_date:i})})})}),S.dates={test:function(e){var t=e.nodeValue;return(a.day.test(t)||a.time.test(t))&&(!e.parentNode||"A"!==e.parentNode.tagName)},process:function(e){var o,t,i=(t=e.nodeValue,_.escape(t).replace(/(\w\w[.?!]\s|$)/g,"$1�").replace(/\x1D$/,"").split(/\x1D/)),n=_(i).reduce(function(e,t){var i;return i=t.match(a.day),o=(i?i[0]:null)||o||"today",e+t.replace(r.day,g.bind(null,null)).replace(r.range,g.bind(null,o)).replace(r.time,g.bind(null,o))},"");return{node:e,replacement:$.parseHTML(n)}}}}(),t.point("io.ox/mail/detail/content").extend({id:"links",index:100,process:function(e){e.isLarge||($(this).contents().each(function(){T(this)}),$(this).find("*:not(style)").contents().each(function(){T(this)}))}}),{handlers:S,isValidHost:a,isDeepLink:o,isInternalDeepLink:r,parseDeepLink:l,processDeepLink:d,processTextNode:T}}),define("io.ox/core/download",["io.ox/files/api","io.ox/mail/api","io.ox/core/capabilities","io.ox/backbone/views/modal","gettext!io.ox/core","io.ox/core/extensions"],function(n,t,a,e,o,i){window.callback_antivirus=u;var r=_(["0008","0009","0011"]).map(function(e){return"ANTI-VIRUS-SERVICE-"+e});function s(e){return{id:e.id,folder_id:e.folder||e.folder_id}}function l(e){return JSON.stringify(_.map(e,function(e){return e.managedId?e.managedId:e.id}))}function d(e){e+=(-1===e.indexOf("?")?"?":"&")+"callback=antivirus",a.has("antivirus")&&(e+="&scan=true"),$("#tmp").append($("<iframe>",{src:e,class:"hidden download-frame"}))}function c(e){e=e||{},a.has("antivirus")&&(e.url+="&scan=true");var t=_.uniqueId("iframe"),i=$("<iframe>",{src:"blank.html",name:t,class:"hidden download-frame"}),o=$("<form>",{iframeName:t,action:e.url,method:"post",target:t}).append($('<input type="hidden" name="body" value="">').val(e.body));_.device("ios")||$("#tmp").append(i),$("#tmp").append(o),o.submit()}function u(i){i&&(0===i.code.indexOf("ANTI-VIRUS-SERVICE")?(_($("#tmp iframe.hidden.download-frame")).each(function(e){-1!==e.contentDocument.head.innerHTML.indexOf(i.error_id)&&(i.dlFrame=e)}),new e({title:i.code.match(/0011/)?o("Malicious file detected"):o("Anti-Virus warning"),point:"io.ox/core/download/antiviruspopup",model:new Backbone.Model(i)}).on("ignore",function(){if(i.url){var t=blankshield.open("blank.html","_blank");return t.callback_antivirus=function(e){u(e),t.close()},void(t.location=i.url.replace("&scan=true",""))}
1if(-1!==i.dlFrame.src.indexOf("blank.html")){var e=$('#tmp form[iframeName="'+i.dlFrame.name+'"]');if(!e.length)return;return e[0].action=e[0].action.replace("&scan=true",""),void e.submit()}_.device("safari")||(i.dlFrame.src=i.dlFrame.src.replace("&scan=true",""))}).on("cancel",function(){i.dlFrame&&$(i.dlFrame).remove()}).open()):require(["io.ox/core/yell"],function(e){e(i)}))}return i.point("io.ox/core/download/antiviruspopup").extend({index:100,id:"buttonThreatFound",render:function(e){var t;"ANTI-VIRUS-SERVICE-0011"===e.model.get("code")&&(t={action:"ignore",label:o("Download infected file"),className:"btn-default"},_.device("!ios && safari")?this.addDownloadButton(_.extend(t,{href:e.model.get("dlFrame").src.replace("&scan=true","")})):(this.addButton(t),this.addButton({action:"cancel",label:o("Cancel"),className:"btn-primary"})))}}),i.point("io.ox/core/download/antiviruspopup").extend({index:200,id:"buttonNotScanned",render:function(e){var t;"ANTI-VIRUS-SERVICE-0011"!==e.model.get("code")&&(t={action:"ignore",label:o("Download unscanned file"),className:"btn-default"},_.device("!ios && safari")?this.addDownloadButton(_.extend(t,{href:e.model.get("dlFrame").src.replace("&scan=true","")})):(this.addButton({action:"cancel",label:o("Cancel"),className:"btn-default"}),this.addButton(t)))}}),i.point("io.ox/core/download/antiviruspopup").extend({index:300,id:"message",render:function(e){var t=e.model.get("error"),i="ANTI-VIRUS-SERVICE-0011"===e.model.get("code")?"av-danger":"av-warning";-1===r.indexOf(e.model.get("code"))&&(t=o("Unable to perform Anti-Virus check for the requested file(s)")),this.$body.addClass("av-dialog").addClass(i).append($('<i class="fa fa-warning" aria-hidden="true">'),$("<div>").text(t))}}),{url:d,multiple:c,window:function(t,e){if((e=e||{}).antivirus){t+=(-1===t.indexOf("?")?"?":"&")+"callback=antivirus",a.has("antivirus")&&(t+="&scan=true");var i=blankshield.open(t,"_blank");return i.callback_antivirus=function(e){e.url=t,u(e),i.close()},i}return blankshield.open(t,"_blank")},file:function(i){var o=_.device("ios")&&this.window("blank.html");n.get(i).done(function(e){i.version&&(e=_.extend({},e,{version:i.version})),i.filename&&(e=_.extend(e,{filename:i.filename}));var t=n.getUrl(e,"download",{params:i.params});_.device("ios")?(t+=(-1===t.indexOf("?")?"?":"&")+"callback=antivirus",a.has("antivirus")&&(t+="&scan=true"),o.callback_antivirus=function(e){e.url=t,u(e),o.close()},o.location=t):d(t)})},exported:function(e){var t,i;/^(VCARD|ICAL|CSV)$/i.test(e.format)&&(i=!(t=_.extend({include:!0},e)).folder&&t.list,c({url:ox.apiRoot+"/export?action="+t.format.toUpperCase()+(i?"":"&folder="+t.folder)+"&export_dlists="+(t.include?"true":"false")+"&content_disposition=attachment"+(t.columns&&"CSV"===t.format.toUpperCase()?"&columns="+t.columns:"")+"&session="+ox.session,body:i?JSON.stringify(_.map(t.list,s)):""}))},files:function(e){c({url:ox.apiRoot+"/files?action=zipdocuments&callback=antivirus&session="+ox.session,body:JSON.stringify(_.map(e,s))})},chronosMultiple:function(e){c({url:ox.apiRoot+"/chronos?"+$.param({session:ox.session,action:"zipAttachments",folder:e.get("folder"),id:e.get("id")}),body:l(e.get("attachments"))})},pimAttachments:function(e,t){c({url:ox.apiRoot+"/attachment?action=zipDocuments&callback=antivirus&session="+ox.session+"&folder="+t.folder+"&attached="+t.attached+"&module="+t.module,body:l(e)})},mail:function(e){d(t.getUrl(e,"eml"))},composeAttachment:function(e){var t=e.space,i=e.id;d(ox.apiRoot+"/mail/compose/"+t+"/attachments/"+i+"?session="+ox.session)},mails:function(e){c({url:ox.apiRoot+"/mail?action=zip_messages&session="+ox.session,body:JSON.stringify(_.map(e,t.reduce))})}}}),define("io.ox/mail/main",["io.ox/mail/util","io.ox/mail/api","io.ox/mail/compose/api","io.ox/core/commons","io.ox/mail/listview","io.ox/core/tk/list-control","io.ox/mail/threadview","io.ox/core/extensions","io.ox/backbone/views/actions/util","io.ox/core/api/account","
1io.ox/core/notifications","io.ox/core/toolbars-mobile","io.ox/core/page-controller","io.ox/core/capabilities","io.ox/core/folder/tree","io.ox/core/folder/view","io.ox/core/folder/api","io.ox/backbone/mini-views/quota","io.ox/backbone/views/action-dropdown","io.ox/mail/categories/mediator","io.ox/core/api/account","gettext!io.ox/mail","settings!io.ox/mail","settings!io.ox/core","io.ox/core/api/certificate","io.ox/settings/security/certificates/settings/utils","io.ox/mail/actions","io.ox/mail/mobile-navbar-extensions","io.ox/mail/mobile-toolbar-actions","io.ox/mail/toolbar","io.ox/mail/import","less!io.ox/mail/style","io.ox/mail/folderview-extensions"],function(a,c,e,t,i,o,n,r,s,u,l,d,p,h,f,g,m,v,x,b,w,y,k,C,S,T){var D=ox.ui.createApp({name:"io.ox/mail",id:"io.ox/mail",title:"Mail"}),A=!1;return D.mediator({"pages-mobile":function(e){var t,i,o,n;_.device("!smartphone")||(t=e.getWindow(),i=$('<div class="mobile-navbar">'),o=$('<div class="mobile-toolbar">').on("hide",function(){t.nodes.body.removeClass("mobile-toolbar-visible")}).on("show",function(){t.nodes.body.addClass("mobile-toolbar-visible")}),n=r.Baton({app:e}),e.navbar=i,e.toolbar=o,e.pages=new p({appname:e.options.name,toolbar:o,navbar:i,container:t.nodes.main}),t.nodes.body.addClass("classic-toolbar-visible").append(i,o),e.pages.addPage({name:"folderTree",navbar:ne
1w d.NavbarView({baton:n,extension:"io.ox/mail/mobile/navbar"})}),e.pages.addPage({name:"listView",startPage:!0,navbar:new d.NavbarView({baton:n,extension:"io.ox/mail/mobile/navbar"}),toolbar:new d.ToolbarView({baton:n,page:"listView",extension:"io.ox/mail/mobile/toolbar"}),secondaryToolbar:new d.ToolbarView({baton:n,page:"listView/multiselect",extension:"io.ox/mail/mobile/toolbar"})}),e.pages.addPage({name:"threadView",navbar:new d.NavbarView({baton:n,extension:"io.ox/mail/mobile/navbar"}),toolbar:new d.ToolbarView({baton:n,page:"threadView",extension:"io.ox/mail/mobile/toolbar"})}),e.pages.addPage({name:"detailView",navbar:new d.NavbarView({baton:n,extension:"io.ox/mail/mobile/navbar"}),toolbar:new d.ToolbarView({baton:n,page:"detailView",extension:"io.ox/mail/mobile/toolbar"})}),e.pages.getPage("detailView").on("pagebeforehide",function(){$(this).find(".popover-open").popover("destroy")}),e.pages.setBackbuttonRules({listView:"folderTree",threadView:"listView"}))},"navbars-mobile":function(e){_.device("smartphone")&&(e.pages.getNavbar("listView").setLeft(y("Folders")).setRight(y("Edit")),e.pages.getNavbar("folderTree").setTitle(y("Folders")).setLeft(!1).setRight(y("Edit")),e.pages.getNavbar("detailView").setTitle("").setLeft(y("Back")),e.pages.getNavbar("threadView").setTitle(y("Thread")).setLeft(y("Back")),e.pages.showPage("listView"))},"toolbars-mobile":function(){_.device("smartphone")&&(D.pages.getNavbar("listView").on("leftAction",function(){D.pages.goBack()}),D.pages.getNavbar("threadView").on("leftAction",function(){D.pages.goBack(),D.listView.selection.selectNone()}),D.pages.getNavbar("detailView").on("leftAction",function(){D.pages.goBack(),D.listView.selection.selectNone()}),D.pages.getNavbar("listView").on("rightAction",function(){D.props.set("checkboxes",!D.props.get("checkboxes"))}))},"pages-desktop":function(e){_.device("smartphone")||(e.pages=new p(e),e.getWindow().nodes.main.addClass("vsplit"),e.pages.addPage({name:"listView",container:e.getWindow().nodes.main,classes:"leftside"}),e.pages.addPage({name:"detailView",container:e.getWindow().nodes.main,classes:"rightside"}))},"folder-view":function(e){_.device("smartphone")||(e.treeView=new f({app:e,module:"mail",contextmenu:!0}),g.initialize({app:e,tree:e.treeView}),e.folderView.resize.enable())},"folder-view-mobile":function(e){if(_.device("!smartphone"))return e;var t=e.pages.getNavbar("folderTree"),i=e.pages.getPage("folderTree");t.on("rightAction",function(){e.toggleFolders()});var o=new f({app:e,module:"mail",root:"1",contextmenu:!0});g.initialize({app:e,tree:o}),i.append(o.render().$el),e.treeView=o},"account-error-handling":function(r){r.addAccountErrorHandler=function(e,t,i,o){function n(e){e.showStatusIcon(y("There is a problem with this account. Click for more information"),t||"checkAccountStatus",i||e.options.model_id,o)}var a=r.treeView.getNodeView(e);a?n(a):r.treeView.on("appear:"+e,function(){(a=r.treeView.getNodeView(e))&&n(a),r.treeView.off("appear:"+e)})}},"folder-view-ssl-events":function(e){!C.get("security/acceptUntrustedCertificates")&&C.get("security/manageCertificates")&&(e.treeView.on("accountlink:ssl",function(){ox.launch("io.ox/settings/main",{folder:"virtual/settings/io.ox/certificate"})}),e.treeView.on("accountlink:sslexamine",function(e){T.openExaminDialog(e)}))},"folder-view-account-ssl-error":function(l){function i(a,r,s){w.all().done(function(e){var t,i,o,n=a?(t=a,i=e,o=[],_.each(i,function(e){_(_.values(e)).contains(t)&&o.push(e)}),o):e;_.each(n,function(n){w.getStatus(n.id).done(function(e){var t,i,o=l.treeView.getNodeView(n.root_folder);o&&("invalid_ssl"===e[n.id].status?(t=r?"accountlink:sslexamine":"accountlink:ssl",i=r?s:o.options.model_id,l.addAccountErrorHandler(n.root_folder,t,i)):e[n.id].status&&"ok"!==e[n.id].status||(o.hideStatusIcon(),o.render()))})})})}ox.on("http:error SSL:remove",function(t){/^SSL/.test(t.code)&&S.get({fingerprint:t.error_params[0]}).done(function(e){_.isEmpty(e)?i(e.hostname,["accountlink:sslexamine"],t):i(e.hostname)})}),w.on("refresh:ssl",function(e,t){i(t)})},"account-status-check":function(){function e(){w.all().done(function(e){_.each(e,function(i){w.getStatus(i.id
1).done(function(e){if("ok"!==e[i.id].status)D.addAccountErrorHandler(i.root_folder,"checkAccountStatus");else if("ok"===e[i.id].status){var t=D.treeView.getNodeView(i.root_folder);if(!t)return;t.hideStatusIcon()}})})})}w.on("account:recovered",e),D.treeView.on("checkAccountStatus",function(){ox.launch("io.ox/settings/main",{folder:"virtual/settings/io.ox/settings/accounts"}).done(function(){this.setSettingsPane({folder:"virtual/settings/io.ox/settings/accounts"})})}),e()},"OAuth-reauthorize":function(a){ox.on("account:reauthorized",function(e){var t,i;e&&(!(t=_(e.get("associations")).filter({module:"mail"})[0])||(i=a.treeView.getNodeView(t.folder))&&i.hideStatusIcon())}),require(["io.ox/oauth/keychain","io.ox/oauth/reauth_handler"]).then(function(o,n){ox.on("http:error:OAUTH-0040 http:error:MSG-0114",function(e){var t,i=o.accounts.get(e.error_params[n.columnForError(e.code)]);!i||(t=_(i.get("associations")).filter({module:"mail"})[0])&&a.addAccountErrorHandler(t.folder,"OAuthReauthorize",{account:i,err:e},!0)}),a.treeView.on("OAuthReauthorize",function(e){n.showDialog(e.account,e.err)})})},"mail-quota":function(e){var t;_.device("smartphone")||(t=new v({title:"unified"===C.get("quotaMode","default")?y("Quota"):y("Mail quota"),renderUnlimited:!1,upsell:{title:y("Need more space?"),requires:"active_sync || caldav || carddav",id:"mail-folderview-quota",icon:""},upsellLimit:5242880}),m.on("cleared-trash",function(){t.getQuota(!0)}),c.on("deleted-mails-from-trash",function(){t.getQuota(!0)}),c.on("refresh.all",function(){t.getQuota(!0)}),e.treeView.$el.append(t.render().$el))},"select-all-actions":function(){c.on("move deleted-mails archive",function(){D.listView.collection.length||D.listView.reload()})},props:function(t){t.props=new Backbone.Model({layout:function(){if(_.device("smartphone"))return"vertical";var e=t.settings.get("layout","vertical");return"compact"===e&&_.device("!desktop")&&(e="vertical"),e}(),checkboxes:!_.device("smartphone")&&t.settings.get("showCheckboxes",!1),contactPictures:!_.device("smartphone")&&t.settings.get("showContactPictures",!1),textPreview:t.settings.get("showTextPreview",!0),exactDates:t.settings.get("showExactDates",!1),alwaysShowSize:t.settings.get("alwaysShowSize",!1),categories:t.settings.get("categories/enabled",!1),category_id:b.getInitialCategoryId(),mobileFolderSelectMode:!1})},"toggle-folder-editmode":function(o){_.device("!smartphone")||(o.toggleFolders=function(){var e=o.pages.getPage("folderTree"),t=o.props.get("mobileFolderSelectMode"),i=y(t?"Edit":"Cancel");o.props.set("mobileFolderSelectMode",!t),o.pages.getNavbar("folderTree").setRight(i),e.toggleClass("mobile-edit-mode",!t)})},"all-unseen":function(e){var t=c.collectionLoader,i=t.getQueryParams({folder:"virtual/all-unseen"}),o=t.getCollection(i);o.gc=!1,o.preserve=!0,o.CUSTOM_PAGE_SIZE=250,o.on("load reload",function(){this.setComplete(!0)});var n=m.pool.getModel("virtual/all-unseen");function a(){c.getAllUnseenMessages().done(function(e){var t=_(e).chain().filter(function(e){return e.id=e.original_id,e.folder_id=e.original_folder_id,!w.is("spam|confirmed_spam|trash",e.folder_id)}).pluck("folder_id").uniq().value();m.multiple(t)})}function r(){a(),ox.on("refresh^",a)}c.on("all-unseen",function(e,t){n.set("unread",t)}),k.get("features/unseenFolder")&&(k.get("unseenMessagesFolder")?r():k.once("change:features/unseenFolder",r)),e.folderView.tree.selection.addSelectableVirtualFolder("virtual/all-unseen")},"unselectable-folders":function(){var e;w.cache[0]&&(e=w.cache[0].root_folder+"/Shared",D.folderView.tree.selection.addUnselectableFolder(e))},vsplit:function(e){var t=e.pages.getPage("listView"),i=e.pages.getPage("detailView");e.left=t.toggleClass("border-right",_.device("!smartphone")),e.right=i.addClass("mail-detail-pane")},"list-view":function(e){e.listView=new i({swipe:!0,app:e,draggable:!0,ignoreFocus:!0,selectionOptions:{mode:"special"}}),e.listView.model.set({folder:e.folder.get(),thread:e.settings.get("threadSupport",!0)}),window.list=e.listView},"list-view-checkboxes":function(e){_.device("smartphone")||e.listView.toggleCheckboxes(e.props.get("checkboxes"))},"list-view-checkboxes-mobile":function(e){_.device("smartphone")&&(e.props.set("checkboxes",!1),e.listView.toggleCheckboxes(!1))},"react to markunread":function(){c.on("after:refresh.unseen",function(e,t){1===t.length&&(c.setToUnread=t[0].cid)}),D.listView.on("selection:multiple selection:one",function(){delete c.setToUnread}),D.listView.on("selection:action",function(){"list"!==D.props.get("layout")&&delete c.setToUnread})},"auto-scroll":function(o){o.listView.on("add",function(e,t){var i;0===t&&a.isUnseen(e.toJSON())&&(i=o.listView.$el.height()/2,o.listView.$el.scrollTop()>i||o.listView.$el.scrollTop(0))})},"get-view-options":function(i){i.getViewOptions=function(e){var t=i.settings.get(["viewOptions",e],{});return i.settings.get("threadSupport",!0)||(t.thread=!1),(!k.get("features/flag/color")&&102===t.sort||!k.get("features/flag/star")&&660===t.sort||610===t.sort||602===t.sort&&!m.pool.getModel(e).supports("ATTACHMENT_MARKER"))&&delete t.sort,_.extend({sort:661,order:"desc",thread:!1},t)}},"prop-folderview":function(e){e.props.set("folderview",!_.device("smartphone")&&e.settings.get("folderview/visible/"+_.display(),!0))},"change:sort":function(i){i.props.on("change:sort",function(e,t){e=i.listView.model,"from-to"===t&&(t=u.is("sent|drafts",e.get("folder"))?604:603),i.changingFolders||(e.set("order",/^(610|661|608|102|660|651)$/.test(t)?"desc":"asc",{silent:!0}),i.props.set("order",e.get("order"))),e.set({sort:t})})},"change:order":function(i){i.props.on("change:order",function(e,t){i.listView.model.set("order",t)})},"change:thread":function(o){o.props.on("change:thread",function(e,t){var i;!o.changingFolders&&o.listView.collection&&(i=o.listView.collection,_.defer(function(){i.reset(),i.setComplete(!1)})),o.listView.model.set("thread",!!t)})},isThreaded:function(e){e.isThreaded=function(){return"search"!==e.listView.loader.mode&&e.props.get("thread")}},getContextualData:function(o){o.getContextualData=function(e){var t=o.isThreaded(),i=c.resolve(e,t);return{app:o,data:i,folder_id:o.folder.get(),isThread:t}}},"store-view-options":function(i){i.props.on("change",_.debounce(function(){var e,t;i.props.get("find-result")||(e=i.folder.get(),t=i.props.toJSON(),i.settings.set(["viewOptions",e],{sort:t.sort,order:t.order,thread:t.thread}).set("showTextPreview",t.textPreview).set("showExactDates",t.exactDates).set("alwaysShowSize",t.alwaysShowSize).set("categories/enabled",t.categories),_.device("!smartphone")&&i.settings.set("layout",t.layout).set("showCheckboxes",t.checkboxes).set("showContactPictures",t.contactPictures),i.settings.save())},500))},"restore-view-options":function(e){var t=e.getViewOptions(e.folder.get());e.changingFolders=!0,e.props.set(t),e.changingFolders=!1},"list-view-control":function(e){e.listControl=new o({id:"io.ox/mail",listView:e.listView,app:e}),e.left.append(e.listControl.render().$el.attr("aria-label",y("Messages")).find(".toolbar").attr("aria-label",y("Messages options")).end()),_.device("smartphone")&&(e.listControl.$(".toolbar.bottom").hide(),e.listControl.$(".toolbar.top").removeClass("top").addClass("bottom"),e.listControl.$el.removeClass("toolbar-top-visible")),e.listControl.resizable()},textPreview:function(t){var i=k.get("features/textPreview",!0);t.supportsTextPreview=function(){return i},t.supportsTextPreviewConfiguration=function(){var e=t.folder.get();return i&&(u.isPrimary(e)||"virtual/all-unseen"===e)},t.useTextPreview=function(){return t.supportsTextPreviewConfiguration()&&t.props.get("textPreview")},t.on("resume",function(){this.listView.fetchTextPreview()})},"thread-view":function(e){_.device("smartphone")||(e.threadView=new n.Desktop({app:e}),e.right.append(e.threadView.render().$el))},"thread-view-mobile":function(i){_.device("smartphone")&&(i.threadView=new n.Mobile,i.threadView.$el.on("showmail",function(e){var t=$(e.target).data().cid;
1i.showMail(t),i.pages.changePage("detailView")}),i.pages.getPage("threadView").append(i.threadView.render().$el))},"selection-message":function(e){e.right.append($('<div class="io-ox-center multi-selection-message"><div class="message"></div></div>'))},navigation:function(e){e.threadView.on({back:function(){e.right.removeClass("preview-visible"),e.listView.focus()},previous:function(){e.listView.previous()},next:function(){e.listView.next()}})},position:function(t){function e(){var e=t.listView;t.threadView.updatePosition(e.getPosition()+1).togglePrevious(e.hasPrevious()).toggleNext(e.hasNext())}t.listView.on("selection:action",e),e()},"folder:change":function(i){i.folderView.tree.on("selection:action",function(){"list"===i.props.get("layout")&&i.right.hasClass("preview-visible")&&i.threadView.trigger("back")}),i.on("folder:change",function(e){var t;i.props.get("mobileFolderSelectMode")||(i.changingFolders=!0,t=i.getViewOptions(e),i.props.set(_.pick(t,"sort","order","thread")),"from-to"===t.sort&&i.listView.model.set("sort",u.is("sent|drafts",e)?604:603),i.listView.model.set("folder",e),i.folder.getData(),i.changingFolders=!1)})},"auto-subscribe":function(t){function i(e){"mail"===e.module&&(e.subscribed?t.folderView.tree.select(e.id):m.update(e.id,{subscribed:!0},{silent:!0}).done(function(){m.refresh().done(function(){t.folderView.tree.select(e.id)})}))}t.folder.getData().done(i),t.on("folder:change",function(e,t){i(t)})},"folder:change-mobile":function(t){_.device("smartphone")&&t.on("folder:change",function(){t.props.get("mobileFolderSelectMode")||t.folder.getData().done(function(e){t.pages.getNavbar("listView").setTitle(e.title)})})},"show-mail":function(i){var t,e,o,n;function a(){var e,t;i.listView.collection.get(n)&&(i.threadView.autoSelect=i.autoSelect,delete i.autoSelect,i.threadView.show(n,i.isThreaded()),!A&&"list"!==i.props.get("layout")||(A=!1,t=(e=i.threadView.$(".list-item")).index(e.filter(".expanded")),e.filter(".expanded:first").find(".body").visibleFocus(),0===t&&i.threadView.$(".scrollable").scrollTop(0)))}_.device("smartphone")||(t=0,i.recentDelete=function(){return 0<t},i.showMail=function(e){return n=e,!t||i.threadView.model&&i.threadView.model.cid===e?a():(i.threadView.empty(),clearTimeout(o),void(o=setTimeout(a,1e3*(t-1))
1))},c.on("beforedelete",function(){t<2&&t++,clearTimeout(e),e=setTimeout(function(){t=0},4e3)}))},"show-mail-mobile":function(t){_.device("smartphone")&&(t.showMail=function(e){t.pages.getPage("detailView").empty().append(t.threadView.renderMail(e))})},"mobile-show-thread-overview":function(t){t.showThreadOverview=function(e){t.threadView.show(e,t.isThreaded())}},"show-empty":function(e){e.showEmpty=function(){e.threadView.empty(),e.right.find(".multi-selection-message .message").empty().append(y("No message selected")).attr("id","mail-multi-selection-message")}},"show-multiple":function(a){_.device("smartphone")||(a.showMultiple=function(t){a.threadView.empty(),t=c.resolve(t,a.isThreaded());var i=a.folder.get(),o=m.pool.getModel(i).get("total"),n=a.get("find")&&a.get("find").isActive();_.defer(function(){var e=$('<span class="number">').text(t.length).prop("outerHTML");a.right.find(".multi-selection-message .message").empty().attr("id","mail-multi-selection-message").append($("<div>").append(y.ngettext("%1$d message selected","%1$d messages selected",e,e)),i&&o>t.length&&!n?$('<div class="inline-actions selection-message">').append(y.ngettext("There is %1$d message in this folder; not all messages are displayed in the list currently.","There are %1$d messages in this folder; not all messages are displayed in the list currently.",o,o)).hide():$())})},a.showSelectionMessage=function(){_.defer(function(){a.right.find(".selection-message").show()})})},"show-multiple-mobile":function(t){_.device("!smartphone")||(t.showMultiple=function(e){t.threadView.empty(),e?(e=c.resolve(e,t.isThreaded()),t.pages.getCurrentPage().navbar.setTitle(y("%1$d selected",e.length)),t.pages.getCurrentPage().secondaryToolbar.render()):t.folder.getData().done(function(e){t.pages.getCurrentPage().navbar.setTitle(e.title)})})},"page-change-detail-view-mobile":function(){D.pages.getPage("detailView").on("header_ready",function(){D.pages.changePage("detailView")})},"selection-mobile":function(a){_.device("smartphone")&&a.listView.on({"selection:empty":function(){a.props.get("checkboxes")&&a.showMultiple(!1)},"selection:one":function(e){a.props.get("checkboxes")&&a.showMultiple(e)},"selection:multiple":function(e){a.props.get("checkboxes")&&a.showMultiple(e)},"selection:action":function(e){var t,i,o,n=_.contains(u.getFoldersByType("drafts"),this.model.get("folder"));1!==a.listView.selection.get().length||a.props.get("checkboxes")||(t=e[0],i=1<this.collection.get(t).get("threadSize"),n?(o=_.cid(t),ox.registry.call("mail-compose","open",{type:"edit",original:{folderId:o.folder_id,id:o.id}})):i?(a.showThreadOverview(t),a.pages.changePage("threadView")):a.showMail(t))}})},selection:function(i){var o;function n(e){return i.right.removeClass("selection-empty selection-one selection-multiple preview-visible".replace(e,"")).addClass(e)}function a(e){return i.left.removeClass("selection-empty selection-one selection-multiple".replace(e,"")).addClass(e)}_.device("smartphone")||(o=_.debounce(function(e,t){if("list"===i.props.get("layout")&&"action"===e)return n("selection-one preview-visible"),a("selection-one"),void i.showMail(t[0]);if("list"===i.props.get("layout")&&"one"===e)return n("selection-one"),void a("selection-one");switch(e){case"empty":n("selection-empty"),a("selection-empty"),i.showEmpty();break;case"one":case"action":n("selection-one"),a("selection-one"),i.showMail(t[0]);break;case"multiple":n("selection-multiple"),a("selection-multiple"),i.showMultiple(t)}},1),i.listView.on({"selection:empty":function(){i.right.find(".multi-selection-message div").attr("id",null),o("empty")},"selection:one":function(e){i.right.find(".multi-selection-message div").attr("id",null);var t="one";"alternative"===i.listView.selection.getBehavior()&&(t="multiple"),o(t,e)},"selection:multiple":function(e){i.right.find(".multi-selection-message div").attr("id",null),n("selection-multiple"),a("selection-multiple"),i.showMultiple(e)},"selection:action":function(e){i.right.find(".multi-selection-message div").attr("id",null),1===i.listView.selection.get().length&&o("action",e)},"selection:showHint":function(){i.showSelectionMessage()}}))},"preserve-selection":function(t){_.device("smartphone")||t.listView.on({"selection:add":function(e){651===t.props.get("sort")&&_(e).each(function(e){c.pool.preserveModel(e,!0)})},"selection:remove":function(e){_(e).each(function(e){c.pool.preserveModel(e,!1)})}})},"change:layout":function(i){i.props.on("change:layout",function(e,t){i.threadView.toggleNavigation("list"===t),ox.ui.apps.trigger("layout",i)}),i.threadView.toggleNavigation("list"===i.props.get("layout"))},"apply-layout":function(u){_.device("smartphone")||(u.applyLayout=function(){var e,t,i,o,n,a,r,s=u.props.get("layout"),l=u.getWindow().nodes,d=u.settings.get("listview/width/"+_.dis
1play()),c=u.settings.get("listview/height/"+_.display());u.left.css({width:"",height:""}),u.right.css({left:"",top:""}),"vertical"===s||"compact"===s?(l.main.addClass("preview-right").removeClass("preview-bottom preview-none"),_.device("touch")||(r=void 0===(a=d)?"":a+"px",u.right.css("left",r),u.left.css("width",r))):"horizontal"===s?(l.main.addClass("preview-bottom").removeClass("preview-right preview-none"),_.device("touch")||(n=void 0===(o=c)?"":o+"px",u.right.css("top",n),u.left.css("height",n))):"list"===s&&l.main.addClass("preview-none").removeClass("preview-right preview-bottom"),e=l.body.find(".classic-toolbar-container"),t=l.body.find(".categories-toolbar-container"),i="classic-toolbar-visible","compact"===s?(l.body.removeClass(i),u.right.addClass(i).prepend(e),0<t.length&&u.right.prepend(t)):(u.right.removeClass(i),l.body.addClass(i).prepend(e),0<t.length&&l.body.prepend(t)),"list"===s||"list"!==u.props.previousAttributes().layout||u.right.hasClass("preview-visible")||0<u.listView.selection.get().length&&u.listView.selection.selectEvents(u.listView.selection.getItems()),this.listControl.applySizeConstraints()},u.props.on("change:layout",function(){var e=u.getWindow().nodes.body,t=e.find('*[data-dropdown="view"] a:first').is(":focus");u.applyLayout(),u.listView.redraw(),t&&e.find('*[data-dropdown="view"] a:first').focus()}),u.getWindow().on("show:initial",function(){u.applyLayout()}))},refresh:function(e){c.on("refresh.all",function(){e.listView.reload()})},reloadOnFolderChange:function(e){c.on("changesAfterReloading",function(){e.listView.reload()})},"auto-select":function(i){var e;k.get("autoselectMailOnStart",!0)&&!_.device("smartphone")&&(e=function(){i.listView.collection.find(function(e,t){if(!a.isUnseen(e.get("flags")))return i.autoSelect=!0,i.listView.selection.select(t,!1,!1),i.listView.selection.getItems().eq(t).attr("tabindex","0").intoViewport(),!0})},i.listView.on("first-reset",function(){"list"!==i.props.get("layout")?_.defer(e):i.props.once("change:layout",function(){i.listView.selection.get().length||_.defer(e)})}))},"init-navbarlabel-mobile":function(t){_.device("smartphone")&&t.listView.on("first-reset",function(){t.folder.getData().done(function(e){t.pages.getNavbar("listView").setTitle(e.title)})})},prefetch:function(e){var i=k.get("prefetch/count",5);!_.isNumber(i)||i<=0||(e.prefetch=function(e){var t=require("io.ox/core/http");t.pause(),e.chain().filter(function(e){return!a.isDeleted(e)}).slice(0,i).each(function(e){for(var t,i=e.get("thread")||[e.toJSON()],o=i.length-1;t=i[o];o--)if(_.isString(t)&&(t=_.cid(t)),(0===o||a.isUnseen(t))&&!a.isDeleted(t)){c.get({folder:t.folder_id,id:t.id,unseen:!0});break}}),t.resume()},e.listView.on("first-reset",e.prefetch))},"prefetch-message":function(a){_.device("smartphone")||k.get("prefetch/next",!0)&&a.listView.on("selection:one",function(){var e,t,i,o,n;a.recentDelete()||(e=this.selection.getItems(),t=this.selection.getPosition(e),i=this.selection.getDirection(),o=e.length-1,"down"===i&&t<o?n=e.eq(t+1):"up"===i&&0<t&&(n=e.eq(t-1)),n&&((n=_.cid(n.attr("data-cid"))).unseen=!0,c.get(n)))})},"prefetch-compose":function(){_.device("smartphone")||setTimeout(function(){require(["io.ox/mail/compose/main","io.ox/mail/compose/bundle"],function(){require(["io.ox/core/api/snippets"],function(e){e.getAll()})})},3e3)},"connect-loader":function(e){e.listView.connect(c.collectionLoader)},"before-delete":function(o){_.device("smartphone")||k.get("features/selectBeforeDelete",!0)&&c.on("beforedelete beforeexpunge",function(e,t){var i=o.listView.selection.get();if(!function(e,t){if(1===e.length&&1===t.length)return _.cid(e[0])!==String(t[0]).replace(/^thread\./,"")}(t,i)&&(0<t.length&&!_.isString(t[0])&&(t=_(t).map(_.cid)),_.intersection(t,i).length)){if(o.listView.selection.dodge(),o.isThreaded()&&c.one("deleted-mails",function(){o.listView.reload()}),1===t.length)return;o.listView.onBatchRemove(t.slice(1))}})},"before-delete-mobile":function(e){_.device("smartphone")&&c.on("beforedelete",function(){"detailView"===e.pages.getCurrentPage().name&&(e.isThreaded()&&1===e.threadView.collection.length?e.pages.changePage("listView",{animation:"slideright"}):e.pages.goBack()),e.listView.selection.selectNone()})},"drag-drop":function(){D.getWindow().nodes.outer.on("selection:drop",function(e,t){var i=r.Baton(D.getContextualData(t.data));i.target=t.target,s.invoke("io.ox/mail/actions/move",i)})},"selection-archive":function(){D.listView.on("selection:archive",function(e){var t=r.Baton(D.getContextualData(e));s.invoke("io.ox/mail/actions/archive",t)})},"selection-delete":function(){D.listView.on("selection:delete",function(e,t){var i=r.Baton(D.getContextualData(e));i.options.shiftDelete=t,s.invoke("io.ox/mail/actions/delete",i)})},"selection-doubleclick":function(o){_.device("smartphone")||o.listView.on("selection:doubleclick",function(e){var t,i;o.props&&"list"===o.props.get("layout")||(o.isThreaded()&&(e=_(c.threads.get(e[0])).pluck("cid")),t=e[0],i=_.cid(t),u.is("drafts",i.folder_id)?c.get(i).then(function(e){s.invoke("io.ox/mail/actions/edit",e)}):ox.launch("io.ox/mail/detail/main",{cid:t}))})},"selection-mobile-swipe":function(o){_.device("!smartphone")||(r.point("io.ox/mail/mobile/swipeButtonMore").extend({draw:function(e){new x({el:this,point:"io.ox/mail/links/inline"}).setSelection(e.array(),{data:e.array(),app:o,isThread:e.isThread})}}),o.listView.on("selection:more",function(e,t){var i=r.Baton({data:e});i.isThread=1===i.data.length&&/^thread\./.test(i.data[0]),i.data=c.resolve(i.data,o.isThreaded()),r.point("io.ox/mail/mobile/swipeButtonMore").invoke("draw",t,i),t.find("a.dropdown-toggle").
1click()}))},"change:folderview":function(i){_.device("smartphone")||(i.props.on("change:folderview",function(e,t){i.folderView.toggle(t)}),i.on("folderview:close",function(){i.props.set("folderview",!1)}),i.on("folderview:open",function(){i.props.set("folderview",!0)}))},"change:checkboxes":function(i){_.device("smartphone")||("alternative"===i.listView.selection.getBehavior()?i.listView.toggleCheckboxes(!0):i.props.on("change:checkboxes",function(e,t){i.listView.toggleCheckboxes(t)}))},"change:checkboxes-mobile":function(i){_.device("!smartphone")||(i.listControl.$el.toggleClass("toolbar-bottom-visible",!1),i.props.on("change:checkboxes",function(e,t){i.listView.toggleCheckboxes(t),i.listControl.$el.toggleClass("toolbar-bottom-visible",t),t?i.pages.getNavbar("listView").setRight(y("Cancel")).hide(".left"):(i.pages.getNavbar("listView").setRight(y("Edit")).show(".left"),i.folder.getData().done(function(e){i.pages.getCurrentPage().navbar.setTitle(e.title)}),i.listView.selection.selectNone())}))},"change:viewOptions":function(e){function t(){e.listView.$el.toggleClass("show-contact-pictures",e.props.get("contactPictures")).toggleClass("show-text-preview",e.useTextPreview())}e.props.on("change:contactPictures change:exactDates change:alwaysShowSize change:textPreview",function(){e.listView.redraw(),e.listView.$el.trigger("scroll"),t()}),e.on("folder:change",t),t()},"fix-mobile-lazyload":function(e){_.device("!smartphone")||e.pages.getPage("detailView").on("pageshow",function(){$(this).scrollTop(0),$(this).find("li.lazy").trigger("scroll")})},"inplace-find":function(e){if(!_.device("smartphone")&&h.has("search")&&e.isFindSupported())return e.initFind(),e.get("find")?t(0,e.get("find")):e.once("change:find",t);function t(e,t){t.on("collectionLoader:created",function(e){e.each=function(e){c.pool.add("detail",e)}})}},"on:pull-to-refresh":function(e){_.device("!touch")||e.on("pull-to-refresh",function(){c.refresh().always(function(){e.listView.removePullToRefreshIndicator()})})},"contextual-help":function(e){e.getContextualHelp=function(){return"ox.appsuite.user.sect.email.gui.html"}},a11y:function(t){t.listView.$el.attr("aria-label",y("List view")),t.listView.$el.on("keydown",".list-item",function(e){return 13!==e.which?27===e.which?(t.folderView.tree.$(".folder.selected").focus(),!1):void 0:void(A=!0)}),t.threadView.$el.on("keydown",function(e){27===e.which&&($(e.target).is(".dropdown-toggle, :input")||(t.right.removeClass("preview-visible"),t.listView.restoreFocus(!0)))}),t.folderView.tree.$el.on("keydown",".folder",function(e){$(e.target).hasClass("folder")&&13===e.which&&t.listView.restoreFocus(!0)})},"auto-expunge":function(e){function t(e){return 2==(2&e.get("flags"))}k.get("features/autoExpunge",!1)&&e.listView.on("collection:load collection:paginate collection:reload",function(){this.collection.any(t)&&c.expunge(e.folder.get())})},"folder-errors":function(e){m.on("error:MSG-0092",function(e){l.yell(e)}),e.folder.handleErrors()},"composition-spaces":function(){function i(){var n={};e.space.all().then(function(e){return _.chain(e).map(function(e){return n[e.cid]={description:y("Mail: %1$s",e.subject||y("No subject")),floating:!0,id:e.id+Math.random().toString(16),cid:e.cid,keepOnRestore:!1,module:"io.ox/mail/compose",point:e,timestamp:(new Date).valueOf(),ua:navigator.userAgent},n[e.cid]}).filter(function(e){return!ox.ui.apps.getByCID(e.cid)}).value()}).then(function(e){return ox.ui.App.restoreLoad({spaces:e})}).then(function(){_.each(ox.ui.App.get("io.ox/mail/compose"),function(e){var t,i,o=n[e.cid];return o&&o.point&&(i=o.point.cid,(t=_.find(ox.ui.floatingWindows.models,function(e){return e.get("cid")===i}))&&t.set("title",o.description)),o?e.resume(o):e.onError({code:"UI-SPACEMISSING"})})}).catch(function(e){ox.debug&&console.error(e)})}c.on("deleted-mails",function(e,t){_.some(t,function(e){return ox.ui.spaces[e.cid]})&&_.delay(i,1e3)}),ox.on("refresh^",i),e.on("refresh",i)},"database-drafts":function(){e.on("before:send before:save",function(e,t){var i,o,n=t.meta.editFor;n&&!t.mailPath&&(i=_.cid({id:n.originalId,folder_id:n.originalFolderId}),o=u.getFoldersByType("drafts"),_(o).each(function(e){_(c.pool.getByFolder(e)).each(function(e){e.remove(i)})}))}),e.on("after:save",function(e){var t;e.mailPath||(t=D.folder.get(),u.is("drafts",t)&&D.listView.reload())}
1),e.on("after:send",function(e){var t;e.meta.editFor&&!e.mailPath&&(t=D.folder.get(),u.is("drafts",t)&&D.listView.reload())})},"real-drafts":function(){e.on("before:send",function(e,t){var i,o;t.mailPath&&(i=(t.mailPath||{}).id,o=(t.mailPath||{}).folderId,_(c.pool.getByFolder(o)).each(function(e){e.remove(_.cid({id:i,folder_id:o}))}))}),e.on("after:send after:update after:remove after:save add mailref:changed",function(e,t){var i=e.mailPath||t.mailPath;if(i){var o=D.folder.get();if(u.is("drafts",o))return D.listView.reload();_(c.pool.getByFolder(i.folderId)).each(function(e){e.expire()})}})},"mail-progress":function(){_.device("smartphone")||r.point("io.ox/mail/sidepanel").extend({id:"progress",index:300,draw:function(){var n=$('<div class="generic-toolbar bottom mail-progress">').hide().append($('<div class="progress">').append($('<div class="progress-bar">')),$('<div class="caption">').append($("<span>"),$('<a href="#" class="close" data-action="close" role="button">').attr("aria-label",y("Close")).append($('<i class="fa fa-times" aria-hidden="true">').attr("title",y("Close")))));e.queue.collection.on("progress",function(t){if(!t.count)return _.device("safari")&&(n.closest(".window-sidepanel").find(".folder-tree")[0].scrollTop+=1),n.hide();var e=t.count,i=Math.round(100*t.pct),o=y.ngettext("Sending %1$d message ... %2$d%","Sending %1$d messages ... %2$d%",e,e,i);n.find(".progress-bar").css("width",i+"%"),n.find(".caption span").text(o),n.find('[data-action="close"]').off().on("click",function(e){e.preventDefault(),t.abort()}).toggle(t.pct<1),n.show()}),this.append(n)}})},"refresh-folders":function(){var i=_.throttle(function(){var e=_(["inbox","sent","drafts"]).chain().map(function(e){var t=w.getFoldersByType(e);return c.pool.resetFolder(t),t}).flatten().value();m.multiple(e,{cache:!1}),c.trigger("refresh.all")},5e3,{leading:!1});function o(o,e){if(e.error)return $.Deferred().reject(e).promise();var n;e.data&&(n=e.data.folderId,$.when(w.getUnifiedMailboxName(),w.getPrimaryAddress()).done(function(e,t){var i=!1;_.chain(_.union(o.to,o.cc,o.bcc)).each(function(e){e[1]!==t[1]||(i=!0)}),setTimeout(function(){null!==e?m.refresh():i?m.reload(n,w.getInbox()):m.reload(n)},5e3)}))}e.on("after:save",function(e,t){e.mailPath||(i(),o(e,t))}),e.on("after:send",function(e,t){i(),o(e,t)})},sidepanel:function(e){var t;_.device("smartphone")||(r.point("io.ox/mail/sidepanel").extend({id:"tree",index:100,draw:function(e){this.addClass("border-right").append(e.app.treeView.$el)}}),t=e.getWindow().nodes.sidepanel,r.point("io.ox/mail/sidepanel").invoke("draw",t,r.Baton({app:e})))},metrics:function(a){a.options.first&&a.listView.on("first-reset",function(){var e=_.now()-ox.t0;ox.trigger("timing:mail:ready",e)}),require(["io.ox/metrics/main"],function(o){var e,t,i;function n(e,t){var i=!!(t=$(t)).attr("data-name");o.trackEvent({app:"mail",target:e,type:"click",action:i?t.attr("data-name"):t.attr("data-action"),detail:i?t.attr("data-value"):""})}o.isEnabled()&&(t=(e=a.getWindow().nodes).outer,i=e.sidepanel,o.watch({node:t,selector:'[data-action="add-mail-account"]',type:"click"},{app:"mail",target:"folder/account",type:"click",action:"add"}),e.body.on("mousedown",".categories-toolbar-container .category",function(e){o.trackEvent({app:"mail",target:"toolbar",type:"click",action:"select-tab",detail:$(e.currentTarget).attr("data-id")})}),e.body.on("track",".classic-toolbar-container",function(e,t){n("toolbar",t)}),e.body.on("track",".thread-view-control",function(e,t){n("detail/toolbar",t)}),e.main.find(".list-view-control .toolbar").on("mousedown","a[data-name], a[data-action]",function(e){n("list/toolbar",e.currentTarget)}),_.defer(function(){i.find(".context-dropdown").on("mousedown","a",function(e){o.trackEvent({app:"mail",target:"folder/context-menu",type:"click",action:$(e.currentTarget).attr("data-action")})})}),i.find(".bottom").on("mousedown","a[data-action]",function(e){$(e.currentTarget).attr("data-action")&&o.trackEvent({app:"mail",target:"folder/toolbar",type:"click",action:$(e.currentTarget).attr("data-action")})}),a.getWindow().nodes.outer.on("selection:drop",function(e,t){o.trackEvent({app:"mail",target:"folder",type:"click",action:"drop",detail
1:t.data.length?"single":"multiple"})}),a.on("folder:change folder-virtual:change",function(e,t){t=t||{},o.getFolderFlags(e).then(function(e){m.is("unifiedfolder",t)&&e.unshift("unfified"),e.unshift(m.is("external",t)?"external":"primary"),o.trackEvent({app:"mail",target:"folder",type:"click",action:"select",detail:e.join("/")})})}),a.listView.on({"selection:multiple selection:one":_.throttle(function(e){o.trackEvent({app:"mail",target:"list/"+a.props.get("layout"),type:"click",action:"select",detail:1<e.length?"multiple":"one"})},100,{trailing:!1})}))})},"unified-folder-support":function(){u.getUnifiedMailboxName().done(function(d){var n;d&&(n=function(s){var e=c.getAccountIDFromFolder(s.get("folder_id")),l={7:"INBOX",9:"Drafts",10:"Sent",11:"Spam",12:"Trash"};return u.get(e).then(function(e){var t,i,o,n;if(e){if(e.unified_inbox_enabled){t=m.pool.models[s.get("folder_id")];var a=l[t.get("standard_folder_type")];if(a)return n=(o=d+"/"+a)+"/"+t.get("id"),[{folder_id:o,id:s.get("folder_id")+"/"+s.get("id")},{folder_id:n,id:s.get("id")}]}}else{if((t=m.pool.models[s.get("folder_id")])&&t.is("unifiedfolder")){i=s.get("original_folder_id"),n=s.get("folder_id")+"/"+i;var r=s.get("original_id");return[{folder_id:i,id:r},{folder_id:n,id:r}]}if((t=m.pool.models[t.get("folder_id")])&&t.is("unifiedfolder"))return[{folder_id:o=t.id,id:(i=s.get("folder_id").replace(t.id+"/",""))+"/"+s.get("id")},{folder_id:i,id:s.get("id")}]}return $.Deferred().reject()})},c.pool.get("detail").on("change:flags",function(e,t,i){var o;i=i||{},!e||i.unifiedSync||a.isUnseen(e.previous("flags"))!==(o=a.isUnseen(e.get("flags")))&&n(e).done(function(e){_(e).each(function(e){var t,i=c.pool.get("detail").get(_.cid(e));i?(t={flags:o?-33&i.get("flags"):32|i.get("flags")},o||(t.unseen=!1),i.set(t,{unifiedSync:!0}),c.threads.touch(i.attributes),c.trigger("update:"+_.ecid(i.attributes),i.attributes)):m.changeUnseenCounter(e.folder_id,o?1:-1),c.pool.resetFolder(e.folder_id)})})}),c.pool.get("detail").on("remove",function(e){var t;e&&(t=a.isUnseen(e.get("flags")),n(e).done(function(e){_(e).each(function(e){t&&m.changeUnseenCounter(e.folder_id,-1),c.pool.resetFolder(e.folder_id)})}))}))})},sockets:function(t){ox.on("socket:mail:new",function(e){m.reload(e.folder),e.folder!==t.folder.get(e.folder)?_(c.pool.getByFolder(e.folder)).invoke("expire"):t.listView.reload()})},"vacation-notice":function(t){h.has("mailfilter_v2")&&require(["io.ox/mail/mailfilter/vacationnotice/indicator"],function(e){(new e).attachTo(t.listControl.$el)})},"autoforward-notice":function(t){h.has("mailfilter_v2")&&require(["io.ox/mail/mailfilter/autoforward/indicator"],function(e){(new e).attachTo(t.listControl.$el)})}}),D.setLauncher(function(){var e=ox.ui.createWindow({name:"io.ox/mail",title:"Inbox",chromeless:!0,find:h.has("search")});_.url.hash("mailto")&&ox.registry.call("mail-compose","open"),D.setWindow(e),D.settings=k,window.mailapp=D,t.addFolderSupport(D,null,"mail",D.options.folder).always(function(){D.mediate(),e.show()}).fail(function(e){var t=k.get("folder/inbox")&&e&&e.error?e.error+" "+y("Application may not work as expected until this problem is solved."):c.mailServerDownMessage;l.yell("error",t)})}),D.setResume(function(e){if(e&&e.folder&&e.folder!==this.folder.get()){var t=this.getWindow();return t.busy(),this.folder.set(e.folder).always(function(){t.idle()})}return $.when()}),{getApp:D.getInstance}})})});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.