1define(ox.base+"/precore.js",["io.ox/core/boot/config","io.ox/core/manifests"],function(Ke){"use strict";var Le=$.Deferred();ox.session?Ke.user().then(Le.resolve,Le.reject):ox.once("login:success",function(){Ke.user().then(Le.resolve,Le.reject)}),Le.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(M,w,v,S,F,k){"use strict";var D=$.Deferred().reject("please launch app first"),y=function(m){var o=[m.getName(),m.get("inplace")?"inplace":"standalone",m.getModule()];return _.compact(o).join(":")};k.on("added:find",function(){require(["io.ox/core/yell"],function(m){m("info",F("Please wait, your search may take a while"))})});var d=function(m){var o;m=_.extend({},{inplace:!0},m),o=ox.ui.createApp(_.extend({name:"io.ox/find",title:F("Search"),state:"created"},m)),o.mediator({props:function(t){t.props=new Backbone.Model},"props-mandatory":function(t){var n=S.get("search/mandatory",{});n.account=n.account||[],n.account.push("drive"),t.props.set("mandatory",n)},"props-default":function(t){t.props.set("default",S.get("search/default","io.ox/mail"))},"props-mapping":function(t){var n=t.props.get("default-app");t.props.set("mapping",{"io.ox/mail/compose":"io.ox/mail","com.voiceworks/ox-messenger":n,"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":n,"io.ox/settings":n})},cid:function(t){t.cid=y(t)},"window-inplace":function(t){t.get("inplace")&&t.set("window",t.get("parent").getWindow())},state:function(t){if(t.get("inplace")){var n=t.get("parent");t.on({"find:query:result":function(){t.isActive()===!0&&n.props.set("find-result",!0)},"find:idle":function(){n.props.set("find-result",!1)}})}},reset:function(t){t.get("inplace")&&(t.listenTo(t.get("parent"),"folder:change folder-virtual:change",t.cancel),t.listenTo(t.get("parent").props,"change:folderview",t.cancel))},"enable-disable-toggle":function(t){t.get("inplace")&&t.listenTo(t.get("parent").treeView,"selection:action",function(n,u){var f=$(n[u]);f.hasClass("selected")||t.updateState(f.attr("data-id"))})},vgrid:function(t){if(t.get("inplace")){var n=t.get("parent").grid,u;!n||!n.addTemplate||(n.setAllRequest("search",function(){var f={sort:n.prop("sort"),order:n.prop("order")};return t.getSearchResult(f,!0).then(function(a){var b=a&&a.results?a.results:[];return b})}),n.setListRequest("search",function(f){var a=[f];return $.Deferred().resolveWith(t,a)}),t.on({"find:query":function(){n.setMode("search"),u=n.getEmptyMessage(),n.setEmptyMessage(function(){return F("No matching items found.")})},"find:idle":function(){n.getMode()!=="all"&&(n.setMode("all"),n.setEmptyMessage(u))}}))}},"listview-empty-message":function(t){if(t.get("parent").listView){var n=t.get("parent").listView.ref;v.point(n+"/notification/empty").extend({id:"search",index:100,draw:function(u){u.app.props.get("find-result")&&this.text(F("No matching items found."))}})}},"listview-empty-message-action":function(t){if(!(!t.get("parent").listView||t.isMandatory("folder"))){var n=t.get("parent").listView.ref;v.point(n+"/notification/empty").extend({id:"search-action",index:200,draw:function(u){if(u.app.props.get("find-result")){var f=u.app.get("find").model.manager;f.get("folder")&&f.get("folder").get("values").get("custom").getOption().id==="disabled"||this.append($('<button type="button" class="btn btn-link" data-action="search-button">').text(F("Search in all folders")).on("click",function(){f.activate("folder","custom","disabled"),require(["io.ox/metrics/main"],function(a){var b=u.app.get("name")||"unknown",p=_.last(b.split("/"));a.trackEvent({app:p,target:"list/empty/search/filter/folder",action:"remove"})})}))}}})}},listview:function(t){t.get("inplace")&&t.on("change:state",function(n,u){if(u==="launched"){var f=t.get("parent");
1f.listView&&require(["io.ox/core/api/collection-loader"],function(a){var b=t.view.model.manager,p=_.bind(b.getResponseCid,b),T=f.listView.loader,r="default",g=new a({module:t.getModuleParam()==="calendar"?"chronos":t.getModuleParam(),mode:"search",PRIMARY_PAGE_SIZE:T.PRIMARY_SEARCH_PAGE_SIZE||T.PRIMARY_PAGE_SIZE,SECONDARY_PAGE_SIZE:T.SECONDARY_SEARCH_PAGE_SIZE||T.SECONDARY_PAGE_SIZE,isBad:$.noop,fetch:function(c){var h=this,L=c.limit.split(","),s=parseInt(L[0],10),x=parseInt(L[1],10)-s;t.model.set({start:s,size:x,extra:1},{silent:!0});var C={sort:t.props.get("sort"),order:t.props.get("order")};return t.getSearchResult(C,!0).then(function(N){N=N||{};var I=N.results||[],P=N.request||{};if(h.collection.search={next:I.length!==0&&I.length===P.data.size},!I.length)return I;var B=I[0];return!B.original_folder_id||B.original_folder_id===B.folder_id||I.forEach(function(W){_.extend(W,{id:W.original_id||W.id,folder_id:W.original_folder_id||W.folder_id})}),I})},cid:p});f.listView.on("collection:load",function(){this.loader.mode==="search"&&g.collection&&(g.collection.expired=!0)}),t.trigger("collectionLoader:created",g);var l=function(){f.listView.connect(g),r="search"};t.on({"find:idle":function(){r==="search"&&(f.listView.connect(T),f.listView.load()),r="default"},"find:query":_.debounce(function(){f.listView.loader.mode!=="search"&&l(),f.listView.load()},10)})})}})},quit:function(t){t.get("inplace")&&t.listenTo(t.get("parent"),"quit",t.quit)},"window-standalone":function(t){if(!t.get("inplace")){var n;t.setWindow(n=ox.ui.createWindow({name:"io.ox/find",chromeless:!0})),n.show()}},"file-storages":function(t){var n=t.getModuleParam()==="files";if(!n)return t.set("storages",[]);require(["io.ox/core/api/filestorage"],function(u){u.rampup().then(function(){t.set("storages",u.getAccountsCache()),t.get("storages").on({change:$.noop,add:$.noop,remove:$.noop})})})}}),o.cancel=function(){this.view&&this.view.cancel()},o.updateState=function(t){o.trigger(w.isVirtual(t)?"view:disable":"view:enable")},o.getModule=function(){return o.get("parent").get("name")},o.getModuleParam=function(){return o.getModule().split("/")[1]},o.isActive=function(){return o.view?o.view.isActive():!1},o.isMandatory=function(t){var n=o.props.get("mandatory"),u=o.getModuleParam();return u==="files"&&(u="drive"),(n[t]||[]).indexOf(u)>=0},o.getFolderFacetValue=function(){if(o.isActive()){var t=_(o.model.manager.getRequest()).findWhere({facet:"folder"});return(t||{}).value}};function i(){var t=o.model,n=t.manager,u=o.getModuleParam()==="files";o.listenTo(n,{active:_.debounce(function(f){o.model.manager.isFolderOnly()&&(f=0),u&&o.model.manager.isAccountOnly()&&(f=0),o.trigger(f?"find:query":"find:idle")},10)}),o.listenTo(n,{"change:list-of-actives":_.debounce(function(f,a,b){require(["io.ox/metrics/main"],function(p){var T=o.get("parent").get("name")||"unknown",r=_.last(T.split("/")),g=b.get("facet").get("id").split(":")[0],l=f==="deactivate"||b.get("facet")&&b.get("facet").getValue().getOption().id==="disabled";p.trackEvent({app:r,target:"search/filter/"+g,action:l?"remove":"add"})})},10)}),o.listenTo(o.view,{cancel:function(){o.trigger("find:cancel")},show:function(){o.updateConfig()}})}o.prepare=function(){o.set("state","preparing"),o.mediate(),o.placeholder=new M({app:o});var t=o.get("parent").folder.get();o.updateState(t),o.listenToOnce(o.placeholder,"launch",o.launch),o.set("state","prepared")},o.getProxy=function(){var t;return function(){var n=$.Deferred();
1return t||(require(["io.ox/find/apiproxy"],function(u){t=n.resolve(u.init(o))}),n)}}(),o.getConfig=function(t){return o.getProxy().then(function(n){return n.config(t)})},o.getSuggestions=function(t){return o.get("state")!=="launched"?D:$.when(o.getProxy(),o.configReady).then(function(n){return n.search(t)})},o.getSearchResult=function(t,n){return o.get("state")!=="launched"?D:o.getProxy().then(function(u){return u.query(t,n)})};function e(){var t=o.get("parent");return $.when(t.folder.getData(),t.folder.isDefault()).then(function(n,u){var f=[],a=o.model.manager;if((!u||o.isMandatory("folder"))&&f.push({facet:"folder",filter:null,value:n.id}),o.isMandatory("account")&&!(a.findWhere({id:"account"})&&a.findWhere({id:"account"}).getActive().length)&&f.push({facet:"account",filter:null,value:n.account_id}),f.length)return{data:{facets:f}}})}return o.configReady=$.Deferred(),o.updateConfig=function(){e().then(o.getConfig).then(function(t){t=_.reject(t,function(n){return n.id==="contact"}),o.model.manager.update(t),o.trigger("find:config-updated"),o.configReady.resolve()},function(t){require(["io.ox/core/yell"],function(n){n(t)}),o.cancel()})},o.launch=function(){o.get("state")==="prepared"&&(o.set("state","launching"),o.placeholder&&(o.placeholder.destroy(),delete o.placeholder),require(["io.ox/find/bundle"],function(){require(["io.ox/find/model","io.ox/find/view"],function(t,n){o.model=new t({app:o}),o.view=new n({app:o,model:o.model}),i(),o.view.render(),o.set("state","launched"),ox.trigger("search:load",o)}),require(["io.ox/contacts/api"],function(t){t.on("refresh.all",function(){o.getProxy().done(function(n){n.resetCache()})})})}))},o};return{getApp:d,reuse:function(m){return ox.ui.App.reuse(y(m))||d(m)}}});define("io.ox/find/view-placeholder",["io.ox/backbone/views/disposable","gettext!io.ox/core"],function(M,w){"use strict";var v=M.extend({events:{focusin:"focused",keyup:"showSpinner"},initialize:function(S){var F=S.app.getWindow();this.setElement(F.nodes.sidepanel.find(".io-ox-find")),this.ui={field:this.$el.find(".search-field"),action:this.$el.find(".action-show")},this.options=S,this.listenTo(S.app,"view:disable",this.disable),this.listenTo(S.app,"view:enable",this.enable)},hideSpinner:function(){this.ui.action.idle()},showSpinner:function(){this.ui.action.busy({immediate:!0})},disable:function(){this.ui.field.prop("disabled")!==!0&&(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(w("Search function not supported in this folder")))},enable:function(){this.ui.field.prop("disabled")!==!1&&(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())}});return v});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(M,w,v,S,F,k,D,y,d,m,o,i,e,t){"use strict";var n=null,u=0,f=new S.SimpleCache("app-cache",!0);function a(r){var g=i.get("search/modules")||[];return r=r.replace(/^io\.ox\//,"").replace(/files/,"drive"),g.indexOf(r)>-1}var b=Backbone.Model.extend({defaults:{title:""},initialize:function(r){var g=this;this.options=r||{},this.guid=this.options.guid||u++,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 g}},getName:function(){return this.get("name")},setTitle:function(r){if(this.set("title",r),this.options.floating){this.getWindow().floating&&this.getWindow().floating.setTitle(r);return}return this},getTitle:function(){return this.get("title")},getWindow:$.noop,saveRestorePoint:$.noop,call:$.noop});ox.ui.AppPlaceholder=b;var p={LIMIT:265e3,length:function(r){return JSON.stringify(r).length},crop:function(r,g,l){var c=p.length,h=r[l],L=p.LIMIT<c(r)-c(h||"")+c(g);return L?(h?g=h:g.point.data={},!("exceeded"in g)&&g.module!=="io.ox/mail/compose"&&(F.yell("warning",e("Failed to automatically save current stage of work. Please save your work to avoid data loss in case the browser closes unexpectedly.")),g.exceeded=!0)):delete g.exceeded,g}};ox.ui.App=b.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;b.prototype.initialize.apply(this,arguments),this.set("uniqueID",_.now()+"."+String(Math.random()).substr(3,4));var g=$.proxy(this.saveRestorePoint,this);$(window).on("unload",g),this.disableRestorePointTimer||this.set("saveRestorePointTimer",setInterval(g,10*1e3)),this.folder=function(){var l=null,c,h=null,L=null,
1s,x=$.Deferred();return y.on("after:rename",function(C,N){h&&h.setTitle(N.title||"")}),c={initialized:x.promise(),unset:function(){l=null,_.url.hash("folder",null),h&&h.setTitle(""),L&&L.clear()},set:function(){function C(N,I,P,B,W){var z=_.url.hash("app")!==P;l=String(N),z||(h&&(h.setTitle(I.display_title||I.title||""),h.updateToolbar()),L&&L.prop("folder")!==l&&(L.busy().prop("folder",l),L.refresh(),y.reload(N)),_.url.hash("folder",l),r.trigger("folder:change",l,I,W)),B.resolve(I,z),x.state()!=="resolved"&&x.resolve(l,I)}return function(N,I){var P=$.Deferred();if(N!=null&&String(N)!==l){var B=_.url.hash("app"),W=y.pool.getModel(N),z=W.toJSON();W.has("title")?C(N,z,B,P,I):y.get(N).then(function(H){C(N,H,B,P,I)},function(){console.warn("Failed to change folder",N),P.reject()})}else String(N)===l?P.resolve(y.pool.getModel(N).toJSON(),!1):P.reject();return P}}(),setType:function(C){return s=C,this},setDefault:function(){return $.when().then(function(){var C=y.getDefaultFolder(s);return C?c.set(C):y.getExistingFolder(s).then(function(N){return c.set(N)},function(){return $.Deferred().reject({error:e("Could not get a default folder for this application.")})})})},isDefault:function(){return $.when().then(function(){var C=y.getDefaultFolder(s);return String(l)===String(C)})},get:function(){return l},getData:function(){if(l===null)return $.Deferred().resolve({});var C=y.pool.getModel(l);return $.Deferred().resolve(C.toJSON())},getModel:function(){return y.pool.getModel(l)},can:function(C){return l===null?$.when(!1):require(["io.ox/core/folder/api"]).then(function(N){return N.get(l).then(function(I){return N.can(C,I)})})},updateTitle:function(C){return h=C,this},updateGrid:function(C){return L=C,this},destroy:function(){c=h=L=null},handleErrors:function(){var C=_.debounce(function(P){var B=y.pool.getModel(r.folder.get());B&&y.list(B.get("folder_id"),{cache:!1}),r.folder.setDefault(),F.yell(P)},1e3,!0),N="(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)",I=new RegExp(N);return function(){r.listenTo(ox,"http:error",function(P,B){var W=B.params.folder||B.data.folder||P.folder||B.params.id;if(W===r.folder.get()&&!((P.code==="IMAP-1002"||P.code==="FLD-0008")&&y.isBeingDeleted(W))&&I.test(P.code)){if(/(IMAP-2041|IFO-0400|APP-0013|CON-0104|TSK-0023)/.test(P.code))return y.get(r.folder.get(),{cache:!1});C(P)}})}}()},c}()},setLauncher:function(r){return this.set("launch",r),this},setResume:function(r){return this.set("resume",r),this},setQuit:function(r){return this.set("quit",r),this},setWindow:function(r){if(this.set("window",r),r.app=this,this.options.floating){var g=this.options.floatingWindowModel||new w.Model(_.extend(_(this.options).pick("closable","displayStyle","size","taskbarIcon","title","name"),{win:r}));r.floating=new w.View({el:r.nodes.outer,model:g}).render(),r.floating.listenTo(g,"quit",function(){r.floating.$header.attr("disabled","disabled").find(".controls button").attr("disabled","disabled"),r.app.quit().done(function(){g.trigger("close")}).fail(function(){r.floating.$header.attr("disabled",!1).find(".controls button").attr("disabled",!1)})}),r.floating.listenTo(g,"change:active change:minimized",function(l){if(r.app.dropZone){var c=l.get("active")&&!l.get("minimized");if(!c&&r.app.dropZone.remove)return r.app.dropZone.remove();r.app.dropZone.include&&r.app.dropZone.include()}}),r.app.once("quit",function(){g.trigger("close")})}return this.has("name")&&r.nodes.outer.attr("data-app-name",this.get("name")),this},getWindow:function(){return this.get("window")},isFindSupported:function(){return a(this.getName())},initFind:function(){if(this.get("find"))return!0;var r=m.getApp({parent:this});return r.prepare(),this.set("find",r),r},getWindowNode:function(){return this.has("window")?this.get("window").nodes.main:$()},getWindowTitle:function(){return this.has("window")?this.get("window").getTitle():""},mediator:function(r){ox.ui.App.mediator(this.getName(),r)},mediate:function(){var r=this;return v.point(this.getName()+"/mediator").each(function(g){try{g.setup&&g.setup(r)}catch(l){console.error("mediate",g.id,l.message,l)}})},registerGlobalEventHandler:function(r,g,l){var c=$(r),h=this.getWindow();function L(){c.on(g,l)}function s(){c.off(g,l)}h.on({show:L,hide:s,quit:s}),h.state.visible&&L()},registerWindowResizeHandler:function(r){var g=this.getWindow();this.registerGlobalEventHandler(window,"resize",r),g.on("show",r),g.state.visible&&r()},setState:function(r){if(!(this.options.floating||this.options.plugged))for(var g in r)_.url.hash(g,r[g]!==null?String(r[g]):null)},getState:function(){return _.url.hash()},launch:function(r){var g=$.when(),l=this,c=this.getName();if(!this.options.floating&&!this.options.plugged&&(c!==_.url.hash("app")&&_.url.hash({folder:null,perspective:null,id:null}),c&&_.url.hash("app",c)),this.get("state")==="ready"){this.set("state","initializing"),ox.trigger("app:init",this),_.extend(this.options,r),c&&v.point(c+"/main").invoke("lau
1nch",this,this.options);try{var h=this.get("launch");g=h.call(this,this.options)||$.when()}catch(s){console.error("Error while launching application:",s.message,s,this)}g.then(function(){d.add(l),l.set("state","running"),l.trigger("launch",l),ox.trigger("app:start",l),l.get("closable")&&!l.get("floating")&&!_.device("smartphone")&&w.addNonFloatingApp(l,r)},function(){var x=require("settings!io.ox/core").get("autoStart");throw x!=="none"&&!t.has("guest")&&ox.launch(x),arguments})}else if(this.get("state")!=="initializing"&&this.has("window")){this.get("window").show(),this.trigger("resume",this),ox.trigger("app:resume",this),c&&v.point(c+"/main").invoke("resume",this,r);try{var L=this.get("resume");g=L.call(this,r)||$.when()}catch(s){console.error("Error while resuming application:",s.message,s,this)}$(window).trigger("resize.lazyload")}return g.then(function(){return $.Deferred().resolveWith(l,arguments)})},quit:function(r,g){var l=r?$.when():this.get("quit").call(this,g)||$.when(),c,h=this;return l.done(function(){r&&h.destroy&&h.destroy(),!h.floating&&h.getWindow()&&h.getWindow().state.visible&&(!_.url.hash("app")||h.getName()===_.url.hash("app").split(":",1)[0])&&_.url.hash({app:null,folder:null,perspective:null,id:null}),clearInterval(h.get("saveRestorePointTimer")),h.removeRestorePoint(),$(window).off("unload",$.proxy(h.saveRestorePoint,h)),h.folder.destroy(),h.has("window")&&(c=h.get("window"),c.trigger("quit"),ox.ui.windowManager.trigger("window.quit",c),c.destroy()),h.dropZone&&h.dropZone.remove&&h.dropZone.remove(),d.remove(h),h.trigger("quit"),ox.trigger("app:stop",h),h.set("state","stopped");for(var L in h)delete h[L];h=c=null})},saveRestorePoint:function(){var r=this,g=r.get("uniqueID");return this.failSave?this.get("name")==="io.ox/mail/compose"&&!i.get("features/storeMailSavePoints",!0)?$.when():ox.ui.App.getSavePoints().then(function(l){l=l||[];var c,h,L;try{c=r.failSave(),h=_(l).pluck("id"),L=_(h).indexOf(g),c&&(c.floating=r.get("floating"),c.id=g,c.cid=r.cid,c.timestamp=_.now(),c.version=ox.version,c.ua=navigator.userAgent,c=p.crop(l,c,L),L>-1?l.splice(L,1,c):l.push(c))}catch{L>-1&&(l.splice(L,1),delete r.failSave)}return l.length>0?ox.ui.App.setSavePoints(l):$.when()}):$.when()},removeRestorePoint:function(){var r=this.get("uniqueID");return ox.ui.App.removeRestorePoint(r)}});function T(){var r=typeof _.url.hash("restore")<"u"&&/^(0|false)$/i.test(_.url.hash("restore")),g=typeof _.url.hash("restore")<"u"&&/^(1|true)$/i.test(_.url.hash("restore"));return g||!r&&i.get("features/storeSavePoints",!0)}return _.extend(ox.ui.App,{mediator:function(r,g){var l=v.point(r+"/mediator"),c=0;_(g).each(function(h,L){l.extend({id:L,index:c+=100,setup:h})})},canRestore:function(){return this.getSavePoints().then(function(r){return r&&r.length>0})},cleanupSavepoints:function(){i.get("savepointCleanup",!1)||i.set("savepoints",[]).save().then(function(){i.set("savepointCleanup",ox.version).save()})},getSavePoints:function(){return T()?f.get("savepoints").then(function(r){r=r||[];var g=i.get("savepoints",[]).filter(function(l){return l.restoreById});return r=[].concat(r,g),_(r||[]).filter(function(l){var c="point"in l,h=l.ua===navigator.userAgent;return c&&(h||l.restoreById)})}):$.when([])},storeSavePoints:_.noop,setSavePoints:function(r){if(!T())return $.Deferred().resolve([]);r=r||[];var g=_(r).filter(function(l){return l.restoreById});return r=_(r).filter(function(l){return!l.restoreById}),i.set("savepoints",g),f.add("savepoints",r)},removeAllRestorePoints:function(){return this.setSavePoints([])},removeRestorePoint:function(){var r={};function g(c,h){var L=_(c).pluck("id"),s=_(L).indexOf(h);return c[s]}function l(c){_(r).each(function(h,L){g(c,L)||delete r[L]})}return function(c){var h=this;return r[c]=!0,this.getSavePoints().then(function(L){L=(L||[]).slice(),l(L);var s=_(L).pluck("id");return _(r).each(function(x,C){var N=_(s).indexOf(C),I=L[N];if(N>-1&&L.splice(N,1),I&&I.restoreById){var P=i.get("savepoints",[]);s=_(P).pluck("id"),N=_(s).indexOf(C),N>-1&&(P.splice(N,1),i.set("savepoints",P).save())}}),h.setSavePoints(L).then(function(){return L})})}}(),restore:function(){return this.cleanupSavepoints(),$.when(this.getSavePoints(),ox.rampup.compositionSpaces).then(function(r,g){return this.restoreLoad({list:r,spaces:g})}.bind(this))},restoreLoad:function(r){var g=this,l=r.list||[],c=r.spaces||[];
1return $.when.apply($,_([].concat(l,c)).map(function(h){if(!ox.registry.get(h.module))return!1;D.stop();var L=D.startAndEnhance(h.module,[ox.registry.get(h.module)]);return ox.load(L).then(function(s){var x=s.getApp(h.passPointOnGetApp?h.point:void 0);if(h.cid&&(x.cid=h.cid),_.device("!smartphone")&&(x.options.floating||x.options.closable)){var C,N;return x.options.floating?(C=new w.Model({cid:h.cid,minimized:!0,id:h.id,title:h.description,closable:!0,lazy:!0,taskbarIcon:x.options.taskbarIcon,name:x.options.name}),N=new w.TaskbarElement({model:C}).render(),w.collection.add(C)):(N=w.addNonFloatingApp(x,{lazyload:!0}),C=N.model),N.listenToOnce(C,"lazyload",function(){var P=h.id;if(h=_.clone(h),x.options.floating){C.set(_(x.options).pick("closable","displayStyle","size","taskbarIcon","title")),x.launch({floatingWindowModel:C}).then(function(){return h.id=this.get("uniqueID"),this.failRestore?this.failRestore(h.point):$.when()}).done(function(){g.removeRestorePoint(P).then(g.getSavePoints).then(function(B){B.push(h),h.keepOnRestore!==!1&&g.setSavePoints(B),C.get("quitAfterLaunch")&&C.trigger("quit")})}).fail(function(B){!B||B.code!=="MSG-0032"||_.delay(function(){ox.ui.App.removeRestorePoint(P),C.trigger("close")})});return}x.launch().then(function(){return h.id=this.get("uniqueID"),this.failRestore?this.failRestore(h.point):$.when()}).done(function(){g.removeRestorePoint(P).then(g.getSavePoints).then(function(B){B.push(h),g.setSavePoints(B)})})}),$.when()}var I=h.id;return x.launch().then(function(){if(h.id=this.get("uniqueID"),this.failRestore&&h.module==="io.ox/mail/compose")return x.set("title",h.description||x.get("title")),x.options.mobilelazyload=!0,x.on("mobilelazyload",function(){return h=_.clone(h),h.id=this.get("uniqueID"),this.failRestore(h.point).then(function(){x.set("restored",!0),delete x.options.mobilelazyload,x.launch()})});if(this.failRestore)return this.failRestore(h.point).then(function(){x.set("restored",!0)})}).fail(function(P){!P||P.code!=="MSG-0032"||_.delay(function(){ox.ui.App.removeRestorePoint(I)})})})})).done(function(){g.setSavePoints(l)})},get:function(r){return d.where({name:r})},getByCid:function(r){return d.get(r)},reuse:function(r){var g=ox.ui.apps.find(function(c){return c.cid===r});if(g){if(g.get("state")==="ready"){var l=w.collection.findWhere({cid:r});if(l)return l.trigger("lazyload"),!0}return g.launch(),!0}return!1},isCurrent:function(r){var g=ox.ui.App.getCurrentApp();return!!(g&&g.get("name")===(_.isString(r)?r:r.model.get("name")))},getCurrentApp:function(){return n!==null?n.app:null},getCurrentFloatingApp:function(){return _.chain(ox.ui.apps.pluck("window")).compact().map(function(r){return r.floating&&r.floating.model&&r.floating.model.get("active")?r.app:void 0}).compact().first().value()},getCurrentWindow:function(){return n}}),$("#io-ox-core").show(),window.onbeforeunload=function(){var r=d.some(function(g){return _.isFunction(g.hasUnsavedChanges)&&g.hasUnsavedChanges()});if(ox.trigger("beforeunload",r),r)return e("There are unsaved changes.")},ox.ui.createApp=function(r){if(k.visible(r.requires)&&_.device(r.device))return d.add(new ox.ui.App(r))},ox.ui.screens=function(){var r=null,g={add:function(l){return $("<div>",{id:"io-ox-"+l}).addClass("abs").hide().appendTo("#io-ox-screens")},get:function(l){return $("#io-ox-screens").find("#io-ox-"+l)},current:function(){return r},hide:function(l){this.get(l).hide(),this.trigger("hide-"+l)},show:function(l){$("#io-ox-screens").children().each(function(){var c=$(this).attr("id"),h=String(c||"").substr(6);h!==l&&h!=="ad-skyscraper"&&g.hide(h)}),this.get(l).show(),r=l,this.trigger("show-"+l)}};return M.extend(g),g}(),ox.ui.Perspective=function(){var r=function(l){this.main=$(),this.name=l,this.rendered=!1,this.render=$.noop,this.save=$.noop,this.restore=$.noop,this.afterShow=$.noop,this.afterHide=$.noop,this.show=function(c,h){var L=c.getWindow(),s=h.animation?{animation:h.animation}:{},x=this,C=h.perspective.split(":")[0];h.disableAnimations&&(s.disableAnimations=!0),h.perspective!==L.currentPerspective&&(this.main=c.pages.getPage(C),c.pages.getPageObject(C).perspective||(c.pages.getPageObject(C).perspective=this),L.addPerspective(this),L.currentPerspective!=="main"?L.trigger("change:perspective",l,h.perspective):L.trigger("change:initialPerspective",l),_.url.hash("perspective",h.perspective),this.rendered||(this.render(c,h),this.rendered=!0),c.pages.getPage(C).one("pageshow",function(){x.afterShow(c,h),L.currentPerspective=h.perspective,L.updateToolbar()}),c.pages.getCurrentPage().name===C&&(this.afterShow(c,h),L.currentPerspective=h.perspective,L.updateToolbar()),c.pages.changePage(C,s))},this.hide=function(){this.afterHide()}};function g(l,c,h,L){var s=l.getWindow().getPerspective();s&&_.isFunction(s.save)&&s.save(),h&&(h.show(l,_.extend({perspective:c}
1,L)),_.isFunction(h.restore)&&h.restore())}return r.show=function(l,c,h){return require([l.get("name")+"/"+c.split(":")[0]+"/perspective"],function(L){g(l,c,L,h)})},r}(),ox.ui.windowManager=function(){var r=M.extend({}),g=[],l=function(){return _(g).inject(function(c,h){return c+(h.state.open?1:0)},0)};return r.getWindows=function(){return g.slice()},ox.ui.screens.on("hide-windowmanager",function(){n&&n.hide()}),r.hide=function(){ox.ui.screens.hide("windowmanager")},r.show=function(){ox.ui.screens.show("windowmanager")},r.on("window.open window.show",function(c,h){if(this.show(),g=_(g).without(h),h.options.floating?h.nodes.body.attr("role","region"):(_(g).each(function(s){s.nodes.body.removeAttr("role")}),h.options.name!=="io.ox/settings"&&h.nodes.body.attr("role","main")),g.unshift(h),g.length>1){var L=_(g).map(function(s){return s.name});f.add("windows",L||[])}}),r.on("window.beforeshow",function(){r.trigger("empty",!1)}),r.on("window.close window.quit window.pre-quit",function(c,h,L){L||(L=c.type+"."+c.namespace);var s=_(g).indexOf(h),x,C,N;if(s!==-1){for(L==="window.quit"?g.splice(s,1):(L==="window.close"||L==="window.pre-quit")&&(g=_(g).without(h),g.push(h)),x=0,C=g.length;x<C;x++)if(N=g[x],N!==h&&N.state.open&&!N.floating){N.resume();break}f.get("windows").done(function(P){var B=_.indexOf(P,h.name);B>-1&&(P.splice(B,1),f.add("windows",P||[]))})}var I=l()===0;I?f.get("windows").done(function(P){r.trigger("empty",!0,P&&P[1]||null)}):r.trigger("empty",!1)}),r}(),ox.ui.createWindow=function(){var r=0,g=$("#io-ox-windowmanager-pane"),l=function(c){this.options=c||{},this.id=c.id,this.name=c.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=c.page;var h=this.page?this.page:g,L=!1,s={},x=this,C=!0,N=$.Deferred(),I=this.name;this.updateToolbar=function(){var z=this.app&&this.app.folder?this.app.folder.get():null,R=v.Baton({window:this,$:this.nodes,app:this.app,folder:z});v.point(I+"/toolbar").invoke("draw",this.nodes.toolbar.empty(),R)},v.point(I+"/window-title").extend({id:"default",draw:function(){return $('<h1 class="window-title">').append(v.point(I+"/window-title-label").invoke("draw",this).first().value()||$())}}),v.point(I+"/window-title-label").extend({id:"default",draw:function(){return $('<span class="window-title-label">')}}),v.point(I+"/window-body").extend({id:"default",draw:function(){return this.body.append(this.main=$('<div class="abs window-content">'))}}),this.shown=N.promise();function P(z){var R=$('<div style="width: 100px; visibility: hidden; overflow-y: scroll;">').appendTo("body"),H=100-R[0].clientWidth;R.remove(),z.css("padding-right",H)}this.setHeader=function(z,R){return R=R||(_.device("!desktop")?"top":i.get("features/windowHeaderPosition","bottom")),R==="top"?(this.nodes.header.append(z.addClass("container")),this.nodes.outer.addClass("header-top")):(this.nodes.footer.append(z.addClass("container")),this.nodes.outer.addClass("header-bottom")),P(this.nodes.header),this.nodes.header},this.resume=function(){this.show(_.noop,!0)},this.show=function(z,R){if(this.app&&this.app.get("startHidden"))return this.app.once("revealApp",function(){x.app.set("startHidden",!1),x.app.get("prefetchDom")&&x.nodes.outer.removeAttr("aria-hidden").css("visibility",""),x.show(z,!0)}),this.app.get("prefetchDom")&&(this.nodes.outer.attr("aria-hidden",!0).css("visibility","hidden"),this.nodes.outer.prependTo(h)),this;var H=!1,K=this.app&&this.app.options.plugged;!this.floating&&!this.app.options.mobilelazyload&&!K&&n&&_.url.hash("app")&&x.name!==_.url.hash("app").split(":",1)[0]&&(H=!0),ox.trigger("change:document:title",this.app.get("title"));var ee=this.nodes.outer,ne=ee.parent();if((!H||R)&&x&&(n!==this||ne.length===0)){if(ee.parent().length===0&&(this.floating?this.floating.open(!0):this.simple?(ee.insertAfter("#io-ox-appcontrol"),document.body.style.setProperty("overflow-y","auto","important")):ee.appendTo(h)),ox.ui.windowManager.trigger("window.beforeshow",x),this.trigger("beforeshow"),this.updateToolbar(),!this.floating&&!K&&(!_.url.hash("app")||x.app.getName()!==_.url.hash("app").split(":",1)[0])&&_.url.hash("app",x.app.getName()),ee.show(),x===null)return;!this.floating&&n&&n!==x&&!this.page&&n.hide(),!this.floating&&!K&&(n=x),_.call(z),x.state.visible=!0,x.state.open=!0,x.trigger("show"),C&&(N.resolve(),x.trigger("show:initial"),x.trigger("open"),x.state.running=!0,ox.ui.windowManager.trigger("window.open",x),ox.trigger("app:ready",x.app),C=!1),ox.ui.windowManager.trigger("window.show",x),d.trigger("resume",x.app)}else _.call(z);return this},this.hide=function(){if(!this.floating)return this.trigger?(this.trigger("beforehide"),this.simple||this.detachable&&this.nodes.outer.find("iframe").length===0?(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),n===this&&(n=null),this):this},this.toggle=function(){return n===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 z=this;return this.trigger?(L&&this.app!==null?(this.trigger("beforequit"),this.app.quit().done(function(){z.state.open=!1,z.state.running=!1,z=null})):(this.hide(),this.state.open=!1,this.trigger("close"),ox.ui.windowManager.trigger("window.close",this)),this):this};
1var B='input:not([type="file"], [type="hidden"]), select, textarea, button';this.busy=function(z,R,H){var K;return x&&(K=x.nodes.blocker,$("body").focus(),x.nodes.disabled=x.nodes.disabled.add(x.nodes.main.find(B).not(":disabled").prop("disabled",!0)),_.isNumber(z)?(z=Math.max(0,Math.min(z,1)),K.idle().find(".progress-bar").eq(0).css("width",z*100+"%").parent().show(),_.isNumber(R)?K.find(".progress-bar").eq(1).css("width",R*100+"%").parent().show():_.isString(R)&&K.find(".footer").text(R),K.show()):(K.find(".progress").hide(),K.busy().show()),_.isFunction(H)&&H.call(K),x.trigger("busy")),this},this.idle=function(){return x&&(x.nodes.blocker.find(".progress").hide().end().idle().hide().find(".header, .footer").empty(),x.nodes.disabled.prop("disabled",!1),x.nodes.disabled=$(),x.trigger("idle")),this},this.destroy=function(){return this.hide(),this.trigger("destroy"),this.app!==null&&(this.app.win=null,this.app=null),this.events.destroy(),this.show=this.busy=this.idle=$.noop,this.nodes.outer.remove(),this.nodes=x=null,this},this.setQuitOnClose=function(z){return L=!!z,this};var W="";this.getTitle=function(){return W},this.setTitle=function(z){return ox.trigger("change:document:title",[z,this.app.get("title")]),this},this.addClass=function(){var z=this.nodes.outer;return z.addClass.apply(z,arguments)},this.addButton=function(z){var R=$.extend({label:"Action",action:$.noop},z||{});return $("<div>").addClass("io-ox-toolbar-link").text(String(R.label)).on("click",R.action).appendTo(this.nodes.toolbar)},this.addPerspective=function(z){s[z.name]||(s[z.name]=z)},this.getPerspective=function(){var z=this.currentPerspective.split(":")[0];return s[z]},this.currentPerspective="main",this.setChromeless=function(z){z?(this.nodes.outer.addClass("chromeless-window"),this.nodes.body.css("left","0px")):(this.nodes.outer.removeClass("chromeless-window"),this.nodes.body.css("left",""))}};return function(c){var h=$.extend({chromeless:!1,classic:!1,id:"window-"+r,name:"",title:"",toolbar:!1,width:0,floating:!1},c),L=(String(h.width).match(/^(\d+)(px|%)$/)||["","100","%"]).splice(1),s=L[0],x=L[1],C=new l(h);return C.nodes.outer=$('<div class="window-container">').attr({id:h.id,"data-window-nr":r}),h.simple?(C.simple=!0,C.nodes.outer.addClass("simple-window").append(C.nodes.main=$('<div class="window-content" tabindex="-1">')),C.nodes.blocker=$(),C.nodes.head=$(),C.nodes.body=$()):(C.nodes.outer.append($('<div class="window-container-center">').data({width:s+x}).css({width:s+x}).append(C.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">')),C.nodes.header=$('<div class="window-header">'),C.nodes.sidepanel=$('<div class="window-sidepanel collapsed">'),C.nodes.body=$('<div class="window-body">'),C.nodes.footer=$('<div class="window-footer">')).on("controller:quit",function(){C.app&&C.app.quit()})),h.classic&&C.nodes.outer.addClass("classic"),h.name&&C.nodes.outer.addClass(h.name.replace(/[./]/g,"-")+"-window"),v.point(h.name+"/window-body").invoke("draw",C.nodes)),M.extend(C),h.search&&console.warn("search is deprecated with 7.6.0. Please use io.ox/find instead"),h.facetedsearch&&console.warn("io.ox/search is deprecated with 7.8.0. Please use io.ox/find instead"),h.find&&a(h.name)&&(v.point("io.ox/find/view").extend({id:"view",index:100,draw:function(N){N.$.viewnode=$('<div class="generic-toolbar top io-ox-find" role="search">'),this.nodes.sidepanel.append(N.$.viewnode).addClass("top-toolbar")}}),v.point("io.ox/find/view").extend({id:"subviews",index:200,draw:function(N){N.$.viewnode.append($('<div class="sr-only arialive" role="status" aria-live="polite">'),N.$.box=$('<form class="search-box">'),N.$.boxfilter=$('<div class="search-box-filter">'))}}),v.point("io.ox/find/view").extend({id:"form",index:300,draw:function(N){var I={"io.ox/mail":e("Type keywords to search for mails"),"io.ox/calendar":e("Type keywords to search for appointments"),"io.ox/tasks":e("Type keywords to search for tasks"),"io.ox/contacts":e("Type keywords to search for contacts"),"io.ox/files":e("Type keywords to search for files")};_.extend(N.data,{label:ox.locale==="ja_JP"?I[this.name]||e("Type keywords to search"):e("Search"),id:_.uniqueId("search"),inputId:_.uniqueId("search-input")});var P={placeholder:e("Search")+"...",id:N.data.inputId};ox.locale!=="ja_JP"&&(P["aria-labelledby"]=N.data.id),N.$.group=$('<div class="form-group has-feedback">').append(ox.locale==="ja_JP"?$('<label class="control-label" for="">').attr("for",N.data.inputId).text(N.data.label):"",$('<input type="text" class="form-control has-feedback search-field tokenfield-placeholder f6-target">').attr(P)),N.$.box.append(N.$.group)}}),v.point("io.ox/find/view").extend({id:"buttons",index:400,draw:function(N){N.$.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":e("Start search"),"aria-label":e("Start search"),id:N.data.id}).append($.icon("fa-search")).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":e("Cancel search"),"aria-label":e("Cancel search")}).append($.icon("fa-times-circle")).tooltip())}}),v.point("io.ox/find/view").invoke("draw",C,v.Baton.ensure({}))),h.chromeless&&C.setChromeless(!0),r++,C}}(),ox.load=function(){var r,g=$("#background-loader"),l,c;function h(){var x=setTimeout(function(){ox.busy(!0),l=setTimeout(function(){if(!g[0].firstChild){var C=$('<button type="button" class="btn btn-primary">').text(e("Cancel")).fadeIn();C.on("click",function(){r.reject(!0),L(x)}),g.append(C),C.focus()}},5e3)},1e3);return x}function L(x){clearTimeout(x),clearTimeout(l),x=null,l=null,setTimeout(function(){x===null&&ox.idle()},0)}function s(x){c.always(function(){L(x)})}return function(x,C){if(assert(arguments.length<=1||arguments.length===2&&!_.isFunction(C),"ox.load does not support callback params."),/\.(\n)*\./.test(decodeURI(x)))throw console.error("module names must not contain relative paths"),new Error("module names must not contain relative paths");r=$.Deferred(),c=C&&C.launched?C.launched:$.Deferred().resolve(),g.hasClass("secure")||ox.busy();var N=h();return require(x).always(s(N)).then(r.resolve,function(P){if(console.error(P),r.reject(!1),_.isArray(x))for(var B=0;B<x.length;B++)requirejs.undef(x[B])}),r}}(),ox.ui.apps.EditApps=["io.ox/calendar/edit/main","io.ox/contacts/edit/main","io.ox/contacts/distrib/main","io.ox/tasks/edit/main"],ox.launch=function(r,g){var l=$.Deferred(),c=Date.now();if(_.isString(r)){if(ox.ui.apps.pluck("path").concat(ox.ui.apps.EditApps).indexOf(r)<0)return l.reject();D.stop();var h=D.startAndEnhance(r.replace(/\/main$/,""),[r]);ox.load(h,g).then(function(L){if(!L||!L.getApp){console.error("Couldn't launch app",r,L),l.resolve({});return}L.getApp(g).launch(g).done(function(){l.resolveWith(this,arguments),ox.trigger("loadtime",{app:this,id:r,loadStart:c,loadEnd:Date.now()})})},function(){F.yell("error",e("Failed to start application. Maybe you have connection problems. Please try again.")),requirejs.undef(r)})}else l.resolve({});return l},d.on("resume",function(r){D.stop(),D.listen(r.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(M,w,v,S){"use strict";var F=["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"];ox.debug&&F.push("io.ox/notes"),_.device("smartphone")&&F.push("io.ox/search");
1function k(m){return m&&!this.blacklist[m.id]}var D=Backbone.Model.extend({constructor:function(o,i){Backbone.Model.call(this,{id:o},i)}}),y=Backbone.Collection.extend({model:D}),d=Backbone.Collection.extend({initialize:function(){if(this.blacklist=_.reduce(S.get("apps/blacklist","").split(","),function(o,i){return o[i]=!0,o},{}),this.launcher=new y(F),S.contains("apps/list")){var m=S.get("apps/list").split(",");_.device("smartphone")&&!_(m).contains("io.ox/search")&&m.push("io.ox/search"),this._launcher=new y(m)}else this._launcher=this.launcher;this._launcher.on("all",function(){var o=Array.prototype.slice.call(arguments);o[0]="launcher:"+o[0],this.trigger.apply(this,o)},this)},getByCID:function(m){return _.findWhere(this.models,{cid:m})},forLauncher:function(){return _.filter(this._launcher.map(this.get.bind(this)),k,this)}});return ox.ui.apps=new d,ox.ui.apps});define("io.ox/core/yell",["gettext!io.ox/core"],function(M){"use strict";var w=/^(busy|error|info|success|warning|screenreader)$/,v={busy:1e4,error:3e4,info:1e4,success:4e3,warning:1e4,screenreader:5e3},S={error:"Error",info:"Info",success:"Success",warning:"Warning"},F={busy:"fa fa-refresh fa-spin",error:"fa fa-exclamation",info:"fa fa-exclamation",success:"fa fa-check",warning:"fa fa-exclamation"},k=null;function D(t,n){var u,f,a=n;this.pause=function(){window.clearTimeout(u),a-=new Date-f},this.resume=function(){f=new Date,window.clearTimeout(u),u=window.setTimeout(t,a)},this.clear=function(){window.clearTimeout(u)},this.resume()}function y(){k&&k.clear(),$(".io-ox-alert").trigger("notification:removed").remove(),$("body").off(".yell")}function d(t){var n=$(".io-ox-alert");if(n.length!==0){if(_.device("smartphone"))return y();if(t.type==="keydown")return($(t.target).closest(".close").length||t.which===27)&&(t.which===13||t.which===32||t.which===27)?y():void 0;if(!$.contains(n.get(0),t.target)||$(t.target).closest(".close").length)return y()}}function m(){k&&k.pause()}function o(){k&&k.resume()}function i(t){var n=$("#sr-alert-text").removeAttr("role").attr("role","alert"),u=$.txt(t);n.contents().filter(function(){return this.nodeType===3}).remove(),$("#io-ox-alert-screenreader").css("clip","auto"),n.append(u).hide().css("display","inline")}function e(t,n,u){if(t==="destroy"||t==="close")return y();var f={duration:0,focus:!1,type:"info",closeOnClick:!0},a=!1,b={warnings:[]};if(_.isObject(t))if("error"in t)if(ox.trigger("yell:error",t),t.categories==="CONFLICT"&&(t.code==="FILE_STORAGE-0045"||t.code==="FLD-1038"))a=!0,f.type="error",b.title||(b.title=t.error),b.warnings.push(t.warnings.error);else{if(t.handled===!0)return;f.type="error",f.message=t.message||t.error,f.headline=M("Error")}else f=_.extend(f,t);else f.type=t||"info",f.message=n,f.focus=u;if(w.test(f.type)){var p=[];if(f.type==="screenreader")return i(f.message);
1if(a)require(["io.ox/core/tk/filestorageUtil"],function(c){c.displayConflicts(b)});else{if(!f.message)return;k&&k.clear(),k=f.duration===-1?null:new D(y,f.duration||v[f.type]||5e3),p=$(".io-ox-alert"),$("body").off(".yell"),f.closeOnClick&&_.defer(function(){$("body").on(_.device("touch")?"tap.yell":"mousedown.yell keydown.yell",d)});var T=$('<div tabindex="-1" class="io-ox-alert">').addClass("io-ox-alert-"+f.type),r,g,l;return f.message instanceof $?(r=f.message,l=r.text()):(r=$.parseHTML(_.escape(f.message).replace(/\n/g,"<br>")),l=f.message),g=l.indexOf("http")>=0?"break-all":"normal",p.length&&(T.addClass("appear"),p.trigger("notification:removed"),p.remove()),T.append($('<div class="icon">').append($('<i aria-hidden="true">').addClass(F[f.type]||"fa fa-fw"))).mouseover(m).mouseout(o),_.defer(function(){T.append($('<div role="alert" aria-live="polite" class="message user-select-text">').append(S[f.type]&&f.headline&&f.type!==f.headline.toLowerCase()?$('<span class="sr-only">').text(M(S[f.type])):[],f.headline?$('<h2 class="headline">').text(f.headline):[],$("<div>").css("word-break",g).append(r)))}),f.closeOnClick&&T.append($('<button type="button" class="btn btn-link close">').attr("title",M("Close this notification")).append($('<i class="fa fa-times" aria-hidden="true">'))),$(document.body).hasClass("modal-open")||$(".wizard-container").length>0?$(document.body).append(T):$("#io-ox-core").append(T),setTimeout(function(){T.trigger("notification:appear").addClass("appear"),f.focus&&T.attr("tabindex",0).focus()},_.device("touch")?300:2),T}}}return e.done=function(){e("success",M("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(M,w,v,S,F,k,D,y){"use strict";var d=Backbone.Model.extend({defaults:{subviews:{},sidepopup:null,markedForRedraw:{},count:0}}),m=Backbone.View.extend({tagName:"a",className:"dropdown-toggle",initialize:function(){var i=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 w({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(){i.closeSidepopup(),i.model.get("count")===0&&$("#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(i){i.preventDefault(),i.stopPropagation()},registerSubview:function(i){var e=this.model.get("subviews"),t=this;return e[i.model.get("id")]||(e[i.model.get("id")]=i,this.model.get("markedForRedraw")[i.model.get("id")]=!0,i.collection.on("add reset remove",function(n){n.subviewId||(n=n.collection),t.model.set("count",_(e).reduce(function(u,f){return u+f.collection.length},0)),t.model.get("markedForRedraw")[n.subviewId]=!0,t.delayedRender()}),i.on("responsive-remove",function(){var n=_(e).reduce(function(a,b){return a+b.collection.length},0),u=Math.min(n,99),f=parseInt(t.$el.find(".number").text(),10);if(t.model.set("count",n),u!==f){if(n===0)return t.render();t.$el.attr("title",D.ngettext("%1$d notification.","%1$d notifications.",n,n)).find(".number").text(u+(n>100?"+":""))}}),i.on("autoopen",_.bind(function(){t.render(),t.dropdown.open()},t)),t.delayedRender()),i},render:function(){var i=this,e=this.model.get("subviews"),t=this.model.get("count"),n=Math.min(t,99),u=this.model.get("markedForRedraw");return this.$el.attr("title",D.ngettext("%1$d notification.","%1$d notifications.",t,t)).find(".number").text(n+(t>100?"+":"")),this.model.set("markedForRedraw",{}),i.listNode.find(".no-news-message,.notification-area-header,.desktop-notification-info").remove(),_(u).each(function(f,a){f&&e[a].render(i.listNode)}),i.listNode.css({"max-height":_.device("smartphone")?"none":$("#io-ox-screens").height()-5}),this.listNode.children(".notifications").length===0?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(this.model.get("count")!==0),this.model.get("count")===0&&this.dropdown.close()},drawNotificationInfo:function(){if(S.getPermissionStatus()==="default"&&k.get("showDesktopNotifications",!0)!==!1&&!this.handledNotificationInfo){var i=this,e=$("<div>").text(D("Would you like to enable desktop notifications?")),t=$('<button type="button" class="later-button btn btn-warning">').text(D("Later")).on("click",function(b){b.stopPropagation(),f()}),n=$('<button type="button" class="disable-button btn btn-danger">').text(D("Never")).on("click",function(b){k.set("showDesktopNotifications",!1).save(),b.stopPropagation(),f()}),u=$('<button type="button" class="enable-button btn btn-success">').text(D("Decide now")).on("click",function(b){b.stopPropagation(),S.requestPermission(function(p){p==="granted"?k.set("showDesktopNotifications",!0).save():p==="denied"&&k.set("showDesktopNotifications",!1).save()}),f()}),f=function(){e.text(D("You can manage desktop notifications at any time, by visiting your settings")).on("click",function(){var b={id:"io.ox/core"};
1ox.launch("io.ox/settings/main",b).done(function(){this.setSettingsPane(b)})}),a.addClass("clickable"),t.remove(),u.remove(),n.remove(),i.dropdown.$el.one("hidden.bs.dropdown",function(){a.remove()})},a=$('<div class="desktop-notification-info clearfix">').append(e,$('<div class="button-wrapper">').append(u,n,t));this.listNode.prepend(a)}},openSidepopup:function(i,e,t,n){var u=this,f=function(){require(["io.ox/core/tk/dialogs"],function(a){u.sidepopupNode.attr("data-cid",i).appendTo(_.device("smartphone")?"body":"#io-ox-windowmanager-pane"),u.dropdown.forceOpen(!0);var b=$.Event("click",{target:u.sidepopupNode.empty()}),p=new a.SidePopup({arrow:!1,side:"left",focus:!1}).setTarget(u.sidepopupNode.empty()).show(b,function(T){var r=T.closest(".io-ox-sidepopup");_.device("smartphone")||r.css({right:$("#io-ox-windowmanager-pane").innerWidth()-u.dropdown.$el.position().left+u.dropdown.$ul.outerWidth()-34+"px"}),r.addClass("io-ox-notifications-sidepopup first");var g=function(l){if(l=l&&l.get?l.attributes:l,e.View){var c=new e.View({data:l},n);T.idle().append(c.render().expand().$el.addClass("no-padding"))}else T.idle().append(e.draw({data:l},n).addClass("no-padding"));return l};t.then?(T.busy(),t.then(g)):g(t)});u.model.set("sidepopup",p),p.on("close",$.proxy(u.onCloseSidepopup,u))})};u.model.get("sidepopup")&&u.sidepopupIsClosing?u.model.get("sidepopup").one("close",f):f()},onKeydown:function(i){var e=[],t=null;switch(i.which){case 37:case 38:e=this.listNode.find(".item"),t=$(i.target).closest(".item",this.listNode);var n=e.length-1;t.length&&(n=(_(e).indexOf(t[0])-1+e.length)%e.length),e[n].focus();break;case 39:case 40:e=this.listNode.find(".item"),t=$(i.target).closest(".item",this.listNode);var u=0;t.length&&(u=(_(e).indexOf(t[0])+1)%e.length),e[u].focus();break;case 9:e=y.getTabbable(this.listNode),i.shiftKey&&e[0]===i.target&&(i.preventDefault(),e[e.length-1].focus()),!i.shiftKey&&e.length&&e[e.length-1]===i.target&&(i.preventDefault(),e[0].focus());break}e=null},focusHover:function(i){this.listNode.find(".item").removeClass("has-focus"),$(i.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 i=this,e=this.model.get("sidepopup");e&&(e.off("close"),i.sidepopupNode.attr("data-cid",null).detach()),this.model.set("sidepopup",null)},hideAll:function(){_(this.model.get("subviews")).each(function(i){i.hideAll(k.get("notificationsHidingTimer",18e5))})},closeSidepopup:function(){this.model.get("sidepopup")&&(this.sidepopupIsClosing=!0,this.model.get("sidepopup").close())},attach:function(i,e){var t=this;return this.drawNotificationInfo(),setTimeout(function(){ox.manifests.loadPluginsFor("io.ox/core/notifications").done(function(){M.point("io.ox/core/notifications/register").invoke("register",t,t)}),t.listNode.css({top:t.listNode.css("top")+$("#io-ox-appcontrol")[0].offsetTop,left:t.listNode.css("left")+window.outerWidth-$("#io-ox-appcontrol").outerWidth()})},e||5e3),this.render(),this.dropdown.render().$el},yell:v}),o=new m({model:new d});return o});define("io.ox/core/commons",["io.ox/core/extensions","gettext!io.ox/core","io.ox/core/folder/api","io.ox/core/api/account","
1io.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(M,w,v,S,F,k,D,y,d){"use strict";var m={showWindow:function(e){return function(){var t=$.Deferred();return e.show(t.resolve),t}},simpleMultiSelection:function(e,t,n){var u=t.length;if(!(u<=1)){var f=w.ngettext("%1$s item selected","%1$s items selected",u),a=_.noI18n.assemble(f,function(){return $('<span class="number">').text(_.noI18n(u))},$.txt);e.idle().empty().append($('<div class="io-ox-center multi-selection-message">').append($('<div class="message" id="'+n.multiselectId+'">').append(a)))}},wireGridAndSelectionChange:function(e,t,n,u,f){var a="",b;e.selection.on("change",function(p,T){var r=T.length,g=JSON.stringify(_([].concat(T)).map(function(h){return{folder_id:String(h.folder_id||h.folder),id:String(h.id),recurrence_position:String(h.recurrence_position||0)}}));function l(){var h=u.parent();r<=1&&b?h.attr("aria-label",_.escape(b)):r>1&&(b=b||h.attr("aria-label"),h.attr("aria-label",w("Selection Details")))}if(g!==a){if(r===1)u.css("height",""),n(T[0]);else if(r>1)n.cancel&&n.cancel(),u.css("height","100%"),m.simpleMultiSelection(u,this.unique(this.unfold()),e);else if(n.cancel&&n.cancel(),u.css("height","100%").idle().empty().append($('<div class="io-ox-center">').append($('<div class="io-ox-multi-selection">').append($('<div class="summary empty">').text(w("No elements selected"))))),_.device("smartphone")){var c=u.closest(".vsplit");c.hasClass("vsplit-reverse")||c.find(".rightside-navbar a>i").last().trigger("click")}l(),a=g}}),f&&f.on("change:id",function(p,T,r){var g=e.selection.get();g.length&&g[0].id===r&&e.selection.set({id:T.id,folder_id:T.folder_id})})},wireGridAndAPI:function(e,t,n,u){e.setAllRequest(function(){return t[n||"getAll"]({folder:this.prop("folder")})}),e.setListRequest(function(f){return t[u||"getList"](f)}),t.on("beforedelete",function(f,a){e.selection.removeFromIndex(a);var b=e.selection.get(),p;b.length>0&&(_.device("smartphone")?e.selection.clear(!0):(p=e.selection.getIndex(b[0]),e.selection.clear(!0).selectIndex(p+1),e.getIds().length===b.length&&e.selection.trigger("change",[])))})},wireGridAndWindow:function(e,t){var n=0,u=function(){e.keyboard(!0),e.selection.get().length&&e.selection.retriggerUnlessEmpty()};e.setApp(t.app),t.on("show idle",u).on("hide busy",function(){e.keyboard(!1)}).on("beforeshow",function(){n!==null&&e.scrollTop(n)}).on("beforehide",function(){n=e.scrollTop()}),t.app&&(t.app.getGrid=function(){return e}),t.state.visible&&u()},addGridToolbarFolder:function(e,t){M.point(e.get("name")+"/vgrid/toolbar").extend({id:"info",index:200,draw:function(){this.append($('<div class="grid-info">'))}});function n(){var a=e.getWindow&&e.getWindow().state.visible;return a?t.getToolbar().find(".grid-info"):$()}function u(a){if(a){var b=n();b.empty().attr("data-folder-id",a).append($('<span class="folder-name">'),$.txt(" "),$('<span class="folder-count">')),v.get(a).done(function(T){var r=!v.supports("count_total",T),g=r?t.getIds().length:T.total,l=t.getToolbar().find('[data-folder-id="'+a+'"]');t.meta={total:g,title:T.title},t.trigger("meta:update"),l.find(".folder-name").text(T.title),g>0&&l.find(".folder-count").text("("+g+")")})}}function f(){var a=t.prop("folder"),b=t.getMode();if(b==="all")u(a);else if(b==="search"){var p=n();p.find(".folder-name").text(w("Results")),p.find(".folder-count").text("("+t.getIds().length+")")}}t.on("change:prop:folder change:mode change:ids",f),v.on("after:rename",f),v.on("update:total",function(a){a===e.folder.get()&&u(a)}),M.point(e.get("name")+"/vgrid/toolbar").invoke("draw",t.getToolbar()),$.when(e.folder.initialized,e.getWindow().shown).done(function(a){u(a[0])})},wireFirstRefresh:function(e,t){ox.serverConfig.persistence!==!1&&e.getWindow().on("open",function(){t.needsRefresh(e.folder.get())&&t.trigger("refresh^",e.folder.get())})},wireGridAndRefresh:function(e,t,n){var u=function(){e.refresh(!0),_.device("smartphone")&&e.selection.retrigger()},f=function(){e.repaint(),e.selection.retrigger()},a=function(){e.pending()},b=function(){t.off("refresh.all refresh:all:local",u).off("refresh.pe
1nding",a).off("refresh.list",f)},p=function(){b(),t.on("refresh.all refresh:all:local",u).on("refresh.pending",a).on("refresh.list",f).trigger("refresh.all")};n.on({show:p,hide:b}),n.state.visible&&p()},wirePerspectiveEvents:function(e){var t=e.getWindow(),n=null;t.on("show",function(){n=t.currentPerspective,t.currentPerspective&&e.trigger("perspective:"+t.currentPerspective+":show")}),t.on("hide",function(){n=t.currentPerspective,t.currentPerspective&&e.trigger("perspective:"+t.currentPerspective+":hide")}),t.on("change:perspective",function(u,f){n&&e.trigger("perspective:"+n+":hide"),n=f,e.trigger("perspective:"+f+":show")}),t.on("change:initialPerspective",function(u,f){n=f,e.trigger("perspective:"+f+":show")})},addFolderSupport:function(e,t,n,u){e.folder.updateTitle(e.getWindow()).setType(n),t&&e.folder.updateGrid(t),e.getWindow().on("show",function(){t&&t.selection.retriggerUnlessEmpty(),_.url.hash("folder",e.folder.get())}),u=_.url.hash("folder")||u;function f(a){return e.folder.set(a).then(_.identity,function(){return $.when(e.folder.setDefault())})}return u!==void 0?f(u):n==="mail"?S.getUnifiedInbox().then(function(a){return a===null?e.folder.setDefault():f(a)}):e.folder.setDefault()},addPropertyCaching:function(e,t){e=e||{prop:$.noop()};var n={},u=e.prop,f=$.extend({keyprop:"folder",props:["sort","order"]},t||{}),a={},b={set:function(T,r,g){a[T]=a[T]||{},a[T][r]=g},get:function(T,r){return r?(a[T]||{})[r]:a[T]||{}},remove:function(T){a[T]={}},clear:function(){a={}}};f.props=[].concat(f.props),_.each(f.props,function(T){n[T]=!0});function p(T,r){var g,l=T===f.keyprop&&typeof r<"u"&&r!==u(f.keyprop);l&&(g=u(f.keyprop),g&&(b.remove(g),_.each(f.props,function(c){b.set(g,c,u(c))})))}_.isUndefined(e.propcache)&&(e.propcache=function(T,r,g){return g=g||u(f.keyprop),n[T]&&b.get(g,T)||r},e.prop=function(T,r){return p(T,r),u.call(e,T,r)})},addGridFolderSupport:function(e,t){e.folder.updateGrid(t),e.getWindow().on("show",function(){t.selection.retriggerUnlessEmpty()})},vsplit:function(){var e=!1,t=function(u){u.preventDefault(),e&&(e=!1),$(this).parent().find(".rightside-inline-actions").empty(),$(this).closest(".vsplit").addClass("vsplit-reverse").removeClass("vsplit-slide"),u.data.app&&u.data.app.getGrid&&(_.device("smartphone")&&u.data.app.getGrid().selection.trigger("changeMobile"),u.data.app.getGrid().selection.clear()),_.device("smartphone")&&$(this).closest(".vsplit").find(".leftside .tree-container").trigger("changeMobile")},n=function(){var u=$(this);e=!0,setTimeout(function(){e&&(u.closest(".vsplit").addClass("vsplit-slide").removeClass("vsplit-reverse"),e=!1)},100)};return function(u,f){var a={};return u.addClass("vsplit").append(a.left=$('<div class="leftside">').attr({role:"complementary","aria-label":w("Item list")}).on("select",n),$('<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(w("Back"))).on("click",{app:f},t)),a.right=$('<div class="rightside">')),a}}(),help:function(e){if(_.device("smartphone"))return;var t=new F({href:n(e&&e.app&&e.app.id)});this.find(".generic-toolbar.bottom:last-of-type").append(t.render().$el);function n(u){return u==="io.ox/mail"?"ox.appsuite.user.sect.email.gui.foldertree.html":u==="io.ox/files"?"ox.appsuite.user.sect.drive.gui.foldertree.html":u==="io.ox/contacts"?"ox.appsuite.user.sect.contacts.gui.foldertree.html":u==="io.ox/calendar"?"ox.appsuite.user.sect.calendar.gui.foldertree.html":u==="io.ox/tasks"?"ox.appsuite.user.sect.tasks.gui.foldertree.html":"ox.appsuite.user.sect.dataorganisation.folder.html"}},mediateFolderView:function(e){function t(b){if(b.data.app.folderView.toggle(b.data.state),b.data.state)b.data.app.folderView.tree.getNodeView(b.data.app.folder.get()).$el.focus();else{var p=b.data.app.grid;if(p.getIds().length===0)return p.getContainer().focus();p.selection.focus()}}function n(b){b.getWindow().nodes.sidepanel.show(),b.getWindow().nodes.main.find(".vgrid").removeClass("bottom-toolbar")}function u(b){b.getWindow().nodes.sidepanel.hide(),b.getWindow().nodes.main.find(".vgrid").addClass("bottom-toolbar")}M.point(e.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",w("Open folder view")).append($.icon("fa-angle-double-right",w("Open folder view"))).on("click",{app:e,state:!0},t))}}),M.point(e.get("name")+"/sidepanel").extend({id:"toggle-folderview",index:1e3,draw:function(){var b=_.uniqueId("control");this.addClass("bottom-toolbar").append($('<div class="generic-toolbar bottom visual-focus" role="region">').attr("aria-labelledby",b).append($('<button type="button" class="btn btn-link toolbar-item" data-action="close-folder-view">').attr({id:b,"aria-label":w("Close folder view")}).append($.icon("fa-angle-double-left",w("Close folder view"))).on("click",{app:e,state:!1},t)))}}),M.point(e.get("name")+"/sidepanel").extend({id:"help",index:1100,draw:m.help}),e.on({"folderview:open":n.bind(null,e),"folderview:close":u.bind(null,e)});var f=e.getGrid(),a=f.getTopbar();M.point(e.get("name")+"/vgrid/second-toolbar").invoke("draw",a,M.Baton({grid:f})),u(e),e.folderViewIsVisible()&&_.defer(n,e)},addFolderViewToggle:function(e){_.device("smartphone")||(e.toggleFolderView=function(t){if(t.preventDefault(),e.trigger("before:change:folderview"),e.folderView.toggle(t.data.state),t.data.state)e.folderView.tree.getNodeView(e.folder.get()).$el.focus();else{var n=require("io.ox/core/a11y");n.getTabbable(e.getWindow().nodes.body.find(".classic-toolbar"))[0].focus()}},M.point(e.get("name")+"/sidepanel").extend({id:"toggle-folderview",index:1e3,draw:function(){if(!_.device("smartphone")){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":w("Close folder view")}).append($.icon("fa-angle-double-left",w("Close folder view"))).on("click",{state:!1},e.toggleFolderView)))}}}),M.point(e.get("name")+"/sidepanel").extend({id:"help",index:1100,draw:m.help}))},addPremiumFeatures:function(e,t){if(_.device("smartphone")||!d.has("client-onboarding")||!k.get("upsell/premium/folderView/visible")||k.get("upsell/premium/folderView/closedByUser"))return;var n=$('<div class="premium-toolbar generic-toolbar bottom visual-focus in">').append($('<div class="header">').append(w("Premium features"),$('<a href="#" role="button" class="pull-right">').append($('<i class="fa fa-times" aria-hidden="true">'),$('<span class="sr-only">').text(w("Close premium features"))).on("click",function(b){b.preventDefault(),$(this).closest(".premium-toolbar").collapse("hide"),k.set("upsell/premium/folderView/closedByUser",!0).save()})));function u(b,p){return M.point(b).list().map(function(T){return $("<p>").append($('<a href="#" role="button">').attr("data-action",T.action).data({baton:p}).text(T.title))})}var f=y.getBaton([],{app:e,renderActions:u});if(M.point(e.get("name")+"/folderview/premium-area").invoke("draw",n,f),n.find("a[data-action]").length!==0){n.on("click","a[data-action]",y.invokeByEvent);var a=new D({id:t.upsellId||"folderview/"+e.get("name")+"/bottom",requires:t.upsellRequires,icon:"",title:w("Try now!"),customize:function(){this.$("a").addClass("btn btn-default")}});return a.visible&&(n.append(a.render().$el),$(".header a",n).remove()),t.append!==!1&&e.getWindow().nodes.sidepanel.append(n),n}}},o=$.cleanData,i=function(e){$(e).triggerHandler("dispose")};return $.cleanData=function(e){return _(e).map(i),o.call(this,e)},$.createViewContainer=function(e,t,n,u){u=u||{};var f=u.cidGetter||_.ecid,a=e instanceof M.Baton?e.data:e,b=_.cid(a),p=f(a),T="recurrenceID"in a?f({id:a.id,folder:a.folder_id||a.folder}):null,r=$("<div>").attr("data-cid",_([].concat(a)).map(_.cid).join(",")),g=function(s,x){x&&(x.former_id||x.id&&x.id!==a.id)&&(a=x),s&&s.folder&&s.folder!==a.folder&&(a=s),(n=n||(t?t.get:null))&&(a.id||(a.id=arguments[1].id),n(t.reduce(a)).done(function(C){e instanceof M.Baton?C instanceof Backbone.Model&&e.model instanceof Backbone.Model?(e.model=C,e.data=C.toJSON()):e.data=C:e=C,x&&x.updateData?e.updateData=x.updateData:delete e.updateData,r&&r.triggerHandler("redraw",e)}))},l=function(s,x){a&&(a.folder_id=x),g&&g(s)},c=_.debounce(function(){r&&r.triggerHandler("redraw",e)},10),h=function(){r&&r.trigger("view:remove").remove()},L=function(s){var x=this;s===x.folder.toString()&&t&&t.trigger("update:"+x.cid)};return _.isArray(a)?(v.on("update",c),t.on("delete update",c)):(v.on("update",L,{
1cid:b,folder:a.folder_id||a.folder}),t.on("delete:"+p+(T?" delete:"+T:""),h),t.on("create update:"+p+(T?" update:"+T:""),g),t.on("move:"+p,l)),r.one("dispose",function(){_.isArray(a)?(v.off("update",c),t.off("delete update",c)):(v.off("update",L),t.off("delete:"+p,h),t.off("create update:"+p+(T?" update:"+T:""),g),t.off("move:"+p,l)),t=g=a=r=n=b=p=null})},$.fail=function(e,t){var n=$("<div>").addClass("io-ox-fail").append($("<span>").text(e));return t&&n.append($("<span>").text(" ")).append($("<a>",{href:"#"}).text(w("Retry")).on("click",function(u){u.preventDefault(),$(this).closest(".io-ox-center").remove(),t.apply(this,arguments)})),n.center()},m});define("io.ox/core/upsell",["io.ox/core/capabilities","settings!io.ox/core","gettext!io.ox/core"],function(M,w,v){"use strict";function S(m){console.debug("upsell:requires-upgrade",m),require(["io.ox/backbone/views/modal"],function(o){new o({title:v("Upgrade required"),description:v("This feature is not available. In order to use it, you need to upgrade your account now.")+" "+v("The first 90 days are free.")}).addCancelButton().addButton({label:v("Get free upgrade"),action:"upgrade"}).on("upgrade",function(){ox.trigger("upsell:upgrade",m)}).on("open",function(){ox.off("upsell:requires-upgrade",S),this.$el.next(".modal-backdrop.in:visible").css({opacity:.7,backgroundColor:"#08C"})}).on("close",function(){ox.on("upsell:requires-upgrade",S)}).open()})}function F(m){console.debug("upsell:upgrade",m),alert("User decided to upgrade! (global event: upsell:upgrade)")}var k=w.get("upsell/enabled")||{},D={},y={},d={trigger:function(m){ox.trigger("upsell:requires-upgrade",m||{})},click:function(m){m.preventDefault(),d.trigger()},any:function(m){return m?_([].concat(m)).reduce(function(o,i){return o||i===void 0||d.has(i)},!1):!0},missing:function(m){return m?(m=[].concat(m).join(" "),_(m.match(/!?[a-z_:-]+/ig)).filter(function(o){return!d.has(o)}).join(" ")):""},has:function(m){return m?m in D?D[m]:D[m]=M.has(m):!0},visible:function(){function m(i){return _.isString(i)?!!k[i]:!1}function o(i){var e=i.replace(/([^&|]) ([^&|])/gi,"$1 && $2").replace(M.whitelistRegex,"");return ox.debug&&/,/.test(e)?!!console.error("You can't use a comma in a condition use space instead."):(e=e.replace(/[\w:-]+/ig,function(t){return t=t.toLowerCase(),m(t)||d.has(t)}),new Function("return !!("+e+")")())}return function(i){var e=_.compact([].concat(i));return!e.length||_.reduce(e,function(t,n){return t||o(n)},!1)}}(),enabled:function(){function m(o){return _.isString(o)?!!k[o]:!1}return function(){var o=_(arguments).flatten().join(" || ").replace(/([^&|]) ([^&|])/gi,"$1 && $2").replace(M.whitelistRegex,"");return ox.debug&&/,/.test(o)?!!console.error("You can't use a comma in a condition use space instead."):(o=o.replace(/[a-z0-9_:-]+/ig,function(i){return i=i.toLowerCase(),m(i)}),new Function("return !!("+o+")")())}}(),captureRequiresUpgrade:function(){ox.on("upsell:requires-upgrade",S),d.captureRequiresUpgrade=$.noop},captureUpgrade:function(){ox.on("upsell:upgrade",F),d.captureUpgrade=$.noop},useDefaults:function(){d.captureRequiresUpgrade(),d.captureUpgrade()},debug:function(){console.debug("enabled",k,"capabilityCache",D,"enabledCache",y)},demo:function(m){var o=k,i=D;o.portal=o.webmail=o.contacts=o.calendar=o.infostore=o.tasks=o.publication=o.subscription=o.carddav=o.active_sync=!0,i.portal=i.webmail=i.contacts=!0,i.calendar=i.infostore=i.tasks=i.active_sync=i["active_sync || caldav || carddav"]=!1,i.publication=i.subscription=!1,w.set("features/upsell/secondary-launcher",{icon:"fa-star fa-star fa-star",color:"#ff0"}),w.set("features/upsell/portal-widget",{imageURL:"http://lorempixel.com/400/300/"}),w.set("features/upsell/folderview/mail/i18n/en_US",{title:"Custom english title for synchronizing mails."}),w.set("features/upsell/topbar-dropdown",{color:"#df0000"}),w.set("features/upsell/mail-folderview-quota",{upsellLimit:10*1024*1024}),console.debug("Disabled inline actions regarding calendar, tasks, and files; enabled upsell instead"),m||d.useDefaults()},setEnabled:function(m){k[m]=!0}};return function(){var m=_.url.hash("demo")||"";m.indexOf("upsell")>-1&&d.demo()}(),d});define("io.ox/core/ping",["io.ox/core/http","settings!io.ox/core"],function(M,w){"use strict";var v=w.get("ping/enabled",!1),S=w.get("ping/interval",30),F="none",k=null;function D(){!ox.session||ox.session==="unset"||!ox.online||_.device("phantomjs || karma")||_.now()-ox.t0<1e4||M.ping()}function y(){k&&clearInterval(k)}function d(){F!=="normal"&&(y(),F="normal",ox.reachable=!0,ox.trigger("reachableChange"),v&&(D(),k=setInterval(D,S*1e3)))}function m(){F!=="hectic"&&(y(),ox.reachable=!1,ox.trigger("reachableChange"),F="hectic",D(),k=setInterval(D,S*2
100))}M.on("unreachable",m),M.on("reachable",d),d()});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(M,w,v,S,F,k,D,y){"use strict";M.point("io.ox/core/relogin").extend({id:"default",render:function(){this.$body.append($("<div>").text(D("You have to sign in again"))),this.addButton({action:"ok",label:D("Ok")}),this.on("ok",function(){this.trigger("relogin:continue")})}},{id:"password",index:100,render:function(a){if(y.get("features/reloginPopup",!ox.serverConfig.oidcLogin&&!ox.serverConfig.samlLogin)&&!(S.has("guest && anonymous")||S.has("guest")&&y.get("password/emptyCurrent"))){var b=_.uniqueId("form-control-label-");this.$header.append($("<div>").text(D("Please sign in again to continue"))),this.$body.append($("<label>").attr("for",b).text(D("Password")),$('<input type="password" name="relogin-password" class="form-control">').attr("id",b)),this.addButton({className:"btn-default",label:D("Cancel"),action:"cancel"}).addButton({action:"relogin",label:D("Sign in")}).on("cancel",function(){ox.trigger("relogin:cancel"),e()}).on("relogin",function(){var p=this.busy();w.login({name:ox.user,password:this.$body.find("input").val(),rampup:!1,staySignedIn:ox.secretCookie}).then(function(){v.yell("close"),p.$body.find("input").val(""),p.trigger("relogin:success"),p.close()},function(r){r.code==="LGI-0006"&&(r.error=D("Please enter correct password")),v.yell({headline:D("Failed to sign in"),type:"error",message:r.error}),p.idle(),p.$body.find("input").focus().select(),p.trigger("relogin:fail",r)})}),a.preventDefault()}}});function d(a){return a&&a.code==="SES-0205"?D("Your IP address has changed"):D("Your session is expired")}function m(){var a=S.has("guest")?!y.isConfigurable("customLocations/guestLogin")&&y.get("customLocations/guestLogin")||ox.serverConfig.guestLoginLocation:!y.isConfigurable("customLocations/login")&&y.get("customLocations/login")||ox.serverConfig.loginLocation;return a&&a.match(/^https?:\/\/.*$|^\/.*$/)?_.url.vars(a):_.url.vars(ox.loginLocation||"")}function o(){var a=S.has("guest")?!y.isConfigurable("customLocations/guestLogout")&&y.get("customLocations/guestLogout")||ox.serverConfig.guestLogoutLocation:!y.isConfigurable("customLocations/logout")&&y.get("customLocations/logout")||ox.serverConfig.logoutLocation;return a&&a.match(/^https?:\/\/.*$|^\/.*$/)?_.url.vars(a):_.url.vars(ox.logoutLocation||"")}function i(){_.url.redirect(m())}function e(){_.url.redirect(o())}M.point("io.ox/core/boot/login").replace({id:"default",relogin:function(a){if(a.data.reloginState!=="success")return i()}});function t(a){var b=$.Deferred(),p;function T(){!p||p.disposed||(p.trigger("relogin:continue"),p.close())}return p=new k({async:!0,enter:"relogin",backdrop:"static",focus:"input",title:d(a),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(){b.resolve({reason:"relogin:continue"})}).on("relogin:success",function(){b.resolve({reason:"relogin:success"})}).open(),ox.on("login:success",T),b.done(function(){ox.off("login:success",T),$("html").removeClass("relogin-required"),$("#io-ox-core").removeClass("blur")})}M.point("io.ox/core/boot/login").extend({id:"userPrompt",index:5e3,relogin:function(a){return t(a.data.error).then(function(b){b&&b.reason==="relogin:success"&&(a.data.reloginState="success")})}});var n=[],u=!1;function f(a,b,p){if(ox.online)if(u)a&&b&&n.push({request:a,deferred:b});else{ox.trigger("before:relogin"),F.debugSession("relogin process START"),n=a&&b?[{request:a,deferred:b}]:[],u=!0;var T=require("io.ox/core/extPatterns/stage"),r=M.Baton.ensure({error:p,reloginState:"pending"}),g=function(l){F.debugSession("relogin abort with success",_.clone(l),_.clone(r.data)),r.data.reloginState="success",r.data.receivedSession=l?l.session:"",T.abortAll("io.ox/core/boot/login")};ox.on("login:success",g),T.run("io.ox/core/boot/login",r,{methodName:"relogin"}).then(function(){if(ox.off("login:success",g),r.data.reloginState==="success"){ox.session||(F.debugSession("relogin success but no session, trying to repair"),ox.session=r.data.receivedSession),ox.trigger("relogin:success"),F.checkTabHandlingSupport()&&require(["i
1o.ox/core/api/tab"],function(L){F.debugSession("propagateLogin",ox.session),L.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:L.getWindowName(),storageKey:L.DEFAULT_STORAGE_KEYS.SESSION})});for(var l=0,c,h=require("io.ox/core/http");c=n[l];l++)c.request.noRetry||h.retry(c.request).done(c.deferred.resolve).fail(c.deferred.fail);F.debugSession("relogin process DONE"),u=!1}})}}return ox.off("relogin:required",ox.relogin),ox.on("relogin:required",f),f});define("io.ox/core/uuids",function(){"use strict";function M(){return Math.floor((1+Math.random())*65536).toString(16).substr(1)}return{randomUUID:function(){return M()+M()+"-"+M()+"-"+M()+"-"+M()+"-"+M()+M()+M()},asArray:function(w){return _.range(w).map(M)}}});define("io.ox/core/tk/wizard",["io.ox/backbone/views/disposable","io.ox/core/tk/hotspot","gettext!io.ox/core"],function(M,w,v){"use strict";var S=[$('<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">')],F=$('<div class="wizard-backdrop abs">');function k(e,t){t=t||0;var n=e.offset();return n.width=e.outerWidth()+t*2,n.height=e.outerHeight()+t*2,n.availableWidth=$(window).width(),n.availableHeight=$(window).height(),n.right=n.availableWidth-n.width-n.left+t,n.bottom=n.availableHeight-n.height-n.top+t,n.top-=t,n.left-=t,n}function D(e){return function(){var t=this.$(e);return t.append.apply(t,arguments),this}}function y(e){return function(t,n){return t.append($(e).attr("data-action",n.action).addClass(n.className).text(n.label||"\u0A00")),this}}function d(e){return e=$(e).filter(":visible"),e.length?e.first():null}function m(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(){_(S).invoke("detach"),F.detach(),w.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&&i.call(this)}_.extend(m.prototype,{step:function(e){var t=new o(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(t){t.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(t){t.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 this.currentStep>0},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),n=this.get(t);return!n||t===this.steps.length-1?!1:n.hasValue()},isStepPaused:function(){var e=this.currentStep,t=this.options.model.get("paused")||[];return t.indexOf(e)>-1},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("start")):(this.trigger("before:start"),this.container.appendTo("body"),this.show
1First(),this.trigger("start")),$("body").addClass("wizard-open"),window.wizard=this,this},showFirst:function(){this.currentStep=0,this.shift(0)},spotlight:function(e,t){if(e){_.isFunction(e)&&(e=e());var n=$(e).filter(":visible");if(n.length){var u=k(n,t?t.padding:0);S[0].css({width:u.left,right:"auto"}),S[1].css({left:u.left,height:u.top,bottom:"auto"}),S[2].css({left:u.left+u.width,top:u.top}),S[3].css({left:u.left,top:u.top+u.height,right:u.right}),S[4].css(_(u).pick("top","right","bottom","left")),$("body").append(S)}}},toggleBackdrop:function(e,t){F.css("backgroundColor",t||""),$("body").append(F.toggle(!!e))}});var o=M.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){if(!(e.which!==9||!this.$el.is(":visible"))){var t=this.$('button[tabindex!="-1"][disabled!="disabled"]:visible'),n=e.shiftKey&&document.activeElement===t.get(0),u=!e.shiftKey&&document.activeElement===t.get(-1);(n||u)&&(e.preventDefault(),t.get(n?-1:0).focus())}},onKeyUp:function(e){function t(n){return $(n.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");break}},initialize:function(e,t){this.parent=t,this.options=_.extend({id:void 0,modal:!0,focusWatcher:!0,back:!0,next:!0,enableBack:!0,labelBack:v("Back"),labelDone:v.pgettext("tour","Finish"),attributes:{}},e),this.on("all",function(n){this.parent.trigger("step:"+n,this.parent.currentStep)}),_(["width","minWidth"]).each(function(n){this.options[n]&&this.$el.css(n,this.options[n])},this),!_.device("smartphone")&&!this.options.disableMobileSupport&&this.once("before:show",this.renderButtons),this.$el.attr(this.options.attributes),this.render()},title:D(".wizard-title"),content:D(".wizard-content"),footer:D(".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 this.getValue()!==void 0},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",v("Close")).append($('<i class="fa fa-times" aria-hidden="true">').attr("title",v("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(),n=this.parent.container.find(".wizard-next").empty();e.back&&this.addLink(t,{action:"back",label:this.getLabelBack()}),e.next&&this.addLink(n,{action:"next",label:this.getLabelNext()}),e.done&&this.addLink(n,{action:"done",label:this.getLabelDone()}),this.parent.isStepPaused()&&this.toggleNext(!1)},addButton:y('<button type="button" class="btn">'),addLink:y('<a href="#" role="button">'),getLabelNext:function(){return this.options.labelNext===void 0?this.isFirst()?v("Start tour"):v("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 this.parent.currentStep===0},isLast:function(){return this.parent.currentStep===this.parent.steps.length-1},indexOf:function(){return _(this.parent.steps).indexOf(this)},show:function(){function e(){this.trigger("before:navigate"),ox.launch(this.options.navigateTo.id,this.options.navigateTo.options).done(function(){this.trigger("navigate"),t.call(this,0)}.bind(this))}function t(a){if(a===0&&this.trigger("wait"),_.isFunction(this.options.waitFor.selector)&&(this.options.waitFor.selector=this.options.waitFor.selector()),d(this.options.waitFor.selector))return u.call(this);var b=_.isNumber(this.options.waitFor.timeout)?this.options.waitFor.timeout*10:50;a<b?setTimeout(function(){this.disposed||t.call(this,a+1)}.bind(this),100):(console.error("Step.show(). Stopped waiting for:",this.options.waitFor.selector),this.parent.close())}function n(){_(this.options.hotspot).each(function(a){_.isString(a)&&
1(a=[a,{}]),w.add(a[0],a[1]||{})},this)}function u(){if(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&&n.call(this),this.options.scrollIntoView){var a=$(this.options.scrollIntoView);a.length&&a.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")}function f(){return this.$el.css("left",this.indexOf()*100+"%").removeClass("center middle").appendTo(this.parent.container.find(".wizard-pages")),this.trigger("show"),this}return function(){return this.trigger("before:show"),_.device("smartphone")&&!this.options.disableMobileSupport?f.call(this):(this.parent.toggleBackdrop(!0),this.options.navigateTo?e.call(this):this.options.waitFor?t.call(this,0):u.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)return;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,n;if(_.isString(e)?t=d(e):_.isObject(e)&&(t=d(e.selector),n=e.options),!t)return;var u=this.$el,f=k(t),a=u.width(),b=u.height();if(this.options.noAutoAlign){L();return}function p(s,x,C,N){x=Math.min(Math.max(16,x),N-C-16),u.css(s,x)}function T(s){p("left",s,a,f.availableWidth)}function r(s){p("top",s,b,f.availableHeight)}function g(){if(f.left+f.width+a<f.availableWidth)return T(f.left+f.width+16),r(f.top),!0}function l(){if(f.left-a>0)return T(f.left-a-16),r(f.top),!0}function c(){if(f.top+f.height+b<f.availableHeight)return T(f.left),r(f.top+f.height+16),!0}function h(){if(f.top-b>0)return T(f.left),r(f.top-b-16),!0}function L(){u.addClass("center middle").css({top:"",right:"",bottom:"",left:""})}switch(u.removeClass("center middle").css({top:"auto",right:"auto",bottom:"auto",left:"auto"}),n&&n.position||"right"){case"right":g()||c()||l()||h()||L();break;case"left":l()||c()||g()||h()||L();break;case"bottom":c()||h()||g()||l()||L();break;case"top":h()||c()||g()||l()||L();break;default:L()}return this.trigger("align"),this},end:function(){return this.parent}});m.registry={collection:new Backbone.Collection,add:function(e,t){e.run=t;var n=new Backbone.Model(e);return this.collection.add(n),n},get:function(e){return this.collection.get(e)},list:function(e){return e===void 0?this.collection:this.collection.where({type:e})},run:function(e){var t=this.get(e);t&&t.get("run")()}};function i(){this.container.find(".wizard-title").text(this.options.title||v("Welcome")),this.container.on("tap","[data-action]",{parent:this},function(r){r.preventDefault();var g=$(this).attr("data-action");r.data.parent.trigger("step:"+g)}),this.options.model.on("change:paused",function(){var r=e.getCurrentStep();r.toggleNext(!e.isStepPaused())}),this.shift=function(r){this.setCurrentStep(this.currentStep+r),this.withCurrentStep(function(h){h.renderNavBar()});var g=this.container.find(".wizard-pages"),l=g.position().left/a*100,c=0-this.currentStep*100;return g.stop().velocity({translateX:[c+"%",l+"%"]},500,[150,15]),this};var e=this,t=0,n=0,u,f,a,b,p,T;this.container.find(".wizard-pages").on({touchstart:function(r){var g=r.originalEvent.targetTouches;if(g.length===1){if($(r.target).is("input")){T=!0;return}n=g[0].pageX,f=!1,a=$(window).width(),t=$(this).position().left,p=e.hasBack()?+a:+a/3,b=e.hasNext()?-a:-a/3}},touchmove:function(r){var g=r.originalEvent.targetTouches;if(g.length===1&&!T){if(r.preventDefault(),u=g[0].pageX-n,!f){if(Math.abs(u)<20)return;f=!0,n=g[0].pageX,u=0;return}u=Math.min(u,p),u=Math.max(u,b),!(e.isStepPaused()&&(t+u)/a*100<-100)&&$(this).css("transform","translateX("+(t+u)/a*100+"%)")}},touchend:function(){if(T=!1,!!f){var r=u/a*100;e.isStepPaused()&&r<0||e.shift(r<0?r>-50?0:1:r<50?0:-1)}}})}return m});define("io.ox/tours/get-started",["io.ox/core/extensions","io.ox/core/capabilities","io.ox/core/tk/wizard","gettext!io.ox/core"],function(M,w,v,S){"use strict";var F=Backbone.View.extend({tagName:"a",events:{click:"onClick",start:"onStart"},onClick:function(k){k.preventDefault();var D=$(k.target).closest("li"),y=D.attr("data-path"),d=y&&y.split(",");require(d,function(){var m=ox.ui.App.getCurrentApp();this.$el.trigger("start",m),v.registry.run(D.attr("data-id"))}.bind(this))}
1,onStart:function(k,D){require(["io.ox/metrics/main"],function(y){y.trackPage({id:"io.ox/guidedtour"});var d=D.get("trackingId")||D.get("name")||D.get("id");y.trackEvent({app:"core",target:"toolbar",type:"click",action:"guided-tour",detail:d.substr(d.lastIndexOf("/")+1)})})},hide:function(){if(this.$el.parent().length>0)return this.$el.parent().toggle(!1)},show:function(){if(this.$el.parent().length>0)return this.$el.parent().toggle(!0)},onAppChange:function(){if(w.has("guest"))return this.hide();var k=ox.ui.App.getCurrentApp();if(k===null)return this.hide();var D=k&&_.isFunction(k.getTour),y=D&&k.getTour();if(D&&!_.isEmpty(y))return console.warn("guided tours: getTour is deprecated. Please use a manifest entry instead."),this.show().attr({"data-id":y.id,"data-path":y.path});var d="default/"+k.getName(),m=ox.manifests.pluginsFor(d);if(m.length)return this.show().attr({"data-id":d,"data-path":m});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(S("Guided tour for this app")),this}});M.point("io.ox/core/appcontrol/right/help").extend({id:"get-started",index:250,extend:function(){if(!_.device("smartphone")&&!w.has("guest")){var k=new F;this.append(k.render().$el),k.hide()}}})});define("io.ox/core/adaptiveLoader",["io.ox/core/extensions","io.ox/core/capabilities","settings!io.ox/core"],function(M,w,v){"use strict";var S;if(localStorage&&w.has("lab:adaptiveLoading")){var F=_(ox.serverConfig.capabilities).pluck("id").sort().join(","),k=v.get("language"),D=v.get("theme");S={log:function(){S.debug,console.log.apply(console,arguments)},listen:function(y){S.log("listen",y),S.cache||S.init(),S.currentChunk=y,S.modules=S.cache[y]||[]},startAndLoad:function(y){if(S.log("startAndLoad",y),S.cache||S.init(),S.listen(y),S.cache[y])return require(S.cache[y])},startAndEnhance:function(y,d){return S.log("startAndEnhance",y,d),S.cache||S.init(),S.listen(y),S.cache[y]&&_(S.cache[y]).each(function(m){_(d).contains(m)||d.push(m)}),S.log("enhanced",d),d},stop:function(){S.log("stop",S.currentChunk),S.cache||S.init(),S.currentChunk&&(S.cache[S.currentChunk]=_.uniq(S.modules),S.log(S.cacheKey,S.cache),localStorage.setItem(S.cacheKey,JSON.stringify(S.cache)),delete S.modules,delete S.currentChunk)},record:function(y){return S.log("record",y),S.cache||S.init(),setTimeout(function(){S.currentChunk===y&&S.stop()}),S.listen(y)},init:function(){S.log("init"),S.cacheKey="ox-adaptiveload-"+ox.base+"["+(ox.user||"anon")+"]["+F+"]["+k+"]["+D+"]",S.cache=JSON.parse(localStorage.getItem(S.cacheKey)),S.cache||(S.cache={}),S.log("cache",S.cache),$(window).on("require:require",function(y,d){S.modules&&S.modules.push(d.replace(/\.js$/,"")),S.dirty||(S.dirty=!0,setTimeout(function(){S.currentChunk&&(S.cache[S.currentChunk]=_.uniq(S.modules),S.log(S.cacheKey,S.cache),localStorage.setItem(S.cacheKey,JSON.stringify(S.cache))),S.dirty=!1},3e3))})}}}else S={listen:$.noop,startAndLoad:function(){return $.Deferred().resolve()},startAndEnhance:function(y,d){return d},stop:$.noop,record:$.noop,init:$.noop};return S});define("io.ox/core/a11y",[],function(){"use strict";function M(){var f=$(".folder-tree:visible .folder.selected");f.is(":visible")?f.focus():$(".window-container:visible").length>0&&D($(".window-container:visible"))}$(document).on("keydown.role.button",'a[role="button"]',function(f){!/32/.test(f.which)||f.which===13&&f.isDefaultPrevented()||(f.preventDefault(),$(this).click())}),$(document).on("click",".skip-links",function(f){f.preventDefault(),M()}),$(document).on("keydown.quicklaunch","#io-ox-quicklaunch button",function(f){var a=ox.ui.App.getCurrentApp();f.which===13&&a.get("name")===$(this).attr("data-app-name")&&M()}),$(document).on("keydown.foldertree",".folder-tree .folder.selected",function(f){if(/13|32|27/.test(f.which)&&$(f.target).attr("aria-expanded")!=="false"&&!($(f.target).attr("aria-expanded")==="true"&&$(f.target).hasClass("virtual"))&&$(f.target).is("li")){var a=$(f.target).closest(".window-container");if(f.which===27&&$('#io-ox-quicklaunch button:not([tabindex="-1"])').focus(),/^(13|32)$/.test(f.which)){if(a.hasClass("io-ox-mail-window")||a.hasClass("io-ox-files-window"))return;f.preventDefault(),D(a)}}}),$(document).on("keydown.focusFolderTree",".list-item, .vgrid-scrollpane-container",function(f){if(/13|32|27/.test(f.which)){var a=$(f.target).closest(".window-container");a.hasClass("io-ox-mail-window")||a.hasClass("io-ox-files-window")||(f.which===27&&(ox.ui.App.getCurrentApp().folderView.isVisible()?a.find(".folder-tree .folder.selected").focus():$('#io-ox-quicklaunch button:not([tabindex="-1"])').focus()),/13|32/.test(f.which)&&a.find(".rightside, .list-item.focusable:first").last().visibleFocus())}}),$(document).on("keydown.rightside",".rightside,.scrollpane.f6-target",function(f){if(f.which===27){var a=$(f.target).closest(".window-container");a.hasClass("io-ox-mail-window")||a.hasClass("io-ox-files-window")||a.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"]',i),$(document).on("keydown.launchers",'ul[role="menubar"], ul[role="tablist"], [role="toolbar"], ul.launchers',n),$(document).on("blur.listbox",'ul[role="listbox"].listbox',function(){$(this).removeAttr("aria-activedescendant")}),$(document).on("keydown.listbox",'ul[role="listbox"].listbox',function(f){var a=$(f.target).closest(".window-container"),b=$(this),p=$("#"+b.attr("aria-activedescendant"));if(/^27$/.test(f.which))return a.find(".folder-tree .folder.selected").focus();if(/^(13|32)$/.test(f.which))return f.preventDefault(),D(a);if(/^(8|46)$/.test(f.which)){var T=p.attr("data-cid");T&&b.trigger("remove",T);return}if(/^(37|38|39|40)$/.test(f.which)){var r=b.children(),g=/39|40/.test(f.which)?p.next():p.prev(),l=/39|40/.test(f.which)?r.first():r.last();return g.length||(g=l),g.addClass("focussed").attr("aria-selected",!0).trigger("click",{inputdevice:"keyboard"}).siblings().removeClass("focussed").removeAttr("aria-selected"),b.attr("aria-activedescendant",g.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(f){w(f.currentTarget)}),$(document).on("click",".expandable-toggle",function(f){f.preventDefault();var a=$(this).closest(".expandable").toggleClass("open"),b=a.hasClass("open");b&&a.trigger("open"),$(this).attr("aria-expanded",b)});function w(f){f=$(f),f.is(".scrollable[tabindex],.listbox[tabindex]")?_.device("ie")?(f.css("border-style","none").on("blur",F),f.hasClass("default-content-padding")&&f.addClass("no-padding-adjustment")):f.css("box-shadow","none").on("blur",S):f.is(".focusable")&&f.css("outline",0).on("blur",v)}function v(){$(this).css("outline","")}function S(){$(this).css("box-shadow","")}function F(){$(this).css("border-style",""),$(this).removeClass("no-padding-adjustment")}var k=$.fn.focus;$.fn.focus=function(){return k.apply(this,arguments),document.activeElement===this[0]&&w(this[0]),this},$.fn.visibleFocus=function(){return k.apply(this)},$(document).on("keydown.f6",function(f){var a="input, select, textarea, button, .launcher a[href], [tabindex]:visible";if(f.which===117&&(_.device("macos")||f.ctrlKey)){f.preventDefault();var b=$("#io-ox-core .f6-target:visible"),p=$(document.activeElement).closest(".f6-target"),T=b.index(p)||0,r=T,g;do{if(r+=f.shiftKey?-1:1,r>=b.length&&(r=0),r<0&&(r=b.length-1),g=b.eq(r),g.is(a)){g.visibleFocus();break}if(g=y(g).first(),g.length){g.visibleFocus();break}}while(T!==r)}});function D(f){return f.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 y(f){var a={},b=$(f).find("input, select, textarea, button, a[href], [tabindex], iframe"),p=b.filter(function(){if(!$(this).is(":radio"))return!0;var T=$(this).attr("name");if(this===document.activeElement||$(this).is(":checked"))return a[T]=!0;if(a[T])return!1;var r=b.filter('[name="'+$.escape(T)+'"]:radio');return r.index(document.activeElement)>-1||r.filter(":checked").length?!1:a[T]=!0}).filter(function(){return!$(this).closest('[contenteditable="true"]').length}).filter(":visible").filter(":not(:disabled)");return $($.map(p,function(T){return $(T).is("iframe")?y($(T).contents().find("html")).toArray():T}))}function d(f){var a=arguments[1]||f.parent(),b=y(a).filter('[tabindex!="-1"]'),p=b.index(f);return p>0?b.eq(p-1):a.is("body")?b.eq(b.length-1):(a=a.parent(),d(f,a))}function m(f){var a=arguments[1]||f.parent(),b=y(a).filter('[tabindex!="-1"]'),p=b.index(f);return p<b.length-1?b.eq(p+1):a.is("body")?b.eq(0):(a=a.parent(),m(f,a))}function o(f,a){var b=y(f).filter('[tabindex!="-1"]');if(b.length){var p=$(document.activeElement).is("iframe")?b.index($(document.activeElement).contents()[0].activeElement):b.index(document.activeElement),T=a.shift
1Key&&p===0,r=p===b.length-1;!T&&!r||(a.preventDefault(),p+=a.shiftKey?-1:1,p=(p+b.length)%b.length,b.eq(p).focus())}}function i(f){if(f.which!==9){var a=$(f.target).closest("ul.dropdown-menu"),b=a.find("li:visible > a"),p=b.first(),T=b.last(),r=$(f.target).is(T),g=$(f.target).is(p);if(b.length!==1){if(f.which===38&&g||f.which===34||f.which===35)return f.stopImmediatePropagation(),T.focus();if(f.which===40&&r||f.which===33||f.which===36)return f.stopImmediatePropagation(),p.focus();e(f,b)}}}function e(f,a){if(a.filter(":focus").length){var b,p=a.map(function(){var T=$(this).text()||$(this).attr("aria-label");if(T&&T.substring(0,1).toLowerCase()===String.fromCharCode(f.which).toLowerCase())return $(this)});if(p.length){if(p.length===1)return p[0].focus()}else return;_.find(p,function(T,r){T.is(":focus")&&r>=0&&r<p.length-1&&(b=p[r+1])}),(b||p[0]).focus()}}function t(f,a){if(/^(37|39)$/.test(f.which)){var b=a.index(a.filter(":focus"));f.which===37?b--:b++,b<0&&(b=a.length-1),b===a.length&&(b=0);var p=a.eq(b).removeAttr("tabindex");return $(f.currentTarget).is("ul")?p.parent().siblings().find("> a,> button").attr("tabindex",-1):p.siblings().attr("tabindex",-1),p.focus()}}function n(f){if(!($(f.currentTarget).parents(".mce-tinymce").length>0)&&!(f.which===9||f.which===16&&f.shiftKey)){var a=$(f.currentTarget).is("ul"),b=$(f.currentTarget).find(a?"> li > a, > li > button:not([disabled])":"> a, > button:not([disabled])").filter(":visible");t(f,b),e(f,b)}}function u(f,a,b){b=_.extend({expanded:!1},b);var p=_.uniqueId("action"),T=_.uniqueId("content");f.addClass("collapsed").prop("id",p).attr({"data-target":"#"+T,"data-toggle":"collapse","aria-expanded":!1,"aria-controls":T}),a.addClass("collapse").addClass(b.expanded?"in":"").prop("id",T).attr({role:"region","aria-labelledby":p}).append(a),!(!b.onChange||!_.isFunction(b.onChange))&&(a.on("show.bs.collapse shown.bs.collapse hide.bs.collapse hidden.bs.collapse",function(r){b.onChange.call(a,r.type)}),b.onChange.call(a,b.expanded?"show":"hide"))}return{collapse:u,dropdownTrapFocus:i,focusListSelection:D,getTabbable:y,getPreviousTabbable:d,getNextTabbable:m,menubarKeydown:n,trapFocus:o}});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(M,w,v,S,F){"use strict";function k(){return $('<div class="modal-backdrop in" aria-hidden="true">').hide()}function D(){return $('<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">')))}var y=function(o){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 i=_.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},o),e={buttons:[],underlay:k(),popup:D(),wrapper:$('<div class="abs io-ox-dialog-wrapper">')},t=$(),n=$(),u=$.Deferred(),f=!1,a=this,b={},p=function(s){var x=$(s.target).closest(".io-ox-dialog-popup, .io-ox-sidepopup, .mce-window, .date-picker, .addressbook-popup").length>0;if(!x){var C=$("body > .smart-dropdown-container").length>0;C||e.popup.is(":visible")&&(s.stopPropagation(),e.popup.focus())}},T=function(){if(a){i.container.removeClass("blockscroll"),a.trigger("close"),document.removeEventListener("focus",p,!0),e.popup.empty().remove(),e.underlay.remove(),e.wrapper.remove(),t=t.closest(":visible"),i.focus&&(t.hasClass("dropdown")?t.children().first().focus():t.focus()),a.events.destroy();for(var s in a)delete a[s];$(window).off("resize.mobile-dialog"),a.close=a.idle=$.noop,e.header=e.body=e.footer=e.underlay=e.wrapper=null,e.buttons=t=n=null,e=u=a=b=i=null}},r=function(){e.footer.find("input, select, button").add(e.body.css("opacity",.5).find("input, select, button, textarea")).each(function(s,x){x=$(x),_.isUndefined(x.data("wasDisabled"))&&(x.data("wasDisabled",x.prop("disabled")),x.prop("disabled",!0))}),n=$(document.activeElement),e.popup.focus(),f=!0},g=function(){e.footer.find("input, select, button").add(e.body.css("opacity","").find("input, select, button, textarea")).each(function(s,x){x=$(x),_.isUndefined(x.data("wasDisabled"))||(x.prop("disabled",x.data("wasDisabled")),x.removeData("wasDisabled"))}),n.focus(),f=!1},l=function(s){var x=s.data?s.data.action:s,C=i.async&&x!=="cancel";C&&!i.noBusy&&r(),a.trigger("action "+x,b,a),!C&&a&&(u.resolveWith(e.popup,[x,b,a.getContentNode().get(0)]),T()),_.isObject(s)&&!_.browser.Safari&&(s.processed=!0)},c=function(s){switch(s.which){case 27:!f&&a.getBody().find(".open > .dropdown-menu").length===0&&(s.stopPropagation(),i.easyOut&&l("cancel"));break;
1case 13:if(!f&&$(s.target).is("input:text, input:password"))return i.enter?_.isFunction(i.enter)?i.enter.call(a):(l(i.enter),!1):!1;break;case 9:i.tabTrap&&v.trapFocus(this,s);break;default:break}},h=function(){$(e.wrapper).parentsUntil("body").add(e.wrapper).siblings(":not(script,noscript)").each(function(){var s=$(this);s.data("ox-restore-aria-hidden",s.attr("aria-hidden"))}).attr("aria-hidden",!0),a.on("close",function(){$(e.wrapper).parentsUntil("body").add(e.wrapper).siblings(":not(script,noscript)").removeAttr("aria-hidden").each(function(){var s=$(this);s.data("ox-restore-aria-hidden")&&s.attr("aria-hidden",s.data("ox-restore-aria-hidden")),s.removeData("ox-restore-aria-hidden")})})};w.point("io.ox/core/dialogs").invoke("customize",this,i),i.container.append(e.wrapper.append(e.popup,e.underlay)),_(["header","body","footer"]).each(function(s){e[s]=e.popup.find(".modal-"+s)}),i.addClass&&e.popup.addClass(i.addClass),M.extend(this),this.resizeBody=function(){var s=a.getPopup().position().top,x=$(document).height(),C=a.getBody().height(),N=a.getPopup().height(),I=30,P=a.getBody().find(".vgrid-cell").eq(0).outerHeight(),B=N+s+I;if(B>=x){var W=x-B,z=C+W;z>=P?a.getBody().css("height",z+"px"):a.getBody().css("height",P+"px")}},this.data=function(s){return b=s!==void 0?s:{},this},this.header=function(){return e.header.append.apply(e.header,arguments),this},this.getHeader=function(){return e.header},this.getPopup=function(){return e.popup},this.getContentNode=this.getBody=function(){return e.body},this.getContentControls=this.getFooter=function(){return e.footer},this.text=function(s){var x=e.body,C=_.uniqueId("label-");return x.find(".plain-text").remove(),x.append($('<h4 class="plain-text">').attr("id",C).text(s||"")),e.popup.attr({"aria-labelledby":C,role:"alertdialog"}),this},this.build=function(s){return _.isFunction(s)&&s.call(this),this},this.append=function(){return e.body.append.apply(e.body,arguments),this},this.prepend=function(s){return e.body.prepend(s),this};var L=function(s,x,C,N){N=N||{};var I={label:x,data:{action:s},click:N.click||l,dataaction:C,purelink:N.purelink,inverse:N.inverse};N.type&&(I[N.type]=!0);var P=$.button(I);return e.buttons.push(P),P.addClass(N.classes).attr({type:"button"})};this.addButton=function(s,x,C,N){return e.footer.prepend(L(s,x,C,N).addClass("btn-default")),this},this.addDangerButton=function(s,x,C,N){return e.footer.prepend(L(s,x,C,N).addClass("btn-danger")),this},this.addSuccessButton=function(s,x,C,N){return e.footer.prepend(L(s,x,C,N).addClass("btn-success")),this},this.addWarningButton=function(s,x,C,N){return e.footer.prepend(L(s,x,C,N).addClass("btn-warning")),this},this.addPrimaryButton=function(s,x,C,N){return e.footer.prepend(L(s,x,C,N).addClass("btn-primary")),this},this.addAlternativeButton=function(s,x,C,N){return e.footer.prepend(L(s,x,C,N).addClass("btn-default").css({float:"left",marginLeft:0})),this},this.addButtonMobile=function(s,x,C,N){return L(s,x,C,N)},this.addCheckbox=function(s,x,C){var N=_.uniqueId("form-control-label-");return e.footer.prepend($('<div class="checkbox">').append($('<div class="controls">
1'),$("<label>").attr("for",N).text(s).prepend($('<input type="checkbox">').attr({id:N,"data-action":x}).prop("checked",C)))),this},this.close=function(){!i||i.async?T():l("cancel")},this.invoke=function(s){return l(s),this},this.idle=function(){return g(),this},this.busy=function(){return r(),this},this.show=function(s){i.container.addClass("blockscroll"),i.focus&&(t=$(document.activeElement),document.addEventListener("focus",p,!0)),e.header.children().length===0&&e.header.remove(),i.help&&e.header.addClass("help").append(new S({href:i.help,modal:!0}).render().$el),e.underlay.show().addClass("in"),e.popup.addClass("invisible").show();var x=function(){var z={width:parseInt(i.width||e.popup.width()*1.1,10),height:parseInt(i.height||e.popup.height(),10)};return _(["width","height"]).each(function(R){var H=i[$.camelCase("max-"+R)];i[H]&&z[R]>i[H]&&(z[R]=i[H]);var K=$(document)[R]();z[R]&&z[R]>K&&(z[R]=K)}),z},C=function(){if(e){var z=x();e.popup.css({"max-width":z.width,top:i.top||0});var R=$("#io-ox-core").height()-2*i.top-e.header.outerHeight()-e.footer.outerHeight();e.body.css({height:R,"max-height":R})}},N=x();if(_.device("!smartphone")){var I={"max-width":N.width+"px"};if(i.center){I.top="50%";var P=function(){if(e){var z=e.popup.height(),R=$(window).height();R<e.popup.height()&&(z=R,I.overflow="auto",I.maxHeight="100%"),I.marginTop=0-(z/2>>0)+"px",e.popup.css(I)}};$(window).off("resize.checkTop").on("resize.checkTop",P),P()}else e.popup.css("top",i.top||"0px"),i.maximize&&(C(),$(window).off("resize.maximizedpopup").on("resize.maximizedpopup",C))}_.device("smartphone")&&(e.popup.addClass("mobile-dialog"),e.footer.rowfluid=$('<div class="row">'),e.footer.append(e.footer.rowfluid),_.each(e.buttons,function(z){e.footer.rowfluid.prepend(z.addClass("btn-medium")),z.wrap('<div class="col-xs-12 col-md-3">')})),this.trigger("beforeshow"),e.popup.removeClass("invisible");function B(){e.body.css("max-height",$("#io-ox-core").height()-40-e.header.outerHeight()-e.footer.outerHeight())}if(_.device("smartphone")&&(B(),$(window).on("resize.mobile-dialog",B)),_.device("!smartphone")){var W=e.popup.find(".btn-primary").first().focus();W.length||e.popup.find(".btn").not(".btn-danger").first().focus()}return e.popup.on("keydown",c),s&&s.call(e.popup,this),h(),this.trigger("show"),u},e.underlay.click(function(){i&&i.underlayAction&&l(i.underlayAction)}),e.popup.click(function(){i&&i.defaultAction&&l(i.defaultAction)}),this.setUnderlayAction=function(s){return i.underlayAction=s,this},this.topmost=function(){return e.underlay.addClass("topmost"),e.popup.addClass("topmost"),this},this.setUnderlayStyle=function(s){return e.underlay.css(s||{}),this},this.setDefaultAction=function(s){return i.defaultAction=s,this}},d=function(o){o=$.extend({top:"50px",center:!1},o||{}),y.call(this,o)};$(document).on("click",function(o){var i,e=$(o.target);function t(f){var a=[".io-ox-dialog-popup",".modal.in",".modal-backdrop.in",".modal-footer",".floating-window",".participant-wrapper.removable",".autocomplete-item",".io-ox-dialog-sidepopup-toggle"].join(", "),b=["td[role=gridcell]"].join(", ");return f.closest(a).length>0||f.is("html")||!document.contains(f.get(0))&&f.closest(b).length===0}if(e.hasClass("apptitle")?i=$(".io-ox-sidepopup:not(.preserve-on-appchange)"):i=$(".io-ox-sidepopup:not(.preserve-on-appchange), .preserve-on-appchange:visible"),i.length!==0&&!t(e)){var n=$(o.target).closest(".io-ox-sidepopup"),u=i.index(n);i.slice(u+1).trigger("close")}}),$(document).on("keydown",function(o){o.which===27&&$(".io-ox-sidepopup:not(.preserve-on-appchange), .preserve-on-appchange:visible").last().trigger("close")});var m=function(o){o=_.extend({modal:!1,arrow:!0,closely:!1,tabTrap:!0,focus:!0},o||{});var i,e,t,n,u=null,f=$(),a,b=$('<div class="io-ox-sidepopup-pane f6-target default-content-padding abs">'),p=_.uniqueId("sidepopup-"),T=$('<div class="io-ox-sidepopup-close">').append($('<a href="#" class="close" data-action="close" role="button">').attr({"aria-label":F("Close"),"aria-controls":p}).append($('<i class="fa fa-times" aria-hidden="true">').attr("title",F("Close")))),r=$('<div class="io-ox-sidepopup abs" role="dialog">').attr("id",p).append($('<div role="document">').append(T,b)),g=o.arrow===!1?$():$('<div class="io-ox-sidepopup-arrow">').append($('<div class="border">'),$('<div class="triangle">')),l=null,c=this,h=function(x){x.which===9&&o.tabTrap&&v.trapFocus(this,x)},L=b.scrollable();M.extend(this),o.modal&&(a=$('<div class="io-ox-sidepopup-overlay abs">').append(r,g)),o.preserveOnAppchange&&r.addClass("preserve-on-appchange"),this.nodes={},this.lastTrigger=null,t=function(x){e(x)},e=function(){c.nodes.closest&&(o.saveOnClose&&L.find(".settings-detail-pane").trigger("save"),c.nodes.closest.prop("sidepopup",n),r.off("view:remove remove close",t),c.lastTrigger=n=null,u=setTimeout(function(){if(c.nodes.simple.length){var x=c.nodes.simple.find(".
1io-ox-sidepopup"),C;x.length>1?(C=x.eq(-2),C.show(),$("body").scrollTop(C.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}o.modal?a.detach():(g.detach(),r.detach()),L.empty(),o.focus&&(f=f.closest(":visible"),f.focus()),c.trigger("close")},100))},r.on("close",e),r.on("keydown",h),T.find(".close").on("click",function(x){return L.trigger("click"),e(x),!1}).on("keydown",function(x){x.which===13&&$(this).trigger("click")});function s(x){var C=x/$("body").width()*100>>0;return Math.max(0,Math.min(100,C))}i=function(x,C){var N=$(this),I,P;if(f=$(document.activeElement),c.nodes={closest:l||N.parents(".io-ox-sidepopup-pane, .window-content, .window-container-center, .io-ox-dialog-popup, .notifications-overlay, body").first(),click:N.parents(".io-ox-sidepopup-pane, .io-ox-dialog-popup, .notifications-overlay, body").first(),target:l||N.parents(".simple-window, .window-container-center, .notifications-overlay, #io-ox-notifications-sidepopup, body").first(),simple:N.closest(".simple-window")},P=c.nodes.closest.prop("sidepopup")||null,c.lastTrigger=P?P.lastTrigger:null,I=N.parents(".io-ox-sidepopup, .window-content, .io-ox-dialog-popup, .window-container-center, .notifications-overlay, body").css("zIndex"),I=parseInt(I,10),I=_.isNumber(I)?I+2:100,c.lastTrigger===this)e(x);else{P&&P.close(),x&&x.stopPropagation(),c.lastTrigger=this,n=P,c.nodes.closest.prop("sidepopup",c),clearTimeout(u),r.on("view:remove remove",t);var B=$("body").width(),W,z,R,H,K=N.parents(".io-ox-sidepopup").first(),ee=K.length===0;if(/^(left|right)$/.test(o.side)?W=o.side:c.nodes.target.is(".notifications-overlay")?W=K.hasClass("right")?"left":"right":(W=x.pageX>B/2?"left":"right",ee&&(o.closely=!0,r.add(g).addClass("first"))),r.add(g).removeClass("left right").addClass(W).css("z-index",I),g.css("zIndex",I+1),o.closely&&_.device("!smartphone")){var ne=x.target&&$(x.target).is("iframe")?x.target.getBoundingClientRect().left:0;W==="left"?(z=Math.min(54,100-s(x.pageX+ne-100)),R="",H=z+"%"):(z=Math.min(54,s(x.pageX+ne+100)),R=z+"%",H=""),r.add(g).css({left:R,right:H})}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(".io-ox-sidepopup:visible").each(function(){$(this).attr("data-scrolltop",$("body").scrollTop()).hide()}),$("body").scrollTop(0)),_.defer(function(){c.nodes.target.append((o.modal?a:r).css("visibility","hidden")),(C||$.noop).call(c,L.empty(),x,N);var se=N.outerHeight(!0)/2>>0,E=c.nodes.target.offset()?c.nodes.target.offset().top:0,O=N.offset().top+se-E;g.css("top",O),(o.modal?a:r).css("visibility",""),o.modal||c.nodes.target.append(g),T.find(".close").focus(),c.trigger("show")})}},this.delegate=function(x,C,N){return $(x).on("click.sidepopup",C,function(I){(I.originalEvent||I).processed!==!0&&i.call(this,I,N)}),$(x).on("keypress.sidepopup",C,function(I){I.which===13&&(I.originalEvent||I).processed!==!0&&(i.call(this,I,N),I.preventDefault())}),this},this.undelegate=function(x){return $(x).off(".sidepopup"),this},this.setTarget=function(x){return l=$(x),this},this.show=function(x,C){return setTimeout(function(){i.call(x.target,x,C)},0),this},this.close=function(x){e(x)},this.destroy=function(){return e(),this.nodes=a=L=T=r=g=null,this}};return{ModalDialog:y,CreateDialog:d,SidePopup:m,busy:function(o){o.find("button, input").each(function(i,e){e=$(e),e.prop("disabled")?e.data("disabled",!0):e.prop("disabled",!0)})},idle:function(o){o.find("button, input").each(function(i,e){e=$(e),e.data("disabled")?e.removeData("disabled"):e.prop("disabled",!1)})}}});define("io.ox/core/tk/draghelper",["io.ox/core/extensions"],function(M){"use strict";M.point("io.ox/core/tk/draghelper").extend({id:"counter",index:100,draw:function(w){this.append($('<span class="drag-counter">').text(w.count))}}).extend({id:"text",index:200,draw:function(w){this.append($("<span>").text(w.source.attr("data-drag-message")||w.dragMessage.call(w.container,w.data,w.source)))}})});define("io.ox/core/page-controller",[],function(){"use strict";var M=function(w){var v={},S,F=[],k=[],D=this,y={navbar:w.navbar||$(),toolbar:w.toolbar||$(),options:{name:w.appname}},d,m=w||{};function o(t){var n={tag:"<div>",classes:"io-ox-pagecontroller page",container:$()};t=_.extend(n,t),m.container&&(t.container=m.container),v[t.name]={$el:$(t.tag).addClass(t.classes),navbar:t.navbar,toolbar:t.toolbar,secondaryToolbar:t.secondaryToolbar,name:t.name},F.push(t.name),v[t.name].$el.attr("data-page-id",y.options.name+"/"+t.name),$(t.container).append(v[t.name].$el),t.startPage&&D.setCurrentPage(t.name)}this.showPage=function(t){t!==S&&D.setCurrentPage(t)},this.changePage=function(t,n){if(!v[t]){console.warn("target page does not exist: ",t);return}if(t!==S){var u=_.extend({from:S,animation:_.device("smartphone")?"slideleft"
1:"pop",disableAnimations:!1},n||{}),f=v[t].$el,a=v[u.from].$el,b=$.Deferred();if(u.animation=_.device("android")?"pop":u.animation,f.trigger("pagebeforeshow",{frompage:u.from}),a.trigger("pagebeforehide",{topage:u.to}),_.device("smartphone"))try{document.activeElement&&document.activeElement.nodeName.toLowerCase()!=="body"?$(document.activeElement).blur():$("input:focus, textarea:focus, select:focus").blur()}catch{}k=S,S=t;var p=$('<div class="taptrap">');return _.device("!smartphone")&&(p=$()),Modernizr.cssanimations&&!u.disableAnimations?(_.defer(function(){f.append(p).addClass("io-ox-core-animation in current "+u.animation).one("webkitAnimationEnd mozAnimationEnd animationend",function(){$(this).removeClass("io-ox-core-animation in "+u.animation),f.trigger("pageshow",{from:u.from,to:u.to}),$(this).find(".taptrap").remove(),b.resolve()}),p=null},1),_.defer(function(){a.removeClass("current").addClass("io-ox-core-animation out inmotion "+u.animation).one("webkitAnimationEnd mozAnimationEnd animationend",function(){$(this).removeClass("io-ox-core-animation out inmotion "+u.animation),a.trigger("pagehide",{from:u.from,to:u.to})})},1)):(f.addClass("current").trigger("pageshow",{from:u.from,to:u.to}),a.removeClass("current").trigger("pagehide",{from:u.from,to:u.to})),i(t),e(t),ox.ui.apps.trigger("layout",y),b}},this.setBackbuttonRules=function(t){d=t},this.goBack=function(t){var n=k,u=_.extend({animation:"slideright"},t||{});d&&d[S]&&(n=d[S]),this.changePage(n,u)},this.addPage=function(t){if(t)return o(t),this},this.getPage=function(t){if(!v[t]){console.error("PageController: Page "+t+" does not exist."),console.error("PageController: Available pages are "+F.join());return}return v[t].$el},this.getPageObject=function(t){if(!v[t]){console.error("PageController: Page "+t+" does not exist."),console.error("PageController: Available pages are "+F.join());return}return v[t]},this.getNavbar=function(t){if(!v[t]){console.error("PageController: Page "+t+" does not exist.");return}return v[t].navbar},this.getAll=function(){return v},this.getToolbar=function(t){if(!v[t]){console.error("PageController: Page "+t+" does not exist.");return}return v[t].toolbar},this.getSecondaryToolbar=function(t){if(v[t]){if(!v[t].secondaryToolbar){console.error("PageController: Page "+t+" does not own a secondary toolbar.");return}}else{console.error("PageController: Page "+t+" does not exist.");return}return v[t].secondaryToolbar},this.getCurrentPage=function(){return v[S]},this.setCurrentPage=function(t){S&&v[S].$el.removeClass("current"),v[t].$el.addClass("current"),i(t),e(t),S=t},this.getPages=function(){return v};var i=function(t){var n=v[t].navbar,u=v[k];u&&u.navbar&&u.navbar.toggle(!1),n?(n.rendered||n.render(),y.navbar.append(n.$el),y.navbar.toggle(!0),n.toggle(!0)):(y.navbar.hide(),v[t].$el.addClass("fullscreen"))},e=function(t,n){var u;n&&v[t].secondaryToolbar?u=v[t].secondaryToolbar:v[t].toolbar&&(u=v[t].toolbar),u?(y.toolbar.children().detach(),y.toolbar.append(u.$el).show(),y.toolbar.trigger("show"),n||u.render()):y.toolbar&&(y.toolbar.children().detach(),y.toolbar.hide(),y.toolbar.trigger("hide"))};this.toggleSecondaryToolbar=e};return M});define("io.ox/core/toolbars-mobile",["io.ox/core/extensions"],function(M){"use strict";var w=Backbone.View.extend({show:function(){return this.$el.show(),this},hide:function(){return this.$el.hide(),this}}),v=w.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(F){this.title=F.title?F.title:"",this.left=F.left?F.left:!1,this.right=F.right?F.right:!1,this.baton=F.baton,this.extension=F.extension,this.hiddenElements=[],this.rendered=!1},render:function(){return this.$el.empty(),this.rendered=!0,M.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(F){F.type==="touchstart"&&$(F.currentTarget).addClass("tapped"),F.type==="touchend"&&$(F.currentTarget).removeClass("tapped")},setLeft:function(F){return this.left=F,this.render(),this},setTitle:function(F){return this.title=F,this.render(),this},setRight:function(F){return this.right=F,this.render(),this},onRightAction:function(F){F.preventDefault(),F.stopImmediatePropagation(),this.trigger("rightAction")},onLeftAction:function(F){F.preventDefault(),F.stopImmediatePropagation(),this.trigger("leftAction")},hide:function(F){return this.hiddenElements.push(F),this.hiddenElements=_.uniq(this.hiddenElements),this.render(),this},show:function(F){return this.hiddenElements=_.without(this.hiddenElements,F),this.render(),this},setBaton:function(F){return this.baton=F,this.render(),this},toggle:function(F){this.$el.toggle(F)}}),S=w.extend({initialize:function(F){this.page=F.page,this.baton=F.baton,this.extension=F.extension},render:function(){return this.$el.empty(),M.point(this.extension+"/"+this.page).invoke("draw",this.$el,this.baton),this},setBaton:function(F){return this.baton=F,this.render(),this}});return{BarView:w,NavbarView:v,ToolbarView:S}});define("io.ox/core/folder/util",["io.ox/core/api/account","settings!io.ox/mail","settings!io.ox/core","settings!io.ox/calendar"],function(M,w,v,S){"use strict";function F(u,f){return u>>f&(f>=28?1:127)}function k(u,f){return F(_.firstOf(u.own_rights,u,0),f||0)}function D(u){return u=u||"mail",u==="calendar"?S.get("chronos/defaultFolderId"):(u==="contacts"&&(u="addressbooks"),u==="mail"?w.get("folder/inbox"):v.get("folder/"+u))}var y;
1function d(u){y=u}function m(u,f){return!y||(f=f||[],!u||_(u).indexOf(f)!==-1)?!1:u.id.toString()===D("infostore").toString()?!0:u.folder_id&&y.models[u.folder_id]?(f.push(u.id),m(y.models[u.folder_id].attributes,f)):!1}function o(u,f){var a,b=0,p="",T,r;if(!f||!u)return!1;if(_.isArray(f))return _(f).reduce(function(L,s){return L&&o(u,s)},!0);if(u.search(/\|/)>-1){var g=u.split(/\|/);for(T=g.length,a=!1;b<T;b++)if(o(g[b],f)){a=!0;break}return a}switch(u){case"private":return f.type===1;case"public":return f.module==="infostore"&&f.type===2&&!/^(10|14|15)$/.test(f.id)?!m(f):f.type===2||/^(10|14|15)$/.test(f.id);case"shared":return f.type===3;case"federated-sharing":return f["com.openexchange.calendar.provider"]?/^(xox\d+|xctx\d+)/.test(f["com.openexchange.calendar.provider"]):/^(xox\d+|xctx\d+)/.test(f.account_id);case"system":return f.type===5||f.module==="system";case"trash":return f.type===16||f.standard_folder_type===12;case"mail":return f.module==="mail";case"messaging":return f.module==="messaging";case"calendar":return f.module==="calendar";case"contacts":return f.module==="contacts";case"tasks":return f.module==="tasks";case"infostore":case"files":case"drive":return f.module==="infostore";case"account":return f.module==="system"&&/^default(\d+)?/.test(String(f.id));case"unifiedfolder":return f&&(p=f.id!==void 0?f.id:f),M.isUnifiedFolder(p);case"external":return/^(default[1-9]|\w+:\/\/)/.test(String(f.id))&&!o("unifiedmail",f);case"defaultfolder":if(M.getType(f.id))return!0;r=w.get("folder");for(p in r)if(r[p]===f.id)return!0;return!1;case"insideDefaultfolder":r=w.get("folder");for(p in r)if(f.id.indexOf(r[p])===0)return!0;return!1;case"published":return!!f["com.openexchange.publish.publicationFlag"];case"subscribed":return!!f["com.openexchange.subscribe.subscriptionFlag"];case"unlocked":case"shared-by-me":var l;return f.permissions&&f.permissions.length>=1&&(l=_(f.permissions).filter(function(L){if(L.bits===1)return!0})),!f.permissions||f.permissions.length<=1||l.length>0?void 0:f.type===1||f.type===7||f.module==="infostore"&&f.created_by===ox.user_id;case"hidden":var c=v.get(["folder/hidden"],{});return p=_.isObject(f)?f.id:f,c[p]===!0;case"attachmentView":var h=v.get("folder/mailattachments",{});return _.isEmpty(h)?!1:_.values(h).indexOf(f.id)>-1;default:return!1}}function i(u,f){var a=o("external",u)&&u.virtual_parents[0];return _.isEmpty(f)&&!a?e("remove:folder",u):!(u.folder_id===f.id||u.id===f.id||u.type===3||f.type===3||u.type===5||o("defaultfolder",u)||u.type===1&&f.type!==1&&f.id!==1&&f.type!==7||u.type===2&&f.type!==2&&!(f.id in{2:1,10:1,15:1})||u.module!==f.module||!e("create:folder",u)||!e("create:folder",f))}function e(u,f,a){if(_.isArray(f))return _(f).reduce(function(h,L){return h&&e(u,L,a)},!0);var b=f.own_rights,p,T=f.standard_folder||o("system",f),r=F(b,28)===1,g=f.module==="mail",l=a?_.firstOf(a.created_by,a.createdBy?a.createdBy.entity:void 0,0):void 0,c=a&&ox.user_id!==l?1:0;switch(u){case"read":return f.id==="9"||F(b,7)>0&&b!==1;case"create":return o("system",f)||o("subscribed",f)||g&&!e("read",f)?!1:F(b,0)>1;case"write":return o("subscribed",f)?!1:F(b,14)>c;case"delete":return o("subscribed",f)?!1:F(b,21)>c;case"rename":case"rename:folder":return g?F(b,30)===1:r&&!T;case"create:folder":return p=F(b,0),(p&4)===4||(p&64)===64;case"delete:folder":case"remove:folder":case"restore:folder":return r&&!T&&!o("defaultfolder",f);case"move:folder":return i(f,a);case"import":return(b&127)>=2&&o("calendar|contacts|tasks",f);case"export":return!o("shared",f)&&o("contacts|calendar|tasks",f);case"empty":return b>>21&127&&o("mail",f);case"changepermissions":case"change:permissions":return r&&!!(f.capabilities&1);case"viewproperties":return!g&&!o("account",f)&&f.capabilities&1;case"publish":return t("publication",f)?f.module==="contacts"?!0:f.module==="infostore"&&e("create",f)&&b!==1&&b!==4:!1;case"subscribe":return t("subscription",f)?/^(contacts|calendar|infostore)$/.test(f.module)&&e("write",f):!1;case"subscribe:imap":return!g||b===0||f.standard_folder&&/^(7|9|10|11|12)$/.test(f.standard_folder_type)?!1:!!(f.capabilities&Math.pow(2,4));case"change:seen":return t("STORE_SEEN",f);case"add:version":return t("file_versions",f);case"sync:cache":return t("cached",f);default:return!1}}function t(u,f){return f instanceof Backbone.Model?_(f.get("supported_capabilities")).indexOf(u)>
1-1:_(f.supported_capabilities).indexOf(u)>-1}function n(u){u&&u.toggle&&(u.toggle("open",!0),u.options&&n(u.options.parent))}return{registerPool:d,perm:F,bits:k,supports:t,is:o,can:e,getDefaultFolder:D,open:n}});define("io.ox/core/folder/sort",["io.ox/core/extensions","io.ox/core/api/account","settings!io.ox/core"],function(M,w,v){"use strict";var S=M.point("io.ox/core/folder/sort");return S.extend({id:"1",sort:function(F){if(F.id==="1"){var k=F.data,D=new Array(6),y="inbox sent drafts trash spam".split(" ");_(k).find(function(d){return w.isUnified(d.id)&&!!(D[0]=d)}),_(k).each(function(d){_(y).find(function(m,o){return w.is(m,d.id)&&!!(D[o+1]=d)})}),k=_(k).reject(function(d){return w.isUnified(d.id)||w.isStandardFolder(d.id)}),k.sort(function(d,m){var o=w.isExternal(d.id),i=w.isExternal(m.id),e=d.title.toLowerCase()>m.title.toLowerCase()?1:-1;return o&&i?e:o?1:i?-1:e}),k.unshift.apply(k,_(D).compact()),F.data=k}}}),S.extend({id:"my-files",sort:function(F){F.id!==v.get("folder/infostore")&&F.id!=="15"||(F.data=F.data.sort(function(k,D){return k.title.localeCompare(D.title)}))}}),{apply:function(F,k){var D=M.Baton({id:F,data:k});return S.invoke("sort",null,D),D.data}}});define("io.ox/core/folder/blacklist",["io.ox/core/extensions","settings!io.ox/core","settings!io.ox/files"],function(M,w,v){"use strict";var S=M.point("io.ox/core/folder/filter"),F=w.get("folder/blacklist",{}),k={},D=_(F).keys().sort();ox.debug&&D.length>0&&console.info("Blacklisted folders:",D),S.extend({id:"blacklist",index:100,visible:function(d){var m=d.data,o=String(m.id);return F=_.extend(w.get("folder/blacklist",{}),k),!F[o]}},{id:"dot-folders",index:200,visible:function(d){return d.data.module!=="infostore"||v.get("showHidden",!1)===!0?!0:!/^\./.test(d.data.title)}});function y(d,m){return d&&!!m}return{hash:F,filter:function(d){var m=M.Baton({data:d});return S.invoke("visible",null,m).reduce(y,!0).value()},visible:function(d){return this.filter(d)},apply:function(d){return _(d).filter(this.filter,this)},add:function(d){k[d]=!0}}});define("io.ox/core/folder/title",[],function(){"use strict";return function(w,v){if(w=String(w||"").trim(),w.length<v)return w;var S=/[_-]/.test(w[0])?w[0]:!1,F=/[_-]/.test(w[w.length-1])?w[w.length-1]:!1,k=w.split(/[ _-]+/),D=w.split(/[^ _-]+/),y=w.length;for(S&&(k[1]=S+k[1],k.splice(0,1)),F&&(k[k.length-1]=F+k[k.length-1],k.splice(k.length-1,1));y>v&&k.length>2;){var d=Math.floor(k.length/2);y-=k[d].length+2,k.splice(d,1),D.splice(d+1,1),D[Math.floor(D.length/2)]="\u2026"}return y>v?_.ellipsis(w,{charpos:"middle",max:v,length:Math.floor(v/2-1)}):_(k).map(function(m,o){return m+D[o+1]}).join("")}});define("io.ox/core/folder/bitmask",[],function(){"use strict";var M={folder:0,read:7,write:14,modify:14,delete:21,admin:28},w=function(v){if(_.isString(v)){if(v in M)return M[v];console.error("Typo!?",v)}return v||0};return function(S){S=S||0;var F={get:function(k){return arguments.length===0?S:S>>w(k)&127},set:function(k,D){return k=w(k),D=D||0,S&=536870911^127<<k,S|=D<<k,this}};return F}});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","
1io.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(M,w,v,S,F,k,D,y,d,m,o,i,e,t,n,u){"use strict";var f={},a;_.extend(f,Backbone.Events);function b(A){return A=String(A),A==="1"||/^default\d+/.test(A)?0:1}function p(A,V,G){return V["index/"+A]=G,V}function T(A){var V=[].concat(A).filter(function(J){return/^(addressbooks|contacts|calendar|tasks|event)$/.test(J.module)?J.id===String(t.get("chronos/defaultFolderId"))?!0:w.is("shared",J)&&J.created_from&&y.checkForName(J.created_from)?(J.display_title=u("%1$s: %2$s",y.checkForName(J.created_from),J.title),!1):J.created_by===0?!1:J.display_title===void 0&&w.is("shared",J):!1}),G=_(V).chain().pluck("created_by").compact().uniq().value();return G.length===0?$.when(A):y.getList(G).then(function(J){var Q=_.object(G,J);return _(V).each(function(Z){Z.id===String(t.get("chronos/defaultFolderId"))||Z.title===u("Calendar")?Z.display_title=o.getFullName(Q[Z.created_by]||{})||u("Default calendar"):Q[Z.created_by]&&(Z.display_title=u("%1$s: %2$s",o.getFullName(Q[Z.created_by]),Z.title))}),A})}function r(A){delete a.models[A.previous("id")],a.models[A.id]=A}function g(A){a.unfetch(A.id)}function l(A){return A==="cal://0/allPublic"?!0:/^virtual/.test(A)}function c(A){var V=A instanceof Backbone.Model?A.get("type"):A.type;return V===14}function h(A){return/^(addressbooks|contacts|calendar|tasks|event)$/.test(A)}function L(A){return/^(mail|infostore)$/.test(A)}function s(A,V){return(V?"all/":"")+String(A)}function x(A){return a.getCollection(A.id).reduce(function(V,G){var J=D.getType(G.get("id"));return J==="trash"||J==="spam"||J==="confirmed_spam"?V:V+(G.get("subtotal")||0)+(G.get("unread")||0)},0)}function C(A,V,G){var J=A._previousAttributes[G]!==void 0&&A._previousAttributes[G]!==null?A._previousAttributes[G]:0,Q=V-J,Z=a.models[A.get("folder_id")],re=A.get("virtual_parents");Q!==0&&Z&&Z.get("module")!=="system"&&a.collections[Z.get("id")]&&(Z.is("unifiedfolder")||Z.set("subtotal",x(Z))),Q!==0&&re&&re.length>0&&_(re).each(function(le){a.models[le]&&a.collections[le]._byId[A.get("id")]?a.models[le].set("subtotal",x(a.models[le])):A.set("virtual_parents",_(A.get("virtual_parents")).without(le))})}function N(A,V){C(A,V,"subtotal")}function I(A,V){C(A,V,"unread"),f.trigger("change:unread",A,V)}var P=Backbone.Model.extend({constructor:function(){Backbone.Model.apply(this,arguments),this.set("virtual_parents",[]),(this.get("module")==="mail"||this.get("module")===void 0)&&this.on({"change:id":r,"change:subtotal":N,"change:unread":I})},isAdmin:function(){var A=new k(this.get("own_rights"));return!!A.get("admin")},getAccountDisplayName:function(){return n.getAccountDisplayName(this.get("account_id"))},supportsInternalSharing:function(){return this.is("system")?!1:this.is("drive")?!0:this.is("mail")?this.can("change:permissions")&&!D.isExternal(this.get("account_id")):this.is("calendar")&&this.is("private")&&!this.supportsShares()?!1:this.is("public")?m.has("edit_public_folders"):m.has("read_create_shared_folders")},supportsInviteGuests:function(){return!this.is("mail")&&m.has("invite_guests")&&this.supportsInternalSharing()},supportsShares:function(){return this.is("mail")&&(this.get("capabilities")&1)===1?!0:this.supports("permissions")},isShareable:function(){return this.isAdmin()&&this.supportsShares()},supports:function(A){return w.supports(A,this.attributes)},is:function(A){return w.is(A,this.attributes)},can:function(A){return w.can(A,this.attributes)}}),B=Backbone.Collection.extend({model:P,constructor:function(A){Backbone.Collection.apply(this,arguments),this.id=A,this.fetched=!1,this.on("remove",this.onRemove,this),(/^flat\/(addressbooks|contacts|calendar|tasks|event)\/shared$/.test(this.id)||/^flat\/(addressbooks|contacts|calendar|tasks|event)\/hidden$/.test(this.id))&&(this.comparator=function(V){return(V.get("display_title")||V.get("title")).toLowerCase()})},comparator:function(A){return A.get("index/"+this.id)||0}
1,onRemove:function(A){h(A.get("module"))||(a.getModel(this.id).set("subscr_subflds",this.length>0),f.trigger("collection:remove",this.id,A))}});function W(){this.models={},this.collections={}}_.extend(W.prototype,{addModel:function(A){if(A.attributes)return A;var V=A.id,G=this.models[V];return G===void 0?(this.models[V]=G=new P(A),f.trigger("pool:add",G)):G.set(A),G},removeModels:function(A){A&&_.each(this.models,function(V,G){if(!V.get("account_id")||V.get("account_id")!==A)return!0;f.trigger("remove",G,this.models[G].toJSON()),delete this.models[G]}.bind(this))},addCollection:function(A,V,G){G&&!G.all&&_(V).each(function(Se){delete Se.subfolders});var J=_(V).map(this.addModel,this);G=G||{};var Q=this.getCollection(A),Z=Q.fetched?"set":"reset";if(Q.expired=!1,this.models[A]&&l(A)&&_(Q.models).each(function(Se){Se.set("virtual_parents",_(Se.get("virtual_parents")).without(A))}),Q[Z](J),Q.fetched=!0,this.models[A]&&(this.models[A].get("module")==="mail"||this.models[A].get("module")===void 0)&&!this.models[A].is("unifiedfolder")){for(var re=0,le=0;le<J.length;le++){var de=D.getType(J[le].get("id"));if(de!=="trash"&&de!=="spam"&&de!=="confirmed_spam"&&(re+=(J[le].get("subtotal")||0)+(J[le].get("unread")||0),l(A))){var be=J[le].get("virtual_parents");be&&(be.push(A),J[le].set("virtual_parents",_.uniq(be)))}}this.models[A].set("subtotal",re)}G.reset&&Q.trigger("reset")},removeCollection:function(A,V){V=V||{};var G=this.collections[A],J=this,Q=G?G.models:[];if(G&&(G=null,delete this.collections[A],_(Q).each(function(re){_e(re.id),J.removeCollection(re.id,V)}),V.removeModels&&this.models[A])){var Z=this.models[A].toJSON();this.models[A]=null,delete this.models[A],f.trigger("remove",A,Z),f.trigger("remove:"+A,Z),f.trigger("remove:"+Z.module,Z)}},getModel:function(A){return this.models[A]||(this.models[A]=new P({id:A}))},getCollection:function(A,V){return A=s(A,V),this.collections[A]||(this.collections[A]=new B(A))},expire:function(){_(this.collections).each(function(A){A.expired=!0})},unfetch:function(A){if(arguments.length===0||A==="0")return _(this.collections).each(function(G){G.fetched=!1});var V=this.collections[A];V&&(V.fetched=!1,V.each(g))}}),a=new W;function z(A,V){return V=S.apply(V),V=v.apply(A,V),_(V).each(p.bind(null,A)),V}_(ox.rampup.folder).chain().keys().each(function(A){a.addModel(ox.rampup.folder[A])});var R={};_(ox.rampup.folderlist||{}).each(function(A,V){R[V]=_(A).map(function(G){return _.isArray(G)?M.makeObject(G,"folders"):G})}),m.has("webmail")&&a.addModel({folder_id:"default0/INBOX",id:"virtual/all-unseen",module:"mail",title:u("Unread")}),!m.has("guest")&&m.has("edit_public_folders")&&a.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:u("All my public appointments"),total:-1,type:1,subscribed:!0});var H=$.when();function K(A){if(A instanceof Backbone.Model){var V=A,G=V.toJSON(),J=G.id;V.changed.total!==void 0&&V.changed.total!==null&&(f.trigger("update:total",J,G),f.trigger("update:total:"+J,G)),V.changed.unread!==void 0&&V.changed.unread!==null&&(f.trigger("update:unread",J,G),f.trigger("update:unread:"+J,G));return}return/^account:(create|delete|unified-enable|unified-disable)$/.test(A)?U("1",{cache:!1}).done(function(){ne.refresh(),f.trigger("refresh")}):H}function ee(A,V){this.id=A,this.getter=V}ee.prototype.concat=function(){return _.whenSome.apply(void 0,arguments).then(function(A){return A.rejected.length&&_.each(A.rejected,function(V){console.error(V)}),_(A.resolved).chain().flatten().compact().value()})},ee.prototype.list=function(){var A=this.id;return this.getter().done(function(V){_(V).chain().map(function(G){return l(G.id)?_.extend(G,a.getModel(G.id).toJSON()):G}).each(p.bind(null,A)).value(),a.addCollection(s(A),V),a.getModel(A).set("subscr_subflds",V.length>0)})};var ne={hash:{},list:function(A){var V=this.hash[A];return V!==void 0?V.list():$.Deferred().reject({error:"virtual folder "+A+" not hashed."})},add:function(A,V){this.hash[A]=new ee(A,V),a.getModel(A).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(p.bind(null,"concat")).value(
1)})},reload:function(A){a.getCollection(s(A)).fetched=!1,this.list(A)},refresh:function(){_(this.hash).invoke("list")},getCollections:function(){return _(this.hash).keys().map(function(A){return f.pool.getCollection(A)})}};function se(A){return A={error:A,code:"UI-FOLDER"},console.warn("folder/api",A),f.trigger("error error:"+A.code,A),$.Deferred().reject(A)}function E(A,V){if(A===void 0)return se("Cannot fetch folder with undefined id");A=String(A),V=_.extend({cache:!0},V);var G=a.models[A];return V.cache===!0&&G!==void 0&&G.has("title")?$.when(G.toJSON()):l(A)?$.when({id:A}):A===o.getGabId()&&!m.has("gab")?se(u("Accessing global address book is not permitted")):M.GET({module:"folders",params:{action:"get",altNames:!0,id:A,timezone:"UTC",tree:b(A)}}).fail(function(J){return f.trigger("error error:"+J.code,J,A),J}).pipe(function(J){var Q=a.addModel(J);return _(Q.changed).size()&&f.trigger("changesAfterReloading:"+Q.get("module"),Q),K(Q),J})}function O(A,V){if(!A||!A.length)return $.when([]);V=_.extend({cache:!0,errors:!1},V);try{return M.pause(),$.when.apply($,_(A).map(function(J){return E(J,{cache:V.cache}).pipe(null,function(Z){return Z=_.extend({},Z),Z.id=J,$.when(V.errors?Z:void 0)})})).pipe(function(){return _(arguments).toArray()}).pipe(function(J){return J.length?_(J).all({code:"OFFLINE"})?G("offline"):_(J).all({code:"NOSERVER"})?G("noserver"):J:[]})}finally{M.resume()}function G(J){return $.Deferred().reject({error:M.messages[J],code:J.toUpperCase()})}}function U(A,V){A=String(A),V=_.extend({all:!1,cache:!0,force:!1},V);var G=s(A,V.all),J=a.getCollection(G);if(J.fetched&&!J.expired&&V.cache===!0)return $.when(J.toJSON());if(R[A]&&!V.all){var Q=z(A,R[A]);return delete R[A],T(Q).then(function(de){return a.addCollection(A,de),de})}var Z=/^flat\/([^/]+)\/([^/]+)$/.exec(A),re,le;return Z?(re=Z[1],le=Z[2],ce({module:re,cache:V.cache}).then(function(de){return de[le]})):l(A)?ne.list(A):M.GET({module:"folders",params:{action:"list",all:V.all?"1":"0",altNames:!0,parent:A,timezone:"UTC",tree:b(A),forceRetry:V.force},appendColumns:!0}).then(T,function(de){throw f.trigger("error error:"+de.code,de,A),de}).then(function(de){return de=z(A,de),a.addCollection(G,de,{all:V.all}),de})}function X(A,V){try{return M.pause(),$.when.apply($,_(A).map(function(G){return U(G).then(null,function(Q){return Q=Q||{},V=V||{},Q.id=G,$.when(V.errors?Q:void 0)})})).then(function(){var G=[];return _(arguments).toArray().forEach(function(J){Array.prototype.push.apply(G,J)}),G})}finally{M.resume()}}function ie(A){var V=[],G=A,J,Q=!1;if(A===void 0)return $.when([]);do V.push(J=a.getModel(G).toJSON()),G=J.folder_id,Q=String(G)==="1"||G===A;while(G&&!Q);return Q?$.when(V.reverse()):l(A)?a.getModel(A).toJSON()?$.when([a.getModel(A).toJSON()]):$.when([]):M.GET({module:"folders",params:{action:"path",altNames:!0,id:A,tree:b(A)},appendColumns:!0}).then(function(Z){return _(Z).filter(function(re){return a.addModel(re),re.id!=="1"}).reverse()})}function oe(A){return M.makeObject(A,"folders")}function ue(A){return A===3?"shared":A===2?"public":"private"}function me(A,V){return"flat/"+A+"/"+V}function ge(A,V){return a.getCollection(me(A,V))}function ye(){return _(a.collections).chain().keys().filter(function(A){return/^flat/.test(A)}).map(function(A){return A.split("/")[1]}).uniq().value()}function he(A){A.unshift(a.getModel("cal://0/allPublic").toJSON())}function ce(A){if(A=_.extend({module:void 0,cache:!0,force:!1,all:!0},A),A.module==="calendar"&&(A.module="event"),ox.debug&&!A.module)return console.warn("Folder API > flat() - Missing module",A),$.Deferred().reject();var V=A.module,G=ge(V,"private"),J={};return A.all&&G.fetched&&A.cache===!0?(J.private=G.toJSON(),["public","shared","sharing","hidden"].forEach(function(Q){var Z=ge(V,Q);Z.fetched&&(J[Q]=Z.toJSON())}),$.when(J)):(f.trigger("before:flat:"+A.module),M.GET({module:"folders",appendColumns:!0,params:{action:"allVisible",altNames:!0,content_type:V==="contacts"||V==="addressbooks"?"addressdata":V,timezone:"UTC",tree:1,forceRetry:!!A.force,all:!!A.all}}).then(function(Q){var Z=[],re=_(Q).chain().map(function(le,de){var be=_(le).chain().map(oe).filter(function(Se){var Ie=!!new k(Se.own_rights).get("admin");return!(!w.can("read",Se)&&!w.can("change:permissions",Se)&&!Ie)}
1).value();return Z.push(be),[de,be]}).object().value();return T(_(Z).flatten()).then(function(){return re})}).then(function(Q){var Z={},re=[],le=[],de=i.get(["folder/hidden"],{}),be;return V==="event"&&!Q.public&&(Q.public=[]),_(Q).each(function(Se,Ie){var ze=_(Se).filter(function(Oe){return de[Oe.id]?(re.push(Oe),!1):(w.is("shared-by-me",Oe)&&le.push(Oe),!0)});V==="event"&&Ie==="public"&&he(ze),be=me(V,Ie),ze=z(be,ze),Z[Ie]=ze,A.all&&a.addCollection(be,ze,{reset:!0})}),be=me(V,"hidden"),re=z(be,re),Z.hidden=re,A.all&&a.addCollection(be,re,{reset:!0}),be=me(V,"sharing"),le=z(be,le),Z.sharing=le,A.all&&a.addCollection(be,le,{reset:!0}),f.trigger("after:flat:"+A.module),Z}))}function pe(A,V,G){if(!(!_.isObject(V)||_.isEmpty(V))){G=_.extend({silent:!1},G);var J=a.getModel(A).set(V,{silent:G.silent});if(l(A))return $.when();G.silent||f.trigger("before:update before:update:"+A,A,J);var Q={folder:V};return G.notification&&!_.isEmpty(G.notification)&&(Q.notification=G.notification),d.enqueue(M.PUT({module:"folders",params:{action:"update",id:A,timezone:"UTC",tree:b(A),cascadePermissions:G.cascadePermissions,ignoreWarnings:G.ignoreWarnings,allow_enqueue:G.enqueue},data:Q,appendColumns:!1})).done(function(){var Z=J.toJSON();S.visible(Z)||f.trigger("warn:hidden",Z)}).then(function(Z){if(A!==Z&&J.set("id",Z),G.cascadePermissions&&Ce(),G.silent||(f.trigger("update update:"+A,A,Z,J.toJSON()),"permissions"in V&&f.trigger("change:permissions",A),"subscribed"in V&&f.trigger("change:subscription",A,V)),A!==Z||V.title||V.folder_id)return U(J.get("folder_id"),{cache:!1}).then(function(){return a.getCollection(J.get("folder_id")).sort(),"title"in V&&f.trigger("rename",A,J.toJSON()),"title"in V&&f.trigger("after:rename",A,J.toJSON()),Z})},function(Z){throw f.get(A,{cache:!1}),Z&&Z.code&&Z.code==="FLD-0018"&&(Z.error=u("Could not save settings. There have to be at least one user with administration rights.")),G.silent||f.trigger("update:fail",Z,A),Z})}}function Te(A,V,G){if(A===V)return $.when();G=G||{};var J=a.getModel(A),Q=J.get("folder_id");return _e(J),f.trigger("before:move",J.toJSON(),V),J.set("unread",0),pe(A,{folder_id:V},G).then(function(re){var le=function(de){if(de.error)throw a.getModel(Q).set("subscr_subflds",!0),ne.refresh(),a.getCollection(Q).add(J),de;a.getModel(V).set("subscr_subflds",!0),ne.refresh(),a.getCollection(V).add(J),f.trigger("move",A,de)};if(re&&(re.code==="JOB-0003"||re.job)){f.trigger("new:longrunningjob"),d.on("finished:"+(re.job||re.data.job),le);return}le(re)},function(re){throw a.getModel(Q).set("subscr_subflds",!0),a.getCollection(Q).add(J),ne.refresh(),re})}function De(A,V){return A=String(A),E(A).then(function(G){V=_.extend({module:G.module,subscribed:1,title:u("New Folder"),updateParentFolder:!0},V),h(V.module)&&V.module!=="calendar"&&V.module!=="event"&&!(G.id==="2"||w.is("public",G))&&(V.permissions=_(G.permissions).filter(function(Q){return!!(Q.bits&268435456)}));var J={action:"new",autorename:!0,folder_id:A};return V.module!=="event"&&(J.tree=b(A)),V.module==="contacts"&&(V.module="addressdata"),M.PUT({module:"folders",params:J,data:V,appendColumns:!1}).then(function(Z){return E(Z)}).then(function(Z){return V.module==="addressdata"&&(V.module="contacts"),(h(V.module)?ce({module:V.module,cache:!1}):U(A,{cache:!1})).then(function(){return Z})}).done(function(Z){S.visible(Z)||f.trigger("warn:hidden",Z)}).done(function(Z){V.updateParentFolder&&(a.getModel(A).set("subscr_subflds",!0),ne.refresh(),f.trigger("create",Z),f.trigger("create:"+A.replace(/\s/g,"_"),Z))}).fail(function(Z){f.trigger("create:fail",Z,A)})})}function _e(A){_(a.collections).invoke("remove",A)}var Me=[];function Fe(A){return _(Me).contains(A)}function q(A){_.isArray(A)||(A=[A]);var V={},G;return _(A).each(function(J){var Q=a.getModel(J),Z=V[J]=Q.toJSON();f.trigger("before:remove",Z),Q.set("unread",0),_e(Q),delete a.models[J],Q.trigger("destroy")}),G={action:"delete",failOnError:!0,tree:b(A[0]),extendedResponse:!0},M.PUT({module:"folders",params:G,data:A,appendColumns:!1}).done(function(J){J=J||[],_(A).each(function(Q,Z){var re=V[Q];if(f.trigger("remove",Q,re),f.trigger("remove:"+Q,re),f.trigger("remove:"+re.module,re),!h(re.module))if(f.is("trash",re)||J[Z]&&_.isEmpty(J[Z].new_path))f.pool.removeCollection(Q,{removeModels:!0});else{Me.push(Q);var le=J[Z]?J[Z].new_path:Q;f.get(le,{cache:!1}).fail(function(de){(de.code==="FLD-0008"||de.code==="IMAP-1002")&&f.pool.removeCollection(Q,{removeModels:!0})}).always(function(){Me=_(Me).without(Q)})}D.is("trash",Q)&&f.trigger("cleared-trash")})}).fail(function(){_(A).each(function(J){f.trigger("remove:fail",J)}),Ce()})}function Y(A){_.isArray(A)||(A=[A]);var V=[];return _(A).each(function(G){var J=G.get("id");V.push(J),_(f.pool.collections).invoke("remove",G),G.set("unread",0)}),M.PUT({module:"folders",params:{action:"restore",tree:b(V[0])},data:V,appendColumns:!1}).done(function(){_(A).each(function(G){var J=G.get("id");f.get(J,{cache:!1}).done(function(){Ce(),f.trigger("restore",G.toJSON())}
1).fail(function(Q){(Q.code==="FLD-0008"||Q.code==="IMAP-1002")&&_e(G)})})}).fail(function(){_(A).each(function(G){f.propagate("restore:fail",G.toJSON())})})}function j(A){return f.trigger("before:clear",A),d.enqueue(M.PUT({module:"folders",appendColumns:!1,params:{action:"clear",tree:b(A),allow_enqueue:!0},data:[A]})).done(function(){(f.pool.models[A]&&f.pool.models[A].is("trash")||D.is("trash",A))&&(f.pool.collections[A]&&f.pool.collections[A].each(function(V){f.pool.removeCollection(V.id,{removeModels:!0})}),f.trigger("cleared-trash")),f.trigger("clear",A),Ce()})}function te(A){this.nodeValue=A.display_title||A.title||A.id}function ae(A){var V=document.createTextNode("");return E(A).done(te.bind(V)),V}function xe(A){var V="io.ox/"+(A.module==="infostore"?"files":A.module),G=encodeURIComponent(A.id);return ox.abs+ox.root+"/#!&app="+V+"&folder="+G}function fe(A){return _(A).chain().pluck("folder_id").uniq().value().length<=1}function $e(A){return!D.is("sent",A.folder_id)}function we(A){return!_.isArray(A)||A.length===1||fe(A)?A:_(A).filter($e)}function ke(A){return _.isString(A)?A:A?A.folder_id:null}function ve(){_.chain(arguments).flatten().map(ke).compact().uniq().each(function(A){ve.hash[A]||(ve.hash[A]=_.debounce(E.bind(null,A,{cache:!1}),ve.wait)),f.trigger("reload:"+A),ve.hash[A]()})}ve.hash={},ve.wait=2e3;function Ne(A){var V=a.getModel(A),G=V.get("module");i.set(["folder/hidden",A],!0).save(),f.trigger("hide",A),ce({module:G,cache:!1})}function Ae(A){var V=a.getModel(A),G=V.get("module");i.remove(["folder/hidden",A]).save(),f.trigger("show",A),ce({module:G,cache:!1})}function Re(A,V){V===!0?Ae(A):Ne(A)}var qe=function(){var A={},V=500;function G(Q){delete A[Q],ve(Q)}function J(Q){A[Q]&&clearTimeout(A[Q]),A[Q]=setTimeout(G,V,Q)}return function(Z,re){var le=a.getModel(Z);le.set("unread",Math.max(0,le.get("unread")+re)),J(Z)}}();function Ve(A,V){a.getModel(A).set("unread",Math.max(0,V))}function Be(A,V){var G=a.getModel(A);G.set("unread",Math.max(V||0,G.get("unread")))}function Ce(){a.expire(),M.pause();var A=[];return _(f.pool.models).chain().filter(function(V){return!h(V.get("module"))}).invoke("get","folder_id").uniq().compact().without("0").each(function(V){A.push(U(V,{cache:!1}))}),_(ye()).each(function(V){A.push(ce({module:V,cache:!1}))}),$.when.apply($,A).always(function(){ne.refresh()}),M.resume()}ox.on("please:refresh refresh^",Ce),ox.on("account:delete",a.removeModels.bind(a)),n.on("create update",Ce);function Pe(){var A=_(D.getStandardFolders()).filter(function(Q){return!/^default0/.test(Q)}),V=D.getInbox(),G=a.getCollection(V),J=_(G.pluck("id")).filter(D.isStandardFolder);return J.concat(A)}var Ue=e.get("namespace","INBOX/")==="";function He(A){var V=w.getDefaultFolder(A);return V?$.Deferred().resolve(V):A==="mail"?$.Deferred().resolve("default0"+Ee()+"INBOX"):A==="infostore"?$.Deferred().resolve(10):ce({module:A}).then(function(G){for(var J in G)if(J!=="hidden"){var Q=G[J];if(Q&&Q[0]&&Q[0].id)return Q[0].id}return null})}function Ee(){return e.get("defaultseparator","/")}function We(A){var V=A.split(Ee())[0],G=e.get("separators")||{};return/^default\d+$/.test(V)?(V=V.replace("default",""),G[V]?G[V]:Ee()):"/"}w.registerPool(a);function Ge(A){!A||!a.models[A]||(_e(a.models[A]),delete a.models[A],delete a.collections[A])}return _.extend(f,{FolderModel:P,FolderCollection:B,Pool:W,pool:a,calculateSubtotal:x,get:E,list:U,multiple:O,path:ie,flat:ce,update:pe,move:Te,create:De,remove:q,restore:Y,isBeingDeleted:Fe,clear:j,reload:ve,hide:Ne,show:Ae,toggle:Re,refresh:Ce,bits:w.bits,is:w.is,can:w.can,supports:w.supports,virtual:ne,isVirtual:l,isExternalFileStorage:c,isFlat:h,isNested:L,getFlatCollection:ge,getFlatViews:ye,getDefaultFolder:w.getDefaultFolder,getExistingFolder:He,getStandardMailFolders:Pe,getDefaultSeparator:Ee,getMailFolderSeparator:We,getTextNode:ae,getDeepLink:xe,getFolderTitle:F,ignoreSentItems:we,processListResponse:z,changeUnseenCounter:qe,setUnseenCounter:Ve,setUnseenMinimum:Be,getSection:ue,Bitmask:k,propagate:K,altnamespace:Ue,injectIndex:p,multipleLists:X,renameDefaultCalendarFolders:T,removeFromPool:Ge}),f});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(M,w,v,S,F,k){"use strict";var D=M.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(y){this.options.a11yDescription.push(y),this.options.a11yDescription=_.uniq(this.options.a11yDescription),this.renderTooltip()},getA11yDescription:function(){return _.isEmpty(this.options.a11yDescription)?"":". "+this.options.a11yDescription.join(".")},list:function(){var y=this.options;return w.list(y.model_id,{all:y.tree.all})},reset:function(){if(this.isReset)return this.trigger("reset");this.collection.fetched?this.onReset():this.list()},getFilter:function(){var y=this.options,d=y.filter?this:y.tree,m=y.filter||y.tree.filter;return m.bind(d,y.model_id)},onReset:function(){var y=this.options,d=this.collection.filter(this.getFilter()),m=this.model.get("id").indexOf("virtual/favorites")===0,o={};this.$.subfolders.children().each(function(){o[$(this).attr("data-id")]=$(this).detach().data("view")}),this.$.subfolders.append(d.filter(function(i){return m?!!i.get("subscribed"):!0}).map(function(i){return(o[i.id]||this.getTreeNode(i).render()).$el},this)),this.folder!=="1"&&this.folder!=="default0"&&this.modelSetSubfolders(d.length>0),this.renderEmpty(),this.$.subfolders.children().each(function(){var i=$(this).data("view");
1!i||o[i.folder]||y.tree.appear(i)}),this.isReset=!0,this.trigger("reset")},onAdd:function(y){if(!this.getFilter()(y)){this.renderEmpty();return}var d=this.getTreeNode(y);this.$.subfolders.append(d.render().$el),this.options.tree.appear(d),this.modelSetSubfolders(!0),this.renderEmpty()},onRemove:function(y){this.$.subfolders.children('[data-id="'+$.escape(y.attributes&&y.attributes.id?y.attributes.id:y.id)+'"]').remove(),this.renderEmpty()},onChangeId:function(y){var d=String(y.get("id")),m=String(y.previous("id")),o=this.options.tree.selection,i=o.get();this.folder===m&&(this.folder=d),this.options.model_id===m&&(this.options.model_id=d),this.options.contextmenu_id===m&&(this.options.contextmenu_id=d),this.renderAttributes(),m===i&&this.options.tree.trigger("change",d),this.options.open=!1,this.collection&&(this.stopListening(this.collection),this.stopListening(w,"create:"+String(m).replace(/\s/g,"_")),this.collection=w.pool.getCollection(d),this.listenTo(this.collection,{add:this.onAdd,remove:this.onRemove,"change:subscribed":this.onReset,reset:this.onReset,sort:this.onSort}),this.listenTo(w,"create:"+String(d).replace(/\s/g,"_"),function(){this.open=!0,this.onChangeSubFolders()}),this.isReset=!1,this.reset()),this.onChangeSubFolders()},onChange:function(y){y.changed.title!==void 0&&this.renderFolderL
1abel(),y.changed.id!==void 0&&this.onChangeId(y),y.changed.subfolders&&(y.changed.subfolders||(this.open=!1),this.onChangeSubFolders()),this.repaint()},toggle:function(y,d){if(this.options!==null){var m=this.options.open!==y;this.options.open=y,this.onChangeSubFolders(),this.renderCounter(),m&&this.options.tree.trigger(y?"open":"close",this.folder,d)}},onToggle:function(y){y.isDefaultPrevented()||(y.preventDefault(),this.toggle(!this.options.open))},isOpen:function(){return this.options.open&&this.hasSubFolders()},hasArrow:function(){return this.$.arrow.find("i.fa-fw").length===0},onArrowClick:function(y){if(!$(y.target).closest(this.$.arrow).length||!this.hasArrow()){y.preventDefault();return}y.stopPropagation(),this.onToggle(y)},onArrowMousedown:function(y){$(y.target).closest(this.$.arrow).length&&this.hasArrow()&&y.preventDefault()},onOptions:function(y){y.preventDefault()},hasSubFolders:function(){var y=/^virtual\/flat/.test(this.folder);return this.options.subfolders&&(y||this.modelGetSubfolders()===!0)},modelGetSubfolders:function(){return this.model.get(this.options.tree.all?"subfolders":"subscr_subflds")},modelSetSubfolders:function(y){return this.model.set(this.options.tree.all?"subfolders":"subscr_subflds",y)},onChangeSubFolders:function(){var y=this.hasSubFolders(),d=this.isOpen(),m="fa-fw";y&&(m=d?"fa-caret-down":"fa-caret-right"),this.$.arrow.toggleClass("invisible",!y).html($('<i class="fa" aria-hidden="true">').addClass(m)),y&&!this.options.headless?this.$el.attr("aria-expanded",d):this.$el.removeAttr("aria-expanded"),this.$el.toggleClass("open",d),this.renderEmpty(),d&&this.reset()},onKeydown:function(y){if(!(y.isDefaultPrevented()||!/^(13|32|37|39)$/.test(y.which))&&(y.preventDefault(),!(!this.hasSubFolders()&&/^(13|32|39)$/.test(y.which)))){var d=this.options;/^(13|32)$/.test(y.which)&&this.isVirtual?this.toggle(!d.open):y.which===39?!d.open&&y.which===39?this.toggle(!0):this.$el.find("ul.subfolders:first > li:first-child").trigger("click"):y.which===37&&(d.open?this.toggle(!1):d.indent&&d.level>=0&&d.parent.$el.trigger("click"))}},getTreeNode:function(y){var d=y.id||y.attributes.id,m=this.options,o=m.headless||m.indent===!1?m.level:m.level+1,i=m.namespace||m.folder.indexOf("virtual/favorites")===0?"favorite":"",e={folder:d,icons:this.options.icons,iconClass:this.options.iconClass,level:o,tree:m.tree,parent:this,namespace:i};return new D(m.tree.getTreeNodeOptions(e,y))},functions:function(){this.onSort=_.debounce(function(){if(!this.disposed&&this.$){var y={};this.$.subfolders.children().each(function(){y[$(this).attr("data-id")]=$(this)}),this.$.subfolders.append(this.collection.map(function(d){return y[d.id]}))}},10),this.repaint=_.throttle(function(){this.disposed||this.model!==null&&this.render()},10)},initialize:function(y){this.functions(),this.folder=String(y.folder);var d=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:[]},y);this.model=w.pool.getModel(d.model_id),this.noSelect=!this.model.can("read"),this.isVirtual=this.options.virtual||/^virtual/.test(this.folder)||this.folder==="cal://0/allPublic",this.collection=w.pool.getCollection(d.model_id,d.tree.all),this.isReset=!1,this.realNames=y.tree.realNames,this.id=_.uniqueId(d.tree.id+"-node-"),this.$={},this.$el.data("view",this),_(d.tree.open).contains((d.namespace?d.namespace+":":"")+this.folder)&&(d.open=!0),d.subfolders&&(this.listenTo(this.collection,{add:this.onAdd,remove:this.onRemove,"change:subscribed":this.onReset,reset:this.onReset,sort:this.onSort}),this.listenTo(w,"create:"+String(d.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 m=0;d.tree.options.highlightclass==="visible-selection-smartphone"&&(m=22),this.$el.attr({id:this.id,"data-id":this.folder,"data-model":d.model_id,"data-contextmenu-id":d.contextmenu_id,"data-namespace":d.namespace,"aria-label":this.getTitle()}).append(this.$.selectable=$('<div class="folder-node" aria-hidden="true">').css("padding-left",d.level*this.indentation+m).append(this.$.arrow=d.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">')),d.headless?(this.$el.removeClass("selectable"),this.$.selectable.remove(),this.$.subfolders.attr("role","presentation")):this.$el.attr({"aria-selected":!1,role:"treeitem",tabindex:"-1"}),d.sortable&&this.$el.attr("data-sortable",!0),this.noSelect&&d.level>0&&this.$el.addClass("no-select"),this.isVirtual&&this.$el.addClass("virtual"),(!this.isVirtual||d.contextmenu)&&d.tree.options.contextmenu&&d.tree.app&&this.renderContextControl(),this.isVirtual||w.get(d.model_id),(d.empty===!1&&d.open===!1||this.isVirtual)&&this.reset();var o=this.model.toJSON(),i=v.Baton({view:this,data:o});v.point("io.ox/core/foldertree/node").invoke("initialize",this.$el,i),d.tree.options.customize.call(this.$el,i),d.tree.options.disable(o,d)&&this.$el.addClass("disabled"),this.$el.on("dispose",this.remove.bind(this)),d.tree.once("dispose",this.remove.bind(this))},getCounter:function(){var y=0;return!this.options.open&&this.options.subfolders&&this.model.get("subtotal")&&(y=this.model.get("subtotal")),this.options.count!==void 0?this.options.count:(this.model.get("unread")||0)+y},showStatusIcon:function(y,d,m,o){var i=this;if(o&&this.hideStatusIcon(),this.$.accountLink){y&&this.$.accountLink.attr("title",y);return}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(),i.options.tree.trigger(d,m)}),y&&this.$.accountLink.attr("title",y)},hideStatusIcon:function(){this.$.accountLink&&(this.$.accountLink.remove(),this.$.accountLink=null)},renderCounter:function(){var y=this.getCounter();this.$.selectable.toggleClass("show-counter",y>0),y>999&&(y="999+"),this.$.counter.text(y===0?"":y)},getTitle:function(){var y=this.model.get("display_title")||this.options.title||this.model.get("title")||"",d=this.model.is("drive")&&(this.model.get("folder_id")==="10"||this.model.get("folder_id")==="15")&&this.model.is("federated-sharing");if(d){var m=this.model.getAccountDisplayName();y=m?y+" ("+m+")":y}return this.realNames===!0&&this.model.get("folder_name")||y},renderTooltip:function(){if(!this.options.title&&this.model.has("title")){var y=[],d=[];
1if(this.model.supports("count_total")){var m=this.model.toJSON();S.isUnifiedRoot(this.model.get("id"))&&(m=_.pick(m,"title")),_.isNumber(m.total)&&m.total>=0&&(y.push(k("Total: %1$d",m.total)),m.total>0&&d.push(k("%1$d total",m.total))),_.isNumber(m.unread)&&m.unread>=0&&(y.push(k("Unread: %1$d",m.unread)),m.unread>0&&d.push(k("%1$d unread",m.unread))),y=y.join(", "),d=d.reverse().join(", "),y&&(y=" ("+y+")"),d&&(d=", "+d+". "+k("Right click for more options."))}this.$el.attr("aria-label",this.getTitle()+d+this.getA11yDescription()),this.$.selectable.attr("title",this.getTitle()+y)}},renderContextControl:function(){if(_.device("smartphone"))return this.$el.attr("data-contextmenu",this.options.contextmenu||"default");var y=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:y?k("Actions for %1$s",y):k("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 this.$.subfolders.children().length===0},renderEmpty:function(){this.options.empty===!1&&(this.$el.toggleClass("empty",this.isEmpty()),this.model.get("id")==="virtual/favorites/infostore"&&this.$el.toggleClass("show-anyway",!!this.collection.length))},renderIcon:function(){var y=this.options,d,m=y.iconClass,o,i,e;if(!(y.tree.module!=="infostore"&&!y.icons||!/^(mail|infostore|notes)$/.test(y.tree.module))){if(y.tree.module==="mail"){d=S.getType(this.folder)||"default",this.$.icon.addClass("visible "+d);return}if(m)m="visible "+m;else{switch(o=String(w.getDefaultFolder("infostore")),i=F.get("folder/mailattachments",{}),e=String(i.all),this.folder){case"virtual/myshares":m="visible myshares";break;case"virtual/favorites/infostore":m="visible myfavorites";break;case e:m="visible attachments";break;case o:m="visible myfiles";break}!m&&w.is("trash",this.model.attributes)&&this.model.get("standard_folder")&&(m="visible trash")}this.$.icon.addClass(m)}},render:function(){if(this.renderAttributes(),this.renderEmpty(),this.renderTooltip(),this.renderCounter(),this.renderIcon(),this.onChangeSubFolders(),this.model)return v.point("io.ox/core/foldertree/node").invoke("draw",this.$el,v.Baton({view:this,data:this.model.toJSON()})),this},destroy:function(){var y=this.options.parent;this.$el.remove(),y.renderEmpty&&y.renderEmpty()},remove:function(){this.stopListening(),this.collection=this.model=this.options=this.$=null}});return D});define("io.ox/core/folder/selection",[],function(){"use strict";function M(v){this.view=v,this.view.$el.on("click contextmenu",".selectable",$.proxy(this.onClick,this)).on("keydown",".selectable",$.proxy(this.onKeydown,this)).on("mousedown contextmenu",".selectable",function(S){S.preventDefault()}),v.options.dblclick&&this.view.$el.on("dblclick",$.proxy(this.onDblClick,this)),this.view.$el.addClass("dropzone").attr("data-dropzones",".selectable").on("drop",function(S,F){F&&(F.dropType=v.module,v.selection.trigger("selection:drop",F))}),this.selectableVirtualFolders={},this.unselectableFolders={}}function w(v){v==="change"?this.triggerChange.apply(this,_(arguments).toArray().splice(1)):this.view.trigger.apply(this.view,arguments)}return _.extend(M.prototype,{byId:function(v,S,F){S=S||this.getItems();var k=S.filter('[data-id="'+$.escape(v)+'"]'),D=k.first();return k.length!==1&&k.each(function(){F&&$(this).parentsUntil(".tree-container",".folder.favorites").length?D=$(this):!F&&!$(this).parentsUntil(".tree-container",".folder.favorites").length&&(D=$(this))}),D},get:function(v){return this.view.$el.find(".selectable.selected").attr(v||"data-id")},set:function(v,S){var F=this.getItems(),k=this.byId(v,F,S),D=F.index(k);D!==-1&&this.get()!==v&&(this.uncheck(F),this.pick(D,F,{focus:!1}))},preselect:function(v){var S=this.check(this.byId(v));return S.length>0?(this.view.$container.attr("aria-activedescendant",S.attr("id")),!0):!1},scrollIntoView:function(v){var S=this.byId(v);S.length&&(S[0].scrollIntoView(!0),this.view.trigger("scrollIntoView",v))},onClick:function(v){if(!$(v.target).is(":checkbox")&&!v.isDefaultPrevented()&&(v.preventDefault(),!(this.view.app&&this.view.app.props&&this.view.app.props.get("mobileFolderSelectMode")===!0&&!$(v.target).parent().hasClass("folder-label"))&&(v.type==="contextmenu"&&v.stopPropagation(),!(v.type==="contextmenu"&&v.which===0)))){var S=this.getItems(),F=$(v.currentTarget),k=S.index(F)||0;this.view.trigger("selection:action",S,k),this.view.app&&this.view.app.get("name")==="io.ox/files"&&this.view.app.folder.get()==="9"&&F.removeClass("selected"),!F.hasClass("selected")&&(this.resetTabIndex(S,S.eq(k)),this.uncheck(S),this.pick(k,S))}},onDblClick:function(v){if(!$(v.target).is(":checkbox")&&!($(v.target).closest(".contextmenu-control").length>0)){var S=$(v.target),F=S.closest(".folder"),k=F.attr("data-id");if(this.view.options.instantTrigger)return this.triggerEventInstant("dblclick",v,k);this.triggerEvent("dblclick",v,k)}},onKeydown:function(v){if(/38|40/.test(v.which)){if($(v.target).hasClass("contextmenu-control"))return v.preventDefault();$(v.target).hasClass("selectable")&&this.onCursorUpDown(v)}},onCursorUpDown:function(v){var S=this.getItems().filter(":visible"),F=$(document.activeElement),k=v.which===38,D=(S.index(F)||0)+(k?-1:1);if(!(D>
1=S.length||D<0)&&!v.isDefaultPrevented()){if(v.preventDefault(),this.view.trigger("selection:action",S,D),v.altKey&&F.parent().parent().attr("data-sortable")==="true")return this.move(F,k);this.resetTabIndex(S,S.eq(D)),this.uncheck(S),this.pick(D,S)}},move:function(v,S){S?v.insertBefore(v.prev()):v.insertAfter(v.next()),v.focus();var F=v.parent().parent().attr("data-id"),k=_(v.parent().children(".selectable")).map(function(D){return $(D).attr("data-id")});this.view.trigger("sort sort:"+F,k)},pick:function(v,S,F){var k=_.extend({focus:!0},F),D=k.focus?this.focus(v,S):(S||this.getItems()).eq(v);if(this.check(D),this.view.$container.attr("aria-activedescendant",D.attr("id")),this.view.options.instantTrigger)return this.triggerEventInstant("change",S);this.triggerEvent("change",S)},resetTabIndex:function(v,S){v=v.filter('[tabindex="0"]'),v.not(S).attr("tabindex",-1)},focus:function(v,S){S=S||this.getItems();var F=S.eq(v).attr("tabindex","0").focus();return _.device("chrome")&&F.hide(0,function(){$(this).css("display","")}),F},check:function(v){if(this.view.disposed)return $();var S=this.view.$el.width();return v.addClass("selected").attr({"aria-selected":!0,tabindex:0}).find(".folder-label:first").each(function(){if(!(v.length===1&&v.first().attr("data-id")&&v.first().attr("data-id").indexOf("virtual/settings")===0)){var F=$(this).position().left,k=S-F-76;$(this).css("max-width",Math.max(k,80))}}).end()},uncheck:function(v){return v=v||this.getItems(),v.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(v){this.selectableVirtualFolders[v]=!0},addUnselectableFolder:function(v){this.unselectableFolders[v]=!0},triggerEventInstant:w,triggerEvent:_.debounce(w,300),triggerChange:function(v){var S=this,F=(v||this.getItems()).filter(".selected").first(),k=F.attr("data-id"),D=F.attr("data-show-in-drive"),y=/^virtual/.test(k);D?require(["io.ox/core/extensions","io.ox/files/api","io.ox/backbone/views/actions/util"]).then(function(d,m,o){var i=m.pool.get("detail").get(k);o.invoke("io.ox/files/actions/show-in-folder",d.Baton({models:[i],app:S.view.app,alwaysChange:!0}))}):S.view&&!S.unselectableFolders[k]&&S.view.trigger(y&&!S.selectableVirtualFolders[k]?"virtual":"change",k,F)}}),M});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(M,w,v,S,F,k,D,y,d){"use strict";var m=M.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(o){o=_.extend({context:"app",contextmenu:!1,customize:$.noop,disable:$.noop,abs:!0,icons:y.get("features/folderIcons",!1),root:"default0/INBOX",highlight:_.device("!smartphone"),highlightclass:"visible-selection",hideTrashfolder:!1,realNames:!1},o),this.all=!!o.all,this.app=o.app,this.context=o.context,this.flat=!!o.flat,this.module=o.module,this.open=o.open,this.root=o.root,this.realNames=o.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",d("Folders")),this.$dropdownMenu=$(),this.options=o,this.$el.toggleClass(o.highlightclass,!!o.highlight),this.$el.append(this.$container),this.selection=new S(this),o.abs&&this.$el.addClass("abs"),o.contextmenu&&_.defer(function(){this.disposed||this.renderContextMenu()}.bind(this))},appear:function(o){var i=o.folder.replace(/\s/g,"_");this.trigger("appear:"+i,o)},onClick:function(o){$(document.activeElement).is(".folder.selectable.selected")||$(o.currentTarget).focus()},onAppear:function(o,i){var e=this.getNodeView(o);if(e)return i.call(this,e);o=String(o).replace(/\s/g,"_"),this.once("appear:"+o,i)},preselect:function(o){o!==void 0&&this.onAppear(o,function(){_.defer(function(){this.disposed||this.selection.set(o)}.bind(this)),this.trigger("afterAppear")})},traversePath:function(o,i){var e=this;F.path(o).then(function(t){return _(t).pluck("id").forEach(i.bind(e))})},select:function(o){var i=[],e=this;function t(){var n=i.shift(),u=e.getNodeView(n);if(!i.length)return e.selection.set(n);u&&(u.once("reset",t),u.toggle(!0))}F.path(o).done(function(n){i=_(n).pluck("id"),t()})},getNodeView:function(o){return this.$('.folder[data-id="'+$.escape(o)+'"]').data("view")},filter:function(o,i){if(this.options.hideTrashfolder&&F.is("trash",i.attributes))return!1;var e=this.options.filter,t=_.isFunction(e)?e.apply(this,arguments):void 0;if(t!==void 0)return t;var n=i.get("module");return n==="event"&&(n="calendar"),n===this.module||this.module==="mail"&&/^default\d+(\W|$)/i.test(i.id)},getOpenFolders:function(){return _(this.$el.find(".folder.open")).chain().map(function(o){var i=$(o).attr("data-namespace")?$(o).attr("data-namespace")+":":"";return i+$(o).attr("data-id")}
1).uniq().value().sort()},getTreeNodeOptions:function(o,i){return i.get("id")==="default0/INBOX"&&o.parent.folder==="virtual/standard"&&(o.subfolders=!!F.altnamespace),this.flat&&o.parent!==this&&(o.subfolders=!1),o.parent.folder==="virtual/standard"&&(o.icons=!0),o.parent.folder==="virtual/favorites/infostore"&&(o.inFavorites=!0),o},toggleContextMenu:function(o){var i=this.dropdown.$el.hasClass("open");i||_.device("smartphone")||(o.target.is("a.contextmenu-control")||(o.target=o.target.find(".contextmenu-control").first()),_.defer(function(){this.disposed||(this.$dropdownMenu.css({top:o.top,left:o.left,bottom:"auto"}).empty().busy(),this.dropdown.$toggle=o.target,this.$dropdownToggle.dropdown("toggle"))}.bind(this)))},onToggleContextMenu:function(o){var i=$(o.target).is("a")&&o.type==="keydown"?$(o.target):$(o.currentTarget),e=i.offset(),t=e.top-7,n=e.left+i.outerWidth()+7;this.toggleContextMenu({target:i,top:t,left:n})},onKeydown:function(o){/35|36/.test(o.which)&&(o.which===36?this.$el.find("li.folder.selectable:visible:first").trigger("click"):o.which===35&&this.$el.find("li.folder.selectable:visible:last").trigger("click"))},onKeydownMenuKeys:function(o){if(v.macOSKeyboardHandler(o),o.type==="keydown"){var i=o.shiftKey&&o.which===121,e=o.which===93;(/13|32|38|40/.test(o.which)||i||e)&&(this.focus=/38/.test(o.which)?"li:last > a":"li:first > a"),i&&o.isKeyboardEvent&&this.onContextMenu(o)}},onContextMenu:function(o){o.stopPropagation(),this.toggleContextMenu(v.positionForEvent(o))},getContextMenuId:function(o){return"io.ox/core/foldertree/contextmenu/"+(o||"default")},renderContextMenuItems:function(o){var i=this.selection.get("data-contextmenu-id"),e=this.app,t=this.module,n=this.$dropdownMenu.empty(),u=this.getContextMenuId(o),f=this,a=this.selection.get("data-favorite"),b=this.$dropdownToggle;F.get(i).done(function(p){var T=new k.Baton({app:e,data:p,view:f,module:t,originFavorites:a});k.point(u).invoke("draw",n,T),_.device("smartphone")&&(n.append($("<li>").append($('<a href="#" class="io-ox-action-link" data-action="close-menu">').text(d("Close")))),n.find("[role=menuitem]").length===0&&n.prepend($("<li>").append($('<div class="custom-dropdown-label">').text(d("No action available"))))),_.device("smartphone")&&n.find(".divider").remove(),n.find(".divider").each(function(){var r=$(this),g=r.next();(r.prev().length===0||g.hasClass("divider")||g.length===0)&&r.remove()}),_.device("smartphone")||f.dropdown.setDropdownOverlay(),f.focus&&n.find(f.focus).focus(),f.focus=!1}).always(function(){b.removeClass("opening")})},renderContextMenu:function(){function o(t){this.$dropdownMenu.idle(),this.renderContextMenuItems(t)}function i(){this.$dropdownToggle.addClass("opening");var t=this.dropdown.$toggle.attr("data-contextmenu")||this.selection.get("data-contextmenu");require(["io.ox/core/folder/contextmenu"],_.lfo(o.bind(this,t))),this.$dropdownMenu.attr("role","menu")}function e(){this.dropdown.$toggle.parents("li").first().focus()}return function(){this.$dropdownToggle=$('<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true">').attr("aria-label",d("Folder options")),this.$dropdownMenu=$('<ul class="dropdown-menu">'),this.dropdown=new w({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",i.bind(this)).on("hidden.bs.dropdown",e.bind(this))),this.$dropdownMenu.removeAttr("role")}}(),render:function(){return k.point("io.ox/core/foldertree/"+this.module+"/"+this.context).invoke("draw",this.$container,this),this}});return m});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(M,w,v,S,F,k){"use strict";_("mail contacts calendar tasks".split(" ")).each(function(a){if(a==="mail"&&!S.has("webmail")||a!=="mail"&&!S.has(a))return;var b="virtual/favorites/"+a,p=w.pool.getModel(b),T=w.pool.getCollection(b),r={};function g(h){F.set(y(a),h).save()}function l(){var h=_(T.pluck("id")).filter(function(L){return!r[L]});g(h)}w.virtual.add(b,function(){var h=!T.expired&&T.fetched;return w.multiple(D(a),{errors:!0,cache:h}).then(function(L){var s=_(L).filter(function(x){return x.error&&/^(FLD-0008|FLD-0003|ACC-0002|FLD-1004|IMAP-1002|FILE_STORAGE-0004)$/.test(x.code)?(r[x.id]=!0,!1):(delete r[x.id],!0)});return _(s).each(w.injectIndex.bind(w,b)),p.set("subscr_subflds",s.length>0),s.length!==L.length&&_.defer(l),s}).then(w.renameDefaultCalendarFolders)}),T.on("add",function(h){delete r[h.id]}),T.on("add remove change:id",l),a==="mail"?(w.on("rename",function(h,L){L.module==="mail"&&m(T,h).forEac
1h(function(s){s.set("id",L.id+s.get("id").substr(h.length)),l()})}),w.on("remove:mail",function(h){m(T,h.id).forEach(function(L){T.remove(L),l()})})):a==="infostore"&&(p.set("title",k("Favorites")),p.set("folder_id","9"),p.set("own_rights",1),p.set("standard_folder",!0));var c={id:"favorites",index:1,draw:function(h){this.append(new M({empty:!1,folder:b,indent:!w.isFlat(a),open:!1,parent:h,sortable:!0,title:k("Favorites"),tree:h,icons:h.options.icons}).render().$el.addClass("favorites")),h.on("sort:"+b,g)}};v.point("io.ox/core/foldertree/"+a+"/app").extend(_.extend({},c)),v.point("io.ox/core/foldertree/"+a+"/popup").extend(_.extend({},c))});function D(a){return a==="calendar"&&F.get("favorites/chronos")===void 0&&d(),F.get(y(a),[])}function y(a){return"favorites/"+(a==="calendar"?"chronos":a)}function d(){var a=_(F.get("favorites/calendar",[])).map(function(b){return"cal://0/"+b});F.set("favorites/chronos",a).save()}function m(a,b){return a.filter(function(p){var T=p.get("id");if(T)return T.indexOf(b+w.getMailFolderSeparator(T))===0})}function o(a,b,p){if(b=b||w.pool.getModel(a),p=p||b.get("module"),!!p){var T="virtual/favorites/"+p,r=w.pool.getCollection(T);r.remove(b),w.trigger("favorite:remove")}}function i(a,b){if(b=b||w.pool.getModel(a),!!b.get("module")){var p="virtual/favorites/"+b.get("module"),T=w.pool.getCollection(p);b.set("index/"+p,!0,{silent:!0}),T.add(b),T.sort(),w.trigger("favorite:add")}}w.on("collection:remove",function(a,b){o(a,b)});function e(a){i(a.data.id)}function t(a){o(a.data.id,void 0,a.data.module)}function n(a,b){return $('<a href="#" role="menuitem" tabindex="-1">').attr("data-action",a).text(b).on("click",$.preventDefault)}function u(a){return a.attr("aria-disabled",!0).removeAttr("tabindex").addClass("disabled")}function f(a,b){if(b.data.module!=="infostore"){var p=n(b.action,b.text);return b.enabled?p.on("click",b.data,b.handler):u(p),a.append($('<li role="presentation">').append(p)),p}}return v.point("io.ox/core/foldertree/contextmenu/default").extend({id:"toggle-favorite",index:1010,draw:function(a){var b=a.data.id,p=a.module,T=D(p),r=_(T).indexOf(b)>-1;w.is("trash",a.data)||f(this,{action:"toggle-favorite",data:{id:b,module:p},enabled:!0,handler:r?t:e,text:k(r?"Remove from favorites":"Add to favorites")})}}),{add:i,remove:o}});define("io.ox/core/folder/view",["io.ox/core/extensions","io.ox/core/folder/api","io.ox/contacts/util","settings!io.ox/core","gettext!io.ox/core"],function(M,w,v,S,F){"use strict";function k(D){D=_.extend({firstResponder:"listView",autoHideThreshold:700},D);var y=D.app,d=D.tree,m=d.options.module,o=y.get("name")+"/folderview",i=!1,e=y.settings.get("folderview/open",{}),t=y.getWindow().nodes,n=t.sidepanel,u=!1,f=!1,a=280;e||(e={},/^(contacts|calendar|event|tasks)$/.test(m)&&(e[_.display()]=["virtual/flat/"+m+"/private","virtual/flat/"+m+"/public"]));function b(){y.settings.set("folderview/visible/"+_.display(),i).save()}function p(C){C===void 0?y.settings.remove("folderview/width/"+_.dis
1play()):y.settings.set("folderview/width/"+_.display(),C),y.settings.save()}function T(){return y.settings.get("folderview/width/"+_.display(),a)}function r(C){var N=C===void 0?"":C+"px";t.body.css("left",N),t.sidepanel.css("width",N)}function g(){r(T())}function l(){var C=y.getWindow(),N=C.options.chromeless,I=$(document).width()<=y.folderView.resize.autoHideThreshold;t.body.css("left",N||I?0:50)}var c=function(){$(document).trigger("resize")};y.folderView={tree:d,forceOpen:f,isVisible:function(){return i},show:function(){i=!0,u||b(),g(),n.addClass("visible"),y.trigger("folderview:open"),c(),n.css("display","flex")},hide:function(){i=!1,f=!1,u||b(),l(),n.removeClass("visible").css("width",""),y.trigger("folderview:close"),c()},toggle:function(C){C===void 0&&(C=!i),C?this.show():this.hide()},resize:function(){var C=0,N=D.tree.options.minWidth||240,I,P;function B(R){var H=R.pageX-I;H>C||H<N||(y.trigger("folderview:resize"),r(P=H),c())}function W(R){$(this).off("mousemove.resize mouseup.resize"),c(),R.pageX-I<N*.75?y.folderView.hide():p(P||a)}function z(R){R.preventDefault(),I=R.pageX-n.width(),C=$(document).width()/2,$(document).on({"mousemove.resize":B,"mouseup.resize":W})}return{enable:function(){n.append($('<div class="resizebar">').on("mousedown.resize",z))},autoHideThreshold:D.autoHideThreshold}}()},y.folderViewIsVisible=function(){return i};function h(){var C=$(document).width();if(t.outer.is(":visible")){var N=y.folderView.resize.autoHideThreshold;!y.folderView.forceOpen&&!u&&i&&C<=N?(y.folderView.hide(),u=!0):u&&C>N&&(y.folderView.show(),u=!1)}}if($(window).on("resize",_.throttle(h,200)),M.point(o+"/options").extend({id:"defaults",index:100,rootFolderId:"1",type:void 0,view:"ApplicationFolderTree",visible:_.device("smartphone")?!1:y.settings.get("folderview/visible/"+_.display(),!0)}),m){var L=S.get(["folder/hidden"]);L===void 0&&(L=y.settings.get("folderview/blacklist",{}),_.isObject(L)&&S.set(["folder/hidden"],L).save())}e&&e[_.display()]&&(e=e[_.display()]),e=_.isArray(e)?e:[],d.open=e;var s=y.folder.get();_.device("smartphone")?(d.$el.on("click",".folder",_.debounce(function(C){var N=y.props.get("mobileFolderSelectMode");if(d.module==="calendar"){if($(C.target).is(".folder-arrow, .fa, .color-label"))return;if(!N){$(C.target).siblings().click();return}}var I=$(C.target).closest(".folder");if(N)return!$(C.target).parent().hasClass("folder-label")||!$(C.target).closest(".folder").attr("data-contextmenu")?void 0:d.dropdown.$(".dropdown-toggle").trigger("click","foldertree");I.is(".virtual")&&d.selection.selectableVirtualFolders[I.data().id]!==!0||(D.firstResponder&&y.pages.changePage(D.firstResponder),D.respondCallback&&D.respondCallback())},10)),s&&_.defer(d.selection.preselect.bind(d.selection,s))):s?_.defer(function(){w.path(s).done(function(C){var N=_(C).pluck("id").slice(0,-1),I=_(C).where({id:s})[0],P=I.id===v.getGabId()?"public":w.getSection(I.type,I.id);if(P&&/(mail|contacts|calendar|tasks|infostore)/.test(d.module)&&d.flat&&d.context==="app"){var B=d.module==="calendar"?"event":d.module;N.push("virtual/flat/"+B+"/"+P)}d.open=_(d.open.concat(N)).uniq()}).always(function(){d.onAppear(s,function(){_.defer(function(){d.selection.preselect(s),d.selection.scrollIntoView(s),w.isVirtual(s)&&d.selection.triggerChange()})}),d.render()})}):d.render(),d.$(".tree-container").attr({"aria-label":F("Folders")}),d.$(".tree-container").toggleClass("flat-tree",w.isFlat(d.options.module)),_(M.point(o+"/options").all()).each(function(C){D=_.extend(C,D||{})});function x(C,N,I){if(N!==0){if(N!==I.length-1)return this.onAppear(C,function(P){P.isOpen()||P.toggle(!0)});this.onAppear(C,function(P){P.$el.intoView(this.$el,{ignore:"bottom:partial"})})}}(function(){var N=!1;y.on("folder:change",function(I,P,B){N||(d.traversePath(I,x),d.$el.find('[data-id="'+I+'"]').length?d.selection.set(I,B):d.on("appear:"+I,function(){d.selection.set(I,B),d.off("appear:"+I)}))}),d.on("change",function(I){N=!0,y.folder.set(I),N=!1}),d.on("virtual",function(I){y.trigger("folder-virtual:change",I)}),w.on("create",_.debounce(function(I){d.traversePath(I.id,x)}
1,15))})(),w.on("before:remove",function(C){var N=/^(1|2)$/.test(C.folder_id)?w.getDefaultFolder(C.module)||"1":C.folder_id;d.selection.set(N)}),w.on("move",function(C,N){d.traversePath(N,x),d.selection.set(N)}),d.on("open close",function(){var C=this.getOpenFolders();y.settings.set("folderview/open/"+_.display(),C).save()}),window.tree=d,D.visible&&y.folderView.show()}return{initialize:k}});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(M,w,v,S,F,k,D,y,d,m,o,i,e,t,n,u){"use strict";var f="default0"+d.separator+"INBOX";F.has("webmail")&&(w.virtual.add("virtual/standard",function(){var z=n.get("defaultFolder")||{},R=[],H={};return u.pause(),R.push(w.get(f)),H[f]=!0,n.get("features/unseenFolder",!1)&&R.push(w.get("virtual/all-unseen")),["drafts","sent","spam","trash","archive"].forEach(function(K){var ee=z[K];!ee||H[ee]||K==="archive"&&!F.has("archive_emails")||(R.push(w.get(ee)),H[ee]=!0)}),u.resume(),this.concat.apply(this,R)}),w.virtual.add("virtual/myfolders",function(){var z=w.altnamespace?"default0":f;return w.list(z).then(function(R){return _(R).filter(function(H){return!(v.isHidden({id:H.account_id})||H.id.indexOf("default0/External accounts")===0||v.isStandardFolder(H.id)||w.is("public|shared",H))})})}),w.on("after:rename",function(z,R){R.folder_id===f&&w.virtual.reload("virtual/myfolders")}),w.virtual.add("virtual/remote",function(){return w.list("1").then(function(z){return _(z).filter(function(R){return v.isExternal(R.id)})})})),F.has("filestore")&&w.virtual.add("virtual/filestorage",function(){return w.list("1").then(function(z){return _(z).filter(function(R){return w.isExternalFileStorage(R)})})});function a(){var z=t.get("folder/infostore");return z?w.get(z):null}function b(){if(!F.has("guest")&&F.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:m("My shares")})}var p=t.get("folder/mailattachments",{});p.all&&e.add(p.all);function T(){var z=p.all;return z?w.get(z):null}function r(z){z.preventDefault(),ox.launch("io.ox/files/main",{folder:p.all}).done(function(){this.folder.set(p.all)})}function g(){return w.list("9").then(function(z){return _(z).filter(function(R){return w.is("trash",R)})})}function l(z){z.preventDefault(),require(["io.ox/mail/accounts/settings"],function(R){R.mailAutoconfigDialog(z)})}function c(z){z.preventDefault(),require(["io.ox/core/settings/user"],function(R){R.openModalDialog()})}F.has("infostore")&&(w.virtual.add("virtual/drive/private",function(){return this.concat(a(),b(),T(),g())}),w.virtual.add("virtual/drive/private-without-myshares",function(){return this.concat(a(),T(),g())}),w.virtual.add("virtual/drive/public",function(){return w.list("9").then(function(z){return _(z).filter(function(R){return!(String(R.id)===String(t.get("folder/infostore"))||w.is("trash",R)||w.isExternalFileStorage(R))})})}));function h(){var z=["google","dropbox","boxcom","graph"];return S.point("io.ox/core/folder/storage-accounts/list").invoke("customize",z),require(["io.ox/core/api/filestorage"]).then(function(R){var H=R.rampup().then(function(){return _(R.isStorageAvailable()).map(function(K){return K.match(/\w*?$/)[0]})});return $.when(require(["io.ox/keychain/api"]),H)}).then(function(R,H){return _(R.submodules).filter(function(K){return z.indexOf(K.id)<0?!1:(!K.canAdd||K.canAdd.apply(this))&&H.indexOf(K.id)>=0})})}function L(z){z.preventDefault(),require(["io.ox/files/actions/add-storage-account"],function(R){R(z.data.cap)})}function s(z){if(z.preventDefault(),F.has("subscription"))z.data.baton.module==="calendar"?require(["io.ox/calendar/actions/subscribe-calendar"],function(R){R(z.data.baton)}):require(["io.ox/core/sub/subscriptions"],function(R){R.buildSubscribeDialog({module:z.data.baton.module,app:z.data.baton.view.app})});else{if(!k.enabled(["subscription"]))return;k.trigger({type:"inline-action",id:"io.ox/core/foldertree/contextmenu/default/subscribe",missing:k.missing(["subscription"])})}}function x(z){require(["io.ox/core/sub/sharedFolders"],function(R){var H=z.data.baton.module,K=H==="contacts";R.open({module:H,help:K?"ox.appsuite.user.sect.contacts.folder.subscribeshared.html":"ox.appsuite.user.sect.tasks.folder.subscribeshared.html",title:m(K?"Shared address books":"Shared task folders"),tooltip:m(K?"Subscribe to address book":"Subscribe to task folder"),point:K?"io.ox/core/folder/subscribe-shared-address-books":"io.ox/core/folder/subscribe-shared-tasks-folders",noSync:K?!F.has("carddav"):!F.has("caldav"),sections:{public:m(K?"Public address books":"Public tasks folders"),shared:m(K?"Shared address books":"Shared tasks folders"),private:m("Private"),hidden:m(K?"Hidden address books":"Hidden tasks folders")}})})}var C={unifiedFolders:function(z){this.append(new M({empty:!1,filter:function(R,H){return/^default/.test(H.id)&&v.isUnified(H.id)},folder:"1",headless:!0,open:!0,tree:z,parent:z}).render().$el.addClass("unified-folders").attr("role","treeitem"))},standardFolders:function(z){var R=new M({filter:function(H,K){return K.id==="virtual/all-unseen"&&n.get("unseenMessagesFolder")?!0:v.isStandardFolder(K.id)},folder:"virtual/standard",headless:!0,open:!0,tree:z,parent:z});this.append(R.render().$el.addClass("standard-folders").attr("role","presentation")),R.listenTo(n,"change:unseenMessagesFolder",function(){R.onReset()})},getLocalFolderName:function(){var z=n.get("features/usePrimaryAccountNameInTree",!0)&&v.getPrimaryName()||m("My folders");return z},localFolders:function(z){if(!F.has("guest")){var R=w.altnamespace?"default0":f,H=new M({contextmenu:"myfolders",empty:!!w.altnamespace,folder:"virtual/myfolders",icons:z.options.icons,contextmenu_id:R,parent:z,title:C.getLocalFolderName(),tree:z});v.on("update",function(K,ee){ee.id===0&&(H.options.title=C.getLocalFolderName(),H.renderFolderL
1abel())}),w.on("create:"+R,function(){H.toggle(!0)}),this.append(H.render().$el)}},remoteAccounts:function(z){this.append(new M({folder:"virtual/remote",headless:!0,open:!0,icons:z.options.icons,tree:z,parent:z,isRemote:!0,empty:!1}).render().$el.addClass("remote-folders").attr("role","presentation"))},fileStorageAccounts:function(z){this.append(new M({folder:"virtual/filestorage",headless:!0,open:!0,icons:z.options.icons,tree:z,parent:z}).render().$el.addClass("filestorage-folders").attr("role","presentation"))},treeLinksFiles:function(){if(S.point("io.ox/core/foldertree/files/treelinks").list().length!==0){var z=$('<ul class="list-unstyled" role="group">');S.point("io.ox/core/foldertree/files/treelinks").invoke("draw",z),this.append($('<li class="links list-unstyled" role="treeitem">').append(z))}},addStorageAccount:function(){var z=$('<li role="presentation">');function R(){var K=["nextcloud","webdav","owncloud"];return _.filter(K,function(ee){return F.has("filestorage_"+ee)})}function H(){h().done(function(K){var ee=R();K.length>0||ee.length?z.empty().show().append($('<a href="#" data-action="add-storage-account" role="treeitem">').text(m("Add storage account")).on("click",{cap:ee},L)):z.hide()})}return function(){this.append(z),require(["io.ox/core/api/filestorage"],function(K){K.off("create delete update reset",H),K.on("create delete update reset",H),H()})}}(),manageSubscriptions:function(){var z=$('<li role="presentation">');this.append(z),$.when(w.list(15,{all:!0,cache:!1}
1),w.list(10,{all:!0,cache:!1})).then(function(R,H){if(_.isEmpty(R)&&_.isEmpty(H))return z.remove();z.append($('<a href="#" data-action="manage-subscriptions" role="treeitem">').text(m("Manage Shares")).on("click",function(){require(["io.ox/core/sub/sharedFolders"],function(K){K.open({module:"infostore",help:"ox.appsuite.user.sect.drive.folder.subscribeshared.html",title:m("Shared folders"),point:"io.ox/core/folder/subscribe-shared-files-folders",sections:{public:m("Public folders"),shared:m("Shared folders")},refreshFolders:!0,tooltip:m("Subscribe to folder"),noSync:!0,getData:function(){return $.when(w.list(15,{all:!0,cache:!1}),w.list(10,{all:!0,cache:!1})).then(function(ee,ne){return{public:ee||[],shared:ne||[]}})}})})}))},function(){z.remove()})},subscribe:function(z){if(!(z.extension.capabilities&&!k.visible(z.extension.capabilities))){var R=this;this.link("subscribe",m("Subscribe to address book"),function(H){H.data={baton:z},s(H)}),require(["io.ox/core/sub/subscriptions"],function(H){z.module!=="contacts"&&!H.availableServices.contacts&&R.$el.find("[data-name=subscribeShared]").closest("li").remove()})}},subscribeShared:function(z){if(!(z.extension.capabilities&&!k.visible(z.extension.capabilities))){var R=this;if(z.module==="contacts")R.link("subscribeShared",m("Subscribe to shared address book"),function(H){H.data={baton:z},x(H)});else return}},treeLinks:function(){if(S.point("io.ox/core/foldertree/mail/treelinks").list().length!==0){var z=$('<ul class="list-unstyled" role="group">');S.point("io.ox/core/foldertree/mail/treelinks").invoke("draw",z),this.append($('<li class="links list-unstyled" role="treeitem">').append(z))}},allAttachments:function(){p.all&&this.append($('<li role="presentation">').append($('<a href="#" data-action="all-attachments" role="treeitem">').text(m("View all attachments")).on("click",r)))},addRemoteAccount:function(){F.has("multiple_mail_accounts")&&this.append($('<li role="presentation">').append($('<a href="#" data-action="add-mail-account" role="treeitem">').text(m("Add mail account")).on("click",l)))},synchronizeAccount:function(){this.append(new o({id:"folderview/mail",className:"links",requires:"active_sync",title:m("Synchronize with your tablet or smartphone")}).render().$el)},otherFolders:function(z){this.append(new M({empty:!1,filter:function(R,H){return v.isStandardFolder(H.id)||H.id==="default0/virtual"?!1:w.altnamespace?w.is("public|shared",H.toJSON()):!0},folder:"default0",headless:!0,open:!0,icons:z.options.icons,tree:z,parent:z}).render().$el.addClass("other-folders").attr("role","treeitem"))},myContactData:function(){t.get("user/internalUserEdit",!0)!==!1&&this.append($('<li role="presentation">').append($('<a href="#" data-action="my-contact-data" role="treeitem">').text(m("My contact data")).on("click",c)))},addNewAddressBook:function(z){var R=z.module,H=w.getDefaultFolder(R);this.link("add-new-address-book",m("Personal address book"),function(K){K.data={folder:H,module:R},I(K)})},rootFolders:function(z){var R={folder:z.root,headless:!0,open:!0,tree:z,parent:z};if(z.options.hideTrashfolder&&(R.filter=function(K,ee){return!w.is("trash",ee.attributes)}),z.module==="infostore"){var H=R.filter;R.filter=function(K,ee){var ne=H?H.apply(this,arguments):!0;return ne&&!w.isExternalFileStorage(ee)&&(!z.options.hideTrashfolder||!w.is("trash",ee.attributes))}}this.append(new M(R).render().$el.addClass("root-folders"))},privateDriveFolders:function(z){this.append(new M({folder:"virtual/drive/private",headless:!0,open:!0,icons:z.options.icons,tree:z,parent:z}).render().$el.addClass("private-drive-folders").attr("role","presentation"))},privateDriveFoldersWithoutMyShares:function(z){this.append(new M({folder:"virtual/drive/private-without-myshares",headless:!0,open:!0,icons:z.options.icons,tree:z,parent:z}).render().$el.addClass("private-drive-folders").attr("role","presentation"))},publicDriveFolders:function(z){this.append(new M({folder:"virtual/drive/public",headless:!0,open:!0,icons:z.options.icons,tree:z,parent:z}).render().$el.addClass("public-drive-folders").attr("role","presentation"))}},N=100;S.point("io.ox/core/foldertree/mail/app").extend({id:"unified-folders",index:N+=100,draw:C.unifiedFolders},{id:"standard-folders",index:N+=100,draw:C.standardFolders},{id:"local-folders",index:N+=100,draw:C.localFolders},{id:"other",index:N+=100,draw:C.otherFolders},{id:"remote-accounts",index:N+=100,draw:C.remoteAccounts},{id:"tree-links",index:N+=100,draw:C.treeLinks},{id:"upsell-mail",index:N+=100,draw:C.synchronizeAccount}),S.point("io.ox/core/foldertree/mail/treelinks").extend({id:"all-attachments",index:N+=100,draw:C.allAttachments},{id:"add-account",index:N+=100,draw:C.addRemoteAccount}),S.point("io.ox/core/foldertree/mail/popup").extend({id:"standard-folders",draw:C.standardFolders},{id:"local-folders",draw:C.localFolders},{id:"other",draw:C.otherFolders},{id:"remote-accounts",draw:C.remoteAccounts}),S.point("io.ox/core/foldertree/mail/subscribe").extend({id:"root-folders",draw:C.rootFolders}),S.point("io.ox/core/foldertree/mail/account").extend({id:"root-folders",draw:C.rootFolders}),S.point("io.ox/core/foldertree/mail/filter").extend({id:"standard-folders",draw:C.standardFolders},{id:"local-folders",draw:C.localFolders},{id:"other",draw:C.otherFolders}),S.point("io.ox/core/foldertree/infostore/app").extend({id:"private-folders",index:100,draw:C.privateDriveFolders},{id:"public-folders",index:200,draw:C.publicDriveFolders},{id:"remote-accounts",index:300,draw:C.fileStorageAccounts},{id:"tree-links-files",index:400,draw:C.treeLinksFiles}),S.point("io.ox/core/foldertree/files/treelinks").extend({id:"add-external-account",index:100,draw:C.addStorageAccount},{id:"manage-subscriptions",index:200,draw:C.manageSubscriptions}),S.point("io.ox/core/foldertree/infostore/subscribe").extend({id:"root-folders",draw:C.rootFolders}),S.point("io.ox/core/foldertree/infostore/popup").extend({id:"private-folders",index:100,draw:C.privateDriveFoldersWithoutMyShares},{id:"public-folders",index:200,draw:C.publicDriveFolders},{id:"remote-accounts",index:300,draw:C.fileStorageAccounts}),S.point("io.ox/core/foldertree/contacts/links").extend({id:"my-contact-data",index:400,draw:C.myContactData}),S.point("io.ox/core/foldertree/contacts/links/subscribe").extend({id:"add-new_address_book",index:300,draw:C.addNewAddressBook},{id:"subscribe",index:500,capabilities:["subscription"],draw:C.subscribe},{id:"subscribeShared",index:550,capabilities:["edit_public_folders || read_create_shared_folders || carddav"],draw:C.subscribeShared}),S.point("io.ox/core/foldertree/contacts/links").extend({index:200,id:"private-contacts",draw:function(z){if(z.context==="app"&&!F.has("guest")){var R=new i({attributes:{role:"presentation"},tagName:"li",className:"dropdown",$toggle:$('<a href="#" data-action="add-subfolder" data-toggle="dropdown">').append(m("Add new address book"),$('<i class="fa fa-caret-down" aria-hidden="true">'))});S.point("io.ox/core/foldertree/contacts/links/subscribe").invoke("draw",R,z),R.$ul.children().length!==0&&(this.append(R.render().$el),R.$toggle.attr("role","treeitem"))}}});function I(z){z.preventDefault(),ox.load(["io.ox/core/folder/actions/add"]).done(function(R){R(z.data.folder,{module:z.data.module})})}_("contacts calendar tasks".split(" ")).each(function(z){var R={contacts:{private:m("My address books"),public:m("Public address books"),shared:m("Shared address books"),hidden:m("Hidden address books")},calendar:{private:m("My calendars"),public:m("Public calendars"),shared:m("Shared calendars"),hidden:m("Hidden calendars")},tasks:{private:m("My tasks"),public:m("Public tasks"),shared:m("Shared tasks"),hidden:m("Hidden tasks")}};function H(ee,ne){return R[ee][ne]}var K={id:"standard-folders",index:100,draw:function(ee){var ne=z==="calendar"?"event":z,se=$('<ul class="list-unstyled" role="group">'),E=S.Baton({module:z,view:ee,context:ee.context}),O="virtual/flat/"+ne,U="flat/"+ne,X={count:0,empty:!1,indent:!1,open:!1,tree:ee,parent:ee,filter:function(me,ge){return!!ge.get("subscribed")}},ie,oe,ue=$('<li role="treeitem">');ee.options.noLinks||S.point("io.ox/core/foldertree/"+z+"/links").invoke("draw",se,E
1),this.append(ue),w.flat({module:ne}).always(function(){ie=new M(_.extend({},X,{folder:O+"/private",model_id:U+"/private",title:H(z,"private"),filter:function(me,ge){return!!ge.get("subscribed")}})),w.pool.getCollection("flat/"+ne+"/private").on("add",function(){ie.toggle(!0)}),w.pool.getCollection("flat/"+ne+"/public").on("add",function(){ie.toggle(!0)}),oe=new M(_.extend({},X,{folder:O+"/public",model_id:U+"/public",title:H(z,"public")})),ue.replaceWith(ie.render().$el.addClass("section"),$('<li class="links list-unstyled" role="treeitem">').append(se),oe.render().$el.addClass("section"),new M(_.extend({},X,{folder:O+"/shared",model_id:U+"/shared",title:H(z,"shared")})).render().$el.addClass("section"),new M(_.extend({},X,{folder:O+"/hidden",model_id:U+"/hidden",title:H(z,"hidden")})).render().$el.addClass("section"))})}};S.point("io.ox/core/foldertree/"+z+"/app").extend(_.extend({},K)),S.point("io.ox/core/foldertree/"+z+"/popup").extend(_.extend({},K)),z==="tasks"&&(S.point("io.ox/core/foldertree/"+z+"/links/subscribe").extend({index:100,id:"personal",draw:function(ee){var ne=ee.module,se=w.getDefaultFolder(ne);this.link("add-new-folder",m("Personal folder"),function(E){E.data={folder:se,module:ne},I(E)})}}),S.point("io.ox/core/foldertree/"+z+"/links/subscribe").extend({index:200,id:"shared",draw:function(ee){if(F.has("edit_public_folders || read_create_shared_folders || caldav")&&ee.context==="app"){var ne=w.getDefaultFolder(z);ne&&this.link("shared",m("Subscribe to shared folder"),function(se){se.data={baton:ee},x(se)})}}})),S.point("io.ox/core/foldertree/tasks/links").extend({index:200,id:"dropdown",draw:function(ee){if(ee.context==="app"&&!F.has("guest")){var ne=new i({attributes:{role:"presentation"},tagName:"li",className:"dropdown",$toggle:$('<a href="#" data-action="add-subfolder" data-toggle="dropdown">').append(m("Add new folder"),$('<i class="fa fa-caret-down" aria-hidden="true">'))});S.point("io.ox/core/foldertree/tasks/links/subscribe").invoke("draw",ne,ee),ne.$ul.children().length!==0&&(this.append(ne.render().$el),ne.$toggle.attr("role","treeitem"))}}})}),S.point("io.ox/core/foldertree/calendar/links/subscribe").extend({id:"default",index:100,draw:function(){var z=w.getDefaultFolder("calendar");z&&this.link("folder",m("Personal calendar"),function(R){R.data={folder:z,module:"event"},I(R)})}},{id:"divider-1",index:200,draw:function(){!F.has("calendar_schedjoules")&&!F.has("calendar_google")&&!F.has("calendar_ical")||(this.divider(),this.header(m("Subscribe to calendar")))}},{id:"schedjoules",index:300,draw:function(){F.has("calendar_schedjoules")&&this.link("schedjoules",m("Browse calendars of interest"),function(){require(["io.ox/calendar/settings/schedjoules/schedjoules"],function(z){z.open()})})}},{id:"google",index:400,draw:function(){if(F.has("calendar_google")){var z,R;require(["io.ox/calendar/actions/subscribe-google"],function(H){z=H,R.removeClass("hidden")}),this.link("google",m("Google calendar"),function(){z()}),R=this.$ul.find("li").last().addClass("hidden")}}},{id:"ical",index:500,draw:function(){F.has("calendar_ical")&&this.link("ical",m("Subscribe via URL (iCal)"),function(){require(["io.ox/calendar/actions/subscribe-ical"],function(z){z()})})}},{id:"shared",index:500,draw:function(){F.has("edit_public_folders || read_create_shared_folders || caldav")&&this.link("shared",m("Subscribe to shared calendar"),function(){require(["io.ox/core/sub/sharedFolders"],function(z){z.open({module:"calendar",help:"ox.appsuite.user.sect.calendar.folder.subscribeshared.html",title:m("Subscribe to shared calendars"),point:"io.ox/core/folder/subscribe-shared-calendar",noSync:!F.has("caldav"),sections:{public:m("Public calendars"),shared:m("Shared calendars"),private:m("Private"),hidden:m("Hidden calendars")}})})})}},{id:"import",index:600,draw:function(){_.device("ios || android")||(this.divider(),this.header(m("Import calendar")),this.link("import",m("Upload file"),function(){require(["io.ox/core/import/import"],function(z){z.show("calendar")})}))}}),S.point("io.ox/core/foldertree/calendar/links").extend({index:200,id:"private-calendar",draw:function(z){if(z.context==="app"&&!F.has("guest")){var R=new i({attributes:{role:"presentation"},tagName:"li",className:"dropdown",$toggle:$('<a href="#" data-action="add-subfolder" data-toggle="dropdown">').append(m("Add new calendar"),$('<i class="fa fa-caret-down" aria-hidden="true">'))});S.point("io.ox/core/foldertree/calendar/links/subscribe").invoke("draw",R,z),R.$ul.children().length!==0&&(this.append(R.render().$el),R.$toggle.attr("role","treeitem"))}}}),S.point("io.ox/core/foldertree/contacts/links").extend({index:1e3,id:"upsell-contacts",draw:function(z){z.context==="app"&&this.append(new o({id:"folderview/contacts",requires:"carddav",title:m("Synchronize with your tablet or smartphone")}).render().$el)}}),S.point("io.ox/core/foldertree/calendar/links").extend({index:1e3,id:"upsell-calendar",draw:function(z){z.context==="app"&&this.append(new o({id:"folderview/calendar",requires:"caldav",title:m("Synchronize with your tablet or smartphone")}).render().$el)}});function P(z){var R=z.data.id;
1require(["io.ox/files/share/permissions"],function(H){H.showFolderPermissions(R)})}function B(z){var R={id:"io.ox/core/sub",data:z.data.folder,refresh:!0};ox.launch("io.ox/settings/main",R).done(function(){this.setSettingsPane(R)})}function W(z){if(z.type==="keydown"){if(z.which!==32)return;z.stopImmediatePropagation()}var R=z.data.target,H=z.data.app,K=z.data.folder;R.closest(".single-selection").length>0||(z.preventDefault(),H.folders.isSelected(K.id)?H.folders.remove(K.id):H.folders.add(K.id),R.toggleClass("selected",H.folders.isSelected(K.id)),R.closest(".folder").attr("aria-checked",H.folders.isSelected(K.id)))}return S.point("io.ox/core/foldertree/node").extend({id:"shared-by",index:100,draw:function(z){var R=z.view.model,H=R.toJSON();/^(contacts|calendar|tasks)$/.test(H.module)&&w.is("shared",H)&&z.view.addA11yDescription(m("Shared by other users"))}},{id:"shared",index:200,draw:function(z){this.find(".folder-node:first .folder-shared:first").remove(),!_.device("smartphone")&&z.data.module!=="infostore"&&w.is("unlocked",z.data)&&(z.view.$.buttons.append($('<i class="fa folder-shared" aria-hidden="true">').attr("title",m("You share this folder with other users")).on("click",{id:z.data.id},P)),z.view.addA11yDescription(m("You share this folder with other users")))}},{id:"sub",index:300,draw:function(z){w.isVirtual(z.view.folder)||this.find(".folder-sub:first").remove(),!w.is("shared",z.data)&&w.is("subscribed",z.data)&&(z.view.$.buttons.append($('<i class="fa folder-sub">').attr("title",m("This folder has subscriptions")).on("click",{folder:z.data},B)),z.view.addA11yDescription(m("This folder has subscriptions")))}},{id:"is-selected",index:400,draw:function(z){if(/^calendar$/.test(z.data.module)){var R=this,H=this.find(".folder-label"),K=ox.ui.apps.get("io.ox/calendar");K&&(this.attr("aria-checked",K.folders.isSelected(z.data.id)),require(["io.ox/calendar/util"],function(ee){var ne=ee.getFolderColor(z.data),se=H.find(".color-label"),E=ee.getColorName(ne);E&&z.view.addA11yDescription(m("Category")+": "+E),se.length===0&&(se=$('<div class="color-label" aria-hidden="true">')),se.toggleClass("selected",K.folders.isSelected(z.data.id)),se.css({"background-color":ne,color:ee.getForegroundColor(ne)}),se.off("click",W).on("click",{folder:z.data,app:K,target:se},W),R.off("keydown",W).on("keydown",{folder:z.data,app:K,target:se},W),H.prepend(se)}))}}},{id:"account-errors",index:500,draw:function(z){var R=z.data.module;if(/^(calendar|contacts|infostore)$/.test(R)){if(R==="contacts"&&z.data.meta&&z.data.meta.errors)return z.view.showStatusIcon(m("The subscription could not be updated due to an error and must be recreated."),"click:account-error",z.data);var H=R==="calendar"?z.data["com.openexchange.calendar.accountError"]:z.data["com.openexchange.folderstorage.accountError"];if(!H)return z.view.hideStatusIcon();z.view.showStatusIcon(H.error,"click:account-error",z.data),ox.trigger("http:error:"+H.code,H)}}}),C});define("io.ox/core/settings/defaults",function(){"use strict";var M;if(!ox.serverConfig||!ox.serverConfig.languages)M="en_US";else{var w=Object.keys(ox.serverConfig.languages);M=_(w).contains("en_US")?"en_US":w[0]}var v=_.getCookie("language");return v&&(M=v),{language:M,region:"",refreshInterval:5*6e4,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(){"use strict";return{}});define("io.ox/mail/settings/defaults",[],function(){"use strict";var M={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:""}};return M});
1define("io.ox/contacts/settings/defaults",function(){"use strict";var M={showAdmin:!1,fullNameFormat:"auto",startInGlobalAddressbook:!0,mapService:"google",contactsPrintLayout:"simple"};return M});define("io.ox/calendar/settings/defaults",function(){"use strict";var M={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};return M});define("io.ox/tasks/settings/defaults",function(){"use strict";var M={interval:30,notifyNewModifiedDeleted:!0,notifyAcceptedDeclinedAsCreator:!1,notifyAcceptedDeclinedAsParticipant:!1};return M});define("io.ox/files/settings/defaults",function(){"use strict";var M={view:"fluid:icon",videoEnabled:!0,audioEnabled:!0,rootFolderId:9,showHidden:!1,uploadHandling:"announceNewVersion",autoplayPause:5,autoplayLoopMode:"loopEndlessly"};return M});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(M,w,v,S,F){"use strict";var k=M.point("io.ox/metrics/adapter"),D,y;function d(){return!(v.doNotTrack()||_.device("karma")||ox.debug||!w.get("tracking/enabled",!1))}function m(e){var t=e.data,n=t.action?t.action.replace(/^io\.ox\//,""):t.action,u=_.isBoolean(t.detail)?String(t.detail):t.detail,f=_.compact([t.app,t.target,n,u]).join("/");return f&&(e.id=f),e}function o(e){var t=!!e.preventDefault,n=M.Baton.ensure(t?{data:e.data,event:e}:{data:e});return m(n)}function i(e){var t=e.app==="drive"?"files":e.app,n=F.getColumnMapping(t);return e.detail=n[e.detail]||e.detail}return y={trackEvent:function(e){e.action==="sort"&&i(e),k.invoke("trackEvent",y,o(e))},trackPage:function(e){k.invoke("trackPage",y,o(e))},trackVariable:function(e){k.invoke("trackVariable",y,e)},watch:function(e,t){e.node.on(e.type,e.selector,t,y.trackEvent)},getUserHash:function(){return D=D||v.getUserHash(),D},getFolderFlags:v.getFolderFlags,isEnabled:d},d()?(k.invoke("setup",y),k.invoke("trackVisit",y,[{id:"language",value:ox.language},{id:"version",value:ox.version},{id:"capabilities",value:S.getFlat().enabled}]),M.point("io.ox/metrics/extensions").invoke("register",y),y):(_.each(y,function(e,t){y[t]=$.noop}),y)});define("io.ox/metrics/util",["io.ox/core/folder/api","io.ox/contacts/util"],function(M,w){"use strict";var v;(function(){var d;function m(T,r){var g=T[0],l=T[1],c=T[2],h=T[3];g=i(g,l,c,h,r[0],7,-680876936),h=i(h,g,l,c,r[1],12,-389564586),c=i(c,h,g,l,r[2],17,606105819),l=i(l,c,h,g,r[3],22,-1044525330),g=i(g,l,c,h,r[4],7,-176418897),h=i(h,g,l,c,r[5],12,1200080426),c=i(c,h,g,l,r[6],17,-1473231341),l=i(l,c,h,g,r[7],22,-45705983),g=i(g,l,c,h,r[8],7,1770035416),h=i(h,g,l,c,r[9],12,-1958414417),c=i(c,h,g,l,r[10],17,-42063),l=i(l,c,h,g,r[11],22,-1990404162),g=i(g,l,c,h,r[12],7,1804603682),h=i(h,g,l,c,r[13],12,-40341101),c=i(c,h,g,l,r[14],17,-1502002290),l=i(l,c,h,g,r[15],22,1236535329),g=e(g,l,c,h,r[1],5,-165796510),h=e(h,g,l,c,r[6],9,-1069501632),c=e(c,h,g,l,r[11],14,643717713),l=e(l,c,h,g,r[0],20,-373897302),g=e(g,l,c,h,r[5],5,-701558691),h=e(h,g,l,c,r[10],9,38016083),c=e(c,h,g,l,r[15],14,-660478335),l=e(l,c,h,g,r[4],20,-405537848),g=e(g,l,c,h,r[9],5,568446438),h=e(h,g,l,c,r[14],9,-1019803690),c=e(c,h,g,l,r[3],14,-187363961),l=e(l,c,h,g,r[8],20,1163531501),g=e(g,l,c,h,r[13],5,-1444681467),h=e(h,g,l,c,r[2],9,-51403784),c=e(c,h,g,l,r[7],14,1735328473),l=e(l,c,h,g,r[12],20,-1926607734),g=t(g,l,c,h,r[5],4,-378558),h=t(h,g,l,c,r[8],11,-2022574463),c=t(c,h,g,l,r[11],16,1839030562),l=t(l,c,h,g,r[14],23,-35309556),g=t(g,l,c,h,r[1],4,-1530992060),h=t(h,g,l,c,r[4],11,1272893353),c=t(c,h,g,l,r[7],16,-155497632),l=t(l,c,h,g,r[10],23,-1094730640),g=t(g,l,c,h,r[13],4,681279174),h=t(h,g,l,c,r[0],11,-358537222),c=t(c,h,g,l,r[3],16,-722521979),l=t(l,c,h,g,r[6],23,76029189),g=t(g,l,c,h,r[9],4,-640364487),h=t(h,g,l,c,r[12],11,-421815835),c=t(c,h,g,l,r[15],16,530742520),l=t(l,c,h,g,r[2],23,-995338651),g=n(g,l,c,h,r[0],6,-198630844),h=n(h,g,l,c,r[7],10,1126891415),c=n(c,h,g,l,r[14],15,-1416354905),l=n(l,c,h,g,r[5],21,-57434055),g=n(g,l,c,h,r[12],6,1700485571),h=n(h,g,l,c,r[3],10,-1894986606),c=n(c,h,g,l,r[10],15,-1051523),l=n(l,c,h,g,r[1],21,-2054922799),g=n(g,l,c,h,r[8],6,1873313359),h=n(h,g,l,c,r[15],10,-30611744),c=n(c,h,g,l,r[6],15,-1560198380),l=n(l,c,h,g,r[13],21,1309151649),g=n(g,l,c,h,r[4],6,-145523070),h=n(h,g,l,c,r[11],10,-1120210379),c=n(c,h,g,l,r[2],15,718787259),l=n(l,c,h,g,r[9],21,-343485551),T[0]=d(g,T[0]),T[1]=d(l,T[1]),T[2]=d(c,T[2]),T[3]=d(h,T[3])}function o(T,r,g,l,c,h){return r=d(d(r,T),d(l,h)),d(r<<c|r>>>32-c,g)}function i(T,r,g,l,c,h,L){return o(r&g|~r&l,T,r,c,h,L)}function e(T,r,g,l,c,h,L){return o(r&l|g&~l,T,r,c,h,L)}function t(T,r,g,l,c,h,L){return o(r^g^l,T,r,c,h,L)}function n(T,r,g,l,c,h,L){return o(g^(r|~l),T,r,c,h,L)}function u(T){/[\x80-\xFF]/.test(T)&&(T=unescape(encodeURI(T)));var r=T.length,g=[1732584193,-271733879,-1732584194,271733878],l;for(l=64;l<=T.length;l+=64)m(g,f(T.substring(l-64,l)));T=T.substring(l-64);var c=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(l=0;l<T.length;l++)c[l>>2]|=T.charCodeAt(l)<<(l%4<<3);if(c[l>>2]|=128<<(l%4<<3),l>55)for(m(g,c),l=0;l<16;l++)c[l]=0;
1return c[14]=r*8,m(g,c),g}function f(T){var r=[],g;for(g=0;g<64;g+=4)r[g>>2]=T.charCodeAt(g)+(T.charCodeAt(g+1)<<8)+(T.charCodeAt(g+2)<<16)+(T.charCodeAt(g+3)<<24);return r}var a="0123456789abcdef".split("");function b(T){for(var r="",g=0;g<4;g++)r+=a[T>>g*8+4&15]+a[T>>g*8&15];return r}function p(T){for(var r=0;r<T.length;r++)T[r]=b(T[r]);return T.join("")}v=function(T){return p(u(T))},d=function(T,r){return T+r&4294967295},v("hello")!=="5d41402abc4b2a76b9719d911017c592"&&(d=function(T,r){var g=(T&65535)+(r&65535),l=(T>>16)+(r>>16)+(g>>16);return l<<16|g&65535})})();function S(){return[navigator.doNotTrack,navigator.msDoNotTrack,window.doNotTrack].indexOf("1")>-1}var F="metrics-userhash-v2";function k(){var d=_.getCookie(F);if(!d){var m=(Math.random()+1).toString(36).substring(2),d=v(m);_.setCookie(F,d)}return d}var D=function(){var d={1:"default",2:"default",3:"default",8:"default"},m={20:"pictures",21:"documents",22:"music",23:"videos",24:"templates"},o={7:"inbox",9:"drafts",10:"sent",11:"spam",12:"trash"},i={"virtual/mysh
1ares":"all-my-shares","virtual/favorites/infostore":"favorites","virtual/favorites/contacts":"favorites","virtual/favorites/mail":"favorites","virtual/myfolders":"my-folders"},e=/virtual\/flat\/(\D+)\/(private|public|shared|hidden)/;function t(a){if(!(a.module==="infostore"&&a.folder_id!=="9"))return d[a.standard_folder_type]}function n(a){if(a.module==="contacts"&&a.id===w.getGabId())return"gab";var b=a.id.match(e);return b?"section-"+b[2]:i[a.id]||m[a.type]||o[a.standard_folder_type]}function u(a){a=a||{};var b={};return a.module==="infostore"&&a.account_id&&(b.account=a.account_id.split("://")[0]),_.each(["shared","private","public","system"],function(p){a.module!=="infostore"&&!b.type&&M.is(p,a)&&(b.type=p)}),M.isVirtual(a.id)&&(b.virtual="virtual"),b.content=n(a)||(M.is("trash",a)?"trash":void 0),b.default=t(a),b}function f(a){return _.compact([a.account,a.type,a.virtual,a.content,a.default])}return function(a){return M.get(a).then(u).then(f)}}();function y(d,m,o){o=o||[];var i=String(d);if(i.length<=m)return o.push(i.split(",")),o;for(var e=m-1;e>=0;e--)if(i[e]===","){var t=i.substr(0,e),n=i.substr(e+1);return o.push(t.split(",")),y(n,m,o)}}return{md5:v,doNotTrack:S,getUserHash:k,getFolderFlags:D,toChunks:y}});define("io.ox/metrics/extensions",["io.ox/core/extensions"],function(M){var w=M.point("io.ox/metrics/extensions");w.extend({id:"upsell",register:function(){var v=this;ox.on("upsell:requires-upgrade",function(S){v.trackEvent({app:"core",target:"upsell/"+S.type,action:S.id,detail:S.missing})})}}),w.extend({id:"app",register:function(){var v=this,S;_.defer(function(){ox.ui.App&&F(ox.ui.App.getCurrentApp())}),ox.on("app:start app:resume",F);function F(k){k&&S!==k.id&&(S=k.id,v.trackPage({name:k.get("name"),id:k.get("id"),trackingId:k.get("trackingId")}))}}}),w.extend({id:"loadtime",register:function(){var v=this;ox.on("loadtime",function(S){var F=S.app,k=F&&F instanceof Backbone.Model?F.get("trackingId")||F.get("name")||F.get("id"):S.id;v.trackEvent({app:"core",target:"loadtime",action:k,value:S.loadEnd-S.loadStart})})}}),w.extend({id:"topbar-logo",register:function(){var v=this;v.watch({node:$("#io-ox-appcontrol"),selector:"#io-ox-top-logo",type:"click"},{app:"core",target:"topbar/logo",type:"click",action:""})}}),w.extend({id:"topbar-quicklaunch",register:function(){var v=this;$("#io-ox-appcontrol #io-ox-quicklaunch").on("mousedown","button",function(S){v.trackEvent({app:"core",target:"topbar/quicklaunch",type:"click",action:$(S.currentTarget).attr("data-id")})})}}),w.extend({id:"topbar-taskbar",register:function(){var v=this;$("#io-ox-appcontrol .taskbar").on("mousedown","li",function(S){if(!$(S.currentTarget).is("#io-ox-topbar-account-dropdown-icon")&&!($(S.currentTarget).hasClass("dropdown")&&$(S.currentTarget).hasClass("open"))){var F=$(S.currentTarget).hasClass("launcher")||$(S.currentTarget).hasClass("dropdown"),k=F?$(S.currentTarget).attr("id"):$(S.currentTarget).find("a").attr("data-id");k&&v.trackEvent({app:"core",target:"topbar/taskbar",type:"click",action:k})}})}}),w.extend({id:"topbar-account-dropdown",register:function(){var v=this;$("#io-ox-topbar-account-dropdown-icon").on("mousedown",function(){$(this).hasClass("open")||v.trackEvent({app:"core",target:"topbar/settings",type:"click",action:"dropdown/open"})}),$("#topbar-account-dropdown").on("mousedown","a",function(S){var F=$(S.target).closest("a"),k=F.attr("data-name")||F.attr("data-action")||F.attr("class")||F.parent().attr("class");v.trackEvent({app:"core",target:"topbar/settings",type:"click",action:k})})}}),w.extend({id:"halo",register:function(){var v=this;$(document.documentElement).on("mousedown",".halo-link",function(){var S=ox.ui.App.getCurrentApp()||new Backbone.Model({name:"unknown"});v.trackEvent({app:"core",type:"click",action:"halo",detail:_.last(S.get("name").split("/"))})})}}),w.extend({id:"filestorages",register:function(){var v=this;require(["io.ox/core/api/filestorage"],function(S){var F={create:"created",delete:"deleted",update:"updated"};S.on("create delete update",function(k,D){v.trackEvent({app:"data",target:"drive/account/"+F[k.type],type:"click",action:D.get("filestorageService")})})})}})});
1define("io.ox/metrics/adapters/default",["settings!io.ox/core","io.ox/core/extensions","io.ox/metrics/util"],function(M,w,v){"use strict";if(M.get("tracking/piwik/enabled",!1)){var S=w.point("io.ox/metrics/adapter"),F=M.get("tracking/piwik/url/lib"),k=M.get("tracking/piwik/url/api"),D=M.get("tracking/piwik/id",1),y=200;window._paq=window._paq||[],(!k||!F)&&ox.debug&&console.log("Error: Matomo/Piwik is enabled but no backend URL was configured!"),S.extend({id:"piwik",setup:function(){_paq.push(["setTrackerUrl",k]),_paq.push(["setSiteId",ox.debug?2:D]),_paq.push(["setUserId",this.getUserHash()]),_paq.push(["enableLinkTracking"]),require([F])},trackVisit:function(d){var m=this,o=[];_.each(d,function(i){var e=String(i.value);if(!_.isArray(i.value)||e.length<=y)return o.push(i);var t=v.toChunks(i.value,y);_.each(t,function(n,u){o.push(_.extend({},i,{value:n,id:i.id+"-"+(u+1)}))})}),_.each(o,function(i,e){m.trackVariable(_.extend(i,{index:e+1}))})},trackEvent:function(d){var m=d.data;_paq.push(["trackEvent",m.app,d.id||m.target,m.action,m.detail||m.value])},trackPage:function(d){_paq.push(["trackPageView",d.data.trackingId||d.data.name||d.data.id])},trackVariable:function(d){if(!d.index){ox.debug&&console.log("Missing/invalid index argument on trackVariable call");return}_paq.push(["setCustomVariable",d.index,d.id,String(d.value),d.scope||"visit"])}})}});define("io.ox/metrics/adapters/console",["settings!io.ox/core","io.ox/core/extensions"],function(M,w){"use strict";if(!M.get("tracking/console/enabled",!1))return;var v=w.point("io.ox/metrics/adapter");function S(F,k){k=k||{};var D=k.id||F,y=k.data,d,m=M.get("tracking/console/verbosity","DEBUG").toLowerCase();switch(m){case"debug":d=[F,D,JSON.stringify(y)];break;case"info":default:d=F+": "+D}return _.isString(d)?console.log("%c"+d,"color: white; background-color: grey"):console.log(d)}v.extend({id:"console",setup:function(){S("setup")},trackEvent:function(F){S("trackEvent",F)},trackVisit:function(F){S("trackVisit",F)},trackPage:function(F){S("trackPage",F)}})});define("io.ox/core/collection",["io.ox/core/folder/api","io.ox/core/folder/util","io.ox/core/api/user"],function(M,w,v){"use strict";var S=function(m,o,i){if(!m)return!1;var e=M.bits(m,i);return e===0?!1:e===1?o===ox.user_id:!0},F=function(m){return"standard_folder"in m||m.folder_id==="folder"},k=function(m){if(_.isObject(m))return F(m)?m.id:m.folder_id||m.folder},D=function(m){var o=m.length||0,i={read:!0,modify:!0,delete:!0,create:!0,"create:folder":!0,"rename:folder":!0,"delete:folder":!0,"change:seen":!0,none:o===0,some:o>0,one:o===1,multiple:o>1,items:!1,folders:!1,mixed:!1,guard:!1},e=_.chain(m).map(k).compact().uniq().value();if(i.toplevel=_(m).reduce(function(n,u){return n&&"folder_id"in u&&!("filename"in u)},!0),e.length===0)return i.unknown=!0,"read modify delete create:folder rename:folder delete:folder change:seen".split(" ").forEach(function(n){i[n]=!1}),$.when(i);function t(n,u){return n.group===!1&&n.entity===ox.user_id||n.group===!0&&_(u.groups).contains(n.entity)}return $.when(M.multiple(e),v.me()).pipe(function(n,u){for(var f=0,a=null,b=null,p=_.toHash(n,"id"),T=!1,r=!1,g;f<o;f++)if(a=m[f],g=a&&a.object_permissions&&_(a.object_permissions).find(function(c){return t(c,u)}),b=p[k(a)],a.meta&&a.meta.Encrypted&&(i.guard=!0),F(a))a.own_rights===void 0&&(a=p[a.id]),T=!0,i["create:folder"]=i["create:folder"]&&M.can("create:folder",a),i["rename:folder"]=i["rename:folder"]&&M.can("rename:folder",a),i["delete:folder"]=i["delete:folder"]&&M.can("delete:folder",a),i["change:seen"]=i["change:seen"]&&M.can("change:seen",a),i.delete=i.delete&&M.can("delete:folder",a);else if(g||b){r=!0;var l=a.createdBy&&a.createdBy.entity?a.createdBy.entity:a.created_by;i.read=i.read&&(g&&g.bits>=1||S(b,l,7)),i.modify=i.modify&&(g&&g.bits>=2||S(b,l,14)),i.delete=i.delete&&(g&&g.bits>=4||S(b,l,21)),b&&(i.create=i.create&&(b.own_rights&127)>=2),w.is("subscribed",b)&&(i.modify=i.delete=i.create=!1)}else{i.unknown=!0,i.read=i.modify=i.delete=i.create=i["change:seen"]=!1;break}return T||"create:folder rename:folder".split(" ").forEach(function(c){i[c]=!1}),r||"create read modify".split(" ").forEach(function(c){i[c]=!1}),i.items=r&&!T,i.folders=T&&!r,i.mixed=T&&r,i})};function y(m){var o=_.compact([].concat(m)),i={},e=!1;this.getProperties=function(){return D(o).always(function(t){_.extend(i,t),e=!0})},this.getPromise=function(){return this.getProperties().pipe(_.identity.bind(null,this))},this.isResolved=function(){return e},this.isLarge=function(){return o.length>=100},this.toJSON=function(){return i},this.has=function(){return this.isResolved()||console.error("Using Collection.has before properties are resolved!",m,arguments),_(arguments).inject(function(t,n){return t&&i[n]===!0},!0)},this.matches=d(i)}y.Simple=function(m){var o=m.length,i={none:o===0,some:o>0,one:o===1,multiple:o>1};this.matches=d(i),this.getPromise=function(){return $.when(this)},this.has=function(){return _(arguments).inject(function(e,t){return e&&i[t]===!0},!0)}};function d(m){return _.memoize(function(o){var i=String(o||"").replace(/[a-z:]+/ig,function(e){return!!m[e.toLowerCase()]});try{return new Function("return !!("+i+")")()}catch(e){return console.error("Collection.matches",i,e),!1}})}return y});define("io.ox/core/api/account",["settings!io.ox/mail","io.ox/core/http","io.ox/core/event"],function(M,w,v){"use strict";var S={},F={},k={},D=M.get("defaultseparator","/"),y=M.get("namespace","INBOX/")==="",d=function(n){var u=_.isArray(n);n=u?n:[n];var f=/^default\d+/,a=function(b){var p="default"+this.id+D,T=b+"_fullname",r;if(this[T])f.test(this[T])||(this[T]=p+this[T]);else{if(this.id!==0)return;r=M.get(["folder",b]),r||(this[b]?(r=y?"default0":M.get("folder/inbox"),r+=D+this[b]):r=""),this[T]=r}};return _(n).each(function(b){_(["trash","sent","drafts","spam","archive","confirmed_spam","confirmed_ham"]).each(a,b)}),u?n:n[0]},m=new RegExp("^default\\d+"+D+"[^"+D+"]+"+D),o=new RegExp("^default\\d+"+D+"[^"+D+"]+$"),i={};v.extend(i),i.isUnified=function(n){/^\d+$/.test(n)&&(n="default"+n);var u=M.get("unifiedInboxIdentifier");if(!u||u==="null")return!1;var f=String(n).match(/^(default\d+)/);return!!f&&u===f[1]+D+"INBOX"},i.isUnifiedFolder=function(n){return o.test(n)&&i.isUnified(n)},i.isUnifiedRoot=function(n){return i.isUnified(n)&&n.split(D).length===1},i.isAccount=function(n){if(_.isNumber(n))return n in S;var u=String(n).match(/^default(\d+)/);return u&&u[1]in S},i.isPrimary=function(n){return/^default0/.test(n)}
1,i.isExternal=function(n){return i.isAccount(n)&&!i.isPrimary(n)},i.isHidden=function(n){return n.id?i.isAccount(n.id)&&!!F[n.id]:n.primary_address?_.values(F).indexOf(n.primary_address)>=0:n.folder_id?!!F[n.folder_id.split(D)[0]]:!1},i.getUnifiedMailboxName=function(){return this.getUnifiedInbox().then(function(n){return n===null?null:n.split(D)[0]})},i.getUnifiedInbox=function(){var n=M.get("unifiedInboxIdentifier",null);return $.when(n==="null"?null:n)},i.getInbox=function(){return M.get("folder/inbox")},i.is=function(){var n={inbox:/^default\d+\DINBOX(?:\/|$)/,sent:/^default\d+\DSent(?:\/|$)/,trash:/^default\d+\DTrash(?:\/|$)/,drafts:/^default\d+\DDrafts(?:\/|$)/,spam:/^default\d+\DSpam(?:\/|$)/};function u(f,a){if(i.isUnified(a)){var b=n[f];return!!(b&&b.test(a))}else if(f==="inbox")return k[a]===f;return _(k).some(function(p,T){var r=a.indexOf(T+D)===0;return p===f&&(T===a||r)})}return _.memoize(function(f,a){return f=String(f||"").split("|"),a=String(a||""),_(f).reduce(function(b,p){return b||u(p,a)},!1)},function(a,b){return a+":"+b})}(),i.getFoldersByType=function(n,u){return _(k).chain().map(function(f,a){return u!==void 0&&a.indexOf("default"+u)===-1?!1:f===n?a:!1}).compact().value()},i.getStandardFolders=function(){return _(k).keys()},i.isStandardFolder=function(n){return k[n]!==void 0},i.isMalicious=function(n,u){if(n)return i.is("spam",n)||i.is("confirmed_spam",n)?!0:_(u).some(function(f){return f===n||n.indexOf(f+D)===0})},i.getType=function(n){return n==="virtual/all-unseen"?"unseen":k[n]},i.getTypes=function(){return k},i.inspect=function(){return{accounts:S,types:k}},i.parseAccountId=function(n,u){if(typeof n=="number")return n;if(/^default(\d+)/.test(String(n))){if(!i.isUnified(n))return parseInt(n.replace(/^default(\d+)(.*)$/,"$1"),10);var f=n.replace(m,"");if(f!==n&&/^default\d+/.test(f))return i.parseAccountId(f,u);if(!u)return 0;var a=n.match(/^default(\d+)/);return a&&a.length?parseInt(a[1],10):0}return 0},i.getPrimaryAddress=function(n){return i.get(n||0).then(e).then(function(u){return u?n===0||!u.transport_url||i.isUnified(n)?i.getDefaultAddress():[u.personal,u.primary_address]:$.Deferred().reject(u)}).then(function(u){return t(u[0],u[1])})},i.getDefaultAddress=function(){return i.get(0).then(e).then(function(n){var u=$.trim(M.get("defaultSendAddress",""));return[n.personal,u||n.primary_address]})},i.getValidAddress=function(n){return i.getAllSenderAddresses().then(function(u){if(!_.isEmpty(u))return _.isEmpty(n.from)||(n.from=u.filter(function(f){return f[1]===n.from[0][1].toLowerCase()})),_.isEmpty(n.from)?i.getPrimaryAddress().then(function(f){return _.extend(n,{from:[f]})}):n})},i.getPrimaryAddressFromFolder=function(n){var u=this.parseAccountId(n,!0),f=i.isUnified(u);return this.getPrimaryAddress(f?0:u)},i.getAddressesFromFolder=function(n){var u=this.parseAccountId(n,!0),f=i.isUnified(u);return $.when(this.getPrimaryAddress(f?0:u),i.getSenderAddresses(f?0:u)).then(function(a,b){return{primary:a,aliases:_.reject(b,function(p){return a[1]===p[1]})}})},i.getDefaultDisplayName=function(){return require(["io.ox/contacts/util","io.ox/core/api/user"]).then(function(n,u){return u.get({id:ox.user_id}).then(function(f){return n.getMailFullName(f)})})};var e=function(n){return!n||n.personal&&(n.personal===" "||$.trim(n.personal)!=="")?$.Deferred().resolve(n):i.getDefaultDisplayName().then(function(u){return n.personal=u,n})};i.trimAddress=function(n){return n=$.trim(n),n.indexOf("@")>-1?n.toLowerCase():n};function t(n,u){return n=$.trim(n||""),u=i.trimAddress(u),[n!==u?n:"",u]}return i.getSenderAddress=function(n){if(!n)return[];if(!n.addresses)return[t(n.personal,n.primary_address)];var u=_(String(n.addresses||"").toLowerCase().split(",")).map($.trim).sort();return _(u).map(function(f){var a=f!==n.primary_address,b=a&&M.get("features/anonymousAliases",!1),p=b?"":n.personal;return t(p,f)})},i.getSenderAddresses=function(n){return this.get(n||0).then(e).then(i.get
1SenderAddress)},i.getAllSenderAddresses=function(n){return i.all(n).then(function(u){return _(u).filter(function(f){return f.id===0||!!f.transport_url})}).then(function(u){return $.when.apply($,_(u).map(e))}).then(function(){return _(arguments).flatten(!0)}).then(function(u){return $.when.apply($,_(u).map(i.getSenderAddress))}).then(function(){return _(arguments).flatten(!0)}).then(function(u){return[].concat(u).filter(function(f){return!i.isHidden({primary_address:f[1]})})})},i.cache={},ox.rampup&&ox.rampup.accounts&&_(ox.rampup.accounts).each(function(n){var u=d(w.makeObject(n,"account"));i.cache[u.id]=u}),i.all=function(n){var u=_.extend({useCache:!0},n);function f(){return _(i.cache).size()>0&&u.useCache?$.Deferred().resolve(_(i.cache).values()):w.GET({module:"account",params:{action:"all"},appendColumns:!0,processResponse:!0}).then(function(a){return a=d(a),i.cache={},_(a).each(function(b){i.cache[b.id]=d(b)}),a})}return f().done(function(a){S={},F={},k={},_(a).each(function(b){b.secondary&&(F["default"+b.id]=b.deactivated?b.primary_address:!1),S[b.id]=!0,k["default"+b.id+"/INBOX"]="inbox",_("drafts sent spam trash archive".split(" ")).each(function(p){var T=b[p],r=b[p+"_fullname"],g=r||T;k[g]||(k[g]=p)})})})},i.get=function(n){var u=function(){return i.all().then(function(){return i.cache[n]})};return i.cache[n]?$.Deferred().resolve(i.cache[n]):u()},i.create=function(n){return w.PUT({module:"account",params:{action:"new"},data:n,appendColumns:!1}).then(function(u){return i.reload().then(function(){return ox.trigger("account:create"),i.trigger("create:account",{id:u.id,email:u.primary_address,name:u.name}),require(["io.ox/core/folder/api"],function(f){f.propagate("account:create")}),u})})},i.remove=function(n){return w.PUT({module:"account",params:{action:"delete"},data:n,appendColumns:!1}).done(function(){var u=(i.cache[n]||{}).root_folder;delete i.cache[n],ox.trigger("account:delete",u),i.trigger("refresh.all"),i.trigger("delete"),require(["io.ox/core/folder/api"],function(f){f.propagate("account:delete")})})},i.validate=function(n,u){return u=_.extend({action:"validate"},u),w.PUT({module:"account",appendColumns:!1,params:u,data:n,processData:!1}).then(function(a){return $.Deferred().resolve(a.data,a.category===13?a:void 0)},function(a){return $.Deferred().resolve(a.data,a)})},i.update=function(n){return delete n.mail_url,delete n.transport_url,w.PUT({module:"account",params:{action:"update"},data:n,appendColumns:!1}).then(function(u){var f=u.id;if(i.cache[f]){var a=u.unified_inbox_enabled;i.cache[f].unified_inbox_enabled!==a&&require(["io.ox/core/folder/api"],function(p){p.propagate(a?"account:unified-enable":"account:unified-disable")})}function b(){return _.isObject(u)?$.Deferred().resolve(u):w.GET({module:"account",params:{action:"get",id:n.id},appendColumns:!1})}return b().done(function(p){p=d(p),i.cache[f]=p}).done(function(p){i.trigger("refresh.all"),i.trigger("update",p),ox.trigger("account:update",f),"deactivated"in n&&ox.trigger("account:status",{deactivated:n.deactivated,root_folder:p.root_folder})})})},i.autoconfig=function(n){return w.POST({module:"autoconfig",data:_.extend({action:"get"},n)})},i.configtestAll=function(){return w.GET({module:"jslob",params:{action:"all"}})},i.configtestList=function(n){return w.PUT({module:"jslob",params:{action:"list"},data:n})},i.configtestUpdate=function(n,u){return w.PUT({module:"jslob",params:{action:"update",id:u},data:n})},i.configtestSet=function(n,u){return w.PUT({module:"jslob",params:{action:"set",id:u},data:n})},i.getStatus=function(n){var u={action:"status"};return n!==void 0&&(u.id=n),w.GET({module:"account",params:u})},i.getPrimaryName=function(){if(!i.cache[0])return"";var n=i.cache[0].name;return/^(email|e-mail)$/i.test(n)?String(i.cache[0].primary_address).toLowerCase().split("@")[1]||"":n},i.reload=function(){return i.all({useCache:!1})},i.refresh=function(){return this.reload().done(function(){i.trigger("refresh.all")})},ox.on("refresh^",function(){i.refresh()}),i});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(M,w,v,S,F){"use strict";function k(d,m){return d=d.map(function(){return $.trim($(this).attr("title")||$(this).text())}),$.makeArray(d).join(m||"")}function D(d){var m=k(this.find(".selected .drag-title"),", ");return m||F.ngettext("%1$d item","%1$d items",d.length,d.length)}var y=function(d,m){m=_.extend({draggable:!1,dragMessage:D,dragCssClass:void 0,dragType:"",dropzone:!1,dropzoneSelector:".selectable",dropType:"",scrollpane:d,focus:"[tabindex]",markable:!1},m),this.classFocus="focussed",this.classSelected="selected",M.extend(this);var o=this,i=!0,e=!1,t=".vgrid-cell",n={},u=!0,f=[],a={},b={},p=b,T=b,r,g,l,c,h,L,s,x,C,N,I,P,B,W,z,R,H,K,ee,ne,se,E,O,U,X,ie,oe,ue,me,ge,ye,he=$.noop,ce=-1,pe=0,Te,De,_e;if(K=function(q){return!$(q.target).hasClass("not-selectable")},ee=function(q){var Y=$(q.target).closest(t);return e&&Y.length},ne=function(q){return i&&q&&(q.metaKey||q.ctrlKey)},se=function(q){return q&&q.shiftKey&&i},De=function(){return _.size(n)>1},r=function(q){var Y=o.get();o.trigger("change",Y,q),Y.length===0&&o.trigger("empty")},W=function(){var q=o.get();o.trigger("_m_change",q),q.length===0&&o.trigger("empty")},g=function(q,Y,j){se(Y)?(o.selectRange(T,q),p=q):(he(Y)?me(q):H(q),p=T=q,pe=E(q)),j?ee(Y)||_e?(Y.preventDefault(),W()):g(q,Y):r()},U=function(q){if(u&&f.length){var Y=f[0],j=Y.data;N(q),me(j);var te=o.serialize(j),ae=O(te);ae.focus()}},X=function(q,Y){if(u&&f.length){var j=f[0];if(N(q),g(j.data,q),o.trigger("select:first",j.data),Y){var te=o.serialize(j.data),ae=O(te);ae.focus()}}},ie=function(q){if(u){var Y=E(p)-1,j;Y>=0&&(j=f[Y],N(q),g(j.data,q),o.trigger("select:previous",j.data))}},oe=function(q){if(u&&f.length){var Y=f.length-1,j=f[Y];N(q),g(j.data,q),o.trigger("select:last",j.data)}},ue=function(q){if(u){var Y=E(p)+1,j;Y<f.length&&(j=f[Y],N(q),g(j.data,q),o.trigger("select:next",j.data))}},Te=function(q){switch(o.trigger("keyboard",q,q.which),q.which){case 38:if(q.preventDefault(),$(q.target).hasClass("folder-options-badge dropdown-opened"))return;q.metaKey?X(q):ie(q);break;case 36:X(q);break;case 35:oe(q);break;case 32:if(m.markable){if(q.preventDefault(),!$(q.target).hasClass("marked"))return;H(p),r()}break;case 40:if(q.preventDefault(),$(q.target).hasClass("folder-options-badge dropdown-opened"))return;q.metaKey?oe(q):ue(q);break;case 8:case 46:q.preventDefault(),o.trigger("selection:delete",o.get());break}},l=function(q){var Y,j,te;q.isDefaultPrevented()||(Y=$(this),j=Y.attr("data-obj-id"),te=u?(f[E(j)]||{}).data:j,te!==void 0&&ee(q)&&K(q)&&g(te,q))},c=function(q){var Y,j;q.isDefaultPrevented()||(Y=$(this),j=Y.attr("data-obj-id"),o.trigger("selection:doubleclick",j))},L=function(q){var Y,j,te,ae;q.isDefaultPrevented()||(Y=$(this),j=Y.attr("data-obj-id"),te=u?(f[E(j)]||{}).data:j,m.markable&&ye(),ae=function(){if(te!==void 0&&!ee(q)){if(ne(q)){g(te,q);return}
1I(te)?De()&&Y.addClass("pending-select"):(se(q)&&T===b&&(T=o.get()[0]||b),N(),g(te,q))}},_.device("!smartphone")?setTimeout(ae,50):ae())},h=function(q){var Y,j,te,ae;q.isDefaultPrevented()||(Y=$(this),j=Y.attr("data-obj-id"),te=u?(f[E(j)]||{}).data:j,ae=function(){te!==void 0&&Y.hasClass("pending-select")&&K(q)&&(N(),g(te,q)),d.find(".pending-select").removeClass("pending-select")},_.device("!smartphone")?setTimeout(ae,50):ae())},s=function(q){var Y,j,te;q.isDefaultPrevented()||(Y=$(this),j=Y.attr("data-obj-id"),te=u?(f[E(j)]||{}).data:j,_e&&g(te,q,!0))},E=function(q){return u?a[o.serialize(q)]:-1},O=function(q){return $('.selectable[data-obj-id="'+o.serialize(q).replace(/\\\./g,"\\\\.")+'"]',d)},I=function(q){return n[o.serialize(q)]!==void 0},P=function(q,Y){var j=o.serialize(q);n[j]=q;var te=Y||O(j);return d.has(document.activeElement).length&&te.focus(),C(),te.addClass(o.classSelected).attr({"aria-selected":"true",tabindex:0}).end()},B=function(q,Y){q&&(P(q).intoViewport(m.scrollpane),p=q,ce=E(q),T===b&&(T=q,pe=ce),Y!==!0&&o.trigger("select",o.serialize(q),q))},z=function(q){var Y=o.serialize(q);delete n[Y],O(Y).removeClass(o.classSelected).attr({"aria-selected":"false",tabindex:-1}),o.trigger("deselect",Y),m.markable&&d.find(".marked").length>0?d.find(".marked").attr({tabindex:0}):_.size(n)>0&&O(R()).attr({tabindex:0})},R=function(){return _.last(o.get())},H=function(q){if(I(q)){if(m.markable&&!De())return;z(q)}else B(q)},x=function(q){if(!d.is(":hidden")){q=q||!1,q&&o.clearIndex();var Y=$(".selectable:visible",d),j=0,te=null;for(Y.removeClass(o.classSelected);j<Y.length;j++){te=Y.eq(j);var ae=te.attr("data-obj-id");q&&o.addToIndex(ae),I(ae)&&te.addClass(o.classSelected).attr({"aria-selected":"true"})}}},C=function(){d.find('.selectable[tabindex="0"]').attr({tabindex:-1})},N=function(){n={},d.find(".selectable."+o.classSelected).removeClass(o.classSelected).attr({"aria-selected":"false",tabindex:-1})},m.markable){var Me=N,Fe;this.classMarked="marked",he=function(q){return i&&q&&(q.which===38||q.which===40)&&q.ctrlKey},N=function(q){ye(),!he(q)&&Me(q)},ge=function(q,Y){var j=o.serialize(q);Fe=q;var te=Y||O(j);d.has(document.activeElement).length&&te.focus();var ae=te.attr("id")||_.uniqueId("option-");return C(),te.addClass(o.classMarked).attr({tabindex:0,id:ae}).parent('[role="listbox"]').attr("aria-activedescendant",ae).end()},me=function(q,Y){q&&(ge(q).intoViewport(m.scrollpane),p=q,ce=E(q),T===b&&(T=q,pe=ce),Y!==!0&&o.trigger("mark",o.serialize(q),q))},ye=function(){if(Fe){var q=o.serialize(Fe);Fe=void 0,O(q).removeClass(o.classMarked).attr("tabindex",-1).parent('[role="listbox"]').removeAttr("aria-activedescendant"),Fe=void 0}}}this.serialize=function(q){return typeof q=="object"?q.folder_id!==void 0?_.cid(q):q.id:q},this.setSerializer=function(q){this.serialize=function(Y){return typeof Y=="object"?q(Y):Y}},this.init=function(q){var Y=this.get(),j=_.clone(n);N(),f=new Array(q.length),a={},p=T=b,q.length>0&&(ce=-1);for(var te=0,ae=q.length,xe,fe,$e=!0;te<ae;te++)xe=q[te],fe=this.serialize(xe),f[te]={data:xe,cid:fe},a[fe]=te,fe in j&&$e&&(pe=ce=te,p=fe,$e=!1);return $(".selectable",d).each(function(){var we=$(this),ke=we.attr("data-obj-id");ke in j?we.addClass(o.classSelected).attr({"aria-selected":"true",tabindex:0}):we.removeClass(o.classSelected).attr({"aria-selected":"false",tabindex:-1})}),n=j,_.isEqual(Y,this.get())||r(),this},this.insertAt=function(q,Y){var j=q.length,te=[],ae=_(q).reduce(function(xe,fe){var $e=o.serialize(fe);return te.push({data:fe,cid:$e}),xe||$e in a},!1);ae||(f.splice.apply(f,[Y,0].concat(te)),_(a).each(function(xe,fe){xe>=Y&&(a[fe]+=j)}),_(q).each(function(xe,fe){a[o.serialize(xe)]=Y+fe}))},this.remove=function(q){_(q).each(function(Y){var j=o.serialize(Y),te=a[j];te!==void 0&&f.splice(te,1,null)}),f=_(f).compact(),a={},_(f).each(function(Y,j){a[Y.cid]=j})},this.update=function(){return x(),this},this.updateIndex=function(){return x(!0),this},this.debug=function(){console.debug("selection",{selected:n,observed:f,index:a})},this.clearIndex=function(){return f=[],a={},this},this.addToIndex=function(q){var Y=this.serialize(q);return a[Y]===void 0&&(a[Y]=f.length,f.push({data:q,cid:Y})),this},this.removeFromIndex=function(q){var Y={},j=0;_([].concat(q)).each(function(te){Y[o.serialize(te)]=!0}),a={},f=_(f).filter(function(te){var ae=te.cid;return ae in Y?!1:(a[ae]=j++,!0)})},this.hasIndex=function(q){return u=!!q,this},this.getObservedItems=function(){return a},this.setMultiple=function(q){return i=!!q,this},this.setEditable=function(q,Y){return e=!!q,t=Y||".vgrid-cell",p=T=b,ce=-1,this},this.get=function(){var q=[],Y="";for(Y in n)q.push(n[Y]);return q},this.unique=function(q){q=q||this.get();var Y={};return _(q).filter(function(j){var te=_.isString(j)?j:_.cid(j);return te in Y?!1:Y[te]=!0})},this.unfold=this.get,this.clear=function(q){return N(),q!==!0&&(o.trigger("clear"),r()),this},this.focus=function(){if(!$.contains(d,document.activeElement)){if(this.get().length===0)return this.selectFirst(!0);var q=this.serialize(_.last(this.get())),Y=O(q);Y.focus()}},this.select=function(q){return B(q),r(),this},this.deselect=function(q){return z(q),r(),this},this.set=function(q,Y){var j=this.get(),te=this,ae={},xe=!0;return N(),ce=-1,$(".selectable",d).each(function(){var fe=$(this),$e=fe.attr("data-obj-id");ae[$e]=fe}),_(!q||_.isArray(q)?q:[q]).each(function(fe,$e){var we=te.serialize(fe),ke,ve;we in ae?(typeof fe=="string"&&u&&(ke=f[E(fe)])!==void 0?ve=P(ke.data,ae[we]):ve=P(fe,ae[we]),$e===0&&ve.intoViewport(m.scrollpane)):n[we]=fe,xe&&(ce=E(we),p=we,xe=!1)}),ae=null,!_.isEqual(_(j).map(te.serialize),_(this.get()).map(te.serialize))&&Y!==!0&&r(),this},this.equals=function(q){return _.isEqual(q,this.get())},this.selectRange=function(q,Y){var j,te,ae;if(u){for(q=E(q),Y=E(Y),ae=q>Y,j=q;ae?j>=Y:j<=Y;ae?j--:j++)te=f[j],j===Y?B(te.data):n[te.cid]=te.data;this.update()}return this},this.markFirst=function(){return U(),this},this.selectFirst=function(q){return X(null,q),this},this.selectLast=function(){return oe(),this},this.selectSmart=function(){return this.get().length===0&&this.selectFirst(),this},this.selectNext=ue,this.selectAll=function(){if(u&&f.length){for(var q=0,Y=f.length,j;q<Y;q++)j=f[q],q===0||q===Y-1?B(j.data,!0):n[j.cid]=j.data;this.update(),_e?W():r()}},this.resetLastIndex=function(){pe=-1},this.setLastIndex=function(q){return T=q,pe=E(q),this},this.selectIndex=function(){var q=f[pe];q!==void 0&&this.select(q.data)},this.selectLastIndex=function(){if(pe!==-1){var q=f[pe]||_.last(f);q!==void 0&&this.select(q.data)}},this.isSelected=function(q){return I(q)},this.getIndex=function(q){return E(q)},this.isEmpty=function(){return _.isEmpty(n)},this.contains=function(q){var Y=[].concat(q);return!!Y.length&&_(Y).inject(function(j,te){return te=_.isObject(te)?o.serialize(te):te,j&&te in a},!0)},this.getLastIndex=function(){return pe},this.keyboard=function(q,Y){return $(q)[Y?"on":"off"]("keydown",Te),this},this.retrigger=function(q){if(q){var Y=this.get();this.clear(),this.set(Y)}else _e?W():r()},this.retriggerUnlessEmpty=function(){this.get().length&&r({retriggerUnlessEmpty:!0})},this.destroy=function(){this.clear(),this.keyboard(!1),this.events.destroy(),d.off("mousedown mouseup contextmenu"),n=f=a=p=null},this.setMobileSelectMode=function(q){_e=q},this.getMobileSelectMode=function(){return _e},d.on("contextmenu",function(q){q.preventDefault()}).on("mousedown",".selectable",L).on("mouseup",".selectable",h).on("click",".selectable",l).on("dblclick",".selectable",c).on("tap",".selectable",s).on("focus",".selectable",function(){d.addClass("has-focus")}).on("blur",".selectable",function(){_.delay(function(){d.find(":focus").length===0&&(
1d.removeClass("has-focus"),m.markable&&(ye(),O(R()).attr({tabindex:0}),R()&&(p=R())))},10)}),function(){var q,Y,j=null,te,ae,xe=15,fe=15,$e=0,we=0,ke=0,ve=0,Ne=Math.abs;function Ae(A){ke=A.pageX+xe,ve=A.pageY+fe,(Ne($e-ke)>=5||Ne(we-ve)>=5)&&(te.left=ke+"px",te.top=ve+"px",$e=ke,we=ve)}function Re(){d.trigger("selection:dragstart")}function qe(){this.trigger("click")}function Ve(A){if(!A.isDefaultPrevented()){A.preventDefault();var V=$(this).find(".folder-arrow");$(this).addClass("dnd-over"),V.length&&(clearTimeout(ae),ae=setTimeout(qe.bind(V),1500))}}function Be(){clearTimeout(ae),$(this).removeClass("dnd-over")}var Ce=function(){var A=0,V=null;return{move:function(G){A=G.pageY-$(this).offset().top},out:function(){clearInterval(V),V=null},over:function(){if(!V){var G=this.clientHeight;V=setInterval(function(){var J=Math.round(A/G*10)-5,Q=J<0?-1:1,Z=Math.abs(J);Z>2&&(this.scrollTop+=Q*(Z-2)*2)}.bind(this),5)}}}}();function Pe(A){$(document).off("mousemove.dnd",Pe),j=$('<div class="drag-helper">'),w.point("io.ox/core/tk/draghelper").invoke("draw",j,new w.Baton({container:d,data:q,source:Y,dragMessage:m.dragMessage})),te=j[0].style,$e=we=ke=ve=0,Ae(A),j.appendTo(document.body),$(document).on("mousemove.dnd",Ae).one("mousemove.dnd",Re).on("mouseover.dnd",".folder-tree",Ce.over).on("mouseout.dnd",".folder-tree",Ce.out).on("mousemove.dnd",".folder-tree",Ce.move).on("mouseover.dnd",".selectable",Ve).on("mouseout.dnd",".selectable",Be)}function Ue(){j!==null&&(j.remove(),j=te=null)}function He(){Ce.out(),$(document).off("mousemove.dnd mouseup.dnd mouseover.dnd mouseout.dnd"),$(".dropzone").each(function(){var A=$(this),V=A.attr("data-dropzones");(V?A.find(V):A).off("mouseup.dnd")}),$(".dnd-over").removeClass("dnd-over"),d.trigger("selection:dragstop"),j!==null&&Ue()}function Ee(A){if(!A.isDefaultPrevented()){A.preventDefault(),clearTimeout(ae);var V=$(this).attr("data-obj-id")||$(this).attr("data-cid")||$(this).attr("data-id"),G=new w.Baton({data:q,dragType:m.dragType,dropzone:this,target:V});$(this).trigger("selection:drop",[G])}}function We(A){var V=Math.abs(A.pageX-A.data.x),G=Math.abs(A.pageY-A.data.y);if(V>15||G>15){if(q=o.unique(o.unfold()),q.length===0){var J=Y.attr("data-obj-id");q=J?[_.cid(J)]:[]}var Q=new v(q);Q.getProperties(),Q.isResolved()&&!Q.has("delete")?$(document).off("mousemove.dnd mouseup.dnd"):($(".dropzone").each(function(){var Z=$(this),re=Z.attr("data-dropzones");(re?Z.find(re):Z).on("mouseup.dnd",Ee)}),$(document).off("mousemove.dnd").on("mousemove.dnd",Pe))}}function Ge(A){if(A.preventDefault(),Y=$(this),$(document).on("mousemove.dnd",{x:A.pageX,y:A.pageY},We).on("mouseup.dnd",He),!_.browser.IE){var V=$(A.target).closest(m.focus);(m.focus&&V.length?V:d).focus()}}_.device("!touch")&&(m.draggable&&d.on("mousedown.dnd",".selectable",Ge),m.dropzone&&d.addClass("dropzone").attr("data-dropzones",m.dropzoneSelector).on("drop",function(A,V){V.dropType=m.dropType,o.trigger("selection:drop",V)}))}()};return y.extend=function(d,m,o){return d.selection=new y(m,o||{})},y});define("io.ox/core/tk/visibility-api-util",[],function(){var M={isHidden:!1,isSupported:!1,hiddenAttribute:"",visibilityChangeEvent:""},w,v;return typeof document.hidden<"u"?(w="hidden",v="visibilitychange"):typeof document.mozHidden<"u"?(w="mozHidden",v="mozvisibilitychange"):typeof document.msHidden<"u"?(w="msHidden",v="msvisibilitychange"):typeof document.webkitHidden<"u"&&(w="webkitHidden",v="webkitvisibilitychange"),typeof document[w]<"u"&&(M.isSupported=!0,M.hiddenAttribute=w,M.visibilityChangeEvent=v,M.isHidden=!!document[w],$(document).on(v,function(){var F=M.isHidden;M.isHidden=!!document[M.hiddenAttribute],$(M).trigger("visibility-changed",{currentHiddenState:M.isHidden,oldState:F})})),M});define("io.ox/core/desktopNotifications",["settings!io.ox/core","io.ox/core/tk/visibility-api-util"],function(M,w){"use strict";var v,S=_.device("smartphone")?!1:!!window.Notification;function F(k){if(!(!w.isHidden&&!k.ignoreVisibility&&!k.forceDisplay)){k=_.extend({title:"",body:"",duration:"4000"},k);var D=k.title,y=k.duration,d,m=k.onclose,o=k.onshow,i=k.onclick,e=k.onerror;k=_(k).omit("title duration ignoreVisibility onclick onclose onshow onerror"),d=new Notification(D,k),m&&(d.onclose
1=m),o&&(d.onshow=o),i&&(d.onclick=i),e&&(d.onerror=e),y&&(_.device("firefox")&&y>=4e3||(d.onshow=function(){setTimeout(function(){$(d).trigger("close")},y),o&&o.call(arguments,this)}))}}return v={getPermissionStatus:function(){return S?Notification.permission:"unsupported"},isSupported:function(){return S},requestPermission:function(k){S?Notification.requestPermission(k):k("unsupported")},show:function(k){if(!(!k||!S||!M.get("showDesktopNotifications",!0))){arguments.length===2?_.isString(arguments[0])&&_.isString(arguments[1])?k={title:k,body:arguments[1]}:(arguments[1].title=k,k=arguments[1]):_.isString(k)&&(k={title:k});var D=this.getPermissionStatus();D==="granted"&&F(k)}}},v});define("io.ox/core/main/addLauncher",[],function(){var M=function(w,v,S,F){var k=$('<li role="presentation" class="launcher">');return S&&k.on("click","a",function(D){D.preventDefault();var y=$(this),d,m=$(document.activeElement);d=y.contents().detach(),y.css("width",y.width()+"px").text("\xA0").busy(),(S.call(this)||$.when()).done(function(){y.idle().empty().append(d).css("width",""),$(document.activeElement).filter("body").length>0&&m.focus()})}),k.append(function(){return _.isString(v)?$('<a href="#" class="apptitle" tabindex="-1">').text(v):v[0].tagName==="I"||v[0].tagName==="svg"?$('<a href="#" class="apptitle" role="button" tabindex="-1">').attr("aria-label",F?_.escape(F):null).append(v):v}),w==="left"&&k.hide(),k.appendTo($("#io-ox-toprightbar"))};return M});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","io.ox/core/api/tab","gettext!io.ox/core","io.ox/core/main/autologout"],function(M,w,v,S,F,k,D,y,d){function m(a){$("#io-ox-appcontrol").toggleClass("open",a),$("#io-ox-launchgrid-overlay, #io-ox-launchgrid-overlay-inner").toggle(a)}var o={launcher:function(){var a=window.launchers=new u({collection:ox.ui.apps,dontProcessOnMobile:!0});this.append(a.render().$el)}},i=Backbone.View.extend({tagName:"a",className:"btn btn-link lcell",attributes:{href:"#",role:"menuitem",tabindex:-1},events:{click:"onClick","click .closer":"quitApp"},initialize:function(a){this.pos=a.pos,this.quicklaunch=a.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(D,"change:coloredIcons",this.render)},addAccessKey:function(){this.pos<=9&&this.pos!==0&&this.$el.attr("accesskey",this.pos)},checkUpsell:function(){var a=this.model.get("requires");return!w.has(a)},drawUpsellIcon:function(a){this.checkUpsell()&&a.addClass("upsell").append(_(D.get("upsell/defaultIcon","fa-star").split(/ /)).map(function(b){return $.icon(b)}))},onClick:function(){if(this.checkUpsell()){var a=this.model.get("requires");w.trigger({type:"app",id:this.model.get("id"),missing:w.missing(a)})}else{if(this.model.options.mobilelazyload)return this.model.trigger("mobilelazyload");if(this.model.get("state")==="running"&&this.model.get("closable")){this.model.launch();return}if(y.openInTabEnabled()&&this.model.get("openInTab")){y.openChildTab(this.model.get("tabUrl"));return}this.quicklaunch&&this.model.quickLaunch?this.model.quickLaunch():ox.launch(this.model.get("path"))}},quitApp:function(a){a.preventDefault(),a.stopPropagation(),this.model.quit()},drawCloser:function(){var a=$('<a href="#" type="button" class="btn btn-link closer">').append($('<i class="fa fa-times" aria-hidden="true">'));this.$el.append(a),this.closer=a},drawDate:function(){this.$icon.find("tspan:first").text(moment().format("D"))},drawIcon:function(){var a=this.model.get("icon"),b=this.model.get("id"),p=this.model.get("title"),T=_.isString(p)?p[0]:"?";return a=/^<.*>$/.test(a)?a:"",this.model.get("closable")&&_.device("smartphone")&&(a=ox.ui.appIcons[this.model.options.name],!a&&this.model.options.userContentIcon&&(a='<i class="'+this.model.options.userContentIcon+'">')),this.$icon=a?$(a):$(F.fallback).find("text > tspan").text(T).end(),D.get("coloredIcons",!1)&&this.$icon.addClass("colored"),(b==="io.ox/calendar"||/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(){if(this.quicklaunch){var a=this.model.get("tooltip"),b=this.model.get("title");a=b+(a?" ("+a+")":""),this.$el.attr("aria-label",a),this.$cell.attr({"aria-hidden":!0,title:a})}},updateTitle:function(a,b){var p=this.icon.find(".title");p.text(b),this.drawUpsellIcon(p)},render:function(){return this.$el.empty().attr({"data-id":this.model.get("id"),"data-app-name":this.model.get("name")}
1).toggleClass("active",ox.ui.App.isCurrent(this)).append(this.icon=this.drawIcon()),this.updateTooltip(),this.addAccessKey(),this}}),e={quickLaunchLimit:5,getQuickLauncherCount:function(){var a=D.get("apps/quickLaunchCount",3);return!_.isNumber(a)||a<1?0:Math.min(this.quickLaunchLimit,Math.max(ox.ui.apps.forLauncher().length,this.getQuickLauncherList().length,a))},getQuickLauncherDefaults:function(){return"io.ox/mail/main,io.ox/calendar/main,io.ox/files/main"},getQuickLauncherList:function(){return String(D.get("apps/quickLaunch",this.getQuickLauncherDefaults())).trim().split(/,\s*/)},getQuickLauncherItems:function(){var a=this.getQuickLauncherCount(),b=this.getQuickLauncherList(),p=_.chain(b).filter(function(T){return T.indexOf("customQuickLaunchers")!==-1?T:ox.ui.apps.get(T.replace(/\/main$/,""))}).value().join(",");return((p||"none")+new Array(a).join(",none")).split(",").slice(0,a)}},t=Backbone.Collection.extend({initialize:function(){this.reload(),D.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 a=e.getQuickLauncherItems().map(function(b){return b.indexOf("customQuickLaunchers")!==-1?{isCustomLauncher:!0,extensionId:b.replace("io.ox/core/appcontrol/customQuickLaunchers/","")}:ox.ui.apps.get(b.replace(/\/main$/,""))});return _(a).compact()}}),n=Backbone.View.extend({attributes:{id:"io-ox-quicklaunch",role:"toolbar"},events:{"click button":"onClick",contextmenu:"onContextmenu"},initialize:function(){this.collection=new t,this.listenTo(this.collection,{reset:this.render})},onClick:function(){m(!1)},onContextmenu:function(a){a.preventDefault(),D.isConfigurable("apps/quickLaunch")&&e.getQuickLauncherCount()!==0&&!_.device("smartphone")&&require(["io.ox/core/settings/dialogs/quickLauncherDialog"],function(b){b.openDialog()})},render:function(){return this.$el.empty().append(this.collection.map(function(a){return a.get("isCustomLauncher")?v.point("io.ox/core/appcontrol/customQuickLaunchers").get(a.get("extensionId"))?v.point("io.ox/core/appcontrol/customQuickLaunchers").get(a.get("extensionId")).draw():"":a.get("requires")&&!S.has(a.get("requires"))&&(S.has("guest")||!w.enabled(a.get("requires")))?"":new i({tagName:"button",attributes:{tabindex:-1,type:"button"},model:a,quicklaunch:!0}).render().$el.attr("tabindex",-1)})),this.$el.find("button").first().removeAttr("tabindex"),this}}),u=k.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($(F.launcher).attr("title",d("All Applications"))),initialize:function(){k.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(a,b){this.append(new i({model:a,pos:b+1}).render().$el)}.bind(this)),v.point("io.ox/core/appcontrol/customLaunchers").invoke("draw",this),_.device("smartphone")&&this.collection.where({closable:!0}).forEach(function(a){this.append(new i({model:a}).render().$el)}.bind(this))}});ox.once("core:load",function(){ox.manifests.loadPluginsFor("io.ox/core/notifications").done(function(){v.point("io.ox/core/notifications/badge").invoke("register",self,{})})}),v.point("io.ox/core/appcontrol").extend({id:"init",index:100,draw:function(){var a;$("#io-ox-core").append(a=$('<div id="io-ox-launchgrid-overlay">').on("click",m)),_.device("smartphone")&&a.on("touchstart",function(b){b.preventDefault(),m()}),f(),ox.ui.apps.on("launch resume",function(b){b.get("floating")||($(".launcher-dropdown").find(".lcell[data-app-name]").removeClass("active").end().find('.lcell[data-app-name="'+b.get("name")+'"]').addClass("active"),$("#io-ox-quicklaunch").find(".lcell[data-id]").removeClass("active").end().find('.lcell[data-id="'+b.get("name")+'"]').addClass("active"),_.defer(function(){$(document).trigger("resize")}))})}}),v.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"))))}}),v.point("io.ox/core/appcontrol").extend({id:"logo",index:300,draw:function(){var a,b=D.get("logoFileName","logo.png"),p,T=function(){if(p=D.get("logoAction",!1),a.parent().hasClass("logo-btn")&&a.parent().replaceWith(a),/^https?:/.test(p))a.wrap($('<a class="btn btn-link logo-btn">').attr({href:p,target:"_blank"}));else if(y.openInTabEnabled()&&/^io\.ox\/office\/portal/.test(p)){var r=p.substring(0,20),g=y.createUrl({app:p},{exclude:"folder",suffix:"office?app="+r});a.wrap($('<a class="btn btn-link logo-btn">').attr({href:g,target:"_blank"}))}else if(p){var l=D.get("autoStart");if(p==="autoStart"){if(l==="none")return;p=l}a.wrap($('<button type="button" class="logo-btn btn btn-link">').on("click",function(){ox.ui.apps.get(p.replace(/\/main$/,""))&&ox.launch(
1p)}))}};this.append(a=$('<div id="io-ox-top-logo">').append($("<img>").attr({alt:ox.serverConfig.productName,src:ox.base+"/apps/themes/"+ox.theme+"/"+b}))),!(ox.openedInBrowserTab||y.openInTabEnabled()&&_.url.hash("app")==="io.ox/files/detail")&&(T(),D.on("change:logoAction change:autoStart",T))}}),v.point("io.ox/core/appcontrol").extend({id:"left",index:350,draw:function(){if(!_.device("smartphone")){var a=$('<ul class="taskbar list-unstyled" role="toolbar">');this.append($('<div id="io-ox-topleftbar">').append(a)),v.point("io.ox/core/appcontrol/left").invoke("draw",a)}}}),v.point("io.ox/core/appcontrol").extend({id:"quicklauncher",index:400,draw:function(){if(!_.device("smartphone")){var a=window.quicklaunchers=new n;this.append(a.render().$el)}}}),v.point("io.ox/core/appcontrol/right").extend({id:"launcher",index:120,draw:function(){_.device("smartphone")&&o.launcher.call(this)}}),!_.device("smartphone")&&D.get("features/enterprisePicker/enabled",!1)&&(v.point("io.ox/core/appcontrol/right").extend({id:"enterprisePicker",index:130,draw:function(){if(!D.get("features/enterprisePicker/showTopRightLauncher",!1))return"";var a=$('<li role="presentation" class="launcher">').append($('<button id="io-ox-enterprise-picker-icon" class="launcher-btn btn btn-link">').attr("aria-label",d("Address directory")).append($.icon("fa-address-card-o")).on("click",_.debounce(function(){require(["io.ox/contacts/enterprisepicker/dialog"],function(b){b.open($.noop,{selection:{behavior:"none"}})})},300,!0)));this.append(a)}}),v.point("io.ox/core/appcontrol/customLaunchers").extend({id:"enterprisePicker",index:100,draw:function(){if(!D.get("features/enterprisePicker/showLauncher",!0))return"";this.append($('<a tabindex="-1" href="#" role="menuitem" class="btn btn-link lcell">').append($('<div class="lcell">').append($('<div class="icon">').append($.icon("fa-address-card-o")),$('<div class="title">').text(d("Address directory")))).on("click",_.debounce(function(){require(["io.ox/contacts/enterprisepicker/dialog"],function(a){a.open($.noop,{selection:{behavior:"none"}})})},300,!0)))}}),v.point("io.ox/core/appcontrol/customQuickLaunchers").extend({id:"enterprisePicker",label:d("Address directory"),index:100,draw:function(){return D.get("features/enterprisePicker/showLauncher",!0)?$('<button tabindex="-1" type="button" class="btn btn-link lcell">').append($('<div class="lcell">').append($('<div class="icon">').append($.icon("fa-address-card-o")),$('<div class="title">').text(d("Address directory"))).on("click",_.debounce(function(){require(["io.ox/contacts/enterprisepicker/dialog"],function(a){a.open($.noop,{selection:{behavior:"none"}})})},300,!0))):""}})),v.point("io.ox/core/appcontrol").extend({id:"search",index:500,draw:function(){var a=$('<div id="io-ox-topsearch">');this.append(a)}}),v.point("io.ox/core/appcontrol").extend({id:"right",index:600,draw:function(){var a=$('<ul class="taskbar list-unstyled" role="toolbar">');this.append($('<div id="io-ox-toprightbar">').append(a)),v.point("io.ox/core/appcontrol/right").invoke("draw",a),_.defer(function(){a.find(".dropdown-toggle:visible:first").removeAttr("tabindex")})}}),v.point("io.ox/core/appcontrol").extend({id:"show",index:1e4,draw:function(){this.attr("role","banner").show()}}),v.point("io.ox/core/appcontrol/left").extend({id:"launcher",index:100,draw:function(){_.device("smartphone")||o.launcher.call(this)}});function f(){var a=0,b=null,p=_.device("webkit || firefox || ie > 9"),T=p?500:1500,r=null;function g(){if(a===0&&b===null)if($("#io-ox-refresh-icon .apptitle").attr("aria-label",d("Refresh")),p){if(r=r||$("#io-ox-refresh-icon").find("svg"),r.hasClass("fa-spin")){r.addClass("fa-spin-paused");var l=!1;setTimeout(function(){l=!0},2546),r.on("animationiteration",function(c){l&&$(c.target).removeClass("fa-spin")})}}else $("#io-ox-refresh-icon").removeClass("io-ox-progress")}M.on("start",function(l,c,h){a===0&&(b===null&&!h.silent&&($("#io-ox-refresh-icon .apptitle").attr("aria-label",d("Currently refreshing")),p?(r=r||$("#io-ox-refresh-icon").find("svg"),r.hasClass("fa-spin")||r.addClass("fa-spin").removeClass("fa-spin-paused")):$("#io-ox-refresh-icon").addClass("io-ox-progress")),clearTimeout(b),b=setTimeout(function(){b=null,g()},T)),a++}),M.on("stop",function(){a=Math.max(0,a-1),g()})}return _.extend(e,{LauncherView:i,LaunchersView:u})});define("io.ox/core/main/autologout",["io.ox/core/main/logout","settings!io.ox/core","gettext!io.ox/core"],function(M,w,v){(function(){var S=10,F=30,k=0,D=null,y=null,d,m=null,o=!1,i=!1,e=!1,t=function(){return Math.ceil((d+k-_.now())/1e3)},n=function(){return parseInt(w.get("autoLogout",0),10)},u=function(){clearTimeout(D),D=setTimeout(function(){M({autologout:!0})}
1,k),d=_.now(),o=!1},f=function(){return D!==null&&y!==null},a=$.noop,b=function(){if(ox.tabHandlingEnabled&&e&&a(),o&&m===null)u();else{var c=t();c<=F&&m===null&&require(["io.ox/backbone/views/modal"],function(h){var L=c,s=function(N){return v.ngettext("You will be automatically signed out in %1$d second","You will be automatically signed out in %1$d seconds",N,N)},x=$("<span>").text(s(L)),C=setInterval(function(){L<=0?(clearInterval(C),M({autologout:!0})):(L--,x.text(s(L)))},1e3);clearTimeout(D),m&&(ox.off("logout:failed",m.logoutFailed),m.close()),m=new h({async:!0,title:v("Automatic sign out"),backdrop:!0}).build(function(){this.$body.append(x),this.$el.addClass("auto-logout-dialog")}).addCancelButton().addButton({action:"retry",label:v("Retry"),className:"btn-default"}).addButton({action:"force",label:v("Sign out now")}).open(),m.on("close",function(){u(),clearInterval(C),m=null,ox.handleLogoutError=!1}),m.on("force",function(){if(u(),clearInterval(C),m.$el.hasClass("logout-failed")){m.pause();var N=new h({async:!0,title:v("Are you sure?"),backdrop:!0}).build(function(){this.$body.append($('<div class="alert alert-danger">').text(v("Forcing logout may cause data loss.")))}).addCancelButton().addButton({action:"force",label:v("Force sign out")}).open();N.on("cancel",function(){m.resume()}),N.on("force",function(){M({force:!0}),m.close(),this.close()})}else M()}),m.on("retry",function(){u(),clearInterval(C),M()}),m.logoutFailed=function(N){if(m){ox.handleLogoutError=!0;var I=N[0]&&N[0].error?N[0].error:N[0];m.idle(),m.$el.toggleClass("logout-failed",!0),m.$el.find('[data-action="force"]').text(v("Force sign out")),m.$body.empty().append($('<div class="alert alert-danger">').append($("<div>").text(v("Logout failed.")),_.isString(I)?$("<div>").text(I):""))}},ox.on("logout:failed",m.logoutFailed)})}},p=function(){o=!0},T=function(){k=n(),k>0&&D===null&&($(document).on("mousedown mousemove scroll touchstart touchmove keydown",p),u(),y=setInterval(b,1e3*S))},r=function(){y&&D&&(clearTimeout(D),clearInterval(y),D=y=null,ox.tabHandlingEnabled&&(k=0),$(document).off("mousedown mousemove scroll touchstart touchmove keydown",p))},g=function(){r(),T()},l=function(){S=1,F=10,n=function(){return 12e3},g()};ox.autoLogout={start:T,stop:r,restart:g,debug:l,logout:M.bind(null,{autologout:!0})},ox.tabHandlingEnabled&&require(["io.ox/core/api/tab"],function(c){function h(){c.propagate("propagateLeaderChanged",{exceptWindow:c.getWindowName()})}function L(){c.propagate("propagateResetAutoLogoutTimeout",{exceptWindow:c.getWindowName()})}function s(H){c.propagate("propagateSettingsAutoLogout",{val:H,exceptWindow:c.getWindowName()})}a=function(){c.propagate("propagatePause",{})};function x(){i=!1,m&&m.close(),f()&&u()}function C(H){var K=parseInt(H.val,10);w.set("autoLogout",K,{silent:!0}),K===0?r():T()}function N(){i=!1,f()&&u()}function I(){i=!0,h()}function P(){m&&m.close(),r()}function B(){i&&u()}function W(){e=!0}function z(){e=!1}u=function(){clearTimeout(D),!(k<=0)&&(D=setTimeout(function(){M({autologout:!0})},k),d=_.now(),o=!1,i||(d=_.now()+1e3),i&&L())},w.on("change:autoLogout",s),c.communicationEvents.listenTo(c.communicationEvents,"propagateResetAutoLogoutTimeout",x),c.communicationEvents.listenTo(c.communicationEvents,"propagateSettingsAutoLogout",C),c.communicationEvents.listenTo(c.communicationEvents,"nextWindowActive",I),c.communicationEvents.listenTo(c.communicationEvents,"propagatePause",B),c.communicationEvents.listenTo(c.communicationEvents,"propagateLeaderChanged",N),c.sessionEvents.listenTo(c.sessionEvents,"before:propagatedLogout",P),require(["io.ox/core/tk/visibility-api-util"]).done(function(H){$(H).on("visibility-changed",function(K,ee){ee.currentHiddenState===!1&&(i=!0,h(),f()&&u())})});function R(){var H=_.first(_.filter(c.getWindowList(),function(K){return K.windowName!==c.getWindowName()}));return H?H.windowName:""}c.communicationEvents.listenTo(c.communicationEvents,"beforeunload",function(H){if(!H){var K=R();K&&c.propagate("nextWindowActive",{targetWindow:K})}}),_.extend(ox.autoLogout,{start:z,stop:W}),i=!0,h()}),w.on("change:autoLogout",function(c){if(parseInt(c,10)===0)return r();T()}
1),T()})()});define("io.ox/core/main/debug",[],function(){var M=$.noop;return/\bcore/.test(_.url.hash("debug"))&&(M=function(){var w=_(arguments).toArray(),v=_.now()-ox.t0;w.unshift("core ("+(v/1e3).toFixed(1)+"s): "),console.log.apply(console,w)}),M});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(M,w,v,S,F){"use strict";v.createApp({id:"io.ox/mail",name:"io.ox/mail",title:F.pgettext("app","Mail"),requires:"webmail",refreshable:!0,searchable:!0,settings:!0,icon:S["io.ox/mail"]}),v.createApp({name:"io.ox/mail/detail",requires:"webmail",refreshable:!0}),v.createApp({id:"io.ox/calendar",name:"io.ox/calendar",title:F.pgettext("app","Calendar"),searchable:!0,settings:!0,requires:"calendar",refreshable:!0,icon:S["io.ox/calendar"]}),v.createApp({name:"io.ox/calendar/detail",requires:"calendar",refreshable:!0}),v.createApp({id:"io.ox/contacts",name:"io.ox/contacts",title:F.pgettext("app","Address Book"),refreshable:!0,requires:"contacts",searchable:!0,settings:!0,icon:S["io.ox/contacts"]}),v.createApp({name:"io.ox/contacts/detail",requires:"contacts",refreshable:!0}),v.createApp({id:"io.ox/portal",name:"io.ox/portal",title:F.pgettext("app","Portal"),requires:"portal",refreshable:!0,settings:!0,icon:S["io.ox/portal"]}),v.createApp({id:"io.ox/files",name:"io.ox/files",title:F.pgettext("app","Drive"),requires:"infostore",refreshable:!0,searchable:!0,settings:!0,icon:S["io.ox/files"]}),v.createApp({name:"io.ox/files/detail",requires:"infostore",refreshable:!0}),v.createApp({id:"io.ox/tasks",name:"io.ox/tasks",title:F.pgettext("app","Tasks"),requires:"tasks",refreshable:!0,searchable:!0,settings:w.has("delegate_tasks"),icon:S["io.ox/tasks"]}),v.createApp({name:"io.ox/tasks/detail",requires:"tasks",refreshable:!0}),ox.debug&&v.createApp({id:"io.ox/notes",name:"io.ox/notes",title:F.pgettext("app","Notes"),requires:"notes && infostore",device:"!smartphone",refreshable:!0,searchable:!0}),v.createApp({id:"io.ox/editor",name:"io.ox/editor",title:F("Editor"),settings:!1,requires:"infostore",visible:!1,deeplink:!0}),v.createApp({id:"io.ox/search",name:"io.ox/search",title:F("Search"),requires:"search",device:"smartphone",settings:!1,icon:S["io.ox/search"]}),v.createApp({id:"io.ox/settings",name:"io.ox/settings",title:F("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(M,w,v,S,F,k,D){var y=250;v.point("io.ox/core/logout").extend({id:"tabLogoutFollower",index:"first",logout:function(e){if(!ox.tabHandlingEnabled)return $.when();var t=$.Deferred();function n(u,f){try{o(f)}finally{u.reject()}}return e.skipSessionLogout?require(["io.ox/core/api/tab"],function(u){try{u.setLoggingOutState(u.LOGGING_OUT_STATE.FOLLOWER),ox.trigger("logout"),w.disconnect(),ox.cache.clear().always(function(){n(t,e)})}catch(f){ox.debug&&console.warn("clear storage at logout did not work",f),n(t,e)}}):t.resolve(),t}}),v.point("io.ox/core/logout").extend({id:"confirmLogout",index:100,logout:function(e){if(!ox.tabHandlingEnabled||!e.manualLogout)return $.when();var t=$.Deferred();return require(["io.ox/core/api/tab"],function(n){n.otherTabsLiving().then(function(){require(["io.ox/backbone/views/modal"],function(u){var f=new u({async:!0,title:D("Sign out"),backdrop:!0}).build(function(){this.$body.append($("<div>").text(D("Are you sure you want to sign out from all related browser tabs?")))}).addCancelButton().addButton({action:"force",label:D("Sign out")}).open();f.on("close",function(){f=null,t.reject()}),f.on("force",function(){t.resolve()})})},function(){t.resolve()})}),t.promise()}}),v.point("io.ox/core/logout").extend({id:"tabLogoutLeader",index:150,logout:function(e){if(!ox.tabHandlingEnabled)return $.when();var t=$.Deferred();return require(["io.ox/core/api/tab"],function(n){try{n.setLoggingOutState(n.LOGGING_OUT_STATE.LEADER),n.propagate("propagateLogout",{autologout:e.autologout,exceptWindow:n.getWindowName(),storageKey:n.DEFAULT_STORAGE_KEYS.SESSION})}catch(u){ox.debug&&console.warn("propagate logout did not work",u)}finally{t.resolve()}}),t}}),v.point("io.ox/core/logout").extend({id:"hideUI",index:200,logout:function(){var e=$.Deferred();return $("#background-loader").fadeIn(y,function(){$("#io-ox-core").hide(),e.resolve()}),e}}),v.point("io.ox/core/logout").extend({id:"saveRestorePoint",index:300,logout:function(e){w.pause();var t=$.Deferred();return e.autologout||ox.online?$.when.apply($,ox.ui.apps.map(function(n){return n.saveRestorePoint()})).always(t.resolve):ox.ui.App.canRestore().then(function(n){n?($("#io-ox-core").show(),$("#background-loader").hide(),new F({title:D("Sign out"),description:D("Unsaved documents will be lost. Do you want to sign out now?")}).addButton({label:D("Cancel"),action:"No",className:"btn-default"}).addButton({label:D("Sign out"),action:"Yes"}).on("No",function(){t.reject()}).on("Yes",function(){$("#io-ox-core").hide(),$("#background-loader").show(),t.resolve()}).open()):t.resolve()}),k.save(),w.resume(),t}}
1),v.point("io.ox/core/logout").extend({id:"clearCache",logout:function(){return ox.cache.clear()}}),v.point("io.ox/core/logout").extend({id:"logout-button-hint",logout:function(){return w.pause(),k.set("features/logoutButtonHint/active",!1).save(),w.resume()}}),v.point("io.ox/core/logout").extend({id:"savePendingSettings",index:1e12,logout:function(){w.pause();var e=$.Deferred();return $.when.apply($,_(k.getAllPendingSettings()).map(function(t){return t.save(void 0,{force:!0})})).always(e.resolve),w.resume(),e}});function d(){var e=S.has("guest")?!k.isConfigurable("customLocations/guestLogout")&&k.get("customLocations/guestLogout")||ox.serverConfig.guestLogoutLocation:!k.isConfigurable("customLocations/logout")&&k.get("customLocations/logout")||ox.serverConfig.logoutLocation;return e&&e.match(/^https?:\/\/.*$|^\/.*$/)?_.url.vars(e):_.url.vars(ox.logoutLocation||"")}function m(e){if(/#autologout=true/.test(e)){var t=document.createElement("a");return t.href=e,location.host===t.host&&location.pathname===t.pathname}}function o(e){var t=d();if(e.autologout){var n=t.indexOf("#")>-1?"&":"#";t=t+n+"autologout=true"}_.url.redirect(_.url.vars(t)),m(t)&&_.defer(function(){location.reload(!0)})}var i=function(e){_.stepwiseInvoke||(console.error("Logout while waiting for 2FA authentication. Reloading"),M.logout().always(function(){window.location.reload(!0)})),e=_.extend({autologout:!1},e||{});var t=v.point("io.ox/core/logout").list(),n=_.stepwiseInvoke(t,"logout",this,new v.Baton(e)).always(function(){if(n.state()==="rejected"&&!e.force)return $("#io-ox-core").show(),$("#background-loader").fadeOut(y),ox.trigger("logout:failed",arguments);ox.tabHandlingEnabled&&e.skipSessionLogout||M.logout().always(function(){o(e)})})};return i});define("io.ox/core/main/offline",["io.ox/core/notifications","gettext!io.ox/core"],function(M,w){var v=!1;function S(k){v||($("#io-ox-offline").text(k).stop().show().animate({bottom:"0px"},200,function(){v=!0}),M.yell("screenreader",k))}function F(){v&&$("#io-ox-offline").stop().animate({bottom:"-41px"},200,function(){$(this).hide(),v=!1})}ox.on({"connection:online":function(){F(),ox.online=!0},"connection:offline":function(){S(w("Offline")),ox.online=!1},"connection:up":function(){ox.online&&F()},"connection:down":function(){ox.online&&S(w("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(M,w,v,S,F){var k;return function(){var D=_.now(),y=1e4;v.point("io.ox/core/refresh").extend({action:_.throttle(function(){if(ox.online&&ox.session!=="")try{ox.trigger("refresh^")}catch(m){console.error("io.ox/core/refresh:default",m.message,m)}},y),reset:function(){D=_.now()+parseInt(F.get("refreshInterval",3e5),10)}});function d(){_.now()>D&&(v.point("io.ox/core/refresh").invoke("action"),v.point("io.ox/core/refresh").invoke("reset"))}k=function(){v.point("io.ox/core/refresh").invoke("action"),v.point("io.ox/core/refresh").invoke("reset")},F.on("change:refreshInterval",function(){v.point("io.ox/core/refresh").invoke("reset")}),v.point("io.ox/core/refresh").invoke("reset"),setInterval(d,1e4)}(),k});define("io.ox/core/main/registry",["settings!io.ox/core"],function(M){(function(){var w={"mail-compose":"io.ox/mail/compose/main","client-onboarding":"io.ox/onboarding/clients/wizard","io.ox/mail/compose":"io.ox/mail/compose/main","io.ox/calendar/edit":"io.ox/calendar/edit/main","io.ox/calendar/freetime":"io.ox/calendar/freetime/main","io.ox/contacts/distrib":"io.ox/contacts/distrib/main","io.ox/contacts/edit":"io.ox/contacts/edit/mains","io.ox/editor":"io.ox/editor/main","io.ox/tasks/edit":"io.ox/tasks/edit/main"},v={};ox.registry={set:function(S,F){v[S]=F},get:function(S){return v[S]||M.get("registry/"+S)||w[S]},call:function(S,F){var k=this.get(S),D=_(arguments).toArray().slice(2);return ox.load([k]).then(function(y){if(y.run&&_.isFunction(y.run))return y.run.apply(y,D);if(!(!y.reuse||!y.getApp)&&!y.reuse(F,D[0]))return y.getApp().launch().then(function(){return this[F].apply(this,D)})})}}})()});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","io.ox/core/api/tab","settings!io.ox/core","settings!io.ox/contacts","gettext!io.ox/core"],function(M,w,v,S,F,k,D,y,d,m){var o=$("#io-ox-appcontrol"),i=function(a){var b=(a||"").split(/:/),p=b[0],T=b[1]||"";return/\.(\n)*\./.test(p)?(console.error("app names must not contain relative paths"),{app:void 0}):{app:/\/main$/.test(p)?p:p+"/main",method:T,name:p.replace(/\/main$/,"")}}
1,e=function(){var a=_([].concat(y.get("autoStartMobile","io.ox/mail"))).filter(function(b){return!_.isUndefined(b)&&!_.isNull(b)});return a[0]!=="io.ox/mail"&&a.push("io.ox/mail"),a},t=function(){var a=[];if(y.get("autoStart")==="none")a=[];else{var b=_.map(S.forLauncher(),function(p){return p.get("path")});a=_([].concat(y.get("autoStart"),b)).chain().filter(function(p){return _.isUndefined(p)||_.isNull(p)?!1:/^io.ox\/settings(\/main)?$/.test(p)?!0:b.indexOf(/main$/.test(p)?p:p+"/main")>=0}).first(1).value()}return a},n=function(a,b){b.forEach(a.disable,a)},u=function(a,b){a.each(function(p){b.indexOf(p.id)<0&&a.disable(p.id)})};M.point("io.ox/core/stages").extend({id:"first",index:100,run:function(){k('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(a){k('Stage "appcheck"');var b=_.url.hash(),p=!("!!"in b),T;if(b.m==="infostore"&&(b.m="files"),p&&b.app&&b.folder&&b.id&&b.folder.indexOf("virtual/")!==0&&b.id.indexOf(",")<0){var r=
1/^\d+\./.test(b.id)?b.id.replace(/\./,"/"):b.id;T=/^io.ox\/(mail|contacts|calendar|tasks)$/.test(b.app),_.url.hash({app:T?b.app+"/detail":b.app,folder:b.folder,id:r}),a.isDeepLink=!0}else b.m&&b.f&&b.i?(T=/^(mail|contacts|calendar|tasks)$/.test(b.m),_.url.hash({app:"io.ox/"+(T?b.m+"/detail":b.m),folder:b.f,id:b.i}),a.isDeepLink=!0):b.m&&b.f&&(_.url.hash({app:"io.ox/"+b.m,folder:b.f}),a.isDeepLink=!0);_.url.hash({m:null,f:null,i:null,"!!":void 0,"!":null}),_.device("smartphone")&&e();var g=_.url.hash("app"),l=g&&ox.ui.apps.get(i(g).name),c=p&&l&&l.get("deeplink"),h=_.url.hash("mailto")!==void 0&&g===ox.registry.get("mail-compose")+":compose";l&&(l.get("refreshable")||c)?a.autoLaunch=g.split(/,/).filter(function(L){return!!S.get(L.replace(/(:.*|\/main)$/,""))}):v.has("webmail")&&h?a.autoLaunch=["io.ox/mail/main"]:(l&&_.url.hash({app:null,folder:null,id:null}),a.autoLaunch=t())}},{id:"autoLaunchApps",index:120,run:function(a){k('Stage "autoLaunchApps"'),a.autoLaunchApps=_(a.autoLaunch).chain().map(function(b){return i(b).app}).compact().value()}},{id:"startLoad",index:130,run:function(a){k('Stage "startLoad"');function b(p){return function(T){var r=T&&T.message||"";throw console.error("core: Failed to load:",p,r,T,a),T}}a.loaded=$.when(M.loadPlugins().fail(b("loadPlugins")),require(a.autoLaunchApps).fail(b("autoLaunchApps")),require(["io.ox/core/api/account"]).then(function(p){var T=$.Deferred();return p.all().always(T.resolve),T},b("account")))}},{id:"secretCheck",index:250,run:function(){if(k('Stage "secretCheck"'),ox.online&&ox.rampup&&ox.rampup.oauth){var a=ox.rampup.oauth.secretCheck;
1a&&!a.secretWorks&&(require(["io.ox/keychain/secretRecoveryDialog"],function(b){b.show()}),ox.debug&&console.error("Couldn't decrypt accounts: ",a.diagnosis))}}},{id:"drawDesktop",index:500,run:function(){M.point("io.ox/core/desktop").invoke("draw",$("#io-ox-desktop"),{}),ox.ui.windowManager.on("empty",function(a,b,p){if(b){M.point("io.ox/core/desktop").invoke("draw",$("#io-ox-desktop"),{}),ox.ui.screens.show("desktop");var T=i(p||y.get("autoStart","io.ox/mail/main")).app;T!=="none/main"&&ox.launch(T)}else ox.ui.screens.show("windowmanager")})}},{id:"load",index:600,run:function(a){return k('Stage "load"',a),a.loaded}},{id:"popoutViever",index:605,run:function(){if(D.openInTabEnabled()&&_.url.hash("office:disable-openInTabs")!=="true"&&_.url.hash("app")==="io.ox/files/detail"){var a=M.point("io.ox/core/appcontrol");n(a,["quicklauncher"]);var b=M.point("io.ox/core/appcontrol/left");n(b,["launcher"]);var p=M.point("io.ox/core/appcontrol/right");n(p,["refresh-mobile","notifications","settings-dropdown"]);var T=M.point("io.ox/core/appcontrol/right/help");u(T,["help","feedback","divider-first","about"]);var r=M.point("io.ox/core/appcontrol/right/settings");u(r,[]);var g=M.point("io.ox/core/appcontrol/right/account");u(g,["logout"]);var l=M.point("io.ox/core/appcontrol/right/account/signouts");u(l,["logout"])}}},{id:"topbars",index:610,run:function(){return k('Stage "load" > loaded.done'),M.point("io.ox/core/appcontrol").invoke("draw",o),_.device("smartphone")&&M.point("io.ox/core/mobile").invoke("draw"),M.point("io.ox/core/topbar").isEnabled("default")||($("#io-ox-screens").css("top","0px"),o.hide()),M.point("io.ox/core/plugins").invoke("draw"),k('Stage "load" > autoLaunch ...'),D.openInTabEnabled()?D.isParentTab()?ox.ui.App.restore():!0:ox.ui.App.restore()}},{id:"restoreLaunch",index:620,run:function(a){var b=_.copy(_.url.hash()),p=a.autoLaunch.length>0;if(_(a.autoLaunch).chain().map(function(r){return i(r)}).each(function(r,g){if(g===0&&(p=!1),!(_.device("smartphone")&&g>0)&&!(_.device("smartphone")&&ox.ui.apps.where({restored:!0,name:r.name}).length)){var l,c,h=_(b).pick("folder","id");if(h.first=!0,k("Auto launch:",r.app,h),/detail\/main$/.test(r.app)&&r.app.indexOf("files/detail/main")<0){var L=r.app.replace(/\/detail/,"");l=ox.launch(L,h),l.done(function(){_.delay(function(){ox.launch(r.app,{cid:_.cid(h)})},1e3)})}else l=ox.launch(r.app,h);c=r.method,b.app==="io.ox/files"&&b.id!==void 0&&require(["io.ox/core/viewer/main","io.ox/files/api"],function(P,B){F.get(b.folder).done(function(){B.get(b).done(function(W){new P().launch({files:[W],folder:b.folder})})}).fail(function(W){_.url.hash("id",null),w.yell(W)})}),c&&l.done(function(){_.isFunction(this[c])&&this[c]()});var s=_.url.hash("reg"),x=_(_.url.hash()).reduce(function(P,B,W){return W.toLowerCase()==="showfeedbackdialog"?B:P});if(s&&ox.registry.get(s)){var C=(_.url.hash("regopt")||"").split(","),N={},I;_.each(C,function(P){I=P.split(":"),N[I[0]]=I[1]}),l.done(function(){ox.registry.call(s,"client-onboarding",{data:N})})}x==="true"&&v.has("feedback")&&l.done(function(){require(["plugins/core/feedback/register"],function(P){P.show()})}),d.get("features/furigana",!1)&&require(["l10n/ja_JP/io.ox/register"])}}),p||ox.rampup&&ox.rampup.errors){var T=_.pluck(ox.rampup.errors,"error").join(` 2 3`);T=T||m("The requested application is not available at this moment."),w.yell({type:"error",error:T,duration:-1})}}},{id:"curtain",index:700,run:function(){k('Stage "curtain"');var a=$.Deferred();return $("#background-loader").idle().fadeOut(250,a.resolve),a}},{id:"ready",index:1e12,run:function(){k("DONE!"),ox.trigger("core:ready")}});var f={restore:function(a){var b=m(a===1?"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),p=m(`Please click "Continue" if you'd like to continue editing.`),T=m(a===1?"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.");return b+" "+p+" "+T}};return f});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/contacts/util","io.ox/core/api/user","io.ox/core/svg","settings!io.ox/core","gettext!io.ox/core"],function(M,w,v,S,F,k,D,y,d,m,o,i,e,t,n,u,f,a){function b(){var r=[].
3concat(ox.ui.App.getCurrentFloatingApp(),ox.ui.App.getCurrentApp()).filter(function(g){return g&&g.get("name")!=="io.ox/help"}).shift();return r&&r.getContextualHelp?r.getContextualHelp():_.extend({base:"help",target:"index.html"},r&&r.get("help"))}var p={about:function(){this.link("about",a("About"),function(r){r.preventDefault(),require(["io.ox/core/about/about"],function(g){g.show()})})},onboarding:function(){var r,g,l=this;_.device("android")&&(r=_.device("smartphone")?"android.phone":"android.tablet"),_.device("ios")&&(r=_.device("smartphone")?"apple.iphone":"apple.ipad"),l.append(g=$('<a href="#" data-app-name="io.ox/settings" data-action="client-onboarding" role="menuitem" tabindex="-1">').text(_.device("desktop")?a("Connect your Device"):a("Connect this Device"))),require(["io.ox/onboarding/clients/api"],function(c){c.enabledDevices(r).then(function(h){var L=_.device("desktop")?!0:h[r]||!1;g.toggleClass("disabled ui-disabled",!L).attr("aria-disabled",!L).on("click",function(s){if(s.preventDefault(),!L)return s.stopPropagation();require(["io.ox/onboarding/clients/wizard"],function(x){x.run()})})})})}};v.point("io.ox/core/appcontrol/right").extend({id:"upsell",index:50,draw:function(){if(!_.device("smartphone")){var r=new d({tagName:"li",className:"launcher",attributes:{role:"presentation"},id:"secondary-launcher",requires:"active_sync || caldav || carddav",customize:function(){$("i",this.$el).addClass("launcher-icon")}});r.visible&&this.append(r.render().$el)}}}),v.point("io.ox/core/appcontrol/right").extend({id:"notifications",index:100,draw:function(){if(!(!F.has("webmail")&&!F.has("calendar")&&!F.has("tasks"))){var r=this,g=5e3;ox.online?r.append(k.attach(g)):ox.once("connection:online",function(){r.append(k.attach(g))})}}}),v.point("io.ox/core/appcontrol/right").extend({id:"refresh-mobile",index:200,draw:function(){if(_.device("smartphone"))return;var r=$($.icon("fa-refresh"));this.append(i("right",r,function(){return o(),$.when()},a("Refresh")).attr("id","io-ox-refresh-icon"));function g(){var l=parseInt(f.get("refreshInterval",3e5),10)/6e4;return r.attr("title",a("Refresh. Current interval (%1$s min) can be customized in settings.",l))}g(),f.on("change:refreshInterval",g)}}),v.point("io.ox/core/appcontrol/right").extend({id:"help-dropdown",index:300,draw:function(){if(!_.device("smartphone")){if(v.point("io.ox/core/appcontrol/right/help").list().length<=1){var r=new D({iconClass:"fa-question launcher-icon",href:b});return r.$el.hasClass("hidden")?void 0:this.append(i("right",r.render().$el.attr("tabindex",-1)).attr("id","io-ox-context-help-icon"))}var g=$('<ul id="topbar-help-dropdown" class="dropdown-menu dropdown-menu-right" role="menu">'),l=$('<a href="#" class="dropdown-toggle f6-target" data-toggle="dropdown" tabindex="-1">').attr("aria-label",a("Help")).append($.icon("fa-question",a("Help"),"launcher-icon")),c=new y({model:new Backbone.Model({}),attributes:{role:"presentation"},tagName:"li",id:"io-ox-topbar-help-dropdown-icon",className:"launcher dropdown",$ul:g,$toggle:l});v.point("io.ox/core/appcontrol/right/help").invoke("extend",c),this.append(c.render().$el.find("a").attr("tabindex",-1).end())}}}),v.point("io.ox/core/appcontrol/right/help").extend({id:"help",index:100,extend:function(){var r=new D({attributes:{role:"menuitem",tabindex:-1},content:a("Help"),href:b});r.$el.hasClass("hidden")||this.append(r.render().$el)}}),v.point("io.ox/core/appcontrol/right/help").extend({id:"divider-first",index:200,extend:function(){this.divider()}}),v.point("io.ox/core/appcontrol/right/help").extend({id:"divider-second",index:300,extend:function(){this.divider()}}),v.point("io.ox/core/appcontrol/right/help").extend({id:"about",index:400,extend:function(){p.about.apply(this,arguments)}}),v.point("io.ox/core/appcontrol/right").extend({id:"settings-dropdown",index:400,draw:function(){if(!_.device("smartphone")){if(v.point("io.ox/core/appcontrol/right/settings").list().length<=1)return this.append(i("right",$($.icon("fa-cog",a("Settings"))),function(){ox.launch("io.ox/settings/main")},a("Settings")).attr("id","io-ox-settings-topbar-icon"));var r=$('<ul id="topbar-settings-dropdown" class="dropdown-menu dropdown-menu-right" role="menu">'),g=$('<a href="#" class="dropdown-toggle f6-target" data-toggle="dropdown" tabindex="-1">').attr("aria-label",a("Settings")).append($.icon("fa-cog",a("Settings"))),l=new y({model:new Backbone.Model({}),attributes:{role:"presentation"},tagName:"li",id:"io-ox-topbar-settings-dropdown-icon",className:"launcher dropdown",$ul:r,$toggle:g});v.point("io.ox/core/appcontrol/right/settings").invoke("extend",l),this.append(l.render().$el.find("a").attr("tabindex",-1).end())}}}),v.point("io.ox/core/appcontrol/right/settings").extend({id:"settings",index:100,extend:function(){_.device("smartphone")||this.link("settings-app",a("Settings"),function(r){return r.preventDefault(),ox.launch("io.ox/sett
3ings/main")})}}),v.point("io.ox/core/appcontrol/right/settings").extend({id:"onboarding",index:200,enabled:F.has("client-onboarding"),extend:function(){_.device("smartphone")||f.get("onboardingWizard")||p.onboarding.apply(this,arguments)}}),v.point("io.ox/core/appcontrol/right/account").extend({id:"user",index:5,extend:function(){if(f.get("user/internalUserEdit",!0)===!1||F.has("guest"))return;var r=f.get("user/hidedomainpart",!1)?"email-localpart":"email",g,l,c;g=$('<li class="user">').append($('<a href="#" data-name="user-picture" class="action" tabindex="-1">').attr("title",a("Change user photo")).append(l=$('<div class="user-picture-container" aria-hidden="true">')),$('<div class="text-container">').append(c=$('<div class="name">').append(n.getTextNode(ox.user_id,{type:"name"})),$('<div class="mail">').append(n.getTextNode(ox.user_id,{type:r})))),g.on("click",".action",function(s){s.preventDefault(),require(["io.ox/core/settings/user"],function(x){x.openEditPicture()})}),h(),e.on("reset:image update:image",h),n.on("reset:image:"+ox.user_id+" update:image:"+ox.user_id,h),n.on("update",h),n.on("update",L);function h(){var s;l.empty().append(e.pictureHalo($('<div class="user-picture" aria-hidden="true">').append(s=$('<span class="initials">'),$.icon("fa-camera-retro")),{internal_userid:ox.user_id},{width:40,height:40,fallback:!1})),n.me().then(function(x){s.append(t.getInitials(x))})}function L(){c.empty().append(n.getTextNode(ox.user_id,{type:"name"}))}this.$ul.append(g),this.divider()}}),v.point("io.ox/core/appcontrol/right/account").extend({id:"upsell",index:50,extend:function(){var r=new d({tagName:"li",id:"topbar-dropdown",attributes:{role:"presentation"},requires:"active_sync || caldav || carddav",title:a("Upgrade your account"),customize:function(){$("i",this.$el).css({width:"auto"})}});r.visible&&(this.$ul.append(r.render().$el),this.divider())}}),v.point("io.ox/core/appcontrol/right/account").extend({id:"refresh-mobile",index:80,extend:function(){_.device("smartphone")&&this.link("refresh-mobile",a("Refresh"),function(r){return r.preventDefault(),o(),$.when()})}}),v.point("io.ox/core/appcontrol/right/account").extend({id:"settings-mobile",index:90,extend:function(){_.device("smartphone")&&this.link("settings-mobile",a("Settings"),function(r){return r.preventDefault(),ox.launch("io.ox/settings/main")})}}),v.point("io.ox/core/appcontrol/right/account").extend({id:"onboarding-mobile",index:120,enabled:F.has("client-onboarding"),extend:function(){!_.device("smartphone")||f.get("onboardingWizard")||p.onboarding.apply(this,arguments)}}),v.point("io.ox/core/appcontrol/right/account").extend({id:"change-user-data",index:150,extend:function(){f.get("user/internalUserEdit",!0)!==!1&&this.link("my-contact-data",a("Edit personal data"),function(r){r.preventDefault(),require(["io.ox/core/settings/user"],function(g){g.openModalDialog()})})}}),v.point("io.ox/core/appcontrol/right/account").extend({id:"change-user-password",index:175,extend:function(){if(F.has("edit_password && guest")){var r=function(g){return a(g?"Add login password":"Change login password")};this.link("change-password",r(f.get("password/emptyCurrent")),function(g){g.preventDefault(),require(["plugins/portal/userSettings/register"],function(l){l.changePassword()})}),this.listenTo(f,"change:password/emptyCurrent",function(g){this.$el.find('[data-name="change-password"]').text(r(g))}.bind(this))}}}),v.point("io.ox/core/appcontrol/right/account").extend({id:"app-specific-help-mobile",index:200,extend:function(){if(_.device("smartphone")){var r=new D({attributes:{role:"menuitem",tabindex:-1},content:a("Help"),href:b});this.divider(),!r.$el.hasClass("hidden")&&this.append(r.render().$el)}}}),v.point("io.ox/core/appcontrol/right/account").extend({id:"about-mobile",index:400,extend:function(){_.device("smartphone")&&p.about.apply(this,arguments)}}),v.point("io.ox/core/appcontrol/right/account").extend({id:"logout",index:1e3,extend:function(){v.point("io.ox/core/appcontrol/right/account/signouts").invoke("extend",this)}}),v.point("io.ox/core/appcontrol/right/account/signouts").extend({id:"logout",index:100,extend:function(){this.link("logout",a("Sign out"),function(r){r.preventDefault(),m({manualLogout:!0})})}}),v.point("io.ox/core/appcontrol/right").extend({id:"account",index:1e3,draw:function(){var r=ox.openedInBrowserTab?a("Sign out"):a("My account"),g=$('<ul id="topbar-account-dropdown" class="dropdown-menu dropdown-menu-right" role="menu">'),l=$('<a href="#" class="dropdown-toggle f6-target" data-toggle="dropdown" tabindex="-1">').attr("aria-label",r),c=new y({model:new Backbone.Model({}),attributes:{role:"presentation"},tagName:"li",id:"io-ox-topbar-account-dropdown-icon",className:"launcher dropdown",$ul:g,$toggle:l});h(),v.point("io.ox/core/appcontrol/right/account").invoke("extend",c),this.append(c.render().$el.find("a").attr("tabindex",-1).end()),e.on("reset:image update:image",h),n.on("reset:image:"+ox.user_id+" update:image:"+ox.user_id,h),n.on("update",h);function h(){l.empty().append(e.pictureHalo($('<div class="contact-picture" aria-hidden="true">').attr("title",r).append(n.getTextNode(ox.user_id,{type:"initials",textZoom:!1})),{internal_userid:ox.user_id},{width:40,height:40,fallback:!1}))}}});var T=f.get("features/dedicatedLogoutButton",!1)===!0&&_.device("!small");T&&v.point("io.ox/core/appcontrol/right").extend({id:"logout-button",index:2e3,draw:function(){var r=i("right",$('<i class="fa fa-sign-out launcher-icon" aria-hidden="true">'),function(){m({manualLogout:!0})},a("Sign out"));r.find("a").attr("data-action","sign-out").tooltip({title:a("Sign out"),placement:function(g,l){return $(window).width()-$(l).offset().left-l.offsetWidth<80?"left":"auto"}}),this.append(r)}}),function(){var g=_.clone(f.get("features/logoutButtonHint",{}));g.enabled&&v.point("io.ox/core/appcontrol/right").extend({id:"logout-button-hint",index:2100,draw:function(){if(f.set("features/logoutButtonHint/active",!0).save(),!!_.isBoolean(g.active)&&g.active&&!(_.device("reload")&&M.isAutoLogin())){var l=this.find('[data-action="sign-out"], #io-ox-topbar-account-dropdown-icon > a').first();l.popover({content:g[ox.language]||a("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(c){c.target.classList.contains("popover-content-signout")&&c.stopImmediatePropagation(),l.popover("destroy")},!0),$(document).one("click",l.popover.bind(l,"destroy")),_.defer(l.popover.bind(l,"show"))}}})}(),new S("io.ox/core/stages",{id:"client-onboarding-hint",index:3e3,run:function(r){if(F.has("!client-onboarding")||!_.device("smartphone")||_.device("reload")&&M.isAutoLogin())return;var g=_.extend({enabled:!0,remaining:2},f.get("features/clientOnboardingHint",{}));if(!g.enabled||!g.remaining)return;r.data.popups.push({name:"client-onboarding-hint"});var l=$("#io-ox-appcontrol #io-ox-topbar-account-dropdown-icon > a");l.popover({content:a("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(l.popover.bind(l,"show")),document.body.addEventListener("click",c,!0);function c(){f.set("features/clientOnboardingHint/remaining",Math.max(0,g.remaining-1)).save(),l.popover("destroy"),document.body.removeEventListener("click",c,!0)}}})});define("io.ox/core/main/warning",["io.ox/core/notifications","io.ox/core/folder/api","gettext!io.ox/core"],function(M,w,v){w.on("warn:hidden",function(F){F&&M.yell("info",v('Folder with name "%1$s" will be hidden. Enable setting "Show hidden files and folders" to access this folder again.',F.title))}),ox.on("http:error",function(F){switch(F.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":M.yell(F);break;case"LGI-0016":_.url.redirect(_.url.vars(F.error));break}});var S=function(){var F=function(D,y){return y.test(D)},k=[/^SHR_NOT-\d{4}$/,/^RSS-0007/,/^MSG-1001/,/^IMAP-2062/];return function(D){var y=_.partial(F,D);return!!_.find(k,y)}}();ox.on("http:warning",function(F){var k=S(F.code);
3if(k)return M.yell("warning",F.error);ox.debug&&console.warn("server response: ",F.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(M,w,v,S,F,k,D,y,d,m,o,i,e,t){"use strict";$("#io-ox-windowmanager").on("scroll",function(){this.scrollTop>0&&(this.scrollTop=0)}),i("core: Loaded"),ox.trigger("core:load"),_.stepwiseInvoke=function(u,f,a){if(!_.isArray(u))return $.when();var b=Array.prototype.slice.call(arguments,3),p=$.Deferred(),T=[];function r(l){T.push(l)}function g(){if(u.length===0)return p.resolve(T);var l=u.shift();if(l&&_.isFunction(l[f])){var c=l[f].apply(a,b);if(c&&c.promise)return c.done(r).then(g,p.reject)}g()}return g(),p.promise()},w.point("io.ox/core/mobile").extend({id:"i18n",draw:function(){$(document).trigger("dropdown:translate",t("Close"))}});function n(){location.hash===""&&(location.hash="#!!");var u=w.Baton.ensure({popups:[]});i("core: launch > run stages"),v.run("io.ox/core/stages",u)}return{logout:d,launch:n}});define("io.ox/core/links",["io.ox/core/yell","io.ox/core/capabilities","io.ox/core/api/tab"],function(M,w,v){"use strict";function S(i,e){require(["io.ox/core/folder/api"],function(t){t.get(e).then(function(){ox.launch(i,{folder:e}).done(function(){i==="io.ox/calendar/main"?this.folders.setOnly(e):this.folder.get()!==e&&this.folder.set(e)})},M)})}var F=function(i){var e=$(this).data(),t=_.deserialize(e.all.match(/#.*/)[0]),n=/^io.ox\/office\//.test(e.app),u=n?{action:"load",file:{folder_id:e.folder,id:e.id},params:t}:_(e).pick("folder","folder_id","id","cid");if(ox.ui.apps.get(e.app)){if(i.preventDefault(),n&&v.openInTabEnabled()){v.openChildTab(e.all);return}ox.launch(e.app+"/main",u).done(function(){_.isFunction(this.setSettingsPane)?this.setSettingsPane(u):e.folder&&this.folder.get()!==e.folder&&this.folder.set(e.folder)})}};$(document).on("click",".deep-link-app",F);var k=function(i){i.preventDefault();var e=$(this).data();e.id?require(["io.ox/core/viewer/main","io.ox/files/api"],function(t,n){n.get(_(e).pick("folder","id")).then(function(f){var a=new t;a.launch({files:[f]})},M)}):S("io.ox/files/main",e.folder)};$(document).on("click",".deep-link-files",k);var D=function(i){i.preventDefault();var e=$(this).data();ox.launch("io.ox/contacts/main",{folder:e.folder}).done(function(){var t=this,n=e.folder,u=String(e.id||"").replace(/\//,".");t.folder.get()===n?t.getGrid().selection.set(u):t.folder.set(n).done(function(){t.getGrid().selection.set(u)})})};$(document).on("click",".deep-link-contacts",D);var y=function(i){i.preventDefault();var e=$(this).data();if(e.id)ox.load(["io.ox/core/tk/dialogs","io.ox/calendar/api","io.ox/calendar/view-detail","io.ox/core/folder/api"]).done(function(t,n,u,f){var a=new t.SidePopup({arrow:!0,tabTrap:!0});a.show(i,function(b){b.busy(),/^\d+\/\d+.\d+$/.test(e.id)&&(e=n.cid(e.id.replace(/\//,"."))),n.get(e).then(function(T){f.get(T.get("folder")).always(function(r){b.idle().append(u.draw(T,{container:b,noFolderCheck:r.error!==void 0}))})},function(T){a.close(),M(T)})})});else{if(e.folder&&ox.ui.apps.get("io.ox/calendar").get("state")==="running"){require(["io.ox/core/folder/api"],function(t){if(t.pool.collections["flat/event/private"]&&t.pool.collections["flat/event/private"].has(e.folder)||t.pool.collections["flat/event/shared"]&&t.pool.collections["flat/event/shared"].has(e.folder)||t.pool.collections["flat/event/public"]&&t.pool.collections["flat/event/public"].has(e.folder)){S("io.ox/calendar/main",e.folder);return}t.flat({module:"event",cache:!1}).always(function(){S("io.ox/calendar/main",e.folder)}
3)});return}S("io.ox/calendar/main",e.folder)}};$(document).on("click",".deep-link-calendar",y);var d=function(i){i.preventDefault();var e=$(this).data();ox.launch("io.ox/tasks/main",{folder:e.folder}).done(function(){var t=this,n=e.folder,u=String(e.id||"").replace(/\//,"."),f=u.indexOf(".")>-1?u:_.cid({folder:n,id:u});$.when().then(function(){if(!t.folder.get()===n)return t.folder.set(n)}).then(function(){if(u)return t.getGrid().selection.set(f)})})};$(document).on("click",".deep-link-tasks",d);var m=function(i){i.preventDefault();var e=$(this),t=e.data(),n,u,f,a={};require(["io.ox/mail/sanitizer","settings!io.ox/mail"],function(b,p){if(t.address)n=t.address,u=t.name||t.address;else{f=e.attr("href").substr(7).split(/\?/,2),n=f[0],u=f[0],a=_.deserialize(f[1]);for(var T in a)a[T.toLowerCase()]=a[T];a.body&&p.get("messageFormat")!=="text"&&(a.body=a.body.replace(/\n/g,"<br>"))}ox.registry.call("mail-compose","open",{to:[[u,n]],subject:a.subject||"",content:b.sanitize({content:a.body||"",content_type:"text/html"},{WHOLE_DOCUMENT:!1}).content})})},o=function(i){i.preventDefault();var e=$(this).data();require(["io.ox/settings/personalData/api"],function(t){t.trigger("updateStatus")}),ox.launch("io.ox/settings/main",{folder:e.folder}).done(function(){this.setSettingsPane({folder:e.folder})})};$(document).on("click",".deep-link-gdpr",o),w.has("webmail")&&$(document).on("click",".mailto-link",m),ox.on("click:deep-link-mail",function(i,e){var t=i.currentTarget.className.split(" ");t.indexOf("deep-link-files")>=0?k.call(e,i):t.indexOf("deep-link-contacts")>=0?D.call(e,i):t.indexOf("deep-link-calendar")>=0?y.call(e,i):t.indexOf("deep-link-tasks")>=0?d.call(e,i):t.indexOf("deep-link-gdpr")>=0?o.call(e,i):t.indexOf("deep-link-app")>=0?F.call(e,i):t.indexOf("mailto-link")>=0&&m.call(e,i)})});define("io.ox/core/active",[],function(){"use strict";var M=!0,w=!0,v=0;setInterval(S,1e3),$(window).on("mousemove mousedown keydown mousewheel focus",F),$(document).on("visibilitychange",k),$(window).on("blur",D);function S(){v++,M=w&&v<60&&document.visibilityState==="visible"}function F(){v=0,M=w=!0}function k(){v=0,S()}function D(){M=w=!1}return function(){return M}});define("io.ox/core/count/api",["io.ox/core/uuids","settings!io.ox/core"],function(M,w){"use strict";var v=_.extend({queue:[],add:_.noop},Backbone.Events),S=w.get("count/url")||w.get("tracker/url"),F=S&&!ox.debug&&w.get("count/enabled",!0),k=100,D=_(["windows","macos","ios","android"]).find(_.device),y=_(["smartphone","desktop","tablet"]).find(_.device);if(v.disabled=w.get("count/disabled",!F),v.disabled)return v;function d(){if(Modernizr.localstorage){var n=window.sessionStorage.getItem("countid");return n||(n=M.randomUUID(),window.sessionStorage.setItem("countid",n)),n}return M.randomUUID()}v.uuid=d();var m=parseInt(w.get("count/delay",15),10)*1e3,o=w.get("count/brand")||w.get("tracker/brand"),i=w.get("count/stats",{}),e;v.add=function(n,u){i[n]!==!1&&(u=_.extend({stat:n},u),o&&(u.brand=o),v.trigger("add",u),v.queue.push(u))},v.stat=function(n){return i[n]!==!1},v.platform=D,v.device=y;function t(){if(v.queue.length!==0){var n=v.queue.slice(0,k);if(v.queue=v.queue.slice(k,v.queue.length),v.trigger("sync",n),S==="debug")return console.debug("count",n);$.post({url:S,contentType:"application/json",dataType:"text",data:JSON.stringify(n),timeout:1e4}).fail(function(u){if(u.status===403)return v.trigger("forbidden"),clearInterval(e);if(u.status===413){v.queue=[];return}v.trigger("fail",n),[].push.apply(v.queue,n)})}}return setTimeout(function(){t(),e=setInterval(t,m)},3e3),v});define("io.ox/core/count/timing",["io.ox/core/count/api","settings!io.ox/core"],function(M,w){"use strict";M.disabled||(w.get("autoStart")==="io.ox/mail/main"&&ox.once("timing:mail:ready",function(v){M.add("t/m/ready",{d:v})}),ox.on("timing:mail:load",function(v){M.add("t/m/load",{d:v})}),ox.on("timing:mail:sanitize",function(v){var S=Number(v.toFixed(0));M.add("t/m/sanitize",{d:S})}))});define("io.ox/core/count/errors",["io.ox/core/count/api"],function(M){"use strict";ox.on("yell:error",function(w){M.add("error",{code:w.code})})});define("io.ox/core/count/eyeballtime",["io.ox/core/count/api","io.ox/core/active"],function(M,w){"use strict";if(M.disabled)return;var v={};function S(){if(w()){var D=F();D&&(v[D]===void 0&&k(D),v[D]=(v[D]||0)+1,v[D]>=60&&(k(D),v[D]=0))}}function F(){var D=ox.ui.App.getCurrentFloatingApp()||ox.ui.App.getCurrentApp();return D?D.get("name"):""}function k(D){M.add("ebt",{app:D,uuid:M.uuid,t0:ox.t0,d:M.device})}setInterval(S,1e3)});define("io.ox/core/count/nps",["io.ox/core/count/api"],function(M){"use strict";M.disabled||ox.on("feedback:nps",function(w){M.add("nps",{s:w})})});define("io.ox/core/count/lifetime",["io.ox/core/count/api"],function(M){"use strict";if(M.disabled)return;function w(){M.add("lt",{u:M.uuid,t0:ox.t0})}setInterval(w,6e4)});define("io.ox/core/count/sendmail",["io.ox/core/count/api"],function(M){"use strict";
3M.disabled||ox.on("mail:send:start",function(w){w&&w.security&&w.meta&&M.add("sm",{e:+w.security.encrypt,s:+w.security.sign,t:w.meta.type})})});define("io.ox/core/count/appointments",["io.ox/core/count/api"],function(M){"use strict";M.disabled||ox.on("appointment:create",function(w){_.isNumber(w)&&M.add("ac",{pce:w})})});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","io.ox/core/count/lifetime","io.ox/core/count/nps","io.ox/core/count/sendmail","io.ox/core/count/appointments"],function(M){"use strict";M.disabled||(M.add("browser"),M.add("device",{platform:M.platform,device:M.device}),M.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(M,w,v,S,F,k,D){"use strict";var y=[{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"}],d,m=ox.serverConfig.prefix||"/ajax",o=new RegExp('(<img[^>]+src=")'+m,"g"),i=function(p,T,r){return r>1?T:p},e=function(p,T){if(!_.isNumber(p))return D("unknown");var r=$.extend({fulldate:!1,filtertoday:!0},T||{}),g=moment(p),l=function(){return g.format("LT")},c=function(){return g.format("L")+(r.fulldate?" "+l():"")},h=function(){return moment().isSame(g,"day")};if(r.filtertoday&&h())return l();if(r.smart){var L=moment().startOf("day").diff(moment(p).startOf("day"),"day");if(L===1)return D("Yesterday");if(L<=6)return g.format("dddd")}return c()},t=function(p){return p=$.trim(p||""),p.indexOf("@")>-1?p.toLowerCase():p},n=/([^,;"]+|"(\\.|[^"])+")+/,u=/^[,;\s]+/,f=/^("(\\.|[^"])+"\s|[^<]+)(<[^>]+>)$/,a=/(^<|>$)/g,b={};return v.getAllSenderAddresses().done(function(p){_(p).chain().pluck(1).each(function(T){b[T.toLowerCase()]=!0})}),d={replaceImagePrefix:function(p,T){return p=p||"",T=T||"$1"+ox.apiRoot,p.replace(o,T)},parseRecipient:function(p,T){var r=$.trim(p),g,l,c,h=_.extend({localpart:!0},T);return(g=r.match(f))!==null?(c=g[3].replace(a,"").toLowerCase(),l=w.unescapeDisplayName(g[1])):(c=r.replace(a,"").toLowerCase(),l=c.split(/@/)[0],h.localpart||(l=null)),[l,c]},parseRecipients:function(p,T){var r=[],g,l,c=T;if(!p)return r;for(;(g=p.match(n))!==null;){p=p.substr(g[0].length).replace(u,""),l=this.parseRecipient(g[0],c);var h=l[0]===l[1];(h||l[1].indexOf("@")>-1)&&r.push(l)}return r},serializeList:function(p,T){T=T||"from";for(var r=p[T]||[["",""]],g=0,l=r.length,c=$("<div>"),h,L,s;g<l;g++)h={display_name:this.getDisplayName(r[g])},L=String(r[g][1]||"").toLowerCase(),L!=="undisclosed-recipients:;"&&(h.email=L),s=w.renderPersonalName(h),h.email&&s.addClass("person-link person-"+T),c.append(s),g<l-1&&c.append($('<span class="delimiter">').text(",\xA0\xA0 "));return c.contents()},serializeAttachments:function(p,T){for(var r=0,g=T.length,l=$(),c="",h="";r<g;r++)c=T[r].filename||"",h=ox.apiRoot+"/mail?"+$.param({action:"attachment",folder:p.folder_id,id:p.id,attachment:T[r].id,delivery:"download"}),l=l.add($('<a class="attachment-link" target="_blank">').attr("href",h).text(c)),r<g-1&&(l=l.add($('<span class="delimiter">').append($.txt("\xA0\u2022 "))));return l},getFontFormats:function(){return F.get("tinyMCE/font_formats",y.map(function(p){return p.label+"="+p.font}).join(";"))},getDefaultStyle:function(){var p=_.device("smartphone")?{}:F.get("defaultFontStyle",{}),T={css:{},string:"",node:$()};return p.size&&p.size!=="browser-default"&&(T.css["font-size"]=p.size),p.family&&(T.css["font-family"]=p.family!=="browser-default"?p.family:y[0].font),p.color&&p.color!=="transparent"&&(T.css.color=p.color),T.string=_.reduce(_.pairs(T.css),function(r,g){return r+g[0]+":"+g[1]+";"},""),T.node=$("<div>").css(T.css).attr("data-mce-style",T.string).append("<br>"),T},getDeputy:function(p){if(!(!p||!p.headers||!p.headers.Sender)){var T=d.parseRecipients(p.headers.Sender);if(!(p.from[0]&&p.from[0][1]===T[0][1])){for(var r in p.headers)if(/^list-(id|archive|owner)$/i.test(r))return;return T}}},getDisplayName:function(p,T){if(!_.isArray(p))return"";T=_.extend({reorderDisplayName:!0,showDisplayName:!0,showMailAddress:!1,unescapeDisplayName:!0},T);var r=p[0],g=String(p[1]||"").toLowerCase(),l=r;return T.unescapeDisplayName&&(l=w.unescapeDisplayName(r)),T.showDisplayName?(T.reorderDisplayName&&(l=l.replace(/^([^,.()]+),\s([^,.()]+)$/,"$2 $1")),T.showMailAddress&&l&&g&&(l+=" <"+g+">"),l||g):g},getSender:function(p,T){var r=p[1];if(!T)return[null,r];var g=F.get(["customDisplayNames",r],{}),l=(g.overwrite?g.name:p[0]||g.defaultName)||"";return[l,r]},hasFrom:function(p){return p&&_.isArray(p.from)&&p.from.length>0&&!!p.from[0][1]},getFrom:function(p,T){p=p||{},T=_.extend({field:"from"},T);var r=_(p[T.field]).chain().map(function(g){return d.getDisplayName(g,T)}).filter(function(g){return g!==""}
3).value();return r.length===0?$().add($.txt(T.field==="from"?D("Unknown sender"):D("No recipients"))):(r=_(r).reduce(function(g,l){return g.add(w.renderPersonalName({name:l}).addClass("person")).add($.txt(", "))},$()),r.slice(0,-1))},formatSender:function(p,T,r){var g=_(arguments).toArray();return _.isArray(g[0])&&(r=T,p=g[0][0],T=g[0][1]),p=w.unescapeDisplayName(p),T=t(T),p===""?T:(r===!1?p:'"'+p+'"')+" <"+T+">"},getSubject:function(p,T){var r=$.trim(_.isString(p)?p:p.subject);return r===""?D("No subject"):(F.get("features/cleanSubjects",!1)&&(r=r.replace(/\[[^[]*\]\s*/g,"")),T?r:r.replace(/^((re|ref|aw|fwd|wg|rv|tr)(\[\d+\])?:\s?)+/i,""))},getPriority:function(p){return p&&p.priority===3?$():p&&p.priority<3?$('<span class="high"><i class="fa fa-exclamation" aria-hidden="true"></i></span>').attr("title",D.pgettext("E-Mail","High priority")):$('<span class="low"><i class="fa fa-minus" aria-hidden="true"></i></span>').attr("title",D.pgettext("E-Mail","Low priority"))},getAccountName:function(p){var T=window.unescape(p?p.id:"");return/^default0/.test(T)?D("Primary account"):p&&p.account_name||"N/A"},getTime:function(p,T){return e(p,T)},getDateTime:function(p,T){return T=_.extend({fulldate:!0},T),e(p,T)},getFullDate:function(p){return _.isNumber(p)?moment(p).format("L LT"):D("unknown")},getSmartTime:function(p){var T=_.printf,r=60*1e3,g=r*60;if(console.warn("This method is deprecated and will be removed with 7.6.0 or at any random date later"),!_.isNumber(p))return D("unknown");var l=new Date,c=l.getTimezoneOffset(),h=l.getTime()-c*60*1e3,L=h-p,s=new Date(p),x=0;return s.getDate()===l.getDate()?L<g?(x=Math.ceil(L/r),String(T(i("%d minute ago","%d minutes ago",x),x))):(x=Math.ceil(L/g),Str
3ing(T(i("%d hour ago","%d hours ago",x),x))):s.getDate()===l.getDate()-1?"Yesterday":s.getDate()+"."+(s.getMonth()+1)+"."+s.getFullYear()},threadFileSize:function(p){return p.reduce(function(T,r){return T+(r.size||0)},0)},count:function(p){return _(p).reduce(function(T,r){return T+(r.thread?r.thread.length:1)},0)},isToplevel:function(p){return _.isObject(p)&&"folder_id"in p&&!("filename"in p)},isUnseen:function(p){return p=_.isObject(p)?p.flags:p,_.isNumber(p)?(p&32)!==32:void 0},isFlagged:function(p){return p=_.isObject(p)?p.flags:p,_.isNumber(p)?(p&8)===8:void 0},isDeleted:function(p){return p&&_.isNumber(p.flags)?(p.flags&2)===2:void 0},isSpam:function(p){return p&&_.isNumber(p.flags)?(p.flags&128)===128:void 0},isAnswered:function(){return _.chain(arguments||[]).flatten().compact().reduce(function(p,T){return p||(T.flags&1)===1},!1).value()},isDecrypted:function(p){return p&&p.security&&p.security.decrypted},isForwarded:function(){return _.chain(arguments||[]).flatten().compact().reduce(function(p,T){return p||(T.flags&256)===256},!1).value()},isAttachment:function(p){return typeof(p||{}).parent<"u"},isEmbedded:function(p){return _.isObject(p)?p.folder_id===void 0&&p.filename!==void 0:!1},asList:_.memoize(function(p){return(p||"").replace(/[\s\n]+/g,",").replace(/(,+),/g,",").replace(/^,|,$/g,"").toLowerCase().split(",")}),isWhiteListed:function(p,T){var r=[].concat(d.asList(F.get("features/trusted/user",T||"")),d.asList(F.get("features/trusted/admin",""))),g=_.isObject(p)?p.from&&p.from.length&&String(p.from[0][1]||""):p||"";return r=_.compact(r),g=(g||"").trim().toLowerCase(),_.some(r,function(l){var c=l.trim().replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return g.match(new RegExp(c+"$"))})},authenticity:function(){function p(){return F.get("features/authenticity",!1)?F.get("authenticity/level","none"):"none"}function T(l){if(_.isObject(l))return _.isObject(l.authenticity)?l.authenticity.status:l.status}function r(l,c,h){return l.test(c)&&h.indexOf(c)>-1}function g(l,c,h){switch(l){case"image":return r(/(fail|suspicious)/,h,c);case"icon":return r(/(fail|suspicious|trusted)/,h,c);case"via":return!0;case"box":return r(/(fail|suspicious|trusted)/,h,c);case"block":return r(/(fail|suspicious)/,h,c);default:return!1}}return function(l,c){c.authenticity_preview&&(c=_.extend({},{authenticity:c.authenticity_preview},c));var h=T(c),L=p();if(!(L==="none"&&h!=="trusted")&&/^(fail|suspicious|neutral|none|pass|trusted)$/.test(h))return g(l,L,h)?h:void 0}}(),getAuthenticityMessage:function(p,T){switch(p){case"suspicious":return D("Be careful with this message. It might be spam or a phishing mail.");case"fail":return D("This is a dangerous email containing spam or malware.");case"neutral":return D("We could not verify that this email is from %1$s.",T);case"pass":case"trusted":return D("We could verify that this email is from %1$s.",T);default:return""}},isMalicious:function(){if(!F.get("maliciousCheck"))return _.constant(!1);var p=F.get("maliciousFolders");return _.isArray(p)?function(T){return _.isObject(T)?v.isMalicious(T.folder_id||T.parent&&T.parent.folder_id,p):!1}:_.constant(!1)}(),byMyself:function(p){return p=p||{},p.from&&p.from.length&&String(p.from[0][1]||"").toLowerCase()in b},hasUnsendReadReceipt:function(p){var T=_.isNumber(p.flags)?(p.flags&512)===512:void 0;return!T&&!!p.disp_notification_to},hasOtherRecipients:function(p){p=p||{};var T=[].concat(p.to||[],p.cc||[],p.bcc||[]),r=_(T).reduce(function(g,l){var c=String(l[1]||"").toLowerCase();return g+(c&&!(c in b)?1:0)},0);return r>0},getDefaultSignature:function(p){var T=F.get("defaultSignature")||"",r=F.get("defaultReplyForwardSignature");return/(new|edit)/.test(p)||_.isBoolean(r)?T:r},getInitialDefaultSender:function(){var p=_(F.get("defaultSendAddress",[]));return p._wrapped[0]},fixInlineImages:function(p){return p.replace(new RegExp('(<img[^>]+src=")'+ox.abs+ox.apiRoot),"$1"+m).replace(new RegExp('(<img[^>]+src=")'+ox.apiRoot,"g"),"$1"+m).replace(/on(mousedown|contextmenu)="return false;"\s?/g,"").replace(/data-mce-src="[^"]+"\s?/,"")},parseMsgref:function(p,T){var r=_(T.toString().split(p)),g=r.last(),l=r.without(g).join(p);return{folder_id:l,id:g}},getAttachments:function(){var p=function(r){return!("filename"in r)&&r.attachments&&r.attachments.length===1&&r.attachments[0].content===null},T=function(r,g){if(r.parent&&r.parent.needsfix){var l=g.id.split(".");g.id=g.id.split(".").length>1?l.splice(1,l.length).join("."):g.id}};return function(r){r=r||{};var g,l,c,h,L=[],s={id:r.id,folder_id:r.folder_id};for(g=0,l=(r.nested_msgs||[]).length;g<l;g++)c=r.nested_msgs[g],p(c)?(h=c.attachments[0],L.push(_.extend({},h,{mail:s,title:c.filename||"",parent:r.parent||s}))):(T(r,c),L.push({id:c.id,content_type:"message/rfc822",filename:c.filename||(c.subject||D("message")).replace(/\s+/g," ")+".eml",title:c.filename||c.subject||"",mail:s,parent:r.parent||s,nested_message:_.extend({},c,{parent:s})}));for(r.parent&&s&&s.folder_id===void 0&&(s.id=r.parent.id,s.folder_id=r.parent.folder_id),g=0,l=(r.attachments||[]).length;g<l;g++)c=r.attachments[g],(c.disp==="attachment"||/^image/.test(c.content_type.toLowerCase()))&&
3(T(r,c),L.push(_.extend({},c,{cid:null,mail:s,title:c.filename||"",parent:r.parent||s})));return L}}(),fixMalformattedMails:function(p,T){T.find(function(r){return/@(\w+\.)?paypal\.[a-z]+$/i.test(r)})&&Array.from(p.querySelectorAll("p")).forEach(function(r){r.style.height="auto"})}},d});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","io.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(M,w,v,S,F,k,D,y,d,m,o,i,e,t){"use strict";var n="//",u=_("0 1 7 10 6 3 9 2 5 8 4".split(" ")).invert(),f=function(E,O){return u[O.color_label]-u[E.color_label]},a=window.mailpool=y.create("mail"),b=o.get("features/fixtoccbcc"),p=!o.get("features/ignoreDeleted",!1),T=t.isEnabled(),r=o.get("features/sandboxedCSS",!0),g=v.get("pdf/enablePreconversionOnMailFetch",!0);a.map=function(E){var O=_.cid(E),U=this.get(O);return U&&U.get("headers")&&(E.headers||(E.headers={}),E.headers=_.extend(E.headers,U.get("headers"))),_([E].concat(E.attachments)).each(function(X){X&&/^text\/(plain|html)/i.test(X.content_type)&&(X.content_type=String(X.content_type).toLowerCase().split(";")[0])}),U&&b&&["to","cc","bcc"].forEach(function(X){var ie=U.get(X);_.isArray(ie)&&ie.length>0&&delete E[X]}),E};var l=S({module:"mail",keyGenerator:function(E){return E?(E.folder_id||E.folder)+"."+E.id+"."+(E.view||l.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:p,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(!r),sanitize:String(!T)},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(E,O){var U={from:603,to:604,cc:605,subject:607,text:-1},X=[];return _(O).each(function(ie,oe){oe in U&&ie==="on"&&X.push({col:U[oe],pattern:E})}),X}}},cid:function(E){return(E.action||"all")+":"+E.folder+n+[E.sort,E.order,E.max||0,!!E.unseen,!!E.deleted].join(".")},filter:function(E){return E.folder_id!==void 0||E.folder!==void 0},pipe:{all:function(E,O){return O.sort==="102"&&(E.sort(f),O.order==="desc"&&E.reverse()),E},get:function(E,O){return _.isObject(E)&&(E.view=O.view),E}},params:{all:function(E){return E.sort==="thread"&&(E.sort=661),E}},simplify:function(E){return E.simplified.unseen=!0,E.simplified}});_.extend(l,M),l.updateViewSettings=function(){l.options.requests.get.view="text",o.get("allowHtmlMessages",!0)&&(l.options.requests.get.view=o.get("allowHtmlImages",!1)?"html":"noimg"),l.trigger("viewChanged")},l.separator=o.get("defaultseparator","/"),l.FLAGS={ANSWERD:1,DELETED:2,DRAFT:4,FLAGGED:8,RECENT:16,SEEN:32,USER:64,SPAM:128,FORWARDED:256},l.COLORS={NONE:0,RED:1,ORANGE:7,YELLOW:10,LIGHTGREEN:6,GREEN:3,LIGHTBLUE:9,BLUE:2,PURPLE:5,PINK:8,GRAY:4},a.get("detail").on("change:flags",function(E){var O=D.isUnseen(E.previous("flags")),U=D.isUnseen(E.get("flags"));O!==U&&F.changeUnseenCounter(E.get("folder_id"),U?1:-1)}),a.get("detail").on("remove",function(E){var O=D.isUnseen(E.get("flags"));O&&F.changeUnseenCounter(E.get("folder_id"),-1)});var c=l.get,h=l.getAll,L=l.search;function s(E){l.threads.touch(E.toJSON())}function x(){return o.get("allowHtmlMessages",!0)?"html":"text"}function C(E){var O=x();if(O==="text")return"text";if(D.authenticity("block",E))return"noimg";var U=D.authenticity("box",E)==="trusted",X=D.isWhiteListed(E);return U||X?O:!o.get("allowHtmlImages",!1)||k.is("spam|confirmed_spam|trash",E.folder_id||E.folder)?"noimg":O}function N(E,O,U){return _.isArray(E)?E.map(function(X){return/^text\/(plain|html)/i.test(X.content_type)?(X.content_type=String(X.content_type).toLowerCase().split(";")[0],t.sanitize(X,O,U)):X}):[{content:"",content_type:"text/plain",disp:"inline",id:"1",sanitized:!0,size:0,truncated:!1}]}function I(E,O){return E.attachments=N(E.attachments,O,E),_.isArray(E.nested_msgs)&&(E.nested_msgs=E.nested_msgs.map(function(U){return U.attachments=N(U.attachments,O,U),U})),E}l.get=function(E,O){var U=_.isObject(E)?_.cid(E):E,X=a.get("detail").get(U),ie=O&&O.cache!==void 0?O.cache:!0,oe=E.view==="noimg"||!E.view,ue,me=_.now();return X&&(ue=!!X.get("attachments"),ie&&!E.src&&ue&&oe&&!E.decrypt)?$.when(X.toJSON()):(E.view||(E.view=C(_.extend({},E,X&&X.toJSON()))),E.max_size=o.get("maxSize/view",1024*100),E.process_plain_text=!1,E.pregenerate_previews=String(g),c.call(l,E,!1).done(function(ge){if(ox.trigger("timing:mail:load",_.now()-me),!(E.src||E.view==="raw")){delete ge.cid;var ye=window.performance?window.performance.now():_.now();ge=I(ge,{noImages:E.view==="noimg"}),ox.trigger("timing:mail:sanitize",(window.performance?window.performance.now():_.now())-ye),X?(X.set(ge),s(X)):a.add("detail",ge)}}))},l.getAll=function(E,O){return E=E||{},/^default\d+$/.test(E.folder)?$.when([]):(E.sort==="from-to"&&(E.sort=k.is("sent|drafts",E.folder)?604:603),h.call(this,E,O))},l.search=function(E,O){return O.sort==="from-to"&&(O.sort=k.is("sent|drafts",O.folder)?604:603),L.call(this,E,O)};function P(E,O){var U=a.get("detail");O=O||E,O.length===1&&(l.threads.remove(O[0]),l.threads.touch(O[0])),l.trigger("beforedelete",O),_(O).each(function(X){var ie=_.cid(X),oe=U.get(ie);oe&&(oe.preserve=!1,U.remove(oe))})}function B(E){return a.resetFolder(k.getFoldersByType(E))}function W(E,O){_(E).chain().pluck("folder_id").uniq().map(a.getBySorting.bind(a,O)).flatten().each(function(U){U.sorted=!1})}l.remove=function(){var E=!1,O=[],U=$.Deferred(),X={},ie=_.debounce(function(){O.length?(ge(O).done(U.resolve).fail(U.reject).fail(oe.bind(null,O)),O=[],U=$.Deferred()):E=!1},5e3);function oe(he,ce){ce.code==="MSG-0039"&&l.trigger("delete:fail:quota",ce,he)}function ue(he){return O=O.concat(he),U.promise()}function me(he){var ce=[].concat(he);ce.forEach(function(pe){X[_.cid(pe)]=!0}),setTimeout(function(){ce.forEach(function(pe){delete X[_.cid(pe)]}),ce=null},15e3)}
3function ge(he,ce){return E=!0,w.wait(_.wait(100).then(function(){return w.PUT({module:"mail",params:{action:"delete",harddelete:!!ce,returnAffectedFolders:!0,timestamp:_.then()},data:w.simplify(he),appendColumns:!1}).done(function(pe){_(pe.folders).each(function(Te,De){F.pool.getModel(De).set(Te)}),l.trigger("delete"),l.trigger("deleted-mails",he),_(he).each(function(Te){l.trigger("remove:"+_.ecid(Te),Te)}),k.is("trash",he[0].folder_id)?l.trigger("deleted-mails-from-trash"):ce||B("trash")}).fail(function(){l.trigger("refresh.all")}).always(ie)}))}function ye(he,ce,pe){try{return me(he),E&&!pe?ue(he):ge(he,pe)}finally{P(he,ce)}}return ye.getRecentlyDeleted=function(){return X},ye.isRecentlyDeleted=function(he){return!!X[he]},ye}(),l.archive=function(E){if(!(!_.isArray(E)||E.length===0))return P(E),w.wait(w.PUT({module:"mail",params:{action:"archive",timestamp:_.then()},data:w.simplify(E)}).done(function(O){_(_(O).pluck("created")).contains(!0)?k.reload().then(function(){return o.reload()}).done(function(){F.refresh(),l.trigger("refresh.all")}):F.reload(_(O).pluck("id")),l.trigger("archive",E)}))},l.archiveFolder=function(E,O){return O=_.extend({action:"archive_folder",folder:E,days:90},O),w.PUT({module:"mail",params:O,appendColumns:!1}).done(function(){F.refresh(),l.trigger("refresh.all"),l.trigger("archive-folder",E)})},l.getAllThreads=function(E,O){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:!k.is("sent|drafts",E.folder),cache:!1,deleted:p,max:E.max||500}),h.call(this,E,O,null,!1)};var z=function(E,O,U){var X=!1,ie=O.folder_id||O.folder;return E=_.isArray(E)?E:[E],w.pause(),_(E).map(function(oe){var ue=oe.folder||oe.folder_id;return ie&&ie!==ue&&(X=!0),w.PUT({module:"mail",params:{action:U||"update",id:oe.id,folder:ue,timestamp:_.then()},data:O,appendColumns:!1})}),w.resume().then(function(oe){return _(E).each(function(ue){l.trigger("update:"+_.ecid(ue),ue)}),X&&l.trigger("move"),U==="copy"||X?{list:E,response:oe}:(l.trigger("update:after"),E)})};l.update=function(){console.error("Do not call this directly because mail is so special")},l.on("not-found",function(){l.trigger("refresh.list")}),l.expunge=function(E){var O=_(a.getByFolder(E)).chain().map(function(U){return U.filter(function(X){return D.isDeleted(X.attributes)})}).flatten().pluck("cid").compact().value();return l.trigger("beforeexpunge",O),_(a.getByFolder(E)).each(function(U){U.set(U.filter(function(X){return!D.isDeleted(X.toJSON())}))}),w.PUT({module:"mail",appendColumns:!1,params:{action:"expunge"},data:[E]}).done(function(){F.reload(E)})},F.on({"before:clear":function(E){_(a.getByFolder(E)).each(function(O){O.reset([])})},"clear remove:mail":function(){var E=k.getFoldersByType("trash");_(E).each(function(O){F.list(O,{cache:!1}),_(a.getByFolder(O)).invoke("expire")})},"changesAfterReloading:mail":function(E){(_(E.changed).has("unread")||_(E.changed).has("total"))&&(_(a.getByFolder(E.id)).invoke("expire"),l.trigger("changesAfterReloading"))}}),l.changeColor=function(E,O){return E=[].concat(E),O=String(O),_(E).each(function(U){U.color_label=O,a.propagate("change",{id:U.id,folder_id:U.folder_id,color_label:parseInt(O,10)||0}),l.threads.touch(U),l.trigger("update:"+_.ecid(U),U)}),w.wait(z(E,{color_label:O})).done(function(){W(E,102)})},l.flag=function(E,O){return E=[].concat(E),_.isUndefined(O)&&(O=_(E).reduce(function(U,X){return U===!0?!0:!D.isFlagged(X)},!1)),_(E).each(function(U){U.flags=O?U.flags|8:U.flags&-9,a.propagate("change",{id:U.id,folder_id:U.folder_id,flags:U.flags}),l.threads.touch(U),l.trigger("update:"+_.ecid(U),U),l.trigger("refresh.flag",E)}),z(E,{flags:l.FLAGS.FLAGGED,value:O}).done(function(){W(E,651),W(E,660),F.reload(E)})},l.markUnread=function(E){return E=[].concat(E),_(E).each(function(O){O.flags=O.flags&-33,a.propagate("change",{id:O.id,folder_id:O.folder_id,flags:O.flags}),l.threads.touch(O),l.trigger("update:"+_.ecid(O),O),l.trigger("refresh.unseen",E)}),z(E,{flags:l.FLAGS.SEEN,value:!1}).done(function(){W(E,651),F.reload(E),l.trigger("after:refresh.unseen",
3E)})},l.markRead=function(E){E=[].concat(E);var O=!k.is("spam|confirmed_spam|trash",E[0].folder_id);return _(E).each(function(U){U.flags=U.flags|32,a.propagate("change",{id:U.id,folder_id:U.folder_id,flags:U.flags,unseen:!1}),l.threads.touch(U),l.trigger("update:"+_.ecid(U),U),l.trigger("refresh.seen",E),l.trigger("update:set-seen",E)}),z(E,{flags:l.FLAGS.SEEN,value:!0,collect_addresses:O}).done(function(){W(E,651),F.reload(E),l.trigger("after:refresh.seen",E)})},l.allSeen=function(E){return a.get("detail").each(function(O){var U=O.toJSON();U.folder_id===E&&D.isUnseen(U)&&(a.propagate("change",{id:U.id,folder_id:U.folder_id,flags:U.flags|32}),l.threads.touch(U))}),l.trigger("update:set-seen",E),w.PUT({module:"mail",params:{action:"all_seen",folder:E},appendColumns:!1}).done(function(){l.trigger("after:all-seen",E),F.reload(E)})};function R(E,O){return P(E),B(O?"spam":"inbox"),w.pause(),_(E).map(function(U){return w.PUT({module:"mail",params:{action:"update",id:U.id,folder:U.folder_id,timestamp:_.then()},data:{flags:l.FLAGS.SPAM,value:O},appendColumns:!1})}),F.reload(E[0].folder_id,k.getFoldersByType(O?"spam":"inbox")),w.resume()}l.markSpam=function(E){return R(E,!0)},l.noSpam=function(E){return R(E,!1)};function H(E,O,U){return a.resetFolder(U),w.wait(z(O,{folder_id:U},E).then(function(X){l.trigger(E,O,U),F.reload(U,O);var ie=_(X.response).find(function(oe){return!!oe.error});return ie?(l.trigger("refresh.all"),$.Deferred().reject(ie.error)):E==="copy"?_(X.response).pluck("data"):O}))}l.move=function(E,O,U){try{return H("update",E,O)}finally{P(E,U)}},l.moveAll=function(E,O){return _(a.getByFolder(E)).each(function(U){U.reset([]),U.setComplete(!0)}),w.wait(w.PUT({module:"mail",appendColumns:!1,params:{action:"move_all"},data:{source:E,target:O}})).done(function(){F.reload([E,O])})},l.copy=function(E,O){return H("copy",E,O)},l.autosave=function(E){l.trigger("before:autosave",{data:E});try{var O={action:"autosave",lineWrapAfter:0};return E.security&&E.security.decrypted&&(O.decrypt=!0,E.security.authentication&&(O.authToken=E.security.authentication)),w.wait(w.PUT({module:"mail",params:O,data:E,appendColumns:!1}).then(function(U){var X=k.getFoldersByType("drafts");return a.resetFolder(X),F.reload(X),l.trigger("autosave"),U}))}finally{E.msgref&&P(D.parseMsgref(l.separator,E.msgref))}},l.keepalive=function(E){return w.GET({module:"file",params:{action:"keepalive",id:E}})},l.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(I);if("parent"in E){var O=E.id,U=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(X){return _.chain(X.nested_msgs).filter(function(ie){return ie.id===O?(ie.parent=U,!0):!1}).first().value()}).then(I)}return console.error("api.getUnmodified(). Invalid case.",E),$.Deferred().resolve(E)},l.getSource=function(E){return this.get({action:"get",id:E.id,src:!0,folder:E.folder||E.folder_id,view:"html",embedded:!1},!1)},l.fetchTextPreview=function(E){return w.fixList(E,w.PUT({module:"mail",params:{action:"list",columns:"600,601,663",timezone:"utc",deleted:p},data:w.simplify(E)})).then(function(O){var U={};return _(O).each(function(X){U[_.cid(X)]=X.text_preview||""}),U})},l.saveAttachments=function(E,O){return O=O||v.get("folder/infostore"),E=_.isArray(E)?E:[E],w.pause(),_(E).each(function(U){var X={action:"attachment",id:U.mail.id,folder:U.mail.folder_id,dest_folder:O,attachment:U.id,decrypt:U.security&&U.security.decrypted};U.security&&U.security.authentication&&(X.cryptoAuth=U.security.authentication),U.reEncrypt&&(X.encrypt=!0),w.PUT({module:"mail",params:X,data:{folder_id:O,description:i("Saved mail attachment")},appendColumns:!1})}),w.resume().done(function(){require(["io.ox/files/api"],function(U){U.pool.resetFolder(O),U.trigger("add:file")})})},l.getUrl=function(E,O,U){var X=_.extend({scaleType:"contain",session:!0},U),ie=ox.apiRoot+"/mail",oe;if(O==="zip")return oe=_(E).first(),ie+"?"+$.param({action:"zip_attachments",folder:(oe.parent||oe.mail).folder_id,id:(oe.parent||oe.mail).id,attachment:_(E).pluck("id").join(","),decrypt:oe.security&&oe.security.decrypted,session:ox.session});if(O==="eml:reference")return this.getUrl(_([].concat(E)).first().parent,"eml");if(O==="eml")return E=[].concat(E),oe=_(E).first(),E.length>1?ie+"?"+$.param({action:"zip_messages",folder:oe.folder_id,id:_(E).pluck("id").join(","),session:ox.session}):(ie+=(oe.subject?"/"+encodeURIComponent(oe.subject.replace(/[\\:/]/g,"_")+".eml"):"")+"?"+$.param($.extend(l.reduce(oe),{action:"get",src:1,save:1,session:ox.session})),ie);if(E.space)return ie=ox.apiRoot+"/mail/compose/"+E.space+"/attachments/"+E.id,X.session&&(ie+="?session="+ox.session),ie;var ue=E.filename?E.filename.replace(/[\\:/]/g,"_").replace(/\(/g,"%28").replace(/\)/,"%29"):void 0,me=X.width&&X.height?"&scaleType="+X.scaleType+"&width="+X.width+"&height="+X.height:"";switch(ie+=(E.filename?"/"+encodeURIComponent(ue):"")+"?"+$.param({action:"attachment",folder:(E.parent||E.mail).folder_id,id:(E.parent||E.mail).id,attachment:E.id,user:ox.user_id,c
3ontext:ox.context_id,sequence:1,session:ox.session}),E.security&&E.security.decrypted&&(ie+="&decrypt=true",E.security.authentication&&(ie+="&cryptoAuth="+encodeURIComponent(E.security.authentication))),O){case"view":case"open":ie+="&delivery=view"+me;break;case"download":ie+="&delivery=download";break;default:break}return ie},l.getNestedMail=function(E){return w.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 K=0;l.checkInbox=function(){if(ox.openedInBrowserTab)return $.Deferred().reject();var E=o.get("notificationsForExternalInboxes",!1)?k.getFoldersByType("inbox"):["default0/INBOX"];if(e.has("websocket")&&(E=_(E).without("default0/INBOX")),!E.length)return $.Deferred().reject();var O=_(E).map(function(U){return w.GET({module:"mail",params:{action:"all",folder:U,columns:"610,600,601,611,661,603",unseen:"true",deleted:"false",sort:"661",order:"desc",limit:100,timezone:"utc"}})});return $.when.apply($,O).then(function(U){U=E.length===1?U:_(_(arguments).map(function(ie){return ie[0]})).flatten();var X=_(U).filter(function(ie){return ie.date>K&&(ie.flags&2)!==2});return l.trigger("new-mail",X,U),X.length>0?(K=X[0].date,l.newMailTitle(!0)):K=new moment().valueOf(),{unseen:U,recent:X||[]}})},l.refresh=function(){if(!(!ox.online||!e.has("webmail")||ox.openedInBrowserTab))return l.checkInbox().always(function(){l.trigger("refresh.all")})},l.getDefaultFolder=function(){return F.getDefaultFolder("mail")},l.getAccountIDFromFolder=function(E){var O=/^default(\d*)\b/.exec(E);return O[1]},l.beautifyMailText=function(E,O){return O=O||500,E=String(E).replace(/(\r\n|\n|\r)/gm,"").substr(0,O).replace(/-{3,}/g,"---").replace(/<br\s?\/?>(>)+/ig," ").replace(/<br\s?\/?>/ig," ").replace(/<[^>]+(>|$)/g,"").replace(/(http(s?):\/\/\S+)/i,'<a href="$1" target="_blank" rel="noopener">http$2://...</a>').replace(/ /g," ").replace(/\s{2,}/g," "),$.trim(E)},l.importEML=function(E){var O=E.folder||l.getDefaultFolder(),U=new FormData;return U.append("file",E.file),w.UPLOAD({module:"mail",params:{action:"import",folder:O,force:!0},data:U,fixPost:!0}).done(function(){a.resetFolder(O),F.reload(O),l.trigger("refresh.all")})},l.ack=function(E){var O=_.first(E.to)||[];return delete E.to,k.getAddressesFromFolder(E.folder).then(function(U){var X=_.find(U.aliases,function(ye){return ye[1].toLowerCase()===(O[1]||"").toLowerCase()}),ie=X||U.primary,oe=ie[0],ue=ie[1],me=o.get(["customDisplayNames",ue],{});oe=(me.overwrite?me.name:oe||me.defaultName)||"";var ge=oe?'"'+oe+'" <'+ue+">":ue;return w.PUT({module:"mail",params:{action:"receipt_ack"},data:_.extend({from:ge},E)})})},o.on("change:allowHtmlMessages change:allowHtmlImages change:isColorQuoted",function(){a.get("detail").each(function(E){E.unset("attachments",{silent:!0}),E.unset("security",{silent:!0})})}),o.on("change:allowHtmlMessages",function(E){l.options.requests.get.view=E?"noimg":"text"}),k.on("refresh.all create:account",function(){F.list("1",{cache:!1}).done(function(){F.pool.unfetch()})}),F.on("create",function(E){E.module==="mail"&&l.refresh()}),l.newMailTitle=function(){var E=null,O=!1;$(m).on("visibility-changed",function(oe,ue){ue.currentHiddenState===!1&&ie()});function U(){document.title=(O=!O)?i("New mail"):document.customTitle}function X(){E||(E=setInterval(U,1500))}function ie(){document.customTitle&&(document.title=document.customTitle),E&&(clearInterval(E),E=null)}return function(oe){_.device("smartphone")||!m.isHidden||(oe===!0?X():ie())}}(),l.pool=a,l.resolve=function(){function E(O){return O=String(O).replace(/^thread\./,""),a.get("detail").get(O)}return function(O,U){return U?l.threads.resolve(O):_(O).chain().map(E).compact().invoke("toJSON").value()}}(),l.threads={hash:{},reverse:{},collection:{},contains:function(E){return!!this.hash[E]},getModels:function(E){if(!_.isString(E))return[];var O=this.hash[E]||[E];return _.isEmpty(this.collection)&&(this.collection=a.get("detail")),_(O).chain().map(this.collection.get,this.collection).compact().value()},get:function(E){return _(this.getModels(E)).chain().invoke("toJSON").map(function(U,X){return U.index=X,U}
3).value()},head:function(E){return E.head||E},touch:function(E){E=_.isString(E)?E:_.cid(E);var O=this.reverse[E];!O||O===E||a.propagate("change",_.extend({timestamp:_.now()},_.cid(O)))},resolve:function(E){return _(E).chain().map(function(O){O=String(O).replace(/^thread\.(.+)$/,"$1");var U=l.threads.get(O);return U.length>0&&U}).flatten().compact().value()},clear:function(){this.hash={},this.reverse={}},add:function(E){var O=_.cid(E);this.hash[O]=E.thread||[O],_(this.hash[O]).each(function(U){this.reverse[U]=O},this)},remove:function(E){E=_.isString(E)?E:_.cid(E);var O=this.reverse[E];!O||!this.hash[O]||(this.hash[O]=_(this.hash[O]).without(E))},size:function(E){E=_.isString(E)?E:_.cid(E);var O=this.reverse[E];return O?(this.hash[O]||[E]).length:1},subject:function(E){if(!this.collection.get)return"";E=_.isString(E)?E:_.cid(E);var O,U,X;return O=this.reverse[E],U=_(this.hash[O]).first(),X=this.collection.get(U),X&&X.get("subject")?X.get("subject"):(X=this.collection.get(O),X?X.get("subject"):"")},append:function(E,O){var U=this.reverse[E];U&&((this.hash[U]=this.hash[U]||[]).unshift(O),this.touch(U))}},l.pool.getDependentModels=function(E){return l.threads.getModels(E)};function ee(E){return E.id=E.original_id,E.folder_id=E.original_folder_id,(E.flags&32)===32?!1:!k.is("spam|confirmed_spam|trash",E.folder_id)}l.allMessagesFolder=o.get("allMessagesFolder","default0/virtual/all"),l.allUnseenMessagesFolder=o.get("allUnseenMessagesFolder"),l.getAllUnseenMessages=function(){return w.GET({module:"mail",params:{action:"all",folder:l.allUnseenMessagesFolder||l.allMessagesFolder,columns:"600,654,655",sort:"661",order:"desc",unseen:!l.allUnseenMessagesFolder,deleted:!!l.allUnseenMessagesFolder,timezone:"utc"}})},l.collectionLoader=new d({module:"mail",getQueryParams:function(E){return E.folder==="virtual/all-unseen"?{action:"all",folder:l.allUnseenMessagesFolder||l.allMessagesFolder,columns:w.defaultColumns.mail.unseen,sort:"661",order:"desc",unseen:!l.allUnseenMessagesFolder,deleted:!!l.allUnseenMessagesFolder,timezone:"utc"}:E.thread===!0&&!k.is("sent|drafts",E.folder)?{action:"threadedAll",folder:E.folder,categoryid:E.category_id||E.categoryid,columns:w.defaultColumns.mail.all,sort:E.sort||"661",order:E.order||"desc",includeSent:!k.is("sent|drafts",E.folder),max:(E.offset||0)+300,deleted:p,timezone:"utc"}:{action:"all",folder:E.folder,categoryid:E.category_id||E.categoryid,columns:w.defaultColumns.mail.all,sort:E.sort||"661",order:E.order||"desc",deleted:p,timezone:"utc"}},filter:function(E){return!l.remove.isRecentlyDeleted(_.cid(E))},fail:function(E){return l.trigger("error error:"+E.code,E),E},httpGet:function(E,O){var U=l.allMessagesFolder&&O.folder===l.allMessagesFolder,X=l.allUnseenMessagesFolder&&O.folder===l.allUnseenMessagesFolder,ie=U&&O.unseen===!0||X;return ie&&(O.limit="0,250"),w.GET({module:E,params:O}).then(function(oe){return ie?_(oe).filter(ee):oe})},PRIMARY_PAGE_SIZE:o.get("listview/primaryPageSize",50),SECONDARY_PAGE_SIZE:o.get("listview/secondaryPageSize",200)});function ne(E){return!D.isDeleted(E)}function se(E){if(E.thread)return E.thread;var O=l.threads.get(_.cid(E))||{};return O&&O.length>1?O:[E]}return l.processThreadMessage=function(E){var O=se(E),U;O=_(U=O).filter(ne),O.length===0&&(O=U.slice(0,1));var X=_(O).last(),ie=O.length;E.head=_({threadSize:ie}).chain().extend(E).omit("index").value(),_.extend(E,X),E.thread=_(O).map(_.cid),E.threadSize=ie,X.thread=_(O).map(_.cid),l.threads.add(E),l.pool.add("detail",O)},l.collectionLoader.noSelect=function(E){if(/^default\d+$/.test(E.folder))return!0;if(l.allMessagesFolder&&E.folder===l.allMessagesFolder||l.allUnseenMessagesFolder&&E.folder===l.allUnseenMessagesFolder)return!1;var O=F.pool.getModel(E.folder);return!O.can("read")},l.collectionLoader.each=function(E,O,U,X){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"]),X.action==="threadedAll"?l.processThreadMessage(E):l.pool.add("detail",E)},l.mailServerDownMessage=i("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."),l});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(M,w,v,S,F){"use strict";var k={};k.SENDTYPE={NORMAL:0,REPLY:1,FORWARD:2,EDIT_DRAFT:3,DRAFT:4},k.csid=function(){return _.uniqueId()+"."+_.now()};var D=function(d,m,o){var i=this,e=d==="edit",t=o==="alternative";t&&(o=m.content_type==="text/plain"?"text":"html"),o=$.trim(o||"text").toLowerCase(),o=o==="text/plain"?"text":o,o=o==="text/html"?"html":o,o==="html"&&m.content_type==="text/plain"&&!e&&(o="text"),o==="text"&&m.content_type==="text/plain"&&e&&(o="raw");var n=m.attachOriginalMessage||o==="text"&&_.device("touch")&&F.get("attachOriginalMessage",!1)===!0,u=k.csid();return M.PUT({module:"mail",params:$.extend({},{action:e?"get":d||"",attachOriginalMessage:n,view:o,setFrom:/reply|replyall|forward/.test(d),csid:u,embedded:m.embedded,max_size:m.max_size,decrypt:m.security&&m.security.decrypted,process_plain_text:!1}),data:_([].concat(m)).map(function(f){return i.reduce(f)}),appendColumns:!1}).then(function(f){var a="",b="";return f.csid=u,f.attachments&&f.attachments.length?f.attachments[0].content===""||(f.attachments[0].content_type==="text/html"?(b=document.createElement("DIV"),b.innerHTML=f.attachments[0].content,_(b.getElementsByTagName("BLOCKQUOTE")).each(function(p){p.removeAttribute("style")}
3),a=b.innerHTML,b=null):a=$.trim(f.attachments[0].content)):f.attachments=f.attachments||[{}],f.attachments[0].content=a,f})};k.replyall=function(d,m){return D.call(this,"replyall",d,m)},k.reply=function(d,m){return D.call(this,"reply",d,m)},k.forward=function(d,m){return D.call(this,"forward",d,m)},k.edit=function(d,m){return D.call(this,"edit",d,m)},k.send=function(d,m,o){var i=this,e,t=function(b){var p=$.trim(b[0]||"").replace(/^["']+|["']+$/g,""),T=String(b[1]||""),r=b[2]||"",g=r==="/TYPE=PLMN";return g&&!/\/TYPE=PLMN$/.test(T)&&(p=null,T=T+r),(p===""||p===T)&&(p=null),[p,T]};d=_.clone(d),d.from=_(d.from).map(t),d.to=_(d.to).map(t),d.cc=_(d.cc).map(t),d.bcc=_(d.bcc).map(t),d.share_attachments&&d.share_attachments.expiry_date&&(d.share_attachments=_.clone(d.share_attachments),d.share_attachments.expiry_date=_.now()+parseInt(d.share_attachments.expiry_date,10));function n(b){return{args:[{"com.openexchange.groupware.contact.pairs":[{folder:b.folder_id,id:b.id}]}],identifier:"com.openexchange.contact"}}d.contacts_ids&&(d.datasources=_.chain(d.contacts_ids).map(n).value()),i.trigger("beforesend",{data:d,files:m,form:o}),ox.trigger("mail:send:start",d,m),e=y(d,m,e);var u=k.SEND_REFRESH_DELAY,f=d.flags===k.FLAGS.DRAFT,a=d.csid;return k.queue.add(a,e.abort),e.done(function(){v.trigger("maybeNewContact"),i.trigger("send",{data:d,files:m,form:o}),ox.trigger("mail:send:stop",d,m),d.share_attachments&&ox.trigger("please:refresh refresh^")}).fail(function(){ox.trigger("mail:send:fail")}).progress(function(b){f||k.queue.update(a,b.loaded,b.total)}).always(function(){k.queue.remove(a)}).then(function(b){if(setTimeout(function(){var r=_(["inbox","sent","drafts"]).chain().map(function(g){var l=S.getFoldersByType(g);return i.pool.resetFolder(l),l}).flatten().value();w.multiple(r,{cache:!1}),i.trigger("refresh.all")},u),_.isObject(b))return b;var p=b.indexOf("{"),T=b.lastIndexOf("}");return p>-1&&T>-1?JSON.parse(b.substr(p,T-p+1)):{}}).then(function(b){if(b.error)return $.Deferred().reject(b).promise();if(b.data){var p=_(b.data.toString().split(i.separator)),T=p.last(),r=p.without(T).join(i.separator);$.when(S.getUnifiedMailboxName(),S.getPrimaryAddress()).done(function(g,l){var c=!1;_.chain(_.union(d.to,d.cc,d.bcc)).each(function(h){if(h[1]===l[1]){c=!0;return}}),setTimeout(function(){g!==null?w.refresh():c?w.reload(r,S.getInbox()):w.reload(r)},u)})}return b})},k.SEND_REFRESH_DELAY=5e3;function y(d,m){var o=new FormData;return o.append("json_0",JSON.stringify(d)),_(m).each(function(i,e){i.name?o.append("file_"+e,i,i.name):o.append("file_"+e,i)}),M.UPLOAD({module:"mail",params:{action:"new",lineWrapAfter:0,force_json_response:!0},data:o,dataType:"json",fixPost:!0})}return k.queue=function(){function d(m,o){return o?Math.max(0,Math.min(100,Math.round(m/o*100)))/100:0}return{collection:new Backbone.Collection().on("add remove change:pct",function(){var m=0,o=0,i;this.each(function(e){m+=e.get("loaded"),o+=e.get("total"),i=e.get("abort")}),this.trigger("progress",{count:this.length,loaded:m,pct:d(m,o),total:o,abort:i})}),add:function(m,o){this.collection.add(new Backbone.Model({id:m,loaded:0,pct:0,total:0,abort:o}))},remove:function(m){var o=this.collection.get(m);this.collection.remove(o)},update:function(m,o,i){var e=this.collection.get(m);e&&e.set({loaded:o,pct:d(o,i),total:i})}}}(),k});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","
3io.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(M,w,v,S,F,k,D,y,d){"use strict";function m(e){"threadSize"in e||(e.threadSize=Math.max(1,_(e.thread).reduce(function(t,n){return t+(v.isDeleted(n)?0:1)},0)))}function o(e){if(v.isDeleted(e)){var t=_(e.thread).findWhere(function(n){return!v.isDeleted(n)});t&&(e=_.extend(e,t))}}w.point("io.ox/mail/listview/item").extend({id:"default",index:100,draw:function(e){if(m(e.data),o(e.data),!e.app){w.point("io.ox/mail/listview/item/default").invoke("draw",this,e);return}var t=e.app.props.get("layout"),n=t==="horizontal"||t==="list";this.closest(".list-item").toggleClass("small",n),w.point("io.ox/mail/listview/item/"+(n?"small":"default")).invoke("draw",this,e)}},{id:"a11y",index:200,draw:M.a11yLabel}),w.point("io.ox/mail/listview/item/small").extend({id:"unread",index:110,draw:M.unreadClass},{id:"flagged",index:115,draw:M.flaggedClass},{id:"deleted",index:120,draw:M.deleted},{id:"col1",index:100,draw:function(e){var t=$('<div class="list-item-column column-1">');M.envelope.call(t,e),this.append(t)}},{id:"col2",index:200,draw:function(e){var t=$('<div class="list-item-column column-3">');M.paperClip.call(t,e),this.append(t)}},{id:"col3",index:300,draw:function(e){var t=$('<div class="list-item-column column-3">');M.priority.call(t,e),this.append(t)}},{id:"col4",index:400,draw:function(e){var t=$('<div class="list-item-column column-4">');w.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">');M.answered.call(t,e),t.children().length===0&&M.forwarded.call(t,e),this.append(t)}},{id:"col6",index:600,draw:function(e){var t=$('<div class="list-item-column column-6">');w.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">');w.point("io.ox/mail/listview/item/small/col7").invoke("draw",t,e),this.append(t)}}),w.point("io.ox/mail/listview/item/small/col4").extend({id:"from",index:100,draw:M.from}),w.point("io.ox/mail/listview/item/small/col6").extend({id:"account",index:100,draw:M.account},{id:"original-folder",index:150,draw:M.folder},{id:"flag",index:200,draw:M.flag},{id:"optionalSize",index:250,draw:M.size},{id:"thread-size",index:300,draw:M.threadSize},{id:"shared-attachement",index:450,draw:M.sharedAttachement},{id:"colorflag",index:200,draw:M.colorflag},{id:"pgp-encrypted",index:600,draw:M.pgp.encrypted},{id:"pgp-signed",index:600,draw:M.pgp.signed},{id:"subject",index:1e3,draw:M.subject},{id:"text-preview",index:1100,draw:function(e){this.append($('<span class="text-preview inline gray">').text(e.data.text_preview||""))}}),w.point("io.ox/mail/listview/item/small/col7").extend({id:"date",index:100,draw:M.date}),w.point("io.ox/mail/listview/item/default").extend({id:"picture",before:"row1",draw:function(e){e.app&&e.app.props.get("contactPictures")&&M.picture.call(this,e)}},{id:"row1",index:100,draw:function(e){var t=$('<div class="list-item-row">');w.point("io.ox/mail/listview/item/default/row1").invoke("draw",t,e),this.append(t)}},{id:"unread",index:110,draw:M.unreadClass},{id:"flagged",index:115,draw:M.flaggedClass},{id:"deleted",index:120,draw:M.deleted},{id:"row2",index:200,draw:function(e){var t=$('<div class="list-item-row">');w.point("io.ox/mail/listview/item/default/row2").invoke("draw",t,e),this.append(t)}},{id:"row3",index:300,draw:function(e){if(!(!e.app||!e.app.useTextPreview)){var t=$('<div class="list-item-row">');w.point("io.ox/mail/listview/item/default/row3").invoke("draw",t,e),this.append(t)}}}),w.point("io.ox/mail/listview/item/default/row1").extend({id:"date",index:100,draw:M.date},{id:"from",index:300,draw:M.from}),w.point("io.ox/mail/listview/item/default/row2").extend({id:"account",index:100,draw:M.account},{id:"original-folder",index:150,draw:M.folder},{id:"colorflag",index:200,draw:M.colorflag},{id:"flag",index:210,draw:M.flag},{id:"optionalSize",index:250,draw:M.size},{id:"thread-size",index:300,draw:M.threadSize},{id:"paper-clip",index:400,draw:M.paperClip},{id:"shared-attachement",index:350,draw:M.sharedAttachement},{id:"pgp-encrypted",index:450,draw:M.pgp.encrypted},{id:"pgp-signed",index:450,draw:M.pgp.signed},{id:"priority",index:500,draw:M.priority},{id:"subject",index:1e3,draw:function(e){M.subject.call(this,e);var t=this.find(".flags");M.unread.call(t,e),M.answered.call(t,e),M.forwarded.call(t,e)}}),w.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||""))}}),w.point("io.ox/mail/listview/notification/empty").extend({id:"default",index:100,draw:M.empty}),w.point("io.ox/mail/listview/notification/error").extend({id:"default",index:100,draw:function(e){function t(n){n.data.baton.listView.load()}this.append($('<i class="fa fa-exclamation-triangle" aria-hidden="true">'),$.txt(d("Error: Failed to load messages")),$('<button type="button" class="btn btn-link">').text(d("Retry")).on("click",{baton:e},t)),ox.trigger("yell:error",e.error)}});var i=k.extend(D).extend({ref:"io.ox/mail/listview",initialize:function(e){if(k.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){var t=e.app.props;_.extend(this.options,t.pick("thread","sort")),this.listenTo(t,"change:sort",function(n,u){this.options.sort=u})}this.$el.on("scrollend",this.fetchTextPreview.bind(this)),this.on("collection:load collection:reload",this.fetchTextPreview),this.selection&&(this.selection.resolve=function(){return S.resolve(this.get(),this.view.app.isThreaded())})},fetchTextPreview:function(){if(this.app&&this.app.useTextPreview()){var e=this.el.scrollTop,t=e+this.el.offsetHeight,n=this.getItems().outerHeight(),u=Math.floor(0,e/n),f=Math.ceil(t/n),a=this.collection.slice(u,f),b=[];a=_(a).filter(function(p){var T=_(S.threads.get(p.cid)).first(),r=T&&!T.text_preview;return r&&!p.hasNoPreview&&b.push(_(T).pick("id","folder_id")),r}),b.length&&S.fetchTextPreview(b).done(function(p){_(a).each(function(T){var r=_(S.threads.get(T.cid)).first(),g=_.cid(r);T.set("text_preview",p[g]),p[g]===""&&(T.hasNoPreview=!0)})})}},lookForUnseenMessage:function(){if(this.collection.length){var e=this.collection.at(0).get("folder_id"),t=this.collection.reduce(function(n,u){return n+v.isUnseen(u.get("flags"))?1:0},0);y.setUnseenMinimum(e,t)}},markRead:function(e){var t=$(e.currentTarget).closest(".selectable").data("cid"),n=S.threads.get(t),u=_(n).reduce(function(f,a){return f||v.isUnseen(a)},!1);u?S.markRead(n):S.markUnread(n),e.preventDefault(),e.stopPropagation()},reprocessThread:function(e){var t=S.threads.get(e.cid);if(t.length&&!(!e.get("thread")||t.length===e.get("thread").length)){_.each(t,function(u){delete u.head});var n=_.extend(e.toJSON(),t[0],{thread:t,threadSize:t.length});S.processThreadMessage(n),e.set(n,{silent:!0})}},map:function(e){if(!(this.app&&this.app.isThreaded()))return e.toJSON();this.reprocessThread(e);var t=S.threads.head(e.toJSON()),n=S.threads.get(e.cid),u=_(n).reduce(function(b,p){return b||v.isUnseen(p)},!1);t.flags=u?t.flags&-33:t.flags|32;var f=_(n).reduce(function(b,p){return b||v.isFlagged(p)},!1);t.flags=f?t.flags|8:t.flags&-9;var a=_(n).reduce(function(b,p){return b||parseInt(p.color_label||0,10)},0);return t.color_label=a,t.thread=n.map(function(b,p){return _(b).pick(_(t.thread[p]).keys())}),t.subject=S.threads.subject(t)||t.subject||"",t},getCompositeKey:function(e){return this.options.threaded?"thread."+e.cid:e.cid},getContextMenuData:function(e){return this.app.getContextualData(e)}});return i});define("io.ox/core/tk/list-control",["io.ox/core/tk/list","io.ox/core/extensions"],function(M,w){"use strict";function v(D,y,d){y===void 0?D.settings.remove("listview/"+d+"/"+_.display()):D.settings.set("listview/"+d+"/"+_.display(),y),D.settings.save()}var S=Backbone.View.extend({className:"abs list-view-control",events:{"mousedown .resizebar:not(.vertical)":"onResize","mousedown .resizebar.vertical":"onVerticalResize"},applySizeConstraints:function(){if(this.listView.app.props.get("layout")!=="list"&&this.$el.is(":visible")){var D=this.$el.parent(),y=D.siblings(".rightside"),d=D.parent(),m=this.$(".resizebar.vertical").is(":visible");if(y.length!==0){var o=m?k(D.height()+y.height(),d.height()):k(D.width()+y.width(),d.width()),i=F(m?S.minHeight:S.minWidth,o),e=F(m?S.maxHeight:S.maxWidth,o),t=m?D.height():D.width(),n=Math.max(i,Math.min(t,e));m&&D.height()===n||!m&&D.width()===n||(D.css(m?"height":"width",n),y.css(m?"top":"left",n),v(this.listView.app,n,m?"height":"width"))}}},onResize:function(D){D.preventDefault();var y=this.$el.parent(),d=y.siblings(".rightside"),m=D.pageX-y.width(),o=y.width()+d.width(),i=F(S.minWidth,o),e=F(S.maxWidth,o),t=this.listView.app,n;d.length!==0&&$(document).on({"mousemove.resize":function(u){$(u.target).is("iframe")?n=Math.max(i,Math.min($(u.target).offset().left+u.pageX-m,e)):n=Math.max(i,Math.min(u.pageX-m,e)),y.css("width",n),d.css("left",n)},"mouseup.resize":function(){$(this).off("mousemove.resize mouseup.resize").trigger("resize"),v(t,n,"width")}})},onVerticalResize:function(D){D.preventDefault();var y=this.$el.parent(),d=y.siblings(".rightside"),m=D.pageY-y.height(),o=y.height()+d.height(),i=F(S.minHeight,o),e=F(S.maxHeight,o),t=this.listView.app,n;d.length!==0&&$(document).on({"mousemove.resize":function(u){n=Math.max(i,Math.min(u.pageY-m,e)),y.css("height",n),d.css("top",n)},"mouseup.resize":function(){$(this).off("mousemove.resize mouseup.resize").trigger("resize"),v(t,n,"height")}})},resizable:function(){if(!_.device("touch")){this.$el.append('<div class="resizebar">'),this.$el.append('<div class="resizebar vertical">');var D=this.listView.app.getWindow();$(window).on("resize.list-control-"+D.id,_.debounce(this.applySizeConstraints.bind(this),100)),D.one("beforequit",function(){$(window).off("resize.list-control-"+D.id)})}},initialize:function(D){this.listView=D.listView,this.id=D.id||"default",this.options=D},render:function(){var D=$('<ul class="toolbar generic-toolbar top" role="toolbar">'),y=w.point(this.id+"/list-view/toolbar/top"),d=$('<ul class="toolbar generic-toolbar visual-focus bottom" role="toolbar">'),m=w.point(this.id+"/list-view/toolbar/bottom"),o=new w.Baton({view:this,app:this.options.app});return y.list().length&&(this.$el.addClass("toolbar-top-visible"),y.invoke("draw",D,o)),m.list().length&&_.device("!smartphone")&&(this.$el.addClass("toolbar-bottom-visible"),m.invoke("draw",d,o)),this.$el.attr({role:"navigation"}).append(D,this.listView.render().$el.addClass("abs"),d),this}});S.minWidth=270,S.maxWidth=-250,S.minHeight=150,S.maxHeight=-100;function F(D,y){return typeof D=="function"&&(D=D()),D<0&&(D+=y),D}function k(){return _.chain(arguments).toArray().compact().min().value(
3)}return S});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(M,w,v,S,F,k,D,y,d,m){"use strict";w.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" draggable="false">').attr("aria-label",m("Back to list")).append($('<i class="fa fa-chevron-left" aria-hidden="true">'),$.txt(" "),$.txt(m("Back")))),$('<div class="position">'),$('<div class="prev-next">').append($('<a href="#" role="button" class="previous-mail">').attr("aria-label",m("Previous message")).append($('<i class="fa fa-chevron-up" aria-hidden="true">')),$('<a href="#" role="button" class="next-mail">').attr("aria-label",m("Next message")).append($('<i class="fa fa-chevron-down" aria-hidden="true">')))).attr("role","navigation"))}}),w.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",m("Conversation")),this.$messages=$('<div class="thread-view list-view" role="region">')).on("scroll",this.onScrollEnd.bind(this)))}}),w.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",m("Open all messages")).tooltip({animation:!1,container:"body",placement:"left",title:m("Open/close all messages")}))}}),w.point("io.ox/mail/thread-view/header").extend({id:"subject",index:200,draw:function(e){var t=e.view.collection.length===1,n=e.view.model.toJSON(),u=e.view.threaded&&v.threads.subject(n)||n.subject;this.append($('<h1 class="subject">').text(S.getSubject(u,t)))}});var o=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 w.Baton({view:this}),t=this.$el.find(".thread-view-list > .thread-view-header").empty(),n=e.view.collection.length===1,u=S.getSubject(e.view.model.toJSON(),n);this.collection.length>0&&w.point("io.ox/mail/thread-view/header").invoke("draw",t,e),this.$el.find(".thread-view").toggleClass("multiple-messages",this.collection.length>1).attr("aria-label",u)},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=this.getItems(),n=t.filter(".expanded"),u=n.length===0,f=u?"fa-angle-double-down":"fa-angle-double-up",a=this.$el.find(".toggle-all");a.attr("aria-label",m(u?"Open all messages":"Close all messages")),a.find("i").attr("class","fa "+f),(!e||!$(e.target).hasClass("expanded"))&&this.onScrollEnd()},10),onToggleAll:function(e){e.preventDefault();var t=this.getItems(),n=t.filter(".expanded"),u=n.length===0;d.pause(),this.collection.each(function(f){this.toggleMail(f.cid,u)},this),d.resume()},toggleMail:function(e,t){var n=this.$messages.children('[data-cid="'+$.escape(e)+'"]'),u=n.data("view");u&&u.toggle(t)},showMail:function(e){this.toggleMail(e,!0)},autoSelectMail:function(e){if(this.autoSelect){for(var t=0,n;n=this.collection.at(t);t++)if(t===this.collection.length-1||!S.isUnseen(n.toJSON())){if(e)return n.cid;this.showMail(n.cid);break}delete this.autoSelect;return}for(var u=this.collection.length-1,f;f=this.collection.at(u);u--)if(u===0||S.isUnseen(f.toJSON())){if(e)return f.cid;this.showMail(f.cid);break}},onScrollEnd:_.debounce(function(){var e=this.$el.find(".thread-view-list");this.getItems().each(function(){if($(this).hasClass("placeholder")&&this.offsetTop+$(this).height()>e.scrollTop()&&this.offsetTop<e.scrollTop()+e.height()){var t=$(this).data("view");t&&!t.$el.find("section.body").hasClass("loading")&&(t.placeholder=!1,t.render())}})},100),show:function(e,t){if(e=String(e).replace(/^thread\./,""),!(this.model&&this.model.cid===e)){var n=v.pool.get("detail"),u=n.get(e);if(!u){this.empty(),console.error("ThreadView.show(): Mail not found in pool",e,n);return}this.model&&this.stopListening(this.model),this.model=u,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(){if(this.model){var e=this.threaded?v.threads.get(this.model.cid):[this.model.toJSON()];if(e.length){var t=this.collection.length===0?"reset":"set";this.collection[t](e)}}},onReset:function(){if(this.collection.length===0){this.empty();return}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(
3)),this.zIndex()},onAdd:function(e){var t=e.get("index"),n=this.getItems(),u=this.renderListItem(e),f=this.$el.data("open");t<n.length?n.eq(t).before(u):this.$messages.append(u),u.position().top<=0&&this.$messages.scrollTop(this.$el.scrollTop()+u.outerHeight(!0)),this.zIndex(),this.updateHeader(),f&&(this.showMail(f),this.$el.data("open",null))},onRemove:function(e){var t=this.getItems(),n=t.filter(function(){return $(this).attr("data-cid")===e.cid}),u=n.length?n.attr("data-cid")&&t.first().attr("data-cid"):!1,f=this.$messages.scrollTop();n.length!==0&&(n.position().top<f&&this.$messages.scrollTop(f-n.outerHeight(!0)),n.remove(),t.length===1?this.empty():this.updateHeader(),t.length>1&&u&&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);break}},focusMessage:function(e,t){var n=this.getItems(),u=$(document.activeElement).closest(".list-item"),f=n.index(u);e.preventDefault(),f=f+t,!(f<0||f>=n.length)&&(u.data("view").toggle(!1),n.eq(f).focus().data("view").toggle(!0),n.eq(f).get(0).scrollIntoView(!0))},initialize:function(e){this.model=null,this.threaded=!0,this.collection=new F.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(v.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||(y.enable({container:this.$el,draggable:!0,selectable:".detail-view-header .contact-picture",simple:!0}),this.$el.on("mouseup",".detail-view-header .contact-picture",function(n){$(n.target).closest("article").focus()}));var t=$.proxy(this.onScrollEnd,this);this.$el.one("remove",function(){$(window).off("resize",t)}),e.app&&this.listenTo(e.app.props,"change:textPreview",function(n,u){this.$el.toggleClass("hide-text-preview",!u),t()}),$(window).on("resize",t)},getItems:function(){return this.$messages.children(".list-item")},render:function(){return this.$el.toggleClass("hide-text-preview",this.app?!this.app.useTextPreview():!0),w.point("io.ox/mail/thread-view").invoke("draw",this),this},renderListItem:function(e){var t=this,n=new k.View({threadview:this,supportsTextPreview:this.app?this.app.supportsTextPreviewConfiguration():!1,tagName:"article",data:e.toJSON(),disable:{"io.ox/mail/detail":"subject"}});return n.on("mail:detail:body:render",function(u){t.trigger("mail:detail:body:render",u)}),n.render(),this.nextAutoSelect===e.cid&&(delete this.nextAutoSelect,n.expand()),n.$el.attr({tabindex:-1})},zIndex:function(){var e=this.getItems(),t=e.length;e.each(function(n){$(this).css("zIndex",t-n)}),this.onScrollEnd()}});w.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",m("Conversation")),this.$messages=$('<ul class="thread-view list-view">')).on("scroll",this.onScrollEnd.bind(this)))}}),w.point("io.ox/mail/detail").extend({id:"remove-halo-link",index:"last",draw:function(){_.device("!smartphone")||this.find(".halo-link").removeClass("halo-link")}});var i=o.extend({initialize:function(){this.model=null,this.threaded=!0,this.collection=new F.Collection,this.listenTo(this.collection,{add:this.onAdd,remove:this.onRemove,reset:this.onReset}),this.listenTo(v.pool.get("detail"),{remove:this.onPoolRemove}),this.$messages=$()},renderListItem:function(e){var t=new D.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=v.pool.get("detail").get(e);
3if(t){var n=new D.DetailView({tagName:"li",data:t.toJSON()});return this.mail=t.toJSON(),n.render().toggle().$el.attr({role:"listitem",tabindex:"0"})}},render:function(){return w.point("io.ox/mail/thread-view/header").disable("toggle-all"),w.point("io.ox/mail/thread-view").invoke("draw",this),this}});return{Desktop:o,Mobile:i}});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(M,w,v,S,F,k,D,y,d,m,o,i){"use strict";var e=w.Action;new e("io.ox/mail/actions/compose",{capabilities:"!guest",action:function(l){ox.registry.call("mail-compose","open",null,{folderId:l.app.folder.get()})}}),new e("io.ox/mail/actions/reply-all",{collection:"some && toplevel",matches:t,action:f("replyall")});function t(l){if(!(l.selection.length>1)&&!(l.collection.has("multiple")&&!l.isThread)){var c=l.first();return S.hasFrom(c)&&!n(c)}}function n(l){return u(l.folder_id)||(l.flags&4)>0}function u(l){return _.contains(y.getFoldersByType("drafts"),l)}function f(l){return function(c){var h=c.first(),L=c.threadView||(c.app?c.app.threadView:void 0),s=L?L.collection.get(_.cid(h)):void 0;require(["io.ox/mail/compose/checks"],function(x){x.composeWithoutExternalImages(h,s).then(function(C){x.replyToMailingList(_.cid(h),l,h).then(function(N){ox.registry.call("mail-compose","open",{type:N,original:{folderId:h.folder_id,id:h.id,security:h.security},excludeImages:C})})})})}}function a(l){l&&l.e&&l.e.clientX&&l.e.clientY||$('.io-ox-mail-window .list-item[tabindex="0"]').trigger("focus")}new e("io.ox/mail/actions/reply",{collection:"some && toplevel",matches:t,action:f("reply")}),new e("io.ox/mail/actions/forward",{capabilities:"!guest",collection:"some && toplevel",action:function(l){var c=l.selection&&l.selection.length>1,h=c?l.selection.map(function(x){return _.cid(_.cid(x).replace(/^thread./,""))}):[l.first()],L=l.threadView||(l.app?l.app.threadView:void 0),s=L?L.collection.get(_.cid(h[0])):void 0;require(["io.ox/mail/compose/checks"],function(x){x.composeWithoutExternalImages(h[0],s).then(function(C){h=h.map(function(N){return{id:N.id,folderId:N.folder_id,security:N.security}}),ox.registry.call("mail-compose","open",{type:"forward",original:h,excludeImages:C})})})}}),new e("io.ox/mail/actions/delete",{collection:"toplevel && some && delete",action:"io.ox/mail/actions/delete"}),new e("io.ox/mail/actions/edit",{collection:"one && toplevel",matches:function(l){var c=l.first();return c&&n(c)},action:function(l){var c=l.first(),h=_(ox.ui.apps.models).find(function(L){return L.refId===c.id});if(h)return h.launch();ox.registry.call("mail-compose","open",{type:"edit",original:{folderId:c.folder_id,id:c.id,security:c.security}})}}),new e("io.ox/mail/actions/edit-copy",{collection:"one && toplevel",matches:function(l){var c=l.first();return c&&n(c)},action:function(l){var c=l.first();ox.registry.call("mail-compose","open",{type:"copy",original:{folderId:c.folder_id,id:c.id,security:c.security}}).done(function(h){var L=h.app.model;L.set("subject",i("[Copy] %1$s",L.get("subject")))})}}),new e("io.ox/mail/actions/source",{collection:"some && toplevel",matches:function(l){if(!(l.selection&&l.selection.length>1))return!(l.collection.has("multiple")&&!l.isThread)},action:"io.ox/mail/actions/source"}),new e("io.ox/mail/actions/filter",{capabilities:"mailfilter_v2",collection:"some && toplevel",matches:function(l){return!(l.collection.has("multiple")&&!l.isThread)},action:function(l){require(["io.ox/mail/mailfilter/settings/filter"],function(c){c.initialize().then(function(h,L,s){var x=s.model.protectedMethods.buildFactory("io.ox/core/mailfilter/model",s.api),C={data:{obj:x.create(s.model.protectedMethods.provideEmptyModel())}},N={id:"allof",tests:[_.copy(s.filterDefaults.tests.subject),s.filterDefaults.tests.address?_.copy(s.filterDefaults.tests.address):_.copy(s.filterDefaults.tests.from)]};N.tests[0].values=[l.data.subject],N.tests[1].values=[l.data.from[0][1]],C.data.obj.set("test",N),M.point("io.ox/sett
3ings/mailfilter/filter/settings/detail").invoke("draw",void 0,C,L)})})}}),new e("io.ox/mail/actions/print",{device:"!smartphone",collection:"some && (read || !toplevel)",action:function(l){D.request("io.ox/mail/print",l.array())}}),new e("io.ox/mail/actions/flag",{toggle:o.get("features/flag/star"),collection:"some",matches:function(l){return!_(l.array()).every(S.isFlagged)},action:function(l){v.flag(l.data,!0).then(function(){a(l)})}}),new e("io.ox/mail/actions/unflag",{toggle:o.get("features/flag/star"),collection:"some",matches:function(l){return _(l.array()).any(S.isFlagged)},action:function(l){v.flag(l.data,!1).then(function(){a(l)})}}),new e("io.ox/mail/actions/archive",{capabilities:"archive_emails",collection:"some && delete",matches:function(l){return l.array().reduce(b,!0)},action:function(l){var c=_.isArray(l.data)?l.data:[l.data];v.archive(k.ignoreSentItems(c)).then(function(){a(l)})}}),new e("io.ox/mail/actions/triggerFlags",{collection:"some",action:function(){var l=$(".dropdown.flag-picker").data();$(document).trigger("click.bs.dropdown.data-api"),_.delay(function(){l.view.open()},200)}});function b(l,c){return!(l===!1||!y.isPrimary(c.folder_id)||y.isUnifiedFolder(c.folder_id)||y.is("archive",c.folder_id))}new e("io.ox/mail/actions/move",{collection:"toplevel && some && delete",action:p("move",i("Move"),{single:i("Email has been moved"),multiple:i("Emails have been moved")})}),new e("io.ox/mail/actions/copy",{collection:"toplevel && some",action:p("copy",i("Copy"),{single:i("Email has been copied"),multiple:i("Emails have been copied")})});function p(l,c,h){return function(L){require(["io.ox/mail/actions/copyMove"],function(s){s.multiple({list:L.array(),baton:L,type:l,label:c,success:h})})}}new e("io.ox/mail/actions/mark-unread",{collection:"toplevel && change:seen",matches:function(l){return l.array().reduce(function(c,h){return c||!S.isUnseen(h)},!1)},action:function(l){var c=k.ignoreSentItems(l.array());v.markUnread(c).then(function(){a(l)})}}),new e("io.ox/mail/actions/mark-read",{collection:"toplevel && change:seen",matches:function(l){return l.array().reduce(function(c,h){return c||S.isUnseen(h)},!1)},action:function(l){var c=k.ignoreSentItems(l.array());v.markRead(c).then(function(){a(l)})}}),new e("io.ox/mail/actions/spam",{capabilities:"spam",collection:"some && delete && toplevel",matches:function(l){return l.array().reduce(T,!0)},action:function(l){v.markSpam(l.array()).done(function(c){var h=_(c).chain().pluck("error").compact().first().value();h&&d.yell(h),a(l)}).fail(function(c){d.yell(c),v.trigger("refresh.all")})}});function T(l,c){return!(l===!1||!y.isPrimary(c.folder_id)||y.is("spam|confirmed_spam|sent|drafts",c.folder_id)||S.isSpam(c))}new e("io.ox/mail/actions/nospam",{capabilities:"spam",collection:"some && delete && toplevel",matches:function(l){return l.array().reduce(r,!0)},action:function(l){v.noSpam(l.array()).done(function(c){var h=_(c).chain().pluck("error").compact().first().value();h&&d.yell(h),a(l)})}});function r(l,c){if(l===!1||!y.isPrimary(c.folder_id))return!1;var h=y.getFoldersByType("spam").concat(y.getFoldersByType("confirmed_spam"));return h.indexOf(c.folder_id)<0?!1:y.is("spam|confirmed_spam",c.folder_id)||S.isSpam(c)}new e("io.ox/mail/actions/save",{device:"!ios",collection:"some && read",action:function(l){require(["io.ox/mail/actions/save"],function(c){c.multiple(l.array())})}}),new e("io.ox/mail/actions/add-to-portal",{capabilities:"portal",collection:"one && toplevel",action:function(l){require(["io.ox/mail/actions/addToPortal"],function(c){c(l)})}}),new e("io.ox/mail/actions/sendmail",{collection:"some",action:function(l){require(["io.ox/core/api/user"],function(c){y.getAllSenderAddresses().done(function(h){c.getCurrentUser().done(function(L){var s=l.data,x=s.to.concat(s.cc).concat(s.bcc).concat(s.from),C=_.compact([L.get("email1"),L.get("email2"),L.get("email3")]);C=C.concat(_(h).pluck(1));var N=_(x).filter(function(I){return C.indexOf(I[1])<0});N.length===0&&(N=x),N=_(N).uniq(!1,function(I){return I[1]}),ox.registry.call("mail-compose","open",{to:N})})})})}}),new e("io.ox/mail/actions/createdistlist",{capabilities:"contacts",collection:"some",action:function(l){require(["i
3o.ox/mail/actions/create"],function(c){c.createDistributionList(l)})}}),new e("io.ox/mail/actions/invite",{capabilities:"calendar",collection:"some",action:function(l){require(["io.ox/mail/actions/create"],function(c){c.createAppointment(l)})}}),new e("io.ox/mail/actions/reminder",{capabilities:"tasks",collection:"one && toplevel",action:function(l){require(["io.ox/mail/actions/reminder"],function(c){c(l)})}}),new e("io.ox/mail/attachment/actions/view",{collection:"some",matches:function(l){return l.array().some(function(c){var h=new F.Model(c);return m.canView(h)})},action:function(l){var c=l.list||l.array(),h=l.array()[0];ox.load(["io.ox/mail/actions/viewer"]).done(function(L){L({files:c,selection:h,restoreFocus:l.restoreFocus,openedBy:l.openedBy})})}}),new e("io.ox/mail/attachment/actions/download",{device:"!ios || ios >= 11",collection:"some",action:function(l){var c=l.array(),h=c.length===1?v.getUrl(_(c).first(),"download"):v.getUrl(c,"zip");require(["io.ox/core/download"],function(L){L[_.device("ios")?"window":"url"](h)})}}),new e("io.ox/mail/attachment/actions/save",{capabilities:"infostore",collection:"some",action:function(l){require(["io.ox/mail/actions/attachmentSave"],function(c){c.multiple(l.array())})}}),new e("io.ox/mail/attachment/actions/vcard",{capabilities:"contacts",collection:"one",matches:function(l){var c=l.first(),h=/\.vcf$/i.test(c.filename),L=/^text\/(x-)?vcard/i.test(c.content_type),s=/^text\/directory/i.test(c.content_type);return h&&s||L},action:function(l){require(["io.ox/mail/actions/vcard"],function(c){c(l)})}}),new e("io.ox/mail/attachment/actions/ical",{capabilities:"calendar",collection:"some",matches:function(l){var c=l.first(),h=c.filename&&!!c.filename.match(/\.ics$/i),L=c.content_type&&!!c.content_type.match(/^text\/calendar/i),s=c.content_type&&!!c.content_type.match(/^application\/ics/i),x=v.pool.get("detail").get(_.cid(c.mail));return x.get("imipMail")?!1:h||L||s},action:function(l){require(["io.ox/mail/actions/ical"],function(c){c(l)})}});var g=[{id:"reply",prio:"hi",mobile:"lo",title:i("Reply"),ref:"io.ox/mail/actions/reply",section:"standard"},{id:"reply-all",prio:"hi",mobile:"hi",title:i("Reply all"),ref:"io.ox/mail/actions/reply-all",section:"standard"},{id:"forward",prio:"hi",mobile:"hi",title:i("Forward"),ref:"io.ox/mail/actions/forward",section:"standard"},{id:"edit",prio:"hi",mobile:"lo",title:i("Edit"),ref:"io.ox/mail/actions/edit",section:"standard"},{id:"delete",prio:"hi",mobile:"lo",title:i("Delete"),ref:"io.ox/mail/actions/delete",section:"standard"},{id:"spam",prio:"lo",mobile:"lo",title:i("Mark as spam"),ref:"io.ox/mail/actions/spam",section:"flags"},{id:"nospam",prio:"lo",mobile:"lo",title:i("Not spam"),ref:"io.ox/mail/actions/nospam",section:"flags"},{id:"sendmail",prio:"lo",title:i("Send new email"),ref:"io.ox/mail/actions/sendmail",section:"recipients"},{id:"invite-to-appointment",prio:"lo",title:i("Invite to appointment"),ref:"io.ox/mail/actions/invite",section:"recipients"},{id:"save-as-distlist",prio:"lo",title:i("Save as distribution list"),ref:"io.ox/mail/actions/createdistlist",section:"recipients"},{id:"move",prio:"lo",title:i("Move"),ref:"io.ox/mail/actions/move",section:"file-op"},{id:"copy",prio:"lo",title:i("Copy"),ref:"io.ox/mail/actions/copy",section:"file-op"},{id:"archive",prio:"lo",title:i.pgettext("verb","Archive"),ref:"io.ox/mail/actions/archive",section:"file-op"},{id:"print",prio:"lo",mobile:"none",title:i("Print"),ref:"io.ox/mail/actions/print",section:"export"},{id:"save-as-eml",prio:"lo",mobile:"none",title:i("Save as file"),ref:"io.ox/mail/actions/save",section:"export"},{id:"source",prio:"lo",mobile:"lo",title:i("View source"),ref:"io.ox/mail/actions/source",section:"export"},{id:"filter",prio:"lo",mobile:"none",title:i("Create filter rule"),ref:"io.ox/mail/actions/filter",section:"file-op"},{id:"reminder",prio:"lo",mobile:"none",title:i("Reminder"),ref:"io.ox/mail/actions/reminder",section:"keep"},{id:"add-to-portal",prio:"lo",mobile:"none",title:i("Add to portal"),ref:"io.ox/mail/actions/add-to-portal",section:"keep"}];M.point("io.ox/mail/links/inline").extend(g.map(function(l,c){return l.index=100+c*100,l.mobile=l.mobile||l.prio||"none",l})),new e("io.ox/mail/actions/label",{id:"label",collection:"toplevel some",action:$.noop}),M.point("io.ox/mail/attachment/links").extend({id:"vcard",mobile:"hi",index:50,title:i("Add to address book"),ref:"io.ox/mail/attachment/actions/vcard"},{id:"ical",mobile:"hi",index:50,title:i("Add to calendar"),ref:"io.ox/mail/attachment/actions/ical"},{id:"view_new",index:100,mobile:"hi",title:i("View"),ref:"io.ox/mail/attachment/actions/view"},{id:"download",index:400,mobile:"hi",title:i("Download"),ref:"io.ox/mail/attachment/actions/download"},{id:"save",index:500,mobile:"hi",title:i("Save to %1$s",i.pgettext("app","Drive")),ref:"io.ox/mail/attachment/actions/save"},{id:"viewer",index:600,mobile:"hi",label:i("View"),ref:"io.ox/mail/actions/viewer"}),M.point("io.ox/mail/dnd/actions").extend({id:"importEML",index:10,label:i("Drop here to import this email"),action:function(l,c){c.queues.importEML.offer(l,{folder:c.folder.get()})}}),M.point("io.ox/mail/folderview/premium-area").extend({index:100,id:"inline-premium-links",draw:function(l){this.append(l.renderActions("io.ox/mail/links/premium-links",l))}})});define("io.ox/mail/actions/attachmentQuota",["io.ox/core/notifications","io.ox/core/strings","settings!io.ox/core","gettext!io.ox/mail"],function(M,w,v,S){"use strict";function F(D,y){return D.map(function(d){var m=d.get("contentDisposition")||"ATTACHMENT";if(m!==y)return 0;var o=(d.get("origin")||{}).file;return o?o.size||0:d.get("size")>=0?d.get("size"):0}).reduce(function(d,m){return d+m},0)}function k(D,y,d){var m=y,o=v.get("properties"),i=D.get("attachments"),e=F(i,"ATTACHMENT"),t=F(i,"INLINE"),n=e+t||0,u=D.get("content").replace(/src="data:image[^"]*"/g,"").length,f=require("io.ox/core/capabilities").has("publish_mail_attachments"),a=D.get("sharedAttachments").enabled,b,p,T,r={};return b=f?-1:o.attachmentQuotaPerFile,T=f?-1:o.attachmentQuota,p=f?-1:require("settings!io.ox/mail").get("compose/maxMailSize"),d=d||0,(m&&m.length||d)&&_.find(m,function(g){var l=g.filename||g.name||g.subject,c=g.file_size||g.size;if(c){if(n+=c,T>0&&n>T)return r.error=S('The file "%1$s" cannot be uploaded because it exceeds the total attachment size limit of %2$s',l,w.fileSize(T)),r.reason="filesize",!0;
3if(b>0&&c>b)return r.error=S('The file "%1$s" cannot be uploaded because it exceeds the maximum file size of %2$s',l,w.fileSize(b)),r.reason="filesize",!0;if((f||a)&&o.infostoreMaxUploadSize>0&&c>o.infostoreMaxUploadSize)return r.error=S('The file "%1$s" cannot be uploaded because it exceeds the attachment publication maximum file size of %2$s',l,w.fileSize(o.infostoreMaxUploadSize)),r.reason="filesizeAutoPublish",!0}}),(f||a)&&o.infostoreQuota>0&&e>o.infostoreQuota-(o.infostoreUsage||0)?(r.error=S("The attachment cannot be uploaded because it exceeds the infostore quota limit of %2$s",w.fileSize(o.infostoreQuota)),r.reason="quotaAutoPublish",!0):(n+=d+u-(a?e:0),p>0&&n>p&&(D.changed&&D.changed.sharedAttachments&&D.changed.sharedAttachments.enabled===!1?r.error=S("The uploaded attachment exceeds the maximum email size of %1$s",w.fileSize(p)):r.error=S("The file cannot be uploaded because it exceeds the maximum email size of %1$s",w.fileSize(p)),r.reason="mailsize"),r.error?(M.yell("error",r.error),!1):!0)}return{checkQuota:k}});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(M,w,v,S,F,k,D,y,d,m,o){"use strict";var i=M.point("io.ox/mail/toolbar/links"),e=$.when(),t={compose:{prio:"hi",mobile:"hi",title:o("Compose"),tooltip:o("Compose new email"),drawDisabled:!0,ref:"io.ox/mail/actions/compose"},edit:{prio:"hi",mobile:"lo",title:o("Edit draft"),ref:"io.ox/mail/actions/edit"},"edit-copy":{prio:"hi",mobile:"lo",title:o("Edit copy"),ref:"io.ox/mail/actions/edit-copy"},reply:{prio:"hi",mobile:"lo",icon:"fa-reply",title:o("Reply to sender"),drawDisabled:!0,ref:"io.ox/mail/actions/reply"},"reply-all":{prio:"hi",mobile:"lo",icon:"fa-reply-all",title:o("Reply to all recipients"),drawDisabled:!0,ref:"io.ox/mail/actions/reply-all"},forward:{prio:"hi",mobile:"lo",icon:"fa-mail-forward",title:o("Forward"),drawDisabled:!0,ref:"io.ox/mail/actions/forward"},delete:{prio:"hi",mobile:"lo",icon:"fa-trash-o",title:o("Delete"),drawDisabled:!0,ref:"io.ox/mail/actions/delete"},spam:{prio:"hi",mobile:"lo",icon:"fa-ban",title:o("Mark as spam"),ref:"io.ox/mail/actions/spam"},nospam:{prio:"hi",mobile:"lo",icon:"fa-thumbs-up",title:o("Not spam"),ref:"io.ox/mail/actions/nospam"},category:{prio:"hi",mobile:"none",icon:"fa-folder-open-o",title:o("Set category"),ref:"io.ox/mail/actions/category",customize:function(r){m.get("categories/enabled")&&require(["io.ox/mail/categories/picker"],function(g){g.attach(this,{props:r.app.props,data:r.data})}.bind(this))}},color:{prio:"hi",mobile:"none",icon:"fa-bookmark-o",title:o("Set color"),ref:"io.ox/mail/actions/color",customize:function(r){m.get("features/flag/color")&&v.attach(this,{data:r.data})}},flag:{prio:"hi",mobile:"lo",icon:"fa-star",title:o.pgettext("verb","Flag"),ref:"io.ox/mail/actions/flag"},unflag:{prio:"hi",mobile:"lo",icon:"fa-star-o",title:o.pgettext("verb","Unflag"),ref:"io.ox/mail/actions/unflag"},archive:{prio:"hi",mobile:"lo",icon:"fa-archive",title:o.pgettext("verb","Archive"),ref:"io.ox/mail/actions/archive"},"mark-read":{prio:"lo",mobile:"lo",title:o("Mark as read"),ref:"io.ox/mail/actions/mark-read",section:"flags"},"mark-unread":{prio:"lo",mobile:"lo",title:o("Mark as unread"),ref:"io.ox/mail/actions/mark-unread",section:"flags"},move:{prio:"lo",mobile:"lo",title:o("Move"),ref:"io.ox/mail/actions/move",section:"file-op"},copy:{prio:"lo",mobile:"lo",title:o("Copy"),ref:"io.ox/mail/actions/copy",section:"file-op"},print:{prio:"lo",mobile:"lo",title:o("Print"),ref:"io.ox/mail/actions/print",section:"export"},"save-as-eml":{prio:"lo",mobile:"lo",title:o("Save as file"),ref:"io.ox/mail/actions/save",section:"export"},source:{prio:"lo",mobile:"none",title:o("View source"),ref:"io.ox/mail/actions/source",section:"export"},reminder:{prio:"lo",mobile:"none",title:o("Reminder"),ref:"io.ox/mail/actions/reminder",section:"keep"},"add-to-portal":{prio:"lo",mobile:"none",title:o("Add to portal"),ref:"io.ox/mail/actions/add-to-portal",section:"keep"}},n=0;_(t).each(function(r,g){i.extend(_.extend({id:g,index:n+=100},r))});var u=w.Action;new u("io.ox/mail/actions/category",{capabilities:"mail_categories",collection:"some",matches:function(r){return!!r.app.props.get("categories")},action:$.noop}),new u("io.ox/mail/actions/color",{toggle:m.get("features/flag/color"),collection:"some",action:$.noop}),M.point("io.ox/mail/toolbar/links").extend({id:"view-dropdown",index:1e4,custom:!0,draw:function(r){if(!_.device("smartphone")){var g=new k({el:this,caret:!0,model:r.app.props,label:o("View")});g.render().$el.addClass("dropdown pull-right").attr("data-dropdown","view"),M.point("io.ox/mail/toolbar/links/view-dropdown").invoke("draw",g,r)}}}),M.point("io.ox/mail/toolbar/links/view-dropdown").extend({id:"layout",index:100,draw:function(){this.group(o("Layout")).option("layout","vertical",o("Vertical"),{radio:!0,group:!0}
3),_.device("desktop")&&this.option("layout","compact",o("Compact"),{radio:!0,group:!0}),this.option("layout","horizontal",o("Horizontal"),{radio:!0,group:!0}).option("layout","list",o("List"),{radio:!0,group:!0}).divider()}}),M.point("io.ox/mail/toolbar/links/view-dropdown").extend({id:"categories",index:200,draw:function(r){F.has("mail_categories")&&!_.device("smartphone")&&this.group(o("Inbox")).option("categories",!0,o("Use categories"),{group:!0}).link("categories-config",o("Configure")+" \u2026",_.bind(p,this,r.app.props),{icon:!0,group:!0}).divider()}}),M.point("io.ox/mail/toolbar/links/view-dropdown").extend({id:"options",index:300,draw:function(r){var g=this;g.group(o("Options")).option("folderview",!0,o("Folder view"),{group:!0}),d.get("selectionMode")!=="alternative"&&g.option("checkboxes",!0,o("Checkboxes"),{group:!0}),r.app.supportsTextPreview()&&g.option("textPreview",!0,o("Text preview"),{group:!0}),g.option("contactPictures",!0,o("Contact pictures"),{group:!0}).option("exactDates",!0,o("Exact dates"),{group:!0}).option("alwaysShowSize",!0,o("Message size"),{group:!0}).divider(),g.listenTo(r.app.props,"change:layout",f),l(),r.app.on("folder:change",l);function l(){g.$('[data-name="textPreview"]').toggle(r.app.supportsTextPreviewConfiguration())}f.call(g)}}),M.point("io.ox/mail/toolbar/links/view-dropdown").extend({id:"vacation-notice",index:400,draw:function(){var r,g=y.getConfig().then(function(c){r=!!_(c.actioncmds).findWhere({id:"vacation"})},function(){r=!1});return e=e.then(function(){return g}),function(){!F.has("mailfilter_v2")||!r||this.link("vacation-notice",o("Vacation notice"),T)}}()}),M.point("io.ox/mail/toolbar/links/view-dropdown").extend({id:"mail-attachments",index:500,draw:function(r){d.get("folder/mailattachments",{}).all&&this.link("attachments",o("All attachments"),b.bind(null,r.app))}}),M.point("io.ox/mail/toolbar/links/view-dropdown").extend({id:"statistics",index:600,draw:function(r){this.link("statistics",o("Statistics"),a.bind(null,r.app))}});function f(){if(this.model){var r=this.$el.find('[data-name="contactPictures"]').parent(),g=this.model.get("layout");g==="vertical"||g==="compact"?r.show():r.hide()}}function a(r,g){g.preventDefault(),require(["io.ox/mail/statistics"]).done(function(l){l.open(r)})}function b(r,g){g.preventDefault();var l=d.get("folder/mailattachments",{});ox.launch("io.ox/files/main",{folder:l.all}).done(function(){this.folder.set(l.all)})}function p(r){require(["io.ox/mail/categories/edit"],function(g){g.open(r)})}function T(r){r.preventDefault(),require(["io.ox/mail/mailfilter/vacationnotice/view"],function(g){g.open()})}return M.point("io.ox/mail/mediator").extend({id:"toolbar",index:1e4,setup:function(r){if(!_.device("smartphone")){var g=new D({point:"io.ox/mail/toolbar/links",title:r.getTitle()});r.getWindow().nodes.body.addClass("classic-toolbar-visible").prepend(g.$el),r.updateToolbar=function(l){var c={data:[],folder_id:this.folder.get(),app:this,isThread:this.isThreaded()};g.setSelection(l.map(_.cid),function(){return c.data=S.resolve(l,c.isThread),c})},r.forceUpdateToolbar=function(l){g.selection=null,this.updateToolbar(l)}}}}),M.point("io.ox/mail/mediator").extend({id:"update-toolbar",index:10200,setup:function(r){_.device("smartphone")||(r.updateToolbar([]),r.listView.on("selection:change",function(){r.updateToolbar(r.listView.selection.get())}),r.listView.on("change",function(g){"flags"in g.changed&&r.forceUpdateToolbar(r.listView.selection.get())}))}}),e});define("io.ox/mail/import",["io.ox/core/extensions","io.ox/mail/api","io.ox/core/api/account","
3io.ox/core/tk/upload","io.ox/core/dropzone","io.ox/core/notifications","gettext!io.ox/mail"],function(M,w,v,S,F,k,D){"use strict";M.point("io.ox/mail/mediator").extend({id:"import-eml",index:1e12,setup:function(y){if(y.settings.get("features/importEML")!==!1){var d=y.getWindow();y.queues={importEML:S.createQueue({start:function(){d.busy()},progress:function(i){return w.importEML({file:i.file,folder:i.options.folder}).done(function(e){var t=_(e.data||[]).first()||{};i.response=t,"Error"in t?k.yell("error",t.Error):k.yell("success",D("Mail has been imported"))}).fail(k.yell)},stop:function(){d.idle()},type:"importEML"})};var m=F.Inplace.extend({isSupported:function(){return!v.isUnifiedFolder(y.folder.get())}}),o=new m({caption:D("Drop EML file here for import"),filter:/\.eml$/i});o.on({show:function(){y.right.removeClass("preview-visible"),y.listControl.$el.stop().hide()},hide:function(){y.listControl.$el.fadeIn("fast")},drop:function(i){y.queues.importEML.offer(i,{folder:y.folder.get()})},invalid:function(){k.yell("error",D("Mail was not imported. Only .eml files are supported."))}}),y.left.append(o.render().$el.addClass("abs"))}}})});define("io.ox/mail/folderview-extensions",["io.ox/core/extensions","io.ox/core/capabilities","gettext!io.ox/mail"],function(M,w,v){"use strict";var S="io.ox/mail/folderview";function F(k){k.preventDefault(),require(["io.ox/mail/accounts/settings"],function(D){D.mailAutoconfigDialog(k)})}w.has("multiple_mail_accounts")&&M.point(S+"/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(v("Add mail account")).on("click",F)))}})});define("io.ox/mail/mobile-navbar-extensions",["io.ox/core/extensions"],function(M){"use strict";M.point("io.ox/mail/mobile/navbar").extend({id:"btn-left",index:100,draw:function(w){w.left&&this.$el.append($('<div class="navbar-action left">').append($("<a>").append($('<i class="fa fa-chevron-left" aria-hidden="true">'),w.left)))}}),M.point("io.ox/mail/mobile/navbar").extend({id:"header",index:200,draw:function(w){this.$el.append($('<div class="navbar-title">').text(w.title))}}),M.point("io.ox/mail/mobile/navbar").extend({id:"btn-right",index:300,draw:function(w){w.right&&this.$el.append($('<div class="navbar-action right">').append($("<a>").append(w.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(M,w,v,S,F,k){"use strict";var D={compose:{prio:"hi",mobile:"hi",title:k("Compose"),icon:"fa-pencil",ref:"io.ox/mail/actions/compose",drawDisabled:!0},reply:{prio:"hi",mobile:"hi",icon:"fa-reply",title:k("Reply to sender"),ref:"io.ox/mail/actions/reply",drawDisabled:!0},"reply-all":{prio:"hi",mobile:"hi",icon:"fa-reply-all",title:k("Reply to all recipients"),ref:"io.ox/mail/actions/reply-all",drawDisabled:!0},forward:{prio:"hi",mobile:"hi",icon:"fa-mail-forward",title:k("Forward"),ref:"io.ox/mail/actions/forward",drawDisabled:!0},delete:{prio:"hi",mobile:"hi",icon:"fa-trash-o",title:k("Delete"),ref:"io.ox/mail/actions/delete",drawDisabled:!0},move:{prio:"hi",mobile:"lo",title:k("Move"),ref:"io.ox/mail/actions/move",section:"file-op",drawDisabled:!0},"mark-read":{prio:"hi",mobile:"lo",title:k("Mark as read"),ref:"io.ox/mail/actions/mark-read",section:"flags",drawDisabled:!0},"mark-unread":{prio:"hi",mobile:"lo",title:k("Mark as unread"),ref:"io.ox/mail/actions/mark-unread",section:"flags",drawDisabled:!0},copy:{prio:"hi",mobile:"lo",title:k("Copy"),ref:"io.ox/mail/actions/copy",section:"file-op"},archive:{prio:"hi",mobile:"lo",icon:"fa-archive",title:k.pgettext("verb","Archive")},spam:{prio:"hi",mobile:"lo",title:k("Mark as spam"),ref:"io.ox/mail/actions/spam"},nospam:{prio:"hi",mobile:"lo",title:k("Not spam"),ref:"io.ox/mail/actions/nospam"},flag:{prio:"hi",mobile:"lo",title:k("Flag"),ref:"io.ox/mail/actions/flag"},unflag:{prio:"hi",mobile:"lo",title:k("Unflag"),ref:"io.ox/mail/actions/unflag"},color:{prio:"hi",mobile:"lo",title:k("Set color..."),ref:"io.ox/mail/actions/triggerFlags"}},y={listView:"io.ox/mail/mobile/toolbar/listView",multiselect:"io.ox/mail/mobile/toolbar/listView/multiselect",threadView:"io.ox/mail/mobile/toolbar/threadView",detailVie
3w:"io.ox/mail/mobile/toolbar/detailView"};v.addAction(y.listView,D,["compose"]),v.addAction(y.multiselect,D,["compose","delete","forward","spam","nospam","flag","unflag","mark-read","mark-unread","move","archive"]),v.addAction(y.threadView,D,["compose"]),v.addAction(y.detailView,D,["reply","reply-all","delete","forward","mark-read","mark-unread","spam","flag","unflag","nospam","copy","color"]),v.createToolbarExtensions(y);var d=_.debounce(function(m){if(m){var o=this.isThreaded(),i=S.resolve(m,o);i.length===0&&(o=!1),i=i.length===1?i[0]:i;var e=M.Baton({data:i,isThread:o,selection:m,app:this}),t=this.pages.getCurrentPage();t.navbar.setBaton(e),t.toolbar&&t.toolbar.setBaton(e),t.secondaryToolbar&&t.secondaryToolbar.setBaton(e)}},50);M.point(y.multiselect).extend({id:"update-button-states",index:1e4,draw:function(m){m.data.length===0?$("a.mobile-toolbar-action, .mobile-toolbar-action a",this).addClass("ui-disabled"):$("a.mobile-toolbar-action, .mobile-toolbar-action a",this).removeClass("ui-disabled")}}),M.point("io.ox/mail/mediator").extend({id:"toolbar-mobile",index:10100,setup:function(m){_.device("smartphone")&&(m.updateToolbar=d)}}),M.point("io.ox/mail/mediator").extend({id:"update-toolbar-mobile",index:10300,setup:function(m){_.device("smartphone")&&(m.updateToolbar(),m.listView.on("selection:change change selection:action",function(){var o=m.pages.getCurrentPage();o.name!=="folderTree"&&(o.toolbar&&o.toolbar.baton.threadMember||m.updateToolbar(m.listView.selection.get()))}),m.threadView.$el.on("showmail",function(){var o=M.Baton({threadMember:!0,data:m.threadView.mail,isThread:!1,app:m});m.pages.getPageObject("detailView").toolbar.setBaton(o)}))}}),M.point("io.ox/mail/mediator").extend({id:"change-mode-toolbar-mobile",index:10400,setup:function(m){_.device("smartphone")&&m.props.on("change:checkboxes",function(o,i){var e=m.pages.getCurrentPage();m.pages.toggleSecondaryToolbar(e.name,i)})}})});define("io.ox/core/util",["io.ox/core/extensions","settings!io.ox/core","static/3rd.party/purify.min.js"],function(M,w,v){"use strict";var S=30,F=ox.serverConfig.prefix||"/ajax",k=/(\S{30,})/g,D=/(\S{30})/g,y=/([^.,;:-=()]+[.,;:-=()])/,d=new RegExp("^"+F);M.point("io.ox/core/person").extend({id:"default",index:100,draw:function(i){i.html!==!1?this.append(i.html):this.text(i.halo.name)}});var m=/(((http|https|ftp|ftps):\/\/|www\.)[^\s"]+)/gim,o={replacePrefix:function(i,e){return i=i||"",e=e||"",i.replace(d,e)},renderPersonalName:function(i,e){i=_.extend({$el:void 0,html:!1,tagName:"span"},i);var t={name:i.full_name||i.display_name||i.name||i.cn||i.email,email:i.email,email1:i.email,user_id:i.user_id};i.contact&&(t.contact=i.contact),e&&e.nohalo&&(i.$el=$("<span>"));var n=new M.Baton({data:e||{},halo:t,html:i.html}),u=i.$el||(t.email||t.user_id?$('<a href="#" role="button" class="halo-link">').attr("title",t.email).data(t):$("<"+i.tagName+">"));return M.point("io.ox/core/person").invoke("draw",u.empty(),n),u},unescapeDisplayName:function(i){for(i=$.trim(i||"");i.length>1&&/^["'\\\s]/.test(i[0])&&i[0]===i.substr(-1);)i=$.trim(i.substr(1,i.length-2));return i=i.replace(/\\"/g,'"'),i=i.replace(/\\{2}/g,"\\"),i},fixUrlSuffix:function(i,e){return e=e||"",i=i.replace(/([.,;!?<>(){}[\]|]+)$/,function(t,n){return n===")"&&(i.match(/\)/g)||[]).length===(i.match(/\(/g)||[]).length||n==="]"&&(i.match(/\]/g)||[]).length===(i.match(/\[/g)||[]).length?n:(e=n+e,"")}),{url:i,suffix:e}},removeQuotes:function(i){return $.trim(i).replace(/^["'\\]+|["'\\]+$/g,"").replace(/\\?"/g,"")},urlify:function(i){return i=(i||"").replace(m,function(e){var t=this.fixUrlSuffix(e),n=$('<a target="_blank" rel="noopener">').attr("href",t.url).append(o.breakableHTML(t.url));return n.prop("outerHTML")+t.suffix}.bind(this)),i=v.sanitize(i,{ALLOW_DATA_ATTR:!1,ALLOWED_TAGS:["a","wbr"],ALLOWED_ATTR:["target","rel","href"]}),i=o.injectAttribute(i,"a","rel","noopener"),i},injectAttribute:function(i,e,t,n){var u=document.createElement("div");return u.innerHTML=i,_(u.getElementsByTagName(e)).each(function(f){f.setAttribute(t,n)}),u.innerHTML},breakableHTML:function(i){var e=String(i||"").replace(k,function(t){return _(t.split(y)).map(function(n){return n.length===0?"":n.length<S?n+"\u200B":n.replace(D,"$1\u200B")}).join("")});return _(e.split("\u200B")).map(_.escape).join("<wbr>").replace(/\u00a0/g,"\xA0<wbr>")},breakableText:function(i){var e=String(i||"").replace(/(\S{20})/g,"$1\u200B");return e[e.length-1]==="\u200B"&&(e=e.slice(0,-1)),e},isValidMailAddress:function(){var i=/^"[^"]+"$/,e=/@/,t=/["\\,:; ]/,n=/^\./,u=/\.\./,f=/^\[(\d{1,3}\.){3}\d{1,3}\]$/,a=/^\[IPv6(:\w{0,4}){0,8}\]$/i,b=/[a-z0-9]$/i;function p(T){if(T==="")return!0;var r=T.lastIndexOf("@");if(r<=0)return!1;var g=T.substr(0,r),l=T.substr(r+1);return g.length>64&&g.length>0||l.length>255||!i.test(g)&&(e.test(g)||n.test(g)||u.test(g)||t.test(g))?!1:!!(f.test(l)||a.test(l)||b.test(l))}return function(T){return p($.trim(T))}}(),isValidPhoneNumber:function(){var i=/^\+?[0-9 .,;\-/()*#]+$/,e=/^\+\d{0,2}$/;function t(n){return n===""?!0:e.test(n)?!1:i.test(n)}return function(n){return t($.trim(n))}}(),getDeepLink:function(i,e){var t,n="";return e.folder_id===void 0?t="&folder="+encodeURIComponent(e.id):(t="&folder="+encodeURIComponent(e.folder_id),n="&id="+(/^[\d/]+$/.test(e.id)?e.id:encodeURIComponent(e.id))),ox.abs+ox.root+"/#!&app="+i+t+n},getAddresses:function(i){if(/^[^,;\s]+$/.test(i))return[i];var e=String(i).match(/("[^"]+"|'[^']+'|\w[\w\u00C0-\u024F.!#$%&'*+-/=?^_`{|}~]*)@[^,;>\x20\t\n]+|[\w\u00C0-\u024F][\w\u00C0-\u024F\-'\x20]+\s<[^>]+>|("[^"]+"|'[^']+')\s<[^>]+>/g)||[];return e.map(function(t){return t.replace(/^([^"]+)\s</,'"$1" <')})},getShardingRoot:function(){var i=location.host+ox.apiRoot,e=[].concat(w.get("shardingSubdomains",i));function t(n){for(var u=n.length-1,f=0;u;u--)f+=n.charCodeAt(u);return f}return function(n){var u=0;return n.indexOf("//"+i)===0&&(n=n.substr(i.length+2)),e.length>1&&(u=t(n)%e.length),/^\//.test(n)||(n="/"+n),ox.debug?"//"+i+n:"//"+e[u]+n}}(),getScrollBarWidth:_.memoize(function(){var i=$("<div>
3").css({visibility:"hidden",width:100,overflow:"scroll"}).appendTo("body"),e=$("<div>").css({width:"100%"}).appendTo(i).outerWidth();return i.remove(),100-e})};return o});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(M,w,v,S,F){"use strict";var k="//",D=function(o){var i=_.copy(o,!0);return i.folder=i.folder||i.folder_id,delete i.folder_id,i},y="id: folder_id:folder folder: recurrence_position:".split(" "),d=function(o){return _.isObject(o)?_(y).reduce(function(i,e){var t=e.split(":"),n=t[0],u=t[1]||t[0];return n in o&&(i[u]=o[n]),i},{}):o},m=function(o){o=$.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(u){return u.folder+k+(u.sortKey||u.sort)+"."+u.order+"."+(u.max||u.limit||0)},done:{},fail:{},pipe:{},params:{},filter:null},o||{}),o.id=o.id||o.module,_.each(o.requests,function(u){u.extendColumns&&(u.columns=m.extendColumns(u.extendColumns,o.module,u.columns),delete u.extendColumns)});var i={all:new w.SimpleCache(o.id+"-all"),list:new w.ObjectCache(o.id+"-list",!1,o.keyGenerator),get:new w.ObjectCache(o.id+"-get",!1,o.keyGenerator)},e={},t={},n={DELIM:k,options:o,cid:o.cid,getAll:function(u,f,a,b){var p=$.extend({},o.requests.all,u||{}),T=o.cid(p);f=f===void 0?!0:!!f,a=a||i.all;var r=function(){var l=o.params.all?o.params.all(_.copy(p,!0)):p;return M.GET({module:o.module,params:l,processResponse:b===void 0?!0:b}).then(function(c){var h=$.when();return/(^5,|,5,|5$)/.test(l.columns)?$.when.apply($,_(c).map(function(L){var s=_.cid(L);if(t[s]===void 0)return t[s]=L.last_modified,h;if(L.last_modified>t[s])return t[s]=L.last_modified,$.when(n.caches.list.remove(s),n.caches.get.remove(s)).done(function(){n.trigger("update:"+_.ecid(L),L)})})).then(function(){return c}):c},function(c){throw n.trigger("error error:"+c.code,c),c}).then(function(c){return(o.pipe.all||_.identity)(c,p)}).then(function(c){return $.when(a.add(T,c)).then(function(){return c})})},g=function(){ox.serverConfig.persistence!==!1&&(T in e||(e[T]=!0,setTimeout(function(){n.refresh()},5e3)))};return(f?a.get(T,r,g):r()).then(o.pipe.allPost).done(o.done.all||$.noop)},getList:function(u,f,a){u=u?[].concat(u):[],o.filter&&(u=_(u).filter(o.filter)),a=a||{},f=f===void 0?!0:!!f;var b=function(){var p=_.extend({},o.requests.list);return a.allColumns&&(p.columns=M.getAllColumns(o.module,!0)),a.unseen&&(p.unseen=!0),M.fixList(u,M.PUT({module:o.module,params:p,data:M.simplify(u)})).then(function(T){return(o.pipe.list||_.identity)(T)}).then(function(T){var r=a.allColumns?"add":"merge";return $.when(i.list.add(T),i.get[r](T)).then(function(){return T})})};return u.length===0?$.Deferred().resolve([]).done(o.done.list||$.noop):(f?i.list.get(u,b):b()).then(o.pipe.listPost).done(o.done.list||$.noop)},get:function(u,f){var a=$.extend({},o.requests.get,u);f=f===void 0?!0:!!f;var b=function(){return M.GET({module:o.module,params:D(a)}).then(function(p){return(o.pipe.get||_.identity)(p,a)},function(p){throw n.trigger("error error:"+p.code,p),p}).then(function(p){return f?$.when(i.get.add(p),i.list.merge(p).done(function(T){T&&n.trigger("refresh.list")})).then(function(){return p}):p}).fail(function(p){_.call(o.fail.get,p,a,o)})};return(f?i.get.get(a,b,o.pipe.getCache):b()).then(o.pipe.getPost).done(o.done.get||$.noop)},localRemove:function(u,f,a){return _(u).filter(function(b){return f[a(b)]!==!0})},updateCaches:function(u,f){u=u||[],u=_.isArray(u)?u:[u];var a={},b={},p=w.defaultKeyGenerator,T;return _(u).each(function(r){a[p(r)]=b[r.folder_id]=!0}),u.length<100?(T=_(b).map(function(r,g){var l=n.caches.all;return l.grepKeys(g+k).then(function(c){return $.when.apply($,_(c).map(function(h){return l.get(h).then(function(L){return L?("data"in L?L.data=n.localRemove(L.data,a,p):L=n.localRemove(L,a,p),l.add(h,L)):$.when()})}))})}),u.length&&(T.push(n.caches.list.remove(u)),T.push(n.caches.get.remove(u)))):(T=[n.caches.all.clear()],u.length&&(T.pu
3sh(n.caches.list.clear()),T.push(n.caches.get.clear()))),n.resetTrashFolders&&T.push(n.resetTrashFolders()),$.when.apply($,T).done(function(){f||_(u).each(function(r){n.trigger("delete:"+_.ecid(r))}),a=b=T=u=null})},remove:function(u,f){u=u||[],u=_.isArray(u)?u:[u],f=_.extend({local:!1,force:!1},f||{});var a=$.extend({},o.requests.remove,{timestamp:_.then()}),b=M.simplify(u);f.force&&(a.harddelete=!0);var p=function(r){var g={};return _(u).each(function(l){g[l.folder_id]=l.folder_id}),$.when.apply($,_(g).map(function(l){return n.caches.all.grepRemove(l+k)})).then(function(){return $.Deferred()[r.error?"reject":"resolve"](r)})},T=function(){n.trigger("refresh.all"),n.trigger("delete",u)};return n.trigger("beforedelete",u),n.updateCaches(u).then(function(){return n.trigger("refresh:all:local"),f.local!==!0?M.PUT({module:o.module,params:a,data:b,appendColumns:!1}).then(p,p).always(T):T()})},needsRefresh:function(u,f,a){return i.all.keys(u+k+f+"."+a).then(function(b){return b!==null})},reduce:d,caches:i};return o.requests.search&&(n.search=function(u,f){var a=$.extend({},o.requests.search,f||{}),b=a.getData;return f=f||{},o.requests.search.omitFolder&&f.omitFolder!==!1&&delete a.folder,delete a.omitFolder,delete a.getData,M.PUT({module:o.module,params:a,data:b(u,f)}).then(function(p){return(o.pipe.search||_.identity)(p)})}),o.requests.advancedsearch&&(n.advancedsearch=function(u,f){var a=$.extend({},o.requests.advancedsearch,f||{}),b=a.getData;return f=f||{},o.requests.advancedsearch.omitFolder&&f.omitFolder!==!1&&(delete a.folder,delete a.folders),delete a.omitFolder,delete a.getData,delete a.folderTypes,delete a.onlyUsers,delete a.splitWords,M.PUT({module:o.module,params:a,data:b(u,f)}).then(function(p){return p})}),v.extend(n),n.refresh=function(){return ox.online?$.when(n.caches.all.clear(),n.caches.list.clear()).done(function(){n.trigger("refresh.all")}):$.when()},ox.on("refresh^",function(){n.refresh()}),n.Model=F.Model,n.Collection=F.Collection,n};return m.reduce=d,m.extendColumns=function(o,i,e){var t={},n={},u=M.getColumnMapping(i);return _.each(u,function(f,a){n[f]=a}),_.each(e.split(","),function(f){t[f]=1}),_.chain(S.point(o).invoke("columns")).flatten(!0).each(function(f){t[n[f]||f]=1}),_.keys(t).join()},m});define("io.ox/core/api/collection-pool",["io.ox/core/api/backbone"],function(M){"use strict";var w={},v={},S=!1,F=!1,k=M.Collection.extend({_removeModels:function(o,i){return o=_(o).filter(function(e){return e.preserve!==!0}),M.Collection.prototype._removeModels.call(this,o,i)}});function D(o,i){if(!(S||F))try{_(v[o]).each(function(e){var t=e.collection.get(i.cid);t&&(t.preserve=i.preserve,S=!0,e.collection.remove(t))})}catch(e){ox.debug&&console.warn("error in collection pool propagateRemove",e)}finally{S=!1}}function y(o,i){if(!S)try{_(v[o]).each(function(e){var t=i.changed.cid?i.previous("cid"):i.cid,n=e.collection.get(t),u;n&&(S=!0,u=i.toJSON(),delete u.index,n.set(u))})}catch(e){ox.debug&&console.warn("error in collection pool propagateChange",e)}finally{S=!1}}function d(o){var i={};_(o).each(function(t,n){n!=="detail"&&n.indexOf("search")!==0&&(t.collection.expired?(t.collection.reset(),delete o[n]):t.collection.each(function(u){i[u.cid]=!0,_(this.getDependentModels(u.cid)).each(function(f){i[f.cid]=!0})},this))},this);var e=this.get("detail").filter(function(t){return t["index/virtual/favorites/infostore"]!==void 0||t["index/virtual/favoriteFiles/infostore"]!==void 0?!1:!i[t.cid]});this.get("detail").remove(e,{silent:!0}),e=i=null,_(o).each(function(t,n){n==="detail"||t.collection.gc===!1||t.collection.expire()})}function m(o,i){var e=v[o]||(v[o]={});i=i||{},this.Collection=i.Collection||k,this.Model=i.Model||M.Model,this.getCollections=function(){return e},this.get=function(t){var n=e[t];if(n)return n.access=_.now(),n.collection;var u=new this.Collection;return e[t]={access:_.now(),collection:u},u.expired=!1,u.complete=!1,u.sorted=!0,u.expire=function(){this.expired=!0,this.trigger("expire")},u.setComplete=function(f){f!==this.complete&&(this.complete=f,this.trigger("complete",f))},u.cid=t,u.on({remove:D.bind(this,o),change:y.bind(this,o)})},this.getModule=function(){return o},this.gc=function(){d.call(this,e)},ox.on("refresh^",_.throttle(d.bind(this,e),5e3))}return m.create=function(o,i){return w[o]||(w[o]=new m(o,i))},m.inspect=function(){_(w).each(function(o,i){var e=0,t=o.getCollections();_(t).each(function(n){e+=_(n.collection).size()}),console.debug("Pool:",i,"Model count:",e,"Collections:",t)})},m.preserve=function(o){F=!0,o&&o(),F=!1},_.extend(m.prototype,{getDefault:function(){return new this.Collection},propagate:function(o,i){o==="change"&&y.call(this,this.getModule(),new this.Model(i))},map:_.identity,add:function(o,i){arguments.length===1&&(i=o,o="detail");var e=this.get(o);return i=_([].concat(i)).map(this.map,e),e.add(i,{merge:!0,parse:!0}),e},resolve:function(o){var i=this.get("detail"),e=this.Model;return _([].concat(o)).map(function(t){return t instanceof e?t:i.get(_.cid(t))||{}})},getDetailModel:function(o){var i=_.cid(o),e=this.get("detail"),t;return(t=e.get(i))||(t=new this.Model(o),o.folder_id!==void 0&&o.parent===void 0&&e.add(t)),t},grep:function(){var o=arguments;function i(e,t){return e&&this.indexOf(t)>-1}return _(this.getCollections()).chain().filter(function(e,t){return _(o).reduce(i.bind(t),!0)}).pluck("collection").value()},getByFolder:function(o){return this.grep("folder="+o+"&")},getBySorting:function(o,i){return this.grep("folder="+i+"&","sort="+o)},getDependentModels:function(){return[]},resetFolder:function(o){var i=this,e=_([].concat(o)).chain().map(function(t){return i.getByFolder(t)}).flatten().uniq();return e.invoke("expire"),e},preserveModel:function(o,i){_(this.getCollections()).each(function(e){var t=e.collection.get(o);t&&(t.preserve=!!i)})}}),m});define("io.ox/core/api/collection-loader",["io.ox/core/api/collection-
3pool","io.ox/core/http"],function(M,w){"use strict";var v={load:"reset",paginate:"add",reload:"set"};function S(y){var d={};return _(y).each(function(m){d[m]=!0}),d}function F(y){_.extend(this,{columns:"1,20",module:"mail",ignore:"limit max"},y),this.pool=M.create(this.module),this.ignore=S(String(this.ignore).split(" ")),this.collection=null,this.loading=!1;function d(i,e,t,n,u){var f=e==="load"?n.PRIMARY_PAGE_SIZE:n.SECONDARY_PAGE_SIZE;if(e==="paginate"&&i.length>0){var a=_(u).first(),b=i.last().toJSON();if(b&&b.head&&(b=b.head),a&&a.head&&(a=a.head),_.cid(a)!==_.cid(b)){ox.debug&&console.warn("paginate compare fail",_.cid(a),_.cid(b),u),t.thread=t.action==="threadedAll",n.reload(t,f);return}}M.preserve(function(){var p=v[e];i.preserve&&e==="reload"?i[p](u,{parse:!0,add:!0,remove:!1,sort:!1}):i[p](u,{parse:!0})}),e==="load"?i.setComplete(u.length<f):e==="paginate"&&i.setComplete(u.length<=1),i.trigger(e)}function m(i,e,t){i.trigger(e+":fail",t)}function o(i,e){var t=e==="paginate"?Math.max(this.collection.length-1,0):0;this.collection.trigger("before:"+e);var n=_.lfo(d,this.collection,e,i,this),u=_.lfo(m,this.collection,e),f=this;return this.fetch(i).done(function(a){f.addIndex(t,i,a),f.done(),n(a)}).fail(function(a){f.done(),u(a),f.fail(a)})}this.load=function(i){var e;if(i=this.getQueryParams(i||{}),i!==!1){if(i.limit="0,"+this.PRIMARY_PAGE_SIZE,e=this.collection=this.getCollection(i),this.loading=!1,this.isBad(i.folder)||(e.length>0||e.complete)&&!e.expired&&e.sorted&&!e.preserve){var t=e.CUSTOM_PAGE_SIZE||this.PRIMARY_PAGE_SIZE;return e.length>t&&(e.reset(e.first(t),{silent:!0}),e.complete=!1),_.defer(function(){e.trigger(e.complete?"reset load cache complete":"reset load cache")}),e}return this.loading=!0,_.defer(o.bind(this),i,"load"),e}},this.paginate=function(i){var e=this.collection;if(this.loading)return e;var t=Math.max(0,e.length-1);return i=this.getQueryParams(_.extend({offset:t},i)),this.isBad(i.folder)||(i.limit=t+","+(e.length+this.SECONDARY_PAGE_SIZE),this.loading=!0,_.defer(o.bind(this),i,"paginate")),e},this.reload=function(i,e){var t=this.collection;if(this.loading||(i=this.getQueryParams(_.extend({offset:0},i)),this.isBad(i.folder)))return t;var n=Math.ceil((t.length-this.PRIMARY_PAGE_SIZE)/this.SECONDARY_PAGE_SIZE)*this.SECONDARY_PAGE_SIZE+this.PRIMARY_PAGE_SIZE,u=Math.max(t.length+(e||0),n);return i.limit="0,"+(u===0?this.PRIMARY_PAGE_SIZE:u),this.loading=!0,_.defer(o.bind(this),i,"reload"),t}}function k(y){return!this.ignore[y]}function D(y){var d=this[y];return y+"="+(_.isString(d)?d:JSON.stringify(d))}return _.extend(F.prototype,{PRIMARY_PAGE_SIZE:50,SECONDARY_PAGE_SIZE:200,cid:function(y){return _(y||{}).chain().keys().filter(k,this).map(D,y).value().sort().join("&")||"default"},getDefaultCollection:function(){return this.pool.getDefault()},getCollection:function(y){var d=this.cid(y);return this.pool.get(d)},before:function(){},each:function(){},after:function(){},addIndex:function(y,d,m){this.before(y,d,m),_(m).each(function(o,i){o.index=y+i,this.each(o,i,y,d)},this),this.after(y,d,m)},noSelect:function(){return!1},virtual:function(){return!1},isBad:function(y){return!y&&y!==0},fetch:function(y){var d=this.module,m=d+"/"+_.cacheKey(_.extend({session:ox.session},y)),o=ox.rampup[m],i=this.noSelect(y),e=this.virtual(y),t=this;return o?(delete ox.rampup[m],$.when(o)):i?$.when([]):e?$.when(e):w.wait().then(function(){return t.httpGet(d,y).then(function(n){return t.filter&&(n=_(n).filter(t.filter)),t.useSlice?Array.prototype.slice.apply(n,y.limit.split(",")):n})})},httpGet:function(y,d){return this.useSlice&&(d=_(d).omit("limit")),w.GET({module:y,params:d})},getQueryParams:function(){return{}},done:function(){this.loading=!1},fail:function(){}}),F});define("io.ox/mail/common-extensions",["io.ox/core/extensions","io.ox/mail/util","io.ox/mail/api","io.ox/core/api/account","
3io.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","io.ox/core/svg","gettext!io.ox/mail"],function(M,w,v,S,F,k,D,y,d,m,o,i,e,t,n,u,f,a,b,p,T){"use strict";function r(h){if(!(!h.app||!h.app.listView||!h.app.listView.loader))return h.app.listView.loader.mode==="search"}function g(h,L,s){var x=s.data.thread&&s.data.thread[0]||s.data,C=w.authenticity("image",x),N=S.is("spam",s.data.folder_id);if(C||N)return h.text("!");h.append(p.circleAvatar(l(s.data.from)));var I=_.isArray(L)?L&&L[0]&&L[0][1]:L;return d.pictureHalo(h,{email:I},{width:40,height:40,effect:"fadeIn",fallback:!1})}function l(h){if(!_.isArray(h)||!h.length)return"";var L=w.getDisplayName(h[0]);return m.getInitials({display_name:L})}var c={a11yLabel:function(h){var L=h.data,s=v.threads.size(L),x=L.from||[["",""]],C=[],N;w.isUnseen(L)&&C.push(T("Unread")),w.isFlagged(L)&&C.push(T("Flagged")),h.data.color_label&&u.get("features/flag/color")&&C.push(T("Color %1$s",e.colorName(h.data.color_label))),C.push(w.getDisplayName(x[0]),L.subject,w.getTime(L.date)),s>1&&C.push(T.ngettext("Thread contains %1$d message","Thread contains %1$d messages",s,s)),L.attachment&&C.push(T("has attachments")),N=C.join(", ")+".",this.attr({"aria-hidden":!0}).parent().attr({"aria-label":N.replace(/["<]/g,function(I){return I==='"'?""":I==="<"?"<":I})})},authenticity:function(h){var L=w.authenticity("box",h&&h.model.toJSON());if(L){var s=$('<section class="authenticity">'),x=h.data,C=x.from||[],N=_.chain(C).map(function(I){return String(I[1]||"").toLowerCase()}).compact().value().join(", ");s.append($("<div>").addClass("message "+L.toLowerCase()).append($("<b>").text(/(fail|suspicious)/.test(L)?T("Warning:")+" ":T("Note:")+" "),$.txt(w.getAuthenticityMessage(L,N)))),this.append(s)}},picture:function(h){var L=h.data,s=h.app.props.get("thread"),x=v.threads.size(L),C=x<=1,N=s?C:!0,I=N&&!r(h)&&S.is("sent|drafts",L.folder_id)?L.to:L.from,P=$('<div class="contact-picture" aria-hidden="true">');this.append(r(h)&&L.picture?g(P,L.picture):g(P,I,h))},senderPicture:function(h){var L=h.data.from,s=$('<div class="contact-picture" aria-hidden="true">');this.append(g(s,L,h))},date:function(h,L){var s=h.data,x=s.date;L=_.extend({fulldate:h.app&&h.app.props.get("exactDates"),smart:!(h.app&&h.app.props.get("exactDates"))},L),_.isNumber(x)&&this.append($('<time class="date gray">').attr("datetime",moment(x).toISOString()).text(w.getDateTime(x,L)))},smartdate:function(h){c.date.call(this,h,{fulldate:!1,smart:!0})},fulldate:function(h){c.date.call(this,h,{fulldate:!0,smart:!1})},from:function(h){var L={folder:h.data.folder_id,field:"from",showDisplayName:!0};_.each(c.fromPipeline,function(s){s.call(this,h,L)}),this.append($('<div class="from">').attr("title",L.mailAddress).append($('<span class="flags">'),w.getFrom(h.data,_.pick(L,"field","reorderDisplayName","showDisplayName","unescapeDisplayName"))))},fromDetail:function(h){var L=$('<div class="from">'),s=h.data,x=w.getDeputy(s)||s.from||[],C=w.authenticity("icon",s);_(x).each(function(N){var I=String(N[1]||"").toLowerCase(),P=w.getDisplayName(N),B;if(I){L.append(B=$('<a href="#" role="button" class="halo-link">').data({email:I,email1:I}).append($('<span class="sr-only">').text(T("From:"))).append($('<span class="person-link person-from ellipsis">').text(P)).addClass(P===I&&C?"authenticity-sender "+C:""));var W=_.device("smartphone")&&!!P&&(C==="pass"||S.is("sent",s.folder_id)),z=P!==I&&!W;z&&B.append($('<span class="address">').text("<"+I+">").addClass(C?"authenticity-sender "+C:"")),C&&B.append($('<span data-toggle="popover" data-container="body" class="authenticity">').attr("aria-label",w.getAuthenticityMessage(C,I)).popover({placement:_.device("smartphone")?"auto":"right",trigger:"focus hover",content:w.getAuthenticityMessage(C,I)}).append($('<i class="fa" aria-hidden="true">').addClass(function(){return/(pass|trusted)/.test(C)?"fa-check":/(fail|suspicious)
3/.test(C)?"fa-exclamation-triangle":"fa-question"}).addClass(C?"authenticity-icon-"+C:""))),_.device("smartphone")&&P.indexOf("@")>-1&&L.addClass("show-address")}}),L.append('<div class="spacer">'),this.append(L)},fromPipeline:{field:function(h,L){h.data.threadSize>1||S.is("sent|drafts",L.folder)&&(L.field="to")},fieldSearch:function(h,L){if(r(h)){var s=h.app&&h.app.get("find");L.field=s&&S.is("sent|drafts",s.getFolderFacetValue())?"to":"from"}},displayName:function(h,L){if(L.reorderDisplayName=L.unescapeDisplayName=h.options.sort!=="from-to",h.options.sort==="from-to"){var s=k.pool.getModel(L.folder).get("capabilities")||0;L.showDisplayName=!!(s&4096)}},address:function(h,L){L.mailAddress=w.getFrom(h.data,{field:L.field,showDisplayName:!1}).text()}},size:function(h){if(!(h.app&&h.app.props.get("sort")!==608&&!h.app.props.get("alwaysShowSize"))){var L=h.data;if(_.isNumber(L.size)){var s=w.threadFileSize(L.thread||[L]);this.append($('<span class="size">').text(F.fileSize(s,1)))}}},unreadClass:function(h){var L=w.isUnseen(h.data);this.closest(".list-item").toggleClass("unread",L)},deleted:function(h){this.parent().toggleClass("deleted",w.isDeleted(h.data))},colorflag:function(h){if(u.get("features/flag/color")){var L=h.data.color_label,s="fa-bookmark";if(!(L<=0)){var x=h.app&&h.app.isThreaded();(x||h.options.threaded)&&h.data.thread&&L!==h.data.thread[0].color_label&&(s="fa-bookmark-o",L=0),this.append($('<i class="color-flag fa" aria-hidden="true">').addClass(s).addClass(L>0?"flag_"+L:"multiple-colors"))}}},flag:function(h){!u.get("features/flag/star")||!w.isFlagged(h.data)||this.append($('<span class="flag">').append(c.flagIcon.call(this).attr("title",T("Flagged"))))},flagIcon:function(){return $('<i class="fa" aria-hidden="true">')},flaggedClass:function(h){u.get("features/flag/star")&&this.closest(".list-item").toggleClass("flagged",w.isFlagged(h.data))},flagToggle:function(){function h(x,C,N){var I=w.isFlagged(x)?T("Flagged"):T("Not flagged");$(N).attr("aria-label",I).find(".fa").attr("title",I)}function L(x){x.preventDefault();var C=x.data.model.toJSON();w.isFlagged(C)?v.flag(C,!1):v.flag(C,!0)}function s(x,C){var N=x.$("a.flag.io-ox-action-link");h(C.toJSON(),void 0,N)}return function(x){if(!(!u.get("features/flag/star")||w.isEmbedded(x.data))){var C=this;x.view.listenTo(x.view.model,"change:flags",_.partial(s,x.view)),k.get(x.data.folder_id).done(function(N){!k.can("write",N)||k.is("unifiedfolder",N)||C.append($('<a href="#" role="button" class="flag io-ox-action-link" data-action="flag">').append(c.flagIcon.call(this)).each(_.partial(h,x.data)).on("click",{model:x.view.model},L))})}}}(),threadSize:function(h){var L=h.app&&h.app.isThreaded();if(!(!L&&!h.options.threaded)){var s=v.threads.size(h.data);s<=1||this.append($('<div class="thread-size" aria-hidden="true">').append($('<span class="number drag-count">').text(s)))}},paperClip:function(h){h.data.attachment&&this.append($('<i class="fa fa-paperclip has-attachments" aria-hidden="true">'))},sharedAttachement:function(h){!h.model||!_.has(h.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(h){!/^multipart\/encrypted/.test(h.data.content_type)&&!(h.model.get("security")&&h.model.get("security").decrypted)||this.append($('<i class="fa fa-lock encrypted" aria-hidden="true">'))},signed:function(h){!/^multipart\/signed/.test(h.data.content_type)&&!(h.model.get("security")&&h.model.get("security").signatures)||this.append($('<i class="fa fa-pencil-square-o signed" aria-hidden="true">'))}},priority:function(h){var L=w.getPriority(h.data);L.length&&this.append($('<span class="priority" aria-hidden="true">').append(L))},envelope:function(){return $('<i class="fa seen-unseen-indicator" aria-hidden="true">').appendTo(this)},unread:function(h){var L=w.isUnseen(h.data);L&&c.envelope.call(this).attr("title",T("Unread"))},answered:function(h){var L=h.data,s=_.cid(L),x=v.threads.get(s),C=w.isAnswered(x,L);C&&this.append('<i class="icon-answered fa fa-reply" aria-hidden="true">')},forwarded:function(h){var L=h.data,s=_.cid(L),x=v.threads.get(s),C=w.isForwarded(x,L);C&&this.append('<i class="icon-forwarded fa fa-mail-forward" aria-hidden="true">')},subject:function(h){var L=h.data,s=h.data.threadSize===1,x=w.getSubject(L,s);this.append($('<div class="subject" role="presentation">').append($('<span class="flags" role="presentation">'),$('<span class="drag-title" role="presentation">').text(x).attr("title",x)))},title:function(h){var L=w.getSubject(h.data);this.closest(".list-item").attr("title",L)},account:function(h){S.isUnifiedFolder(h.data.folder_id)&&this.append($('<span class="account-name">').text(h.data.account_name||""))},empty:function(){this.attr("role","option").text(T("Empty"))},folder:function(h){if(h.data.original_folder_id){var L=h.app&&h.app.folder&&h.app.folder.get()==="virtual/all-unseen";!r(h)&&!L||this.append($('<span class="original-folder">').append(k.getTextNode(h.data.original_folder_id)))}},recipients:function(){var h=function(L){L.preventDefault(),$(this).parent().children().show(),$(this).hide()};return function(L){var s=L.data,x=s.cc&&s.cc.length>0,C=s.to&&s.to.length>0,N=s.bcc&&s.bcc.length>0,I=C||x||N,P=$('<div class="recipients">');if(!I){this.append(P.append($.txt("\xA0")));return}C&&P.append($('<span class="io-ox-label">').append($.txt(T("To")),$.txt("\xA0\xA0")),w.serializeList(s,"to"),$.txt(" \xA0 ")),x&&P.append($('<span class="io-ox-label">').append($.txt(T.pgettext("CC","Copy")),"\xA0\xA0"),w.serializeList(s,"cc"),$.txt(" \xA0 ")),N&&P.append($('<span class="io-ox-label">').append($.txt(T("Blind copy")),"\xA0\xA0"),w.serializeList(s,"bcc"),$.txt(" \xA0 ")),this.append(P);var B=P.find(".person-link");B.length>3&&(P.children().slice(4).hide(),P.append($('<a role="button" href="#" class="show-all-recipients">').text(T("and %1$d others",B.length-2)).on("click",h)))}}(),attachmentList:function(){var L,s=function(){var x=this.model.toJSON(),C,N;new a({backdrop:!0,caret:!1,data:x,el:this.$(".file"),point:"io.ox/mail/attachment/links",title:this.model.getShortTitle(),list:this.model.collection.toJSON()}),C=v.getUrl(x,"download"),N=(this.model.get("content_type")||"unknown").split(/;/)[0],this.$el.attr({title:this.model.getTitle(),draggable:!0,"data-downloadurl":N+":"+this.model.getTitle().replace(/:/g,"")+":"+ox.abs+C}).on("dragstart",function(I){$(this).css({display:"inline-block"}),I.originalEvent.dataTransfer.setData("DownloadURL",this.dataset.downloadurl)}),N&&!/^image\//.test(N)&&this.$el.addClass("no-image")};return function(x){if(x.attachments.length===0)return $.when();
3var C=x.model?x.model.get("headers"):x.data.headers||{};C["X-Open-Xchange-Share-Type"]&&this.hide();var N=this;_.once(function(){L=f.View.extend({renderContent:s})})();var I=x.attachments.map(function(R){return R.group="mail",R}),P=new f.Collection(I),B=!!N.data("view"),W=N.data("view")||new f.List({AttachmentView:L,collection:P,el:N,mode:u.get("attachments/layout/detail/"+_.display(),"list")});W.openByDefault=u.get("attachments/layout/detail/open",W.openByDefault),W.$header.empty(),W.render();var z=new n({el:W.$header.find(".links")[0],inline:!0,simple:!0,dropdown:!1,strict:!1,point:"io.ox/mail/attachment/links"});return W.renderInlineLinks=function(){var R=this.getValidModels();R.length&&z.setSelection(_(R).pluck("id"),{data:_(R).invoke("toJSON")})},W.listenTo(W.collection,"add remove reset",W.renderInlineLinks),W.listenTo(x.model,"change:imipMail",W.renderInlineLinks),W.listenTo(x.model,"change:sharingMail",W.renderInlineLinks),W.renderInlineLinks(),B||(W.$el.on("click","li.item",function(R){var H=$(R.currentTarget),K=$(R.target),ee,ne,se;K.hasClass("dropdown-toggle")||(ee=H.attr("data-id"),ne=P.get(ee).toJSON(),ee=H.attr("data-id"),ne=P.get(ee).toJSON(),se=M.Baton({simple:!0,data:ne,list:I,restoreFocus:K,openedBy:"io.ox/mail/details"}),b.invoke("io.ox/mail/attachment/actions/view",se))}),W.on("change:layout",function(R){u.set("attachments/layout/detail/"+_.display(),R).save()})),W.$el.find('[role="toolbar"]').find('a[role="menuitem"]').attr("role","button"),W}}(),flagPicker:function(h){u.get("features/flag/color")&&e.draw(this,h)},unreadIndicator:function(h){if(!w.isEmbedded(h.data)){var L=this;k.get(h.data.folder_id).done(function(s){var x=k.can("write",s)||k.is("unifiedfolder",s);x&&L.append($('<span class="unread-toggle">').attr("aria-label",T("Marked as unread")).append($('<i class="fa fa-circle" aria-hidden="true">')))})}},unreadToggle:function(){function h(x,C,N){var I=w.isUnseen(x)?T("Mark as read"):T("Mark as unread");$(N).attr({"aria-label":I}).find(".fa").attr("title",I)}function L(x){x.preventDefault();var C=x.data.model.toJSON();w.isUnseen(C)?v.markRead(C):v.markUnread(C)}function s(x,C){var N=x.$("a.unread-toggle");h(C.toJSON(),void 0,N)}return function(x){if(!w.isEmbedded(x.data)){var C=this;x.view.listenTo(x.view.model,"change:flags",_.partial(s,x.view)),k.get(x.data.folder_id).done(function(N){var I=k.can("write",N)||k.is("unifiedfolder",N);I&&C.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(h,x.data)).on("click",{model:x.view.model},L))})}}}(),disabledLinks:function(){function h(x,C,N){x.options.disable=x.options.disable||{};var I=x.options.disable[C];_.isString(I)&&(x.options.disable[C]=[].concat(I)),x.options.disable[C]=(x.options.disable[C]||[]).concat(N)}function L(x){x.preventDefault();var C=x.data.view;C.trigger("load"),C.$el.find(".disabled-links").remove(),h(C,"io.ox/mail/detail/source","disable-links"),h(C,"io.ox/mail/detail/content-general","disable-links"),h(C,"io.ox/mail/detail/notifications","disabled-links"),C.redraw()}function s(){this.append($('<div class="notification-item disabled-links">').append($('<button type="button" class="btn btn-default btn-sm">').text(T("Enable Links")),$('<div class="comment">').text(T("Links have been disabled to protect you against potential spam")),$('<button type="button" class="close">').attr("title",T("Close")).append('<i class="fa fa-times" aria-hidden="true">')))}return function(x){!w.authenticity("block",x.data)||w.isMalicious(x.data)||(s.call(this,x.model),this.on("click",".disabled-links > .btn-default",{view:x.view},L),this.on("click",".disabled-links > .close",function(C){$(C.target).closest(".disabled-links").remove()}))}}(),externalImages:function(){function h(s,x){s.preventDefault();var C=s.data.view;return C.trigger("load"),C.$el.find(".external-images").remove(),v.getUnmodified(C.model.pick("id","folder","folder_id","parent","security")).done(function(N){C.trigger("load:done"),C.model.set(N),x&&(x.hasBlockedExternalImages=!1)}),!1}function L(s){if(s.get("modified")!==1)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(T("Show images")),$('<div class="comment">').text(T("External images have been blocked to protect you against potential spam")),$('<button type="button" class="close">').attr("title",T("Close")).append('<i class="fa fa-times" aria-hidden="true">')))}return function(s){var x=s.view.options.threadview?s.view.options.threadview.collection.get(s.model.id):!1;x&&(x.hasBlockedExternalImages=s.model.get("modified")===1),L.call(this,s.model),this.on("click",".external-images > .btn-default",{view:s.view},function(C){M.point("io.ox/mail/externalImages").cascade(this,s).then(function(){h(C,x)})}),this.on("click",".external-images > .close",function(C){$(C.target).closest(".external-images").remove()}),s.view.listenTo(s.model,"change:modified",L.bind(this))}}(),phishing:function(){var h=_(u.get("phishing/headers",["phishing-test"]));function L(s){this.find(".phishing").length||_(s.get("headers")).find(function(x,C){if(h.contains(C))return this.append($('<div class="alert alert-error phishing">').text(T("Warning: This message might be a phishing or scam mail"))),!0},this)}return function(s){L.call(this,s.model),s.view.listenTo(s.model,"change:headers",L.bind(this))}}(),plainTextFallback:function(){function h(L){this.find(".warnings").length||L.get("warnings")&&this.append($('<div class="alert alert-error warnings">').text(L.get("warnings").error))}return function(L){h.call(this,L.model),L.view.listenTo(L.model,"change:warnings",h.bind(this))}}(),dispositionNotification:function(){var h={};function L(C){C.preventDefault();var N=C.data.view,I=_.cid(N.model.cid);N.model.set("disp_notification_to",""),h[N.model.cid]=!0,v.ack({folder:I.folder_id,id:I.id,to:C.data.model.get("to")}).done(function(){y.yell("success",T("A read receipt has been sent"))})}function s(C){C.preventDefault();var N=C.data.view;h[N.model.cid]=!0}function x(C){this.find(".disposition-notification").remove(),!h[C.cid]&&w.hasUnsendReadReceipt(C.toJSON())&&u.get("sendDispositionNotification",!1)&&(S.is("drafts",C.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(T("Send a read receipt")),$('<div class="comment">').text(T("The sender wants to get notified when you have read this email")),$('<button type="button" class="close" data-dismiss="alert">').attr("title",T("Close")).append('<i class="fa fa-times" aria-hidden="true">'))))}return function(C){x.call(this,C.model),this.on("click",".disposition-notification .btn",{view:C.view,model:C.model},L),this.on("click",".disposition-notification .close",{view:C.view,model:C.model},s),C.view.listenTo(C.model,"change:disp_notification_to",x.bind(this))}}()};return c});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(M,w,v,S,F){"use strict";var k={13:"enter",27:"escape",32:"space",37:"cursor:left",38:"cursor:up",39:"cursor:right",40:"cursor:down"},D=5,y=150,d=300,m=360;function o(){return $.when()}
3var i=M.extend({tagName:"ul",className:"list-view",scaffold:$('<li class="list-item"><div class="list-item-checkmark">'+(_.device("smartphone")?$.mobileCheckbox():$.checkbox())+'</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(),n=t.filter(".selected");if(n.length===0){e&&this.selection.select(0,t);return}n.length===1?n.focus():n.filter(document.activeElement).length===1?n.filter(document.activeElement).focus():n.last().focus()},onItemKeydown:function(e){k[e.which]&&this.trigger(k[e.which],e),w.macOSKeyboardHandler(e),e.isKeyboardEvent&&this.onContextMenu(e)},onScroll:_.throttle(function(){if(!(this.disposed||this.isBusy||!this.loader.collection||this.collection.complete||!this.$el.is(":visible"))){var e=this.$el.outerHeight(),t=this.el.scrollTop,n=this.el.scrollHeight,u=t+e;u/n<.8||(this.addBusyIndicator(),this.processPaginate())}},20),onLoad:function(){this.idle(),this.isComplete()||this.onScroll()},onComplete:function(e){this.toggleComplete(e!==!1)},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 n=F.Baton({app:this.app,options:this.options,listView:this,error:t}),u=F.point(this.ref+"/notification/"+e),f=!this.collection.length,a=this.$(".notification").attr("role",e==="error"?"alert":"presentation").empty();f&&u.keys().length&&u.invoke("draw",a,n),a.toggleClass("hidden",!f)},renderEmpty:function(){this.renderNotification("empty")},renderError:function(e){this.idle(),this.renderNotification("error",e)},onReset:function(){var e=this;this.empty(),this.collection.each(function(t){e.$el.append(e.renderListItem(t,!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(),n=e.next(),u=e.attr("data-label");return!(t.attr("data-label")===u||n.attr("data-label")===u)},onRemove:function(e){var t=this.getItems(),n=this.getCompositeKey(e),u=t.filter('[data-cid="'+$.escape(n)+'"]'),f=u.hasClass("selected");u.length!==0&&(u[0].offsetTop<this.el.scrollTop&&(this.el.scrollTop-=u.outerHeight(!0)),this.selection&&this.selection.remove(n,u),this.options.labels&&this.lastElementOfLabel(u)&&u.prev().remove(),u.remove(),this.trigger("remove-mobile"),f&&this.selection.triggerChange(),t.length>1&&_.defer(function(){this.disposed||this.$el.trigger("scroll")}.bind(this)),this.trigger("remove",e))},onBatchRemove:function(e){var t={};_(e).each(function(b){if(_.isObject(b)){var p=b.cid||_.cid(b);t[p]=!0}else t[b]=!0});var n=this.getItems();if(n.length!==0){var u=n.filter(".selected")[0];if(n.filter(function(){var b=$(this).attr("data-cid");return!!t[b]}).remove(),this.renderEmpty(),!!u){var f=$(u).position().top,a=f<0||f>this.el.offsetHeight;a&&u.scrollIntoView()}}},onSort:function(){function e(t){return t&&parseInt(t.getAttribute("data-index"),10)}return function(){if(!this.queue.list.length){var t,n,u,f,a,b,p,T,r={},g;for(t=this.getItems().toArray(),n=_(t).sortBy(e),u=0,f=0,a=n.length;u<a;u++)if(b=n[u],p=t[f],r[u]=!0,this.options.labels&&(g=this.getLabel(this.collection.get($(b).attr("data-cid"))),$(b).attr("data-label",g)),b===p)
3do T=e(t[++f]);while(r[T]);else p&&this.el.insertBefore(b,p);this.options.labels&&_.defer(function(){var l,c,h=this,L=this.$el.find(".list-item").toArray();L.forEach(function(s){if($(s).hasClass("list-item-label"))l=$(s).text(),!$(s).next().hasClass("appointment")||$(s).next().attr("data-label")!==l||c===l?$(s).remove():c=l;else{var x=$(s).attr("data-label");x!==c&&(l=x,c=l,h.el.insertBefore(h.renderListLabel(x)[0],s))}})}.bind(this))}}}(),onTouchStart:function(e){if(!this.options.noPullToRefresh){var t=this.$el.scrollTop()===0,n=e.originalEvent.touches[0],u=n.pageY,f=n.pageX;t&&(this.pullToRefreshStartY=u,this.pullToRefreshStartX=f)}},onTouchMove:function(e){var t=e.originalEvent.touches[0],n=t.pageY,u=n-this.pullToRefreshStartY;if(this.pullToRefreshStartY&&!this.isPulling&&!this.isSwiping&&n-this.pullToRefreshStartY>=D&&(e.preventDefault(),e.stopPropagation(),this.selection.isScrolling=!0,this.isPulling=!0,this.$el.prepend(this.pullToRefreshIndicator)),this.isPulling&&u<=d){this.pullToRefreshTriggerd=!1,e.preventDefault(),e.stopPropagation();var f=m/d*u,a=-70+70/y*u;this.pullToRefreshIndicator.css("-webkit-transform","translate3d(0,"+a+"px,0)"),$("#ptr-spinner").css("-webkit-transform","rotateZ("+f+"deg)"),this.selection.isScrolling=!0,n-this.pullToRefreshStartY>=y&&(this.pullToRefreshTriggerd=!0)}else this.isPulling&&u>=d&&(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))+'"]'),n=this.getBaton(e),u=e.changed.index,f=_.keys(e.changed);u!==void 0&&t.attr("data-index",u),(u===void 0||f.length>1)&&F.point(this.ref+"/item").invoke("draw",t.children().eq(1).empty(),n),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(b){this.disposed||(this.$el.attr("tabindex",b?-1:0),this.$el.toggleClass("has-focus",b))},10);var t={},n=!1,u=this;if(this.options.selection?(this.selection=new v(this,this.options.selection),t={"focus .list-item":"onItemFocus","blur .list-item":"onItemBlur",click:"onKeepFocus",contextmenu:"onContextMenu","keydown .list-item":"onItemKeydown"},_.device("smartphone")&&_.extend(t,{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&&(t.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(t),this.model.on("change",_.debounce(this.onModelChange,10),this),_.bindAll(this,"busy","idle"),_.device("!smartphone")&&this.$el.addClass("visible-selection"),_.device("smartphone")){var f,a=0;this.selection&&(this.selection.isScrolling=!1,this.$el.scroll(function(){u.$el.scrollTop()!==a&&(u.selection.isScrolling=!0,a=u.$el.scrollTop()),f&&clearTimeout(f),f=setTimeout(function(){u.disposed||(u.selection.isScrolling=!1)},500)}))}this.queue={list:[],add:function(b){return this.list.push(b),this},render:_.debounce(function(){this.disposed||this.renderListItems()}.bind(this),10),iterate:function(b){try{this.list.forEach(b.bind(u))}catch(p){ox.debug&&console.error("ListView.iterate",p)}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",e===void 0?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(n){$(this).addClass(n%2?"even":"odd")})):t.removeClass("even odd")},connect:function(e){this.collection&&this.stopListening(this.collection),this.collection=e.getDefaultCollection(),this.options.pagination&&!this.loader&&(this.onScroll=this.onScroll.bind(this),this.listenToDOM(window,"resize",this.onScroll)),this.loader=e,this.load=function(t){this.empty(),e.load(_.extend(this.model.toJSON(),t)),this.setCollection(e.collection)},this.paginate=function(t){e.paginate(_.extend(this.model.toJSON(),t))},this.reload=function(t){e.reload(_.extend(this.model.toJSON(),t))}},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 e=F.point(this.ref+"/item"),t=this.collection;this.getItems().each(function(n,u){if(!(n>=t.length)){var f=t.at(n),a=this.getBaton(f);e.invoke("draw",$(u).children().eq(1).empty(),a)}}.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;t.length>0&&!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 n=this.createListItem(),u=this.getBaton(e),f=n.children().eq(1);if(t&&this.options.labels){var a=this.getLabel(e);this.currentLabel!==a&&(this.$el.append(this.renderListLabel(a)),this.currentLabel=a)}return this.options.useButtonMarkup&&n.children().wrapAll('<button type="button" class="btn-u
3nstyled">'),n.attr({"data-cid":this.getCompositeKey(e),"data-index":e.get("index")}),this.options.labels&&n.attr("data-label",this.getLabel(e)),F.point(this.ref+"/item").invoke("draw",f,u),n},renderListItems:function(){this.idle();var e=this.getItems();this.queue.iterate(function(t){var n=t.has("index")?t.get("index"):this.collection.indexOf(t),u=this.renderListItem(t,!1),f,a;if(n<e.length){var b=e.eq(n);this.options.labels&&(f=this.getLabel(t),a=this.getPreviousLabel(b),f!==a&&(b=b.prev())),e.splice(n,0,u),b.before(u),u[0].offsetTop<=this.el.scrollTop&&(this.el.scrollTop+=u.outerHeight(!0))}else this.$el.append(u),e.push(u);this.options.labels&&(a=this.getPreviousLabel(u),f=this.getLabel(t),f!==a&&u.before(this.renderListLabel(f))),this.trigger("add",t,n),this.trigger("add:"+t.cid,t,n)}),this.onSort()},getBaton:function(e){var t=this.map(e);return F.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(e){if(e&&e.error&&require(["io.ox/core/yell"],function(t){t(e)}),!!this.isBusy)return this.removeBusyIndicator(),this.isBusy=!1,this.$(".notification").css("display",""),this},getPosition:function(){return this.selection.getPosition()},hasNext:function(){if(!this.collection)return!1;var e=this.getPosition()+1;return e<this.collection.length||!this.isComplete()},next:function(){this.hasNext()?this.selection.next():this.processPaginate()},hasPrevious:function(){if(!this.collection)return!1;var e=this.getPosition()-1;return e>=0},previous:function(){this.hasPrevious()?this.selection.previous():this.$el.scrollTop(0)},focus:function(){var e=this.getItems().filter(".selected").focus();e.length===0&&this.$el.focus()}});return i});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(M,w,v,S,F,k,D,y,d,m,o,i){"use strict";var e={id:"search",index:100,draw:function(b){var p=b.app.listView,T=new y({module:"mail",mode:"search",getQueryParams:function(g){var l=g.criteria,c=[],h,L,s=l.from||l.von||l.de,x=l.to||l.an||l.a||l.para,C=l.subject||l.betreff||l.sujet||l.asunto,N=l.year||l.y||l.jahr||l.ano;s&&c.push(["=",{field:"from"},s]),x&&c.push(["or",["=",{field:"to"},x],["=",{field:"cc"},x],["=",{field:"bcc"},x]]),C&&c.push(["=",{field:"subject"},C]),N&&(h=Date.UTC(N,0,1),L=Date.UTC(N,11,31),c.push(["and",[">",{field:"date"},String(h)],["<",{field:"date"},String(L)]])),l.words&&_(l.words.split(" ")).each(function(P){c.push(["or",["=",{field:"content"},P],["=",{field:"subject"},P]])}),l.addresses&&_(l.addresses.split(" ")).each(function(P){c.push(["or",["=",{field:"to"},P],["=",{field:"cc"},P],["=",{field:"bcc"},P],["=",{field:"content"},P]])}),l.attachment==="true"&&c.push(["=",{field:"content_type"},"multipart/mixed"]),l.after&&c.push([">",{field:"date"},String(l.after)]),l.before&&c.push(["<",{field:"date"},String(l.before)]);var I=l.folder==="all"?m.allMessagesFolder:b.app.folder.get();return{action:"search",folder:I,columns:"102,600,601,602,603,604,605,606,607,608,610,611,614,652,656,661,X-Open-Xchange-Share-URL",sort:g.sort||"661",order:g.order||"desc",timezone:"utc",data:{filter:["and"].concat(c)}}},fetch:function(g){return d.wait().then(function(){return d.PUT({module:"mail",params:_(g).omit("data"),data:g.data})})},each:function(g){m.pool.add("detail",g)},PRIMARY_PAGE_SIZE:100,SECONDARY_PAGE_SIZE:100}),r=$('<div class="_hurz">').appendTo(this);
3require(["io.ox/backbone/views/search"],function(g){new g({el:r[0],point:"io.ox/mail/search/dropdown"}).build(function(){var l=this;b.app.on("folder:change",function(){l.cancel()}),b.app.folderView.tree.$el.on("click",function(){l.cancel()})}).on("search",function(l){p.connect(T),p.model.set({criteria:l,thread:!1,sort:661,order:"desc"}),p.$el.parent().find('.grid-options [data-name="thread"]').addClass("disabled")}).on("cancel",function(){var l=p.$el.parent().find('.grid-options [data-name="thread"]');l.hasClass("disabled")&&(p.connect(m.collectionLoader),p.model.unset("criteria"),l.toggleClass("disabled",S.is("sent|drafts",b.app.folder.get())))}).render()})}},t=_.device("desktop")&&!navigator.webdriver&&i.get("prototypes/search",!1);t&&M.point("io.ox/mail/list-view/toolbar/top").extend(e),M.point("io.ox/mail/search/dropdown").extend({id:"default",index:100,render:function(){this.model.set("folder","current"),this.$dropdown.append(this.select("folder",F("Search in"),[{value:"current",label:F("Current folder")},{value:"all",label:F("All folders")}]),this.input("subject",F("Subject")),this.input("from",F("From")),this.input("to",F("To")),this.input("words",F("Contains words")),this.dateRange(),this.checkbox("attachment",F("Has attachments")),this.button())}}),M.point("io.ox/mail/view-options").extend({id:"sort",index:100,draw:function(b){var p=this.data("view"),T=b.app.folder.get();p.listenTo(b.app,"folder:change",r),p.option("sort",661,F("Date"),{radio:!0}).option("sort","from-to",S.is("sent|drafts",T)?F("To"):F("From"),{radio:!0}).option("sort",651,F("Unread"),{radio:!0}).option("sort",608,F("Size"),{radio:!0}).option("sort",607,F("Subject"),{radio:!0}),o.pool.getModel(T).supports("ATTACHMENT_MARKER")&&p.option("sort",602,F("Attachments"),{radio:!0}),i.get("features/flag/color")&&this.data("view").option("sort",102,F("Color"),{radio:!0}),i.get("features/flag/star")&&this.data("view").option("sort",660,F("Flag"),{radio:!0});function r(){var g=b.app.folder.get(),l,c;l=p.$('a[data-value="from-to"]'),c=l.contents().last(),c.replaceWith(S.is("sent|drafts",g)?F("To"):F("From")),l=p.$('a[data-value="602"]'),l.toggleClass("hidden",!o.pool.getModel(g).supports("ATTACHMENT_MARKER")),l=p.$('a[data-name="thread"]'),l.toggleClass("disabled",S.is("sent|drafts",g)).parent().toggleClass("disabled",S.is("sent|drafts",g))}}}),M.point("io.ox/mail/view-options").extend({id:"order",index:200,draw:function(){this.data("view").divider().option("order","asc",F("Ascending"),{radio:!0}).option("order","desc",F("Descending"),{radio:!0})}}),M.point("io.ox/mail/view-options").extend({id:"thread",index:300,draw:function(b){if(b.app.settings.get("threadSupport",!0)!==!1){var p=S.is("sent|drafts",b.app.folder.get());this.data("view").divider().option("thread",!0,F("Conversations")).$ul.find('a[data-name="thread"]').toggleClass("disabled",p).parent().toggleClass("disabled",p)}}});function n(b,p){if(b.folder.get()==="virtual/all-unseen")return p.hide();p.toggle(!b.props.get("find-result"))}M.point("io.ox/mail/list-view/toolbar/"+(t?"bottom":"top")).extend({id:"dropdown",index:1e3,draw:function(b){var p=b.app,T=p.props,r=new w({tagName:"li",className:"dropdown grid-options toolbar-item margin-auto",attributes:{role:"presentation"},caret:!0,label:F.pgettext("dropdown","Sort"),dataAction:"sort",model:T,tabindex:-1});M.point("io.ox/mail/view-options").invoke("draw",r.$el,b),this.append(r.render().$el.find(".dropdown-menu").addClass("dropdown-menu-right").end().on("dblclick",function(l){l.stopPropagation()}));var g=_.partial(n,p,r.$el);p.props.on("change:find-result",g),p.on("folder:change",g),g()}}),M.point("io.ox/mail/all-options").extend({id:"default",index:100,draw:function(b){var p=b.app,T=D.extensions,r=this.$ul,g=["markFolderSeen","moveAllMessages","archive","divider","empty"];p.folder.get()==="virtual/all-unseen"||p.props.get("find-result")||p.props.get("categories")?g=["selectAll"]:this.header(F("All messages in this folder")),p.folder.getData().done(function(l){var c=new M.Baton({data:l,module:"mail",listView:p.listView});g.forEach(function(h){T[h].call(r,c)})})}}),M.point("io.ox/mail/list-view/toolbar/"+(t?"bottom":"top")).extend({id:"all",index:200,draw:function(b){var p=b.app,T=p.props,r=new w({tagName:"li",attributes:{role:"presentation"},className:"dropdown grid-options toolbar-item",caret:!0,label:F.pgettext("dropdown","All"),dataAction:"all",model:T});M.point("io.ox/mail/all-options").invoke("draw",r,b),this.append(r.render().$el.on("dblclick",function(l){l.stopPropagation()})),p.props.on("change:find-result change:categories",g),p.on("folder:change",g);function g(){r.prepareReuse().render(),M.point("io.ox/mail/all-options").invoke("draw",r,b)}}});function u(b){var p=!!b.data.state;if(b.data.app.folderView.forceOpen=p,b.data.app.props.set("folderview",p),b.data.state)b.data.app.folderView.tree.getNodeView(b.data.app.folder.get()).$el.focus();else{var T=b.data.app.listView,r=T.selection.get().reduce(function(h,L){return h||T.selection.getNode(L)},null);if(r)T.selection.focus(0,r);else{var g=require("io.ox/mail/util"),l=T.selection.view.collection,c=l.models.find(function(h){return!g.isUnseen(h.get("flags"))});
3if(c)return T.selection.select(l.indexOf(c));T.$el.focus()}}}function f(b){b.getWindow().nodes.sidepanel.show(),t?b.getWindow().nodes.main.find('.toolbar-item[data-action="open-folder-view"]').hide():b.getWindow().nodes.main.find(".list-view-control").removeClass("toolbar-bottom-visible")}function a(b){b.getWindow().nodes.sidepanel.hide(),t?b.getWindow().nodes.main.find('.toolbar-item[data-action="open-folder-view"]').show():b.getWindow().nodes.main.find(".list-view-control").addClass("toolbar-bottom-visible")}M.point("io.ox/mail/list-view/toolbar/bottom").extend({id:"toggle-folderview",index:100,draw:function(b){this.append($('<button type="button" class="btn btn-link toolbar-item pull-left" data-action="open-folder-view">').attr("aria-label",F("Open folder view")).append($.icon("fa-angle-double-right",F("Open folder view"))).on("click",{app:b.app,state:!0},u)),t&&b.app.getWindow().nodes.main.find(".list-view-control").removeClass("toolbar-bottom-visible"),b.app.on({"folderview:open":f.bind(null,b.app),"folderview:close":a.bind(null,b.app)}),b.app.folderViewIsVisible()&&_.defer(f,b.app)}}),M.point("io.ox/mail/sidepanel").extend({id:"toggle-folderview",index:1e3,draw:function(b){var p=_.uniqueId("control");this.addClass("bottom-toolbar").append($('<div class="generic-toolbar bottom visual-focus" role="region">').attr("aria-labelledby",p).append($('<button type="button" class="btn btn-link toolbar-item" data-action="close-folder-view">').attr({id:p,"aria-label":F("Close folder view")}).append($.icon("fa-angle-double-left",F("Close folder view"))).on("click",{app:b.app,state:!1},u)))}}),M.point("io.ox/mail/sidepanel").extend({id:"help",index:1100,draw:k.help}),M.point("io.ox/mail/sidepanel").extend({id:"premium-area",index:1e4,draw:function(b){this.append(k.addPremiumFeatures(b.app,{append:!1,upsellId:"folderview/mail/bottom",upsellRequires:"active_sync"}))}})});define("io.ox/core/api/backbone",[],function(){"use strict";var M=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+")"}}),w=Backbone.Collection.extend({comparator:"index",model:M,parse:function(v){_.isArray(v)||(v=[v]);var S=this.model;return _(v).map(function(F){return F instanceof S?F:new S(F)})}});return{Model:M,Collection:w}});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(M,w,v,S,F,k,D,y,d,m,o,i){"use strict";var e=0;S.point("io.ox/mail/detail").extend({id:"unread-class",index:e+=100,draw:v.unreadClass}),S.point("io.ox/mail/detail").extend({id:"flagged-class",index:e+=100,draw:v.flaggedClass}),S.point("io.ox/mail/detail").extend({id:"subject",index:e+=100,draw:function(a){var b=k.getSubject(a.data);this.append($('<h1 class="subject">').text(b))}}),S.point("io.ox/mail/detail").extend({id:"header",index:e+=100,draw:function(a){var b=$('<header class="detail-view-header">');S.point("io.ox/mail/detail/header").invoke("draw",b,a),this.append(b)}});var t=0;S.point("io.ox/mail/detail/header").extend({id:"threadcontrol",index:t+=100,draw:function(a){var b=a.data,p=k.getSubject(b),T=k.hasFrom(b)?o("Email from %1$s: %2$s",k.getDisplayName(b.from[0]),p):p;this.append($('<h2 class="toggle-mail-body">').append($('<button type="button" class="toggle-mail-body-btn">').attr("aria-expanded",a.view.$el.hasClass("expanded")).append($('<span class="sr-only">').text(T))))}}),S.point("io.ox/mail/detail/header").extend({id:"picture",index:t+=100,draw:v.senderPicture}),S.point("io.ox/mail/detail/header").extend({id:"drag-support",index:t+=100,draw:function(a){this.find(".contact-picture").attr({"data-drag-data":_.cid(a.data),"data-drag-message":k.getSubject(a.data)})}}),S.point("io.ox/mail/detail/header").extend({id:"unread-toggle",index:t+=100,draw:v.unreadToggle},{id:"paper-clip",index:t+=100,draw:v.paperClip},{id:"rows",index:t+=100,draw:function(a){for(var b=1,p;b<=5;b++)p=$('<div class="detail-view-row row-'+b+' clearfix">'),S.point("io.ox/mail/detail/header/row"+b).invoke("draw",p,a),this.append(p)}}),S.point("io.ox/mail/detail/header/row1").extend({id:"from",index:t+=100,draw:v.fromDetail},{id:"priority",index:t+=100,draw:v.priority},{id:"security",index:t+=100,draw:v.security},{id:"date",index:t+=100,draw:v.fulldate},{id:"flag-toggle",index:t+=100,draw:v.flagToggle},{id:"color-picker",index:t+=100,draw:v.flagPicker}),S.point("io.ox/mail/detail/header/row2").extend({id:"sender",index:100,draw:function(a){S.point("io.ox/mail/detail/header/sender").invoke("draw",this,a)}}),S.point("io.ox/mail/detail/header/sender").extend({id:"default",index:100,draw:function(a){var b=a.data,p=b.from||[],T=k.authenticity("via",b);T&&a.data.authenticity&&a.data.authenticity.domain_mismatch&&a.data.authenticity.from_domain&&this.append($('<div class="sender">').append($('<span class="io-ox-label">').append($.txt(o("Via")),$.txt("\xA0\xA0")),$('<span class="address">').text(a.data.authenticity.from_domain)));var r=b.sender||[];if(r.length===0){if(!("headers"in b)||!("Sender"in b.headers))return;r=k.parseRecipients(b.headers.Sender)}if(r.length!==0&&!(p[0]&&p[0][1]===r[0][1])){var g=!!k.getDeputy(b);this.append($('<div class="sender">').append($('<span class="io-ox-label">').append($.txt(o(g?"on behalf of":"via")),$.txt("\xA0\xA0")),g?$('<span class="address">').text((p[0][0]||"")+" <"+p[0][1]+">"):$('<span class="address">').text((r[0][0]||"")+" <"+r[0][1]+">")))}}}),S.point("io.ox/mail/detail/header/row3").extend({id:"recipients",index:100,draw:function(a){S.point("io.ox/mail/detail/header/recipients").invoke("draw",this,a)}}),S.point("io.ox/mail/detail/header/recipients").extend({id:"default",index:100,draw:v.recipients}),S.point("io.ox/mail/detail/header/row4").extend({id:"different-subject",index:100,draw:function(a){var b=a.data,p,T,r;b.threadSize!==1&&(p=F.threads.subject(b),T=k.getSubject(p,!1),r=k.getSubject(b,!1),!(p===""||T===r)&&this.append($('<span class="io-ox-label">').text(o("Subject")+"\xA0 "),$('<span class="different-subject">').text(r)))}}),S.point("io.ox/mail/detail/header/row5").extend({id:"inline-links",index:100,draw:function(a){if
3(!(!a.view.$el.hasClass("expanded")||a.view.placeholder)){var b=new w({el:this[0],point:"io.ox/mail/links/inline",inline:!0});b.$el.attr("data-toolbar","io.ox/mail/links/inline"),b.setSelection([_.cid(a.data)],{data:a.data,view:a.view,threadView:a.view.options.threadview})}}}),S.point("io.ox/mail/detail").extend({id:"notifications",index:e+=100,draw:function(a){var b=$('<section class="notifications">');S.point("io.ox/mail/detail/notifications").invoke("draw",b,a),this.append(b)}}),S.point("io.ox/mail/detail").extend({id:"warnings",index:e+=100,draw:function(a){var b=$('<section class="warnings">');S.point("io.ox/mail/detail/warnings").invoke("draw",b,a),this.append(b)}}),S.point("io.ox/mail/detail").extend({id:"preview-text",index:e+=100,draw:function(a){!a.view.supportsTextPreview||!a.data.text_preview||this.append($('<section class="text-preview">').text(a.data.text_preview+(a.data.text_preview.length>=100?"...":"")))}}),S.point("io.ox/mail/detail/warnings").extend({id:"plaintextfallback",index:100,draw:v.plainTextFallback});var n=0;S.point("io.ox/mail/detail/notifications").extend({id:"phishing",index:n+=100,draw:v.phishing}),S.point("io.ox/mail/detail/notifications").extend({id:"authenticity",index:n+=100,draw:v.authenticity}),S.point("io.ox/mail/detail/notifications").extend({id:"disposition-notification",index:n+=100,draw:v.dispositionNotification}),S.point("io.ox/mail/detail/notifications").extend({id:"external-images",index:n+=100,draw:v.externalImages}),S.point("io.ox/mail/detail/notifications").extend({id:"disabled-links",index:n+=100,draw:v.disabledLinks}),S.point("io.ox/mail/detail").extend({id:"error",index:e+=100,draw:function(){this.append($('<section class="error">').hide())}}),S.point("io.ox/mail/detail").extend({id:"body",index:e+=100,draw:function(){this.append($('<section class="attachments">'),$('<section class="body user-select-text focusable" tabindex="-1">'))}}),S.point("io.ox/mail/detail/body").extend({id:"iframe",index:100,draw:function(a){var b=$('<iframe src="" class="mail-detail-frame">').attr("title",o("Email content")).on("load",function(){b.contents().on("click",'a[rel="noopener"], area[target="_blank"]',function(p){if(!_.device("noopener")){var T=($(this).attr("class")||"").indexOf("deep-link")>-1;T||(p.preventDefault(),blankshield.open($(this).attr("href")))}})});S.point("io.ox/mail/detail/body/iframe").invoke("draw",b,a),this.idle().append(b)}}),S.point("io.ox/mail/detail/body").extend({id:"content-flags",index:200,draw:function(a){if(a.content){var b=$(a.content);this.closest("article").toggleClass("content-links",!!b.find("a").length)}}}),S.point("io.ox/mail/detail/body/iframe").extend({id:"content",index:100,draw:function(a){var b=y.get(a.data,{},a.flow),p=$(b.content),T=0,r=function(x){x.target=this[0],this.trigger(x)}.bind(this);a.content=b.content,b.isText&&(p=$("<body>").append(p)),this.on("load",function(){_.defer(function(){var x=$(this.contentDocument).find("html");x.attr("lang")||x.attr("lang",$("html").attr("lang")),x.on("keydown mousemove click",r),_.device("ios && smartphone")&&x.addClass("ios smartphone"),$(this.contentDocument).find("head").append("<style>"+i+"</style>"),$(this.contentDocument).find("body").replaceWith(p),p.find("table").each(function(){(this.getAttribute("height")==="100%"||(this.style||{}).height==="100%")&&(this.setAttribute("height",""),$(this).css("height","initial"))}),g(p),$(this.contentWindow).on("complete toggle-blockquote",{iframe:$(this)},h).on("resize",{iframe:$(this)},L).on("dragover drop",!1).trigger("resize"),_.delay(function(){T=0,$(this.contentWindow).trigger("resize")}.bind(this),100)}.bind(this))});function g(x){x&&x.html()&&x.html().includes("[data-outlook-cycle")&&x.attr("data-outlook-cycle",!0)}function l(){T=0}var c=function(){var x=document.createElement("div"),C=document.createElement("div");x.appendChild(C),document.body.appendChild(x),x.style.visibility="hidden",x.style.width="100px";var N=x.offsetWidth;x.style.overflow="scroll",C.style.width="100%";var I=C.offsetWidth;return x.parentNode.removeChild(x),N-I}();function h(x){var C=this.document.body;if(C){if($(C).hasClass("infinite-growth"))return x.data.iframe.parent().addBack().height(x.data.iframe.attr("fixed-height"));var N=C.scrollWidth>C.clientWidth?c:0,I=C.scrollHeight;x.data.iframe.parent().addBack().height(C.scrollHeight+N),Math.abs(C.scrollHeight-I)>1&&(x.data.iframe.attr("fixed-height",I+N),$(C).addClass("infinite-growth"))}}function L(x){if(T<=0)T=2;else return;
3x.data.iframe.height(""),h.call(this,x),this.requestAnimationFrame(function(){T--})}var s=_.throttle(function(){$(this).off().trigger("complete")},200);p.find("img").on("load error",s),$(window).on("resize",l),this.on("dispose",function(){$(window).off("resize",l),$(this.contentWindow).off()})}}),S.point("io.ox/mail/detail/body/iframe").extend({id:"events",index:200,draw:function(){this.on("load",function(){_.defer(function(){var a=$(this.contentDocument).find("html"),b=".mailto-link, .deep-link-tasks, .deep-link-contacts, .deep-link-calendar, .deep-link-files, .deep-link-gdpr, .deep-link-app";a.on("click",b,function(p){ox.trigger("click:deep-link-mail",p,this)})}.bind(this))})}}),S.point("io.ox/mail/detail/body/iframe").extend({id:"max-size",index:1200,after:"content",draw:function(a){this.on("load",function(){_.defer(function(){var b=_(a.data.attachments).some(function(T){return T.truncated});if(b){var p="api/mail?"+$.param({action:"get",view:"document",forceImages:!0,folder:a.data.folder_id,id:a.data.id,session:ox.session});$(this.contentDocument).find(".mail-detail-content").append($('<div class="max-size-warning">').append($.txt(o("This message has been truncated due to size limitations.")),$.txt(" "),$('<a role="button" target="_blank">').attr("href",p).text(a.model.get("modified")!==1?o("Show entire message"):o("Show entire message including all external images")))),$(this.contentWindow).trigger("complete")}}.bind(this))})}}),S.point("io.ox/mail/detail/attachments").extend({id:"attachment-list",index:200,draw:function(a){a.attachments.length!==0&&v.attachmentList.call(this,a)}});var u=D.create("mail"),f=M.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",k.isUnseen(this.model.get("flags"))),this.$el.toggleClass("flagged",k.isFlagged(this.model.get("flags")))},onChangeAttachments:function(){if(!(this.model.changed.attachments&&_.isEqual(this.model.previous("attachments"),this.model.get("attachments")))){var a=this.model.toJSON(),b=S.Baton({view:this,model:this.model,data:a,attachments:k.getAttachments(a)}),p=this.$el.find("section.attachments").empty();S.point("io.ox/mail/detail/attachments").invoke("draw",p,b),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 a=this.$el.find("h1.subject");return a.text(k.getSubject(this.model.get("subject"),!0)),a},onChangeContent:function(){var a=this.model.toJSON(),b=S.Baton({view:this,model:this.model,data:a,attachments:k.getAttachments(a)}),p=this.$el.find("section.body"),T=this.getEmptyBodyNode(),r=this;b.disable(this.options.disable),p.css("min-height",this.model.get("visualHeight")||null),_.delay(function(){r.disposed||(S.point("io.ox/mail/detail/body").invoke("draw",T,b),ox.trigger("mail:detail:body:render",r),r.trigger("mail:detail:body:render",r),p=T=r=null)},20)},onChangeRecipients:_.debounce(function(){if(!this.disposed){var a=this.model.toJSON(),b=S.Baton({data:a,model:this.model,view:this}),p=this.$(".recipients").empty();S.point("io.ox/mail/detail/header/recipients").invoke("draw",p,b)}},10),onToggle:function(a){if(!(a.type==="keydown"&&a.which!==13&&a.which!==32)&&!$(a.target).closest("a").length){if(!$(a.currentTarget).hasClass("toggle-mail-body-btn")){var b=d.getTabbable(this.$el);if(b.index(a.target)>=0||b.find($(a.target)).length)return}$(a.target).hasClass("dropdown-menu")||$(a.target).hasClass("overlay")||this.$el.siblings().length===0&&this.$el.hasClass("expanded")||(this.$el.find(".collapsed-blockquote").hide(),this.$el.find(".blockquote-toggle").show(),this.toggle())}},onRetry:function(a){a.preventDefault(),this.$("section.error").hide(),this.$("section.body").show(),this.toggle(!0)},onUnseen:function(){var a=this.model.toJSON();this.model.cid!==F.setToUnread&&k.isToplevel(a)&&F.markRead(a)}
3,onLoad:function(a){if(this.model!==null){a&&this.model.set(a);var b=this.model.get("unseen")||k.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(),b?this.onUnseen():F.trigger("update:set-seen",[{id:this.model.get("id"),folder_id:this.model.get("folder_id")}])}},onLoadFail:function(a){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(o("Error: Failed to load message content")),$("<p>").text(a.error),$('<a href="#" role="button" data-action="retry">').text(o("Retry"))),ox.trigger("yell:error",a))},toggle:function(a){this.placeholder=!1;var b=this.$el,p=b.find(".toggle-mail-body-btn");b.toggleClass("expanded",a);var T=b.hasClass("expanded");if(p.attr("aria-expanded",T),this.$el.trigger("toggle"),b.attr("data-loaded")==="false"&&T)if(b.attr("data-loaded",!0),b.find("section.body").addClass("loading"),this.trigger("load"),this.loaded)this.onLoad();else{var r=_.cid(this.model.cid);_(r).size()===1&&r.id!==void 0&&this.model.has("parent")?F.getNestedMail(this.model.attributes).pipe(this.onLoad.bind(this),this.onLoadFail.bind(this)):F.get(_.extend({},r,{unseen:this.model.cid===F.setToUnread})).pipe(this.onLoad.bind(this),this.onLoadFail.bind(this))}else T&&this.$el.find(".mail-detail-frame").contents().find(".mail-detail-content").trigger("resize");return this},expand:function(){return this.toggle(!0)},initialize:function(a){this.options=a||{},this.model=u.getDetailModel(a.data),this.loaded=a.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=a.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 a=this.model.toJSON(),b=S.Baton({data:a,model:this.model,view:this});return b.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?S.point("io.ox/mail/detail").get("body").invoke("draw",this.$el,b):(this.$el.children("section.body,section.attachments").remove(),S.point("io.ox/mail/detail").invoke("draw",this.$el,b)),this.$el.toggleClass("placeholder",this.placeholder),ox.trigger("mail:detail:render",this),this}});return{View:f}});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(M,w,v,S,F,k,D){"use strict";var y=0;v.point("io.ox/mail/mobile/detail").extend({id:"unread-class",index:y+=100,draw:w.unreadClass}),v.point("io.ox/mail/mobile/detail").extend({id:"flagged-class",index:y+=100,draw:w.flaggedClass}),v.point("io.ox/mail/mobile/detail").extend({id:"header",index:y+=100,draw:function(i){var e=$('<header class="mobile-detail-view-mail detail-view-header">');v.point("io.ox/mail/mobile/detail/header").invoke("draw",e,i),this.append(e)}});var d=0;v.point("io.ox/mail/mobile/detail/header").extend({id:"drag-support",index:d+=100,draw:function(i){this.attr({"data-drag-data":_.cid(i.data),"data-drag-message":F.getSubject(i.data)})}}),v.point("io.ox/mail/mobile/detail/header").extend({id:"actions",index:d+=100,draw:w.actions}),v.point("io.ox/mail/mobile/detail/header").extend({id:"from",index:d+=100,draw:w.fromDetail}),v.point("io.ox/mail/mobile/detail/header").extend({id:"priority",index:d+=100,draw:w.priority}),v.point("io.ox/mail/mobile/detail/header").extend({id:"paper-clip",index:d+=100,draw:w.paperClip}),v.point("io.ox/mail/mobile/detail/header").extend({id:"recipients",index:d+=100,draw:w.recipients}),v.point("io.ox/mail/mobile/detail/header").extend({id:"unread-indicator",index:d+=100,draw:w.unreadIndicator}),v.point("io.ox/mail/mobile/detail/header").extend({id:"subject",index:d+=100,draw:function(i){var e=F.getSubject(i.data,!0);this.append($('<h1 class="subject">').text(e))}}),v.point("io.ox/mail/mobile/detail/header").extend({id:"date",index:d+=100,draw:w.fulldate}),v.point("io.ox/mail/mobile/detail/header").extend({id:"flags",index:d+=100,draw:function(i){var e=$
3('<span class="flags">').appendTo(this);v.point("io.ox/mail/mobile/detail/header/flags").invoke("draw",e,i)}}),v.point("io.ox/mail/mobile/detail/header/flags").extend({id:"security",index:d+=100,draw:w.security}),v.point("io.ox/mail/mobile/detail/header/flags").extend({id:"flag-toggle",index:d+=100,draw:w.flagToggle}),v.point("io.ox/mail/mobile/detail/header/flags").extend({id:"color-picker",index:d+=100,draw:function(i){w.flagPicker.call(this,i)}}),v.point("io.ox/mail/mobile/detail").extend({id:"notifications",index:y+=100,draw:function(i){var e=$('<section class="notifications">');v.point("io.ox/mail/detail/notifications").invoke("draw",e,i),this.append(e)}}),v.point("io.ox/mail/mobile/detail").extend({id:"body",index:y+=100,draw:function(){this.append($('<section class="attachments">'),$('<section class="body user-select-text">'))}}),v.point("io.ox/mail/mobile/detail/attachments").extend({id:"attachment-list",index:100,draw:function(i){i.attachments.length!==0&&w.attachmentList.call(this,i)}}),v.point("io.ox/mail/mobile/detail/attachments").extend({id:"attachment-preview",index:200,draw:w.attachmentPreview}),v.point("io.ox/mail/mobile/detail/body").extend({id:"iframe+content",index:100,draw:function(i){var e=this;v.point("io.ox/mail/detail/body").get("iframe",function(t){t.invoke("draw",e,i)}),v.point("io.ox/mail/detail/body").get("content",function(t){t.invoke("draw",e,i)})}}),v.point("io.ox/mail/mobile/detail/body").extend({id:"max-size",after:"content",draw:function(i){var e=_(i.data.attachments).some(function(n){return n.truncated});if(e){var t="api/mail?"+$.param({action:"get",view:"document",folder:i.data.folder_id,id:i.data.id,session:ox.session});this.append($('<div class="max-size-warning">').append($.txt(D("This message has been truncated due to size limitations.")),$.txt(" "),$('<a role="button" target="_blank">').attr("href",t).text(D("Show entire message"))))}}});var m=M.View.extend({events:{"click .detail-view-header":"onClick"},onClick:function(i){$(i.target).hasClass("show-all-recipients")||this.$el.trigger("showmail")},toggle:function(){return this}}),o=M.View.extend({onChangeAttachments:function(){var i=this.model.toJSON(),e=v.Baton({data:i,attachments:F.getAttachments(i),view:this}),t=this.$el.find("section.attachments").empty();v.point("io.ox/mail/mobile/detail/attachments").invoke("draw",t,e),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 i=this.model.toJSON(),e=v.Baton({view:this,model:this.model,data:i,attachments:F.getAttachments(i)}),t=this.getEmptyBodyNode();e.disable(this.options.disable),v.point("io.ox/mail/mobile/detail/body").invoke("draw",t,e)},render:function(){var i=this.model.toJSON(),e=v.Baton({data:i,model:this.model,view:this}),t=F.getSubject(i),n=F.hasFrom(i)?D("Email from %1$s: %2$s",F.getDisplayName(i.from[0]),t):t;return _(this.options.disable).each(function(u,f){_.isArray(u)?_(u).each(function(a){e.disable(f,a)}):e.disable(f,u)}),this.$el.attr({"aria-label":n,"data-cid":this.cid,"data-loaded":"false"}),this.$el.data({view:this,model:this.model}),this.baton=e,v.point("io.ox/mail/mobile/detail").invoke("draw",this.$el,e),$('[data-page-id="io.ox/mail/detailView"]').trigger("header_ready"),this}});return{HeaderView:m,DetailView:o}});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(M,w,v){"use strict";function S(y,d){return y=y.map(function(){return $.trim($(this).attr("title")||$(this).text())}),$.makeArray(y).join(d||"")}function F(y){var d=S(this.find(".selected .drag-title"),", ");return d||v.ngettext("%1$d item","%1$d items",y.length,y.length)}var k;function D(y){y=_.extend({container:$(),data:null,delegate:!1,draggable:!1,dragMessage:F,dragType:"",dropzone:!1,dropzoneSelector:".selectable",dropType:"",selection:null,selectable:".selectable",simple:!1},y);var d=y.container||$(),m,o,i,e=!1,t=null,n,u=15,f=15,a=0,b=0,p=0,T=0,r=Math.abs;function g(R){p=R.pageX+u,T=R.pageY+f,(r(a-p)>=5||r(b-T)>
3=5)&&(n.left=p+"px",n.top=T+"px",a=p,b=T)}function l(){d.trigger("selection:dragstart")}function c(){this.trigger("click")}function h(R){if(!R.isDefaultPrevented()){R.preventDefault();var H=$(this).find(".folder-arrow:first");$(this).addClass("dnd-over"),H.length&&(clearTimeout(k),k=setTimeout(c.bind(H),1500))}}function L(){clearTimeout(k),$(this).removeClass("dnd-over")}var s=function(){var R=0,H=null;return{move:function(K){R=K.pageY-$(this).offset().top},out:function(){clearInterval(H),H=null},over:function(){if(!H){var K=this.clientHeight,ee,ne,se;H=setInterval(function(){ee=R<K/2?-1:1,ne=Math.min(R,K-R),!(ne>24)&&(se=ne<8?3:1,this.scrollTop+=ee*se)}.bind(this),5)}}}}();function x(R){$("body").addClass("dragging"),$(document).off("mousemove.dnd",x);var H=i.reduce(function(K,ee){var ne=$(ee).find(".drag-count");return K+(ne.length?parseInt(ne.text(),10):1)},0);t=$('<div class="drag-helper">'),M.point("io.ox/core/tk/draghelper").invoke("draw",t,new M.Baton({container:d,count:H||m.length,data:m,source:o,dragMessage:y.dragMessage})),n=t[0].style,a=b=p=T=0,g(R),t.appendTo(document.body),e=!0,$(document).one("mousemove.dnd",l).on("mousemove.dnd",g).on("mouseover.dnd",".folder-tree",s.over).on("mouseout.dnd",".folder-tree",s.out).on("mousemove.dnd",".folder-tree",s.move).on("mouseover.dnd",y.dropzoneSelector,h).on("mouseout.dnd",y.dropzoneSelector,L).on("keyup.dnd",N)}function C(){t!==null&&($("body").removeClass("dragging"),t.remove(),t=n=null)}function N(R){R.which===27&&I()}function I(){$("body").removeClass("dragging"),s.out(),$(document).off("mousemove.dnd mouseup.dnd mouseover.dnd mouseout.dnd keyup.dnd"),$(".dropzone").each(function(){var R=$(this),H=R.attr("data-dropzones"),K=R.attr("data-delegate");if(K&&H)return R.off("mouseup.dnd",H);(H?R.find(H):R).off("mouseup.dnd")}),$(".dnd-over").removeClass("dnd-over"),d.trigger("selection:dragstop"),t!==null&&C(),o=i=m=null}function P(R){if(!R.isDefaultPrevented()&&($("body").removeClass("dragging"),R.preventDefault(),clearTimeout(k),!!e)){var H=$(this).attr("data-model")||$(this).attr("data-id")||$(this).attr("data-cid")||$(this).attr("data-obj-id"),K=new M.Baton({data:m,dragType:y.dragType,dropzone:this,target:H});$(this).trigger("selection:drop",[K])}}function B(R){var H=Math.abs(R.pageX-R.data.x),K=Math.abs(R.pageY-R.data.y);(H>15||K>15)&&$(document).off("mousemove.dnd").on("mousemove.dnd",x)}function W(R){return R.indexOf("folder.")===0?{folder_id:"folder",id:R.replace(/^folder./,"")}:_.cid(R.replace(/^thread./,""))}function z(R){e=!1,o=$(this),i=_(d.find(".selected")),m=o.attr("data-drag-data")?[o.attr("data-drag-data")]:i.map(function(K){return $(K).attr("data-cid")});var H=new w(_(m).map(W));H.getProperties(),!(H.isResolved()&&!H.has("delete"))&&($(".dropzone").each(function(){var K=$(this),ee=K.attr("data-dropzones"),ne=K.attr("data-delegate");if(ne&&ee)return K.on("mouseup.dnd",ee,P);(ee?K.find(ee):K).on("mouseup.dnd",P)}),$(document).on("mousemove.dnd",{x:R.pageX,y:R.pageY},B).on("mouseup.dnd",I),R.preventDefault())}y.draggable&&d.on("mousedown.dnd",y.selectable,z),y.delegate&&d.attr("data-delegate",!0),y.dropzone&&(y.selection===null&&console.error("list-dnd: Selection required for dropzone!",y),d.addClass("dropzone").attr("data-dropzones",y.dropzoneSelector).on("drop",function(R,H){H.dropType=y.dropType,y.selection.trigger("selection:drop",H)}))}return{enable:_.device("touch")?$.noop:D}});define("io.ox/core/print",["io.ox/core/http","io.ox/core/notifications","gettext!io.ox/core"],function(M,w,v){"use strict";var S="default.tmpl",F={mail:"super-mail-template.tmpl",contacts:"super-contacts-template.tmpl",tasks:"super-tasks-template.tmpl"},k={};function D(o){return(o||"").replace(/[#%&§/$*!`´'"=:@+^\\.+?{}|]/g,"_")}function y(o,i){var e="print_"+_.now();return window[e]=function(t){try{var n=o.selector||"script",u=$(t.body).find('[type="text/template"]').filter(n).html(),f=(o.title||"").trim();$(t.body).html('<div class="print-wrapper">'+$.trim(_.template(u)(i))+"</div>"),o.meta.classes&&$(t.body).addClass(o.meta.classes),t.title=D(ox.serverConfig.pageTitle||"")+D(f.length?" "+f:"")+" "+v("Printout")}catch(a){console.error(a)}},e}function d(){for(var o in k)k[o]&&k[o].closed&&(delete k[o],delete window[o])}var m={request:function(o,i){var e;function t(){require([o]).then(function(u){_.isFunction(u.open)?u.open(i,e):console.error('Missing function "open" in:',o,u)},function(){console.error("Failed to load print manager")})}return _.device("desktop")?(e=this.openURL(ox.base+"/busy.html"),t()):ox.load(["io.ox/backbone/views/modal"]).done(function(n){var u=$('<iframe frameborder="0" style="width:100%;height:100%;">').attr("src",ox.base+"/busy.html"),f=window.innerHeight*.9;new n({title:v("Print"),width:window.innerWidth*.9,height:f}).addCancelButton().addButton({label:v("Print"),action:"print"}).build(function(){f-=100,this.$body.css({height:f,maxHeight:f}).append(u)}).on("print",function(){e.print()}).open(),e=u[0].contentWindow,t()}),e},smart:function(o){o=_.extend({get:$.noop,selection:[],i18n:{},file:ox.base+"/print.html",meta:{}},o),o.selection=_.chain(o.selection).toArray().compact(),M.pause(),$.when.apply($,_.chain(o.selection).map(function(e){return _.isString(e)?e:_.cid(e)}).uniq().map(function(e,t){return o.get(_.cid(e),t).then(function(n){return o.process?o.process(n,t,o):n})}
3).value()).done(function(){var i=_.chain(arguments).toArray(),e=i.value().length;o.filter&&(i=i.filter(o.filter)),o.sortBy&&(i=i.sortBy(o.sortBy)),i=i.value();var t=y(o,{data:i,i18n:o.i18n,meta:o.meta,length:i.length,filtered:e-i.length}),n=o.file+"?"+t;_.defer(function(){o.window?(o.window.location=n,k[t]=o.window):k[t]=m.openURL(n),d()})}).fail(function(){o.window&&o.window.close(),w.yell({type:"error",headline:v("Error"),message:o.selection.length===1?v("Cannot print this item"):v("Cannot print these items")})}),M.resume()},getWindowOptions:function(){var o={width:750,height:Math.min(screen.availHeight-100,1050),top:40};return o.left=(screen.availWidth-o.width)/2>>0,o.string="width="+o.width+",height="+o.height+",left="+o.left+",top="+o.top+",menubar=no,toolbar=no,location=no,scrollbars=yes,status=no",o},getWindow:function(o){var i="print_"+_.now(),e=this.getWindowOptions(o),t=window.open(o,i,e.string);return t},open:function(o,i,e){var t={action:"get"},n;return o==="printCalendar"&&delete t.action,_.isArray(i)?t.data=JSON.stringify(i):_.isObject(i)&&(t.folder=i.folder_id||i.folder,t.id=i.id),t.format="template",t.template=F[o]||S,t.session=ox.session,n=ox.apiRoot+"/"+o+"?"+$.param(_.extend(t,e)),this.getWindow(n)},openURL:function(o){return this.getWindow(o||ox.base+"/blank.html")},interim:function(o){return console.warn("Temporary solution; replace by open()",o),this.openURL(o)}};return m});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(M,w,v,S,F,k,D,y,d,m){"use strict";var o=d.get("search/fields","").split(",").filter(Boolean),i=function(r){return r.id?(r.birthday&&moment.utc(r.birthday).year()<=1&&(r.birthday=k.julianToGregorian(r.birthday)),r.anniversary&&moment.utc(r.anniversary).year()<=1&&(r.anniversary=k.julianToGregorian(r.anniversary)),r):(_(r).each(function(g){g.birthday&&moment.utc(g.birthday).year()<=1&&(g.birthday=k.julianToGregorian(g.birthday)),g.anniversary&&moment.utc(g.anniversary).year()<=1&&(g.anniversary=k.julianToGregorian(g.anniversary))}),r)},e=function(r,g){return g=g||{mode:"update"},_(r).each(function(l,c){(l===""||l===void 0)&&(g.mode==="update"?r[c]=null:delete r[c])})},t=v({module:"addressbooks",requests:{all:{action:"all",folder:k.getGabId(),columns:ox.locale==="ja_JP"?"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"},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",omitFolder:!0,sort:"607",getData:function(r,g){var l={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(" "),job:"employee_type department position room_number profession".split(" ")},c=["and"],h,L=!0;o.length&&(l.customized=o),g=g||{},g.onlyUsers&&c.push([">",{field:"user_id"},0]);var s=g.splitWords?r.trim().split(/\s+/):[r];return _(s).each(function(x){if(x){var C=["or"];!x.includes("*")&&!x.includes("?")&&(x="*"+x+"*"),_(g).each(function(N,I){_.has(l,I)&&N==="on"&&(_(l[I]).each(function(P){C.push(["=",{field:P},x])}),L=C.length===1)}),L&&_(l.names).each(function(N){C.push(["=",{field:N},x])}),c.push(C)}}),c.length<2?h={}:c.length<3?h={filter:c[1]}:h={filter:c},g.folders&&(h.folders=[].concat(g.folders)),g.folderTypes&&(h.folderTypes=g.folderTypes),M.point("io.ox/contacts/api/search").invoke("getData",h,r,g),h}}},pipe:{get:function(r){return r.user_id&&(r.internal_userid=r.user_id),r&&r.distribution_list&&r.distribution_list.length&&ox.locale==="ja_JP"&&(_(r.distribution_list).each(function(g){g.email=g.mail,g.sort_name_without_mail=g.sort_name}),r.distribution_list.sort(y.sorterWithMail),_(r.distribution_list).each(function(g){_(g).omit("email","sort_name_without_mail")})),i(r)},all:function(r){if(ox.locale==="ja_JP")return _(r).each(function(h){h.email=h.email1||h.email2||h.email3||"",h.sort_name_without_mail=h.sort_name}),r.sort(y.sorterWithMail),_(r).each(function(h){_(h).omit("email","sort_name_without_mail")}),r;for(var g=0,l,c=0;l=r[g++];)l.sort_name===""&&c++;return c>0&&(r=r.slice(c).concat(r.slice(0,c))),r},list:function(r){return _(r).each(function(g){g.birthday===null&&delete g.birthday,g.distribution_list===null&&delete g.distribution_list}),r},listPost:function(r){return _(r).each(function(g){t.caches.get.dedust(g,"last_modified").then(function(l){l&&t.trigger("update:contact",g)})}),t.trigger("list:ready"),r},advancedsearch:i}}),n=t.getList;t.getList=function(r,g,l){if(!m.has("gab")&&l&&l.check&&_.isFunction(l.check)){var c=_(r).any(function(h){return!l.check(h)});return c?(delete l.check,n.apply(this,arguments)):new $.Deferred().resolve(r)}return n.apply(this,arguments)};
3function u(r){return require(["io.ox/core/api/user"]).then(function(g){return $.when(g.caches.get.remove({id:r.user_id}),g.caches.all.clear(),g.caches.list.remove({id:r.user_id}))})}function f(r,g){(r[g]===""||r[g]===void 0)&&delete r[g]}t.create=function(r,g){f(r,"email1"),f(r,"email2"),f(r,"email3"),r.birthday&&moment.utc(r.birthday).local(!0).year()<=1&&(r.birthday=k.gregorianToJulian(r.birthday)),r.anniversary&&moment.utc(r.anniversary).local(!0).year()<=1&&(r.anniversary=k.gregorianToJulian(r.anniversary));var l,c={module:"addressbooks",data:r,appendColumns:!1,fixPost:!0};return r=e(r,{mode:"create"}),g?window.FormData&&g instanceof window.File?(l="UPLOAD",c.data=new FormData,c.data.append("file",g),c.data.append("json",JSON.stringify(r)),c.params={action:"new"}):(l="FORM",c.form=g,c.action="new"):(l="PUT",c.params={action:"new"}),w[l](c).then(function(h){return h=h.data||h,t.get({id:h.id,folder:r.folder_id})}).then(function(h){return $.when(t.caches.all.grepRemove(h.folder_id+t.DELIM),a.clear()).then(function(){return t.trigger("create",{id:h.id,folder:h.folder_id}),t.trigger("refresh.all"),h})})},t.update=function(r){var g=r.attachments,l=!1;return _.isEmpty(r.data)?g?$.when().then(function(){return t.trigger("update:"+_.ecid(r)),t.trigger("update",r),{folder_id:r.folder,id:r.id}}):$.when():(r.data.birthday&&moment.utc(r.data.birthday).local(!0).year()<=1&&(r.data.birthday=k.gregorianToJulian(r.data.birthday)),r.data.anniversary&&moment.utc(r.data.anniversary).local(!0).year()<=1&&(r.data.anniversary=k.gregorianToJulian(r.data.anniversary)),r.data=e(r.data,{mode:"update"}),(_(r.data).has("email1")||_(r.data).has("email2")||_(r.data).has("email3"))&&(l=!0),w.PUT({module:"addressbooks",params:{action:"update",id:r.id,folder:r.folder,timestamp:r.last_modified||_.then(),timezone:"UTC"},data:r.data,appendColumns:!1}).then(function(){return t.get({id:r.id,folder:r.folder},!1).then(function(c){return $.when(l?t.caches.get.clear():"",t.caches.get.add(c),l?t.cac
3hes.all.clear():t.caches.all.grepRemove(r.folder+t.DELIM),l?t.caches.list.clear():t.caches.list.remove({id:r.id,folder:r.folder}),a.clear(),c.user_id?u(c):"").done(function(){t.trigger("update:"+_.ecid(c),c),t.trigger("update",c),t.trigger("refresh.all"),r.data.image1===""&&(t.trigger("update:image",c),t.trigger("reset:image reset:image:"+_.ecid(c),c))})})}))},t.editNewImage=function(r,g,l){var c=function(L){return $.when(t.caches.get.clear(),t.caches.list.clear(),a.clear()).then(function(){t.trigger("refresh.list"),t.trigger("update:"+_.ecid(r)),t.trigger("update:image",{id:r.id,folder:r.folder_id})}),L};if("FormData"in window&&l instanceof window.File){var h=new FormData;return h.append("file",l),h.append("json",JSON.stringify(g)),w.UPLOAD({module:"addressbooks",params:{action:"update",id:r.id,folder:r.folder_id,timestamp:_.then()},data:h,fixPost:!0}).then(c)}return w.FORM({module:"addressbooks",action:"update",form:l,data:g,params:{id:r.id,folder:r.folder_id,timestamp:_.then()}}).then(c)},t.remove=function(r){return t.trigger("beforedelete",r),r=_.isArray(r)?r:[r],w.PUT({module:"addressbooks",params:{action:"delete",timestamp:_.then(),timezone:"UTC"},appendColumns:!1,data:_(r).map(function(g){return{folder:g.folder_id,id:g.id}})}).then(function(){return $.when(t.caches.all.clear(),t.caches.list.remove(r),a.clear())}).fail(function(g){S.yell("error",g.error)}).done(function(){_(r).map(function(g){t.trigger("delete:"+_.ecid(g),g),t.trigger("delete",g)}),t.trigger("refresh.all")})},t.on("refresh^",function(){t.caches.get.clear()}),t.on("refresh.all:import",function(){t.caches.list.clear(),a.clear(),t.caches.get.clear(),t.trigger("import"),t.trigger("refresh.all")});var a=new F.SimpleCache("contacts-fetching");t.clearFetchCache=function(){return a.clear()},t.getByEmailaddress=function(r){return r=r||"",a.get(r).then(function(g){return g!==null?g:r===""?{}:(w.isPaused()||(w.pause(),_.defer(w.resume.bind(w))),w.PUT({module:"addressbooks",params:{action:"advancedSearch",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:{filter:["or",["=",{field:"email1"},r],["=",{field:"email2"},r],["=",{field:"email3"},r]]}}).then(function(l){return l=l.filter(function(c){return!c.mark_as_distributionlist}),l.length?(l.sort(function(c,h){return h.image1_url?1:-1}),l.sort(function(c,h){return String(h.folder_id)===k.getGabId()?1:-1}),l=l[0],l.image1_url&&(l.image1_url=l.image1_url.replace(/^https?:\/\/[^/]+/i,""),l.image1_url=D.replacePrefix(l.image1_url),l.image1_url=D.getShardingRoot(l.image1_url)),a.add(r,l)):a.add(r,{})}))})},t.getFallbackImage=function(r){return ox.base+"/apps/themes/"+ox.theme+"/fallback-image-"+(r||"contact")+".png"};var b=ox.t0;t.on("update:image",function(){b=_.now()}),t.pictureHalo=function(){var r={},g=t.getFallbackImage();function l(s,x){if(t.looksLikeResource(s))return"resource";if(t.looksLikeGroup(s)||t.looksLikeDistributionList(s))return"group";if(_.isString(s.image1_url)&&s.image1_url!=="")return"image_url";if(s.user_id||s.userid||s.userId||s.internal_userid)return"user";if((s.contact_id||s.id)&&(s.folder_id||s.folder))return"contact";if(s.mail||s.email||s.email1)return"email";if(x.fallback)return"fallback"}function c(s,x,C){var N={};switch(C){case"user":N.user_id=s.user_id||s.userid||s.userId||s.internal_userid;break;case"contact":N.contact_id=s.contact_id||s.id,N.folder_id=s.folder_id||s.folder;break;case"email":N.email=s.email&&String(s.email).toLowerCase()||s.mail&&String(s.mail).toLowerCase()||s.email1&&String(s.email1).toLowerCase();break;default:}return N.sequence=s.last_modified||1,_.extend(N,p(x))}function h(s,x,C,N){return C.width===1||N.type==="error"?(r[s]=null,x.fallback?g:null):(r[s]=s,s)}function L(s,x,C){return _.defer(function(){var N=C.lazyload||C.container||_.first(s.closest(".scrollpane, .scrollable:not(.swiper-slide), .scrollpane-lazyload"));if(N)return C.fallback&&s.css("background-image","url("+g+")"),s.attr("data-original",x).on("load.lazyload error.lazyload",function(I,P){var B=h(x,C,P,I);B&&s.text("").attr("data-original",B).css("background-image","url("+B+")"),s=x=C=null,$(this).off(".lazyload")}).lazyload();$(new Image).on("load error",function(I){var P=h(x,C,this,I);P&&s.text("").css("background-image","url("+P+")"),s=null,$(this).off()}).attr("src",x)}),s}
3return function(s,x,C){var N=_.extend({width:48,height:48,scaleType:"cover",lazyload:!1,effect:"show",urlOnly:!1,fallback:!0},C),I=l(x,_.pick(N,"fallback")),P=c(x,N,I),B;switch(x.facet&&x.facet.hasPersons()&&x.data.item&&(x.image1_url=x.data.item.image_url),I){case"resource":B=t.getFallbackImage("resource");break;case"group":B=t.getFallbackImage("group");break;case"image_url":B=x.image1_url=D.replacePrefix(x.image1_url)+"&"+$.param(P),B=D.getShardingRoot(B);break;case"fallback":B=g;break;default:}if(B)return N.urlOnly?B:L(s,B,_.pick(N,"container","lazyload","fallback"));if(B=D.getShardingRoot("/contacts/picture?action=get&"+$.param(P)),B in r){var W=r[B]||(N.fallback?g:null);return N.urlOnly?W:W?s.text("").css("background-image","url("+W+")"):s}try{return N.urlOnly?B:L(s,B,N)}finally{x=s=N=P=null}}}(),t.getContactPhoto=function(r,g){g=_.extend({size:48,fallback:!1,initials:!0},g);var l=this.getContactPhotoUrl(r,g.size)||g.fallback&&t.getFallbackImage(),c=$('<div class="contact-photo" aria-hidden="true">');return!l&&g.initials&&c.text(k.getInitials(r)),l&&c.css("background-image","url("+l+")"),c.toggleClass("empty",!l),c},t.getContactPhotoUrl=function(r,g){var l={width:g,height:g,sequence:!1,uniq:!1};return r.image1_url?D.getShardingRoot(D.replacePrefix(r.image1_url)+"&"+$.param(p(l))):""};function p(r){return $.extend({},{width:_.device("retina")?r.width*2:r.width,height:_.device("retina")?r.height*2:r.height,scaleType:r.scaleType,user:ox.user_id,context:ox.context_id,sequence:r.sequence!==!1?r.sequence:void 0,uniq:r.uniq!==!1?b:void 0})}t.getDisplayName=function(r,g){g=_.extend({halo:!0,stringify:"getDisplayName",tagName:"a"},g);var l,c,h,L=r.display_name||"",s=$("<"+g.tagName+">").text("\xA0"),x=r.email;return l=function(C){g.halo&&/@/.test(r.email)&&m.has("contacts")&&s.addClass("halo-link").attr("href","#").data({display_name:C,email1:x}),s.text(C+"\xA0")},c=function(){_.defer(function(){s=l=c=h=g=null})},h=function(C){if(_.isArray(C)&&(C=C[0]),_.isString(C))return l(C);C&&(_.isEmpty(C)?l(L):l(k[g.stringify](C)),c())},r&&r.full_name?(h(r.full_name),c()):r&&(r.last_name||r.first_name)?(h(r),c()):t.getByEmailaddress(r.email).done(h).fail(c),s};var T=function(r,g,l){return r=_.isArray(r)?r:[r],w.pause(),_(r).map(function(c){return w.PUT({module:"addressbooks",params:{action:g||"update",id:c.id,folder:c.folder_id||c.folder,timezone:"UTC",timestamp:c.timestamp||_.then()},data:{folder_id:l},appendColumns:!1})}),w.resume().then(function(c){var h=$.Deferred();return _(c).each(function(L){L.error&&(S.yell(L.error),h.reject(L.error))}),h.state()==="rejected"?h:$.when.apply($,_(r).map(function(L){return $.when(t.caches.all.grepRemove(l+t.DELIM),t.caches.all.grepRemove(L.folder_id+t.DELIM),t.caches.list.remove({id:L.id,folder:L.folder_id}))}))}).done(function(){t.trigger("refresh.all"),g==="update"&&r.forEach(function(c){t.trigger("move",_.ecid(c),{folder_id:l})})})};return t.move=function(r,g){return T(r,"update",g)},t.copy=function(r,g){return T(r,"copy",g)},t.birthdays=function(r){var g=_.now(),l=_.extend({action:"birthdays",start:g,end:g+6048e5,columns:"1,20,500,501,502,503,504,505,511",timezone:"UTC"},r||{});return w.GET({module:"addressbooks",params:l}).then(i)},t.looksLikeResource=function(r){return"mailaddress"in r&&"description"in r||"cuType"in r&&r.cuType==="RESOURCE"},t.looksLikeGroup=function(r){return"members"in r},t.looksLikeDistributionList=function(r){return!!r.mark_as_distributionlist},t.pendingAttachments={},t.autocomplete=function(){var r=Math.max(1,d.get("search/minimumQueryLength",3)),g=Math.max(2,d.get("search/limitIncreaseFactor",4)),l=d.get("search/autocompleteFields","display_name,email1,email2,email3,first_name,last_name").split(",");d.get("showDepartment")&&l.push("department");function c(I){return I.length>=r}function h(I){return(_(I.split(" ")).find(c)||"").substr(0,r)}function L(I){var P=h(I),B=N.cache[P],W=I.split(" ");if(B)return B.then(function(z){return _(z).filter(function(R){return _(W).every(function(H){var K=new RegExp("\\b"+C(H));return _(R.fulltext).some(function(ee){return K.test(ee)||ee.indexOf(I)>-1})})})})}function s(I,P,B){var W=h(I);N.cache[W]=P.then(function(z){return z.length>=B.limit?(B.limit+=B.limit*g,x(I,B)):_(z).map(function(R){return R.fulltext=_(l).map(function(H){return String(R[H]||"").toLowerCase()}),R.fulltext=_(R.fulltext).compact(),R})})}function x(I,P){return s(I,w.GET({module:"addressbooks",params:{action:"autocomplete",query:h(I),admin:P.admin,email:P.email,sort:P.sort,columns:P.columns,right_hand_limit:P.limit}}),P),L(I,P)}function C(I){return I.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}function N(I,P){I=$.trim(I).toLowerCase();var B="1,2,5,20,101,500,501,502,505,519,520,524,555,556,557,569,592,602,606,607";P=_.extend({admin:!1,email:!0,sort:"609",columns:B,cache:!0,limit:0},P);var W=P.cache&&L(I,P);return W||x(I,P)}return N.cache={},N}(),t.on("create update delete",function(){t.trigger("maybeNewContact")}),t.on("maybeNewContact",function(){t.autocomplete.cache={}}),t.customizedDefaultFields=o,t});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(M,w,v,S){"use strict";var F={NONE:v("None"),RED:v("Red"),BLUE:v("Blue"),GREEN:v("Green"),GRAY:v("Gray"),PURPLE:v("Purple"),LIGHTGREEN:v("Light green"),ORANGE:v("Orange"),PINK:v("Pink"),LIGHTBLUE:v("Light blue"),YELLOW:v("Yellow")},k={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",y="fa fa-bookmark",d={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",v("Set color")),dropdownIcon:$('<i class="flag-dropdown-icon" aria-hidden="true">').attr("title",v("Set color"))},m={appendDropdown:function(o,i){o.addClass("dropdown-toggle"),o.parent().addClass("dropdown flag-picker");var e=d.list.clone().on("click","a",{data:i},m.change).append(_(k).map(function(t,n){return d.listItem.clone().append(d.menuItemLink.clone().append(t>0?d.flag.clone().addClass("flag_bg_"+t):$(),$.txt(F[n])).attr({"data-color":t,"data-action":"color-"+n.toLowerCase()}))}));new S({el:o.parent(),$toggle:o,$ul:e}).render()},draw:function(o,i){var e=i.data,t=Math.max(0,e.color_label||0),n;o.append(d.div.clone().append(n=d.setColorLink.clone().append(d.dropdownIcon.clone().attr({"data-color":t,title:v("Set color")}).addClass("flag_"+t+" "+(t?y:D))))),this.appendDropdown(n,e),i.view&&i.view.listenTo(i.model,"change:color_label",this.update)},change:function(o){o.preventDefault();var i=o.data.data,e=$(o.currentTarget).attr("data-color")||"0";i=w.ignoreSentItems(i),M.changeColor(i,e).then(function(){o.clientX&&o.clientY||$('.io-ox-mail-window:visible .list-item[tabindex="0"]').trigger("focus")})},update:function(o){var i=Math.max(0,o.get("color_label")||0),e="flag-dropdown-icon ";e+=i===0?D:y,e+=" flag_"+i,this.$el.find(".flag-dropdown-icon").attr({class:e,"data-color":i})},attach:function(o,i){this.appendDropdown(o,i.data)}
3,colorName:function(o){if(_.isNumber(o))return F[_.invert(k)[o]]}};return m});define("io.ox/backbone/views/disposable",[],function(){"use strict";var M=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(w){w||this.$el.off().removeData(),this.trigger("dispose"),this.onDispose(),this.off().stopListening();for(var v in this)this.hasOwnProperty(v)&&(this[v]=null);this.disposed=!0},onDispose:function(){},listenToDOM:function(w,v,S){$(w).on(v,$.proxy(S,this)),this.on("dispose",function(){$(w).off(v,S)})}});return Backbone.DisposableView=M,M});define("io.ox/backbone/views/extensible",["io.ox/backbone/views/disposable","io.ox/core/extensions"],function(M,w){"use strict";var v={},S=M.extend({constructor:function(D){this.options=D||{},this.point=w.point(this.point||this.options.point),M.prototype.constructor.apply(this,arguments),this.busy=F.bind(this),this.idle=k.bind(this),this.$el.attr("data-point",this.options.point),this.extensions&&this.extend(this.extensions)},extend:function(D){if(v[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 y=100;return _(D).each(function(d,m){this.point.extend({id:m,index:y,render:d}),y+=100},this),this},invoke:function(D){var y=new w.Baton({view:this,model:this.model});return this.point.invoke(D||"render",this,y),v[this.point.id]=!0,this},inject:function(D){return _.extend(this,D)},build:function(D){return D.call(this),this},render:function(){return this.invoke("render")},disableFormElements:function(){this.$(":input").each(function(){$(this).attr("data-action")!=="cancel"&&$(this).toggleClass("disabled",$(this).prop("disabled")).prop("disabled",!0)})},enableFormElements:function(){this.$(":input").each(function(){$(this).prop("disabled",$(this).hasClass("disabled")).removeClass("disabled")})}});function F(){return this.disableFormElements(),this.activeElement=this.activeElement||document.activeElement,this.$el.css("opacity",.5),this}function k(){return this.enableFormElements(),this.$el.css("opacity",""),$.contains(this.el,this.activeElement)&&$(this.activeElement).focus(),this.activeElement=null,this}return S});define("io.ox/backbone/mini-views/abstract",[],function(){"use strict";var M=Backbone.View.extend({initialize:function(w){var v=this.options=w||{};v.validate===void 0&&(v.validate=!0),v.id&&!v.name&&(v.name=v.id),this.$el.on("dispose",function(S){this.dispose(S)}.bind(this)),this.$el.data("view",this),this.model&&v.name&&(this.name=v.name,this.listenTo(this.model,"valid:"+v.name,this.valid),this.listenTo(this.model,"invalid:"+v.name,this.invalid)),this.setup&&this.setup(v)},valid:function(){this.$el.trigger("valid")},invalid:function(w,v){this.$el.trigger("invalid",[w,v])},dispose:function(){this.stopListening(),this.model=null}});return M});define("io.ox/backbone/mini-views/dropdown",["io.ox/backbone/mini-views/abstract","io.ox/core/a11y"],function(M,w){"use strict";function v(k){return _.isFunction(k)?k():_.isObject(k)?k:$.txt(k)}function S(k,D){return k.addClass("checkbox-color color-flags-no-checkbox").css("background-color",D)}var F=M.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(k){k.preventDefault()},onReady:function(){_.device("smartphone")&&!this.options.dontProcessOnMobile||this.smart===!1&&!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&&this.lastEvent.which===9&&(this.lastEvent.shiftKey?w.getPreviousTabbable(this.$toggle).focus():w.getNextTabbable(this.$toggle).focus(),delete this.lastEvent))},setDropdownOverlay:function(){var k=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(D){return D.stopPropagation(),k.resetDropdownOverlay(),!1}),this.$ul))},adjustBounds:function(){var k=!!this.options.dropup,D=this.$ul.get(0).getBoundingClientRect(),y={top:parseInt(this.$ul.css("margin-top")||0,10),left:parseInt(this.$ul.css("margin-left")||0,10)}
3,d={top:D.top-y.top,left:D.left-y.left,width:D.width,height:"auto"},m=this.$toggle.offset(),o=this.$toggle.outerWidth(),i=$(window).width(),e=$(window).height(),t=$("#io-ox-appcontrol");if(k){var n=this.$el.get(0).getBoundingClientRect().top;d.top=n-D.height,d.height=D.height,d.height=Math.min(e-this.margin-d.top,d.height),d.left=Math.max(this.margin,d.left),d.left=Math.min(i-d.width-this.margin,d.left)}else D.top+D.height>e-this.margin?(m.left+o+D.width+this.margin<i?d.left=m.left+o+this.margin:d.left=m.left-D.width-this.margin,d.top=e-this.margin-D.height,d.top=Math.max(d.top,t.offset().top+t.height()+this.margin),d.height=D.height,d.height=Math.min(e-this.margin-d.top,d.height)):(_.browser.IE===11&&(d.bottom="auto"),d.left=Math.max(this.margin,d.left),d.left=Math.min(i-d.width-this.margin,d.left));d.top<0&&(d.height=d.height+d.top,d.top=0,this.$overlay.addClass("scrollable")),this.$toggle.data("fixed")&&(d.left=D.left),this.$ul.css(d)},onShown:function(){this.smart!==!1&&(_.device("smartphone")&&!this.options.dontProcessOnMobile||(this.setDropdownOverlay(),this.$overlay.hasClass("scrollable")&&this.$ul.scrollTop(this.$ul.height())))},onKeyDown:function(k){if(!(!this.$el.hasClass("open")||!this.$overlay)){var D=w.getTabbable(this.$ul);k.which===40&&D.first(":visible").focus(),k.which===38&&D.last(":visible").focus(),k.which===27&&(this.$toggle.trigger("click"),k.stopImmediatePropagation(),k.preventDefault())}},onKeyDownMenu:function(k){k.which===9&&(this.lastEvent=k)},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(k){var D=$(k.currentTarget),y=D.attr("href"),d=D.attr("data-name"),m=D.data("value"),o=D.data("toggle-value"),i=D.data("toggle"),e=this.options.keep||D.attr("data-keep-open")==="true";if(!(y&&y.length!==0&&y!=="#")&&(k.preventDefault(),e&&k.stopPropagation(),!D.hasClass("disabled"))){if(!k.isPropagationStopped()&&this.$overlay&&this.$placeholder&&!this.options.noDetach){var t=$('<div class="hidden">');D.before(t).detach(),this.$placeholder.append(D),this.$el.trigger(_.extend({},k,{type:"mousedown"})),this.$el.trigger("track",k.currentTarget),this.$el.trigger(k),t.replaceWith(D)}if(this.trigger("click",D.data()),!!this.model&&!(!this.options.allowUndefined&&m===void 0)){var n=m;i&&(o===void 0?n=!this.model.get(d):n=this.model.get(d)===m?o:m),this.options.saveAsArray&&(n=[n]),this.model.set(d,n)}}},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("keydown","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 k=this.$ul;this.model&&(_(this.model.changed).each(function(D,y){var d=k.find('[data-name="'+y+'"]').each(function(){var m=$(this);m.attr("aria-checked",_.isEqual(m.data("value"),D))});d.children("i").each(function(m,o){var i=$(o),e=i.data("color");i.removeClass("fa-check").addClass("fa-none"),e&&S(i,e)}),d.each(function(){var m=$(this);m.filter("[role=menuitemcheckbox][aria-checked]").attr({"aria-checked":_.isEqual(m.data("value"),D)}),_.isEqual(m.data("value"),D)&&m.children("i").each(function(o,i){var e=$(i),t=e.data("color");e.removeClass("fa-none").addClass("fa-check"),t&&S(e,t)})})},this),this.label())},label:function(){},stringify:function(k){return _.isObject(k)?JSON.stringify(k):k},append:function(k,D){return(D&&D.group?this.$ul.find('[role="group"]:last'):this.$ul).append($('<li role="presentation">').append(k)),this},option:function(k,D,y,d){d=_.extend({prefix:"",toggleValue:void 0,radio:!1},d);var m=this.model?this.model.get(k):void 0,o=_.isEqual(m,D),i=d.radio?"menuitemradio":"menuitemcheckbox",e=_.isFunction(y)?$("<div>").append(y()).text():y,t=d.prefix?[d.prefix,e].join(" "):void 0,n=$('<i class="fa fa-fw" aria-hidden="true">').addClass(o?"fa-check":"fa-none"),u=$('<a href="#" draggable="false">').attr({role:i,"aria-checked":o,"data-keep-open":d.keepOpen?!0:void 0,"data-name":k,"data-value":this.stringify(D),"data-toggle":_.isBoolean(D)||d.toggleV
3alue!==void 0,"data-toggle-value":d.toggleValue,"aria-label":t,title:d.title,tabindex:"-1"});return d.color&&u.addClass("color-flag"),u.on("dragstart",!1).data("value",D).append(d.color?S(n,d.color).attr({"data-color":d.color,"data-color-label":d.color}):n,d.icon||$(),_.isFunction(y)?y():$.txt(y)),this.append(u,_.pick(d,"group"))},forceOpen:function(k){this.$el.attr("forceOpen",k)},link:function(k,D,y,d){d=d||{};var m=$('<a href="#" draggable="false" role="menuitem" tabindex="-1">').attr("data-name",k).on("dragstart",!1).append(d.icon?$('<i class="fa fa-fw" aria-hidden="true">'):$(),$.txt(D));return d.data&&m.data(d.data),y&&m.on("click",{},y),this.append(m)},header:function(k){return this.$ul.append($('<li class="dropdown-header" role="separator">').append($('<span aria-hidden="true">').text(k))),this},group:function(k,D){return this.header(k),this.$ul.append($('<div role="group">').attr("aria-label",k).append(D)),this},divider:function(){return this.$ul.append('<li class="divider" role="separator">'),this},render:function(){$(this.$el,function(){this.trigger("ready")}.bind(this));var k=v(this.options.label),D=this.options.aria?this.options.aria:null,y='<a href="#" draggable="false">';return _.isString(k)&&(D+=" "+k),this.options.buttonToggle&&(y='<button type="button" draggable="false" class="btn btn-link">'),this.$el.append(this.$toggle=this.options.$toggle||this.$toggle||$(y).attr({"aria-label":D,"data-action":this.options.dataAction,title:this.options.title||null,ondragstart:_.device("firefox")?"return false;":null}).append($('<span class="dropdown-label">').append(k),this.options.caret?$.icon("fa-caret-down",!1,"dropdown-caret"):[]),this.$ul),this.label(),this.ensureA11y(),this},ensureA11y:function(){var k=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"}),k.filter(":not([role])").attr({role:"presentation"}),k.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(),M.prototype.dispose.call(this,arguments)}});return F});define("io.ox/backbone/mini-views/toolbar",["io.ox/backbone/views/disposable","io.ox/core/a11y","gettext!io.ox/core"],function(M,w,v){"use strict";var S=M.extend({className:"classic-toolbar-container",events:{"mousedown ul.classic-toolbar > li > a":"onMousedown"},initialize:function(F){this.options=_.extend({tabindex:0},F),this.$list=this.createToolbar()},createToolbar:function(){var F=$('<ul class="classic-toolbar" role="toolbar">').attr({"aria-label":this.options.title?v("%1$s toolbar. Use cursor keys to navigate.",this.options.title):v("Actions. Use cursor keys to navigate.")});return F.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(F){var k=$.contains(this.el,document.activeElement),D;if(k){var y=$(document.activeElement),d=y.data("action");d?D='*[data-action="'+d+'"]':D=">> li:eq("+y.closest("li").index()+") "+y.prop("tagName")+":first"}return F.append(F.children(".pull-right")),this.$el.find("ul.classic-toolbar").tooltip("hide").replaceWith(F),D&&this.$(D).focus(),this},initButtons:function(){this.$links=this.getButtons().attr({role:"button",tabindex:-1}),this.$links.first().attr({tabindex:this.options.tabindex})},onMousedown:function(F){this.$links.attr("tabindex",-1),$(F.currentTarget).attr("tabindex",this.options.tabindex)}});return S});define("io.ox/backbone/mini-views/helplink",["settings!io.ox/core","gettext!io.ox/core"],function(M,w){"use strict";var v=Backbone.View.extend({tagName:"a",className:"io-ox-context-help",events:{click:"onClick"},onClick:function(S){S.preventDefault();var F=this.options.href,k=this.options;
3require(["io.ox/help/main"],function(D){if(k.simple){window.open(D.getAddress(k),"_blank");return}D.reuse(k)||D.getApp(k).launch()}),k.metrics!==!1&&require(["io.ox/metrics/main"],function(D){D.isEnabled()&&(D.trackPage({id:"io.ox/help"}),D.trackEvent({app:"core",target:"toolbar",type:"click",action:"help",detail:F.substr(F.lastIndexOf("#")+1)}))})},initialize:function(S){this.options=_.extend({base:"help",content:$($.icon("fa-question-circle",w("Online help"))),href:"index.html",iconClass:"fa-question-circle",context:"",modal:!1},S),_.isString(this.options.content)||(this.options.content=$($.icon(this.options.iconClass,w("Online help")))),M.get("features/showHelpLinks",!0)||this.$el.addClass("hidden")},render:function(){if(this.$el.hasClass("hidden"))return this;if(this.$el.append(this.options.content).attr({href:"#",target:"_blank","aria-label":w("Online help")}),this.options.context){var S=w("Online help: %1$s",this.options.context);this.$el.attr("aria-label",S).find("i").attr("title",S).end()}return this}});return v});define("io.ox/backbone/mini-views/upsell",["io.ox/core/upsell","settings!io.ox/core"],function(M,w){"use strict";var v=Backbone.View.extend({tagName:"div",events:{"click a":"onClick"},onClick:function(S){S.preventDefault(),M.trigger({type:"custom",id:this.opt.id,missing:M.missing(this.opt.requires)})},initialize:function(S){this.opt=_.extend({icon:w.get("upsell/defaultIcon","fa-star"),enabled:!0},S,w.get("features/upsell/"+S.id),w.get("features/upsell/"+S.id+"/i18n/"+ox.language)),/^folderview\//.test(S.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&&!M.has(this.opt.requires)&&M.enabled(this.opt.requires)},render:function(){if(this.visible){var S=this,F=$('<a href="#">').css("color",this.opt.color).text(this.opt.title).append(_(this.icon.split(/ /)).map(function(k,D){if(k!=="")return $('<i class="fa" aria-hidden="true">').addClass(k).css({"margin-left":D===0&&S.opt.title&&S.opt.title.length>0?"0.5em":"",color:S.opt.color})}));/^folderview\//.test(this.opt.id)&&F.attr("role","treeitem"),this.$el.append(F),this.customize&&_.isFunction(this.customize)&&this.customize()}else this.$el.hide();return this}});return v});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(M,w,v,S,F,k){"use strict";var D=Backbone.View.extend({tagName:"div",initialize:function(y){this.options=_.extend({module:"mail",quotaField:"quota",usageField:"use",renderUnlimited:!0,sizeFunction:function(d){return v.fileSize(d,"smart")},upsellLimit:-1},y),this.$el.addClass("io-ox-quota-view"),w.mailQuota.on("change",this.updateQuota.bind(this)),w.fileQuota.on("change",this.updateQuota.bind(this)),this.$el.hide()},close:function(){w.mailQuota.off("change",this.updateQuota),w.fileQuota.off("change",this.updateQuota)},getQuota:function(y){var d=this.options,m=d.module,o=d.quotaField,i=d.usageField;return!y&&d.quota&&d.usage?$.when({quota:d.quota,usage:d.usage}):(y&&(d.module==="file"&&w.requestFileQuotaUpdates(),w.reload()),w.load().then(function(e){return{quota:e[m][o],usage:e[m][i]}}))},updateQuota:function(){var y=this.options,d=w.getModel(y.module).toJSON();d[y.quotaField]===void 0||d[y.usageField]===void 0||(y.quota=d[y.quotaField],y.usage=d[y.usageField],this.render())},renderTitle:function(y){var d;this.$el.append($('<div class="quota-description">').append($('<div class="title">').text(this.options.title),d=$('<div class="numbers">'))),y.quota<=0?d.text(this.options.module!=="mail"||k.get("folder/inbox")?M("unlimited"):M("unknown")):d.text(y.usage<y.quota?M("%1$s of %2$s",this.options.sizeFunction(y.usage),this.options.sizeFunction(y.quota)):M("%1$s of %2$s",this.options.sizeFunction(y.quota),this.options.sizeFunction(y.quota)))},renderBar:function(y){if(!(y.quota<=0)){var d=Math.max(5,Math.min(100,Math.round(y.usage/y.quota*100)));y.quota||(d=100),y.usage||(d=0),this.$el.append($('<div class="progress">').append($('<div class="progress-bar">').css("width",d+"%").addClass(d<90?"default":"bar-danger")))}},renderUpsell:function(y){if(this.options.upsell){var d=new S(this.options.upsell),m=d.opt.upsellLimit||this.options.upsellLimit;m<=0||y.quota>=m||this.$el.append(d.render().$el)}},render:function(){return F.has("guest")?this:(this.getQuota().done(function(y){_.isUndefined(y.quota)||_.isUndefined(y.usage)||!this.options.renderUnlimited&&y.quota<=0||(this.$el.empty(),this.renderTitle(y),this.renderBar(y),this.renderUpsell(y),this.$el.show())}.bind(this)),this)}});return D});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(M,w,v,S,F,k){"use strict";function D(i){return i.originalEvent&&i.originalEvent.dataTransfer&&(!_.browser.Firefox||i.type==="dragleave"?i.originalEvent.dataTransfer.dropEffect==="none":i.originalEvent.dataTransfer.dropEffect!=="none")&&(_(i.originalEvent.dataTransfer.types).contains("Files")||_(i.originalEvent.dataTransfer.types).contains("application/x-moz-file"))}var y=Backbone.DisposableView.extend({className:"abs dropzone-overlay",initialize:function(i){require(["less!io.ox/core/tk/upload"]),this.options=_.extend({point:"",app:void 0,scrollable:".scrollable"},i),this.actions=[];var e=w.point(i.point);e.each(function(t){e.isEnabled(t.id)&&this.actions.push(t)}.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(i,e){e.type!=="mouseout"&&this.$el.hasClass("locked")||!D(e)&&!this.$el.hasClass("visible")||this.$el.toggleClass("visible",i).css(this.getDimensions())},getDimensions:function(){var i=this.$el.closest(this.options.scrollable),e=i.scrollTop(),t=i.outerHeight(),n=i.children().outerHeight();return{top:e,bottom:Math.max(0,n-t-e)}},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(i){return $('<div class="dropzone-floating-action dropzone">').attr({"data-id":i.id}).append($('<span class="dndignore">').html(i.label))}))),this}
3,onDragEnter:function(i){var e=$(i.target).hasClass("dndignore")?$(i.target).parent():$(i.target);if(e.addClass("hover"),$(i.target).hasClass("dropzone-overlay"))return D(i)?($(i.target).addClass("locked"),this.show()):void 0;$(i.target).hasClass("dropzone-floating")&&(!D(i)||$("body > .io-ox-dialog-wrapper").length>0||this.show())},onDragLeave:function(i){var e=$(i.target).hasClass("dndignore")?$(i.target).parent():$(i.target);e.removeClass("hover"),_.defer(function(){this.disposed||this.$(".hover").length||this.$el.hasClass("hover")||this.hide()}.bind(this))},onDrop:function(i){i=i.originalEvent||i;var e=i.dataTransfer.files,t=$(i.target).closest(".dropzone-floating-action").attr("data-id"),n=_.findWhere(this.actions,{id:t}),u;if(!n)return this.hide();if(_.browser.Chrome){var f=i.dataTransfer.items;for(u=0;u<f.length;u++){var a=f[u].webkitGetAsEntry();if(a.isDirectory)return v.yell("error",k("Uploading folders is not supported.")),!1}}return n.action&&_.each(e,function(b){n.action.apply(n.extension,[b].concat(this.options.app))}.bind(this)),n.multiple&&n.multiple.apply(n.extension,[e].concat(this.options.app)),this.hide(),!1},onDragOver:function(i){return i.preventDefault(),!1}});function d(i){require(["less!io.ox/core/tk/upload"]);var e=this,t,n,u=$('<div class="abs io-ox-dropzone-multiple-overlay">').on("click",a),f=function(T){if(!(!D(T)||$("body > .io-ox-dialog-wrapper").length>0))return clearTimeout(n),$("body").addClass("io-ox-dropzone-active").append(u),!1},a=function(){return $("body").removeClass("io-ox-dropzone-active"),u.detach(),!1},b=function(){var T=$('<div class="io-ox-dropzone-action">');return u.append(T),T};M.extend(this),_(i.actions||[]).each(function(T){var r=b();r.append($('<div class="dropzone">').on({dragenter:function(){t&&t.removeClass("io-ox-dropzone-hover"),t=r,r.addClass("io-ox-dropzone-hover")},dragleave:function(g){_.browser.IE?!$(g.target).hasClass("dropzone")&&!$(g.target).hasClass("dndignore")&&r.removeClass("io-ox-dropzone-hover"):r.removeClass("io-ox-dropzone-hover")},drop:function(g){g=g.originalEvent||g;var l=g.dataTransfer.files,c;if(t&&t.removeClass("io-ox-dropzone-hover"),_.browser.Chrome&&_.browser.Chrome>21){var h=g.dataTransfer.items;for(c=0;c<h.length;c++){var L=h[c].webkitGetAsEntry();if(L.isDirectory)return v.yell("error",k("Uploading folders is not supported.")),a(g),!1}}if(i.actions[0].id==="importEML")for(c=0;c<l.length;c++){var s=/(\.eml)$/i;if(!s.test(l[c].name))return v.yell("error",k("Mail was not imported. Only .eml files are supported.")),a(g),!1}for(c=0;c<l.length;c++)i.actions[0].id==="mailAttachment"?e.trigger("drop",l[c]):e.trigger("drop",T.id,l[c],T);return e.trigger("drop-multiple",T,$.makeArray(l)),a(g),!1}}).append($('<span class="dndignore">').html(T.label)))});var p=!1;this.remove=function(){p&&(p=!1,$(document).off("dragenter",f).off("drop",a),u.off("dragenter dragover dragend dragleave drop"))},this.include=function(){p||(p=!0,$(document).on("dragenter",f),u.on({dragenter:function(){return clearTimeout(n),!1},dragover:function(T){return clearTimeout(n),T.preventDefault(),!1},dragleave:function(T){n=setTimeout(function(){a(T)},200),T.stopPropagation()},drop:function(T){return T.preventDefault(),a(T),!1}}))}}function m(){this.enabled=!1,this.bind=$.noop,this.unbind=$.noop,this.remove=$.noop,this.include=$.noop}function o(i){i?i.progress||console.warn('The delegate to a queue should implement a "progress" method!'):console.warn("No delegate supplied to file processing queue."),i=_.extend({start:$.noop,stop:$.noop,changed:$.noop,progress:function(){return $.when()},type:!1},i||{}),M.extend(this);var e=[],t=0,n=!1;this.next=function(){if(!n){if(e.length===0||e.length<=t)return this.stop();n=!0;var u=this;t===0&&this.start(),this.progress().always(function(f){if(f&&f.error&&(/^(FLS-0024|OX-0023|OX-0507)$/.test(f.code)||f.error_params&&f.error_params.length&&/^429 /.test(f.error_params[0]))){u.stop();return}n=!1,t++,u.queueChanged()})}},this.validateFiles=function(u,f){return!f.folder||i&&i.type==="importEML"?$.when([]):S.get(f.folder).then(function(a){return S.is("infostore",a)?require(["i
3o.ox/core/api/quota"]).then(function(b){return b.checkQuota(a,u)}):$.when([])}).then(function(a){return a.length===0?[]:require(["io.ox/core/tk/upload-problems"]).then(function(b){return b.report(u,a)})},function(a){return v.yell(a),$.Deferred().reject([a])})},this.offer=function(u,f){var a=this,b=[].concat(u);this.validateFiles(b,f).then(function(){a.fillQueue(u,f),a.queueChanged()})},this.fillQueue=function(u,f){var a=[].concat(u);_(a).each(function(b){e.push({file:b,options:f})})},this.length=0,this.remove=function(u){e.splice(u,1),u===t&&t--},this.queueChanged=function(){this.length=e.length,i.changed(e[t],t,e),this.trigger("changed",e[t],t,e),this.next()},this.dump=function(){console.info("this",this,"file",e[t],"position",t,"files",e)},this.start=function(){ox.autoLogout.stop(),i.start(e[t],t,e),this.trigger("start",e[t],t,e)},this.progress=function(){var u=i.progress(e[t],t,e);return this.trigger("progress",u,e[t],t,e),u},this.stop=function(){ox.autoLogout.start(),i.stop(e[t],t,e),this.trigger("stop",e[t],t,e),e=[],t=0,n=!1}}return{dnd:{enabled:_.device("!touch"),createDropZone:function(i){return i=i||{},this.enabled?new d(i):new m(i.node)},FloatingDropzone:y},createQueue:function(i){return new o(i)}}});define("io.ox/core/dropzone",[],function(){"use strict";var M="dragenter dragover dragleave drop",w=_.throttle(function(S){var F=$("html").hasClass("dndmask-enabled");if(F!==S){if($("html").toggleClass("dndmask-enabled",S),!S)return $(".dndmask").remove();$("iframe:visible").each(function(){var k=_.uniqueId("overlay-"),D=$(this).attr("data-overlay",k).before($('<div id="'+k+'" class="dndmask">').on(M,function(y){var d=$.Event(y.type,{offsetX:y.offsetX,offsetY:y.offsetY});$("body",D.contents()).trigger(d)}))})}},100);ox.on("drag:start",_.partial(w,!0)),ox.on("drag:stop",_.partial(w,!1));var v=Backbone.View.extend({className:"inplace-dropzone",events:{drop:"onDrop","dragenter .dropzone-overlay":"onDragenter","dragover .dropzone-overlay":"onDragover","dragleave .dropzone-overlay":"onDragleave"},onLeave:function(S){this.leaving&&(ox.trigger("drag:stop",this.cid),this.hide(S))},onDrag:function(S){if(this.$el.parent().is(":visible")&&this.isSupported())switch(S.type){case"dragenter":case"dragover":if(ox.trigger("drag:start",this.cid),this.stop(S),this.leaving=!1,!this.checked)this.checked=!0;else return;return this.isValid(S)?(this.visible||this.show(),!1):void 0;case"dragleave":this.leaving=!0,clearTimeout(this.timeout),this.timeout=setTimeout(this.onLeave.bind(this),100,S);break;case"drop":return ox.trigger("drag:stop",this.cid),this.stop(S),this.hide(),!1}},isSupported:_.constant(!0),stop:function(S){S.preventDefault(),S.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(S){this.options=S,this.checked=!1,this.visible=!1,this.leaving=!1,this.timeout=-1,this.eventTarget=S.eventTarget,this.folderSupport=S&&S.folderSupport,this.onDrag=this.onDrag.bind(this),$(document).on(M,this.onDrag),_.device("firefox")&&(this.onMouseenter=this.onMouseenter.bind(this),$(document).on("mouseenter",this.onMouseenter)),this.eventTarget&&(this.eventTargetDocument=this.eventTarget.prop("nodeName")==="#document"?this.eventTarget.get(0):this.eventTarget.prop("ownerDocument"),this.eventTargetDocument!==document&&$(this.eventTargetDocument).on(M,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(F){this.dispose(F)}.bind(this))},isValid:function(S){return _.isFunction(this.isEnabled)?this.isEnabled(S)&&this.isFile(S):this.isFile(S)},isEnabled:!0,isFile:function(S){var F=S.originalEvent.dataTransfer;return _(F.types).contains("Files")||_(F.types).contains("application/x-moz-file")},filterDirectories:function(S){var F=new $.Deferred,k=_(S.files).toArray();if(S.items&&(_.browser.Chrome&&_.browser.Chrome>21||_.browser.firefox&&_.browser.firefox>=50||_.browser.edge)){var D=S.items;F.resolve(_(k).filter(function(y,d){var m=D[d].webkitGetAsEntry();return!m.isDirectory}))}else $.when.apply(this,_(k).map(function(y){if(!y.type&&y.size<=16384){var d=new $.Deferred,m=new FileReader;return m.onloadend=function(){d.resolve(m.error)}
3,m.readAsDataURL(y),d}return $.when()})).done(function(){var y=arguments;F.resolve(_(k).filter(function(d,m){return!y[m]}))});return F},getFiles:function(S){var F=S.originalEvent.dataTransfer,k=F.files.length,D=this.options.filter;return this.filterDirectories(F).then(function(y){return(!y.length||k!==y.length)&&k!==0&&require(["io.ox/core/yell","gettext!io.ox/core"],function(d,m){d("error",m("Uploading folders is not supported in this display area."))}),_.isRegExp(D)?_(y).filter(function(d){return D.test(d.name)}):y})},getFilesAndFolders:function(S){var F=S.originalEvent.dataTransfer,k=[],D=F.items;function y(o){var i=o.createReader(),e=$.Deferred(),t=[],n=function(){i.readEntries(function(u){u.length?(t=t.concat(u),n()):e.resolve(t)},function(u){e.reject(u)})};return n(),e}function d(o,i){var e=!1,t=$.Deferred();return o.isFile?o.file(function(n){k.push({file:n,fullPath:o.fullPath,preventFileUpload:!1,isEmptyFolder:!1}),t.resolve()}):o.isDirectory&&y(o).then(function(n){var u=[],f=n.length===0;f&&e?(k.push({file:{},fullPath:o.fullPath,preventFileUpload:!0,isEmptyFolder:!0}),t.resolve()):n.forEach(function(a){u.push(d(a,i+o.name+"/"))}),$.when.apply($,u).then(function(){t.resolve()},function(a){t.reject(a)})},function(n){t.reject(n)}),t}var m=_.map(D,function(o){return d(o.webkitGetAsEntry(),"")});return $.when.apply($,m).then(function(){return k})},onDragenter:function(S){$(S.currentTarget).parent().addClass("dragover")},onDragover:function(S){S.originalEvent.dataTransfer.dropEffect="copy"},onDragleave:function(S){$(S.currentTarget).parent().removeClass("dragover")},onMouseenter:function(S){if(this.visible){var F=S.relatedTarget||S.toElement;F||_.delay(function(){this.leaving=!0,clearTimeout(this.timeout),this.onLeave(S)}.bind(this),50)}},onDrop:function(S){var F=this,k=F.folderSupport?this.getFilesAndFolders(S):this.getFiles(S);k.then(function(y){F.trigger(y.length>0?"drop":"invalid",y,S)},function(){F.trigger("invalid",[],S)})},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(M,this.onDrag),_.device("firefox")&&$(document).off("mouseenter",this.onMouseenter),this.eventTarget&&(this.eventTargetDocument!==document&&$(this.eventTargetDocument).off(M,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:v}});define("io.ox/core/strings",["io.ox/core/locale","gettext!io.ox/core"],function(M,w){"use strict";var v;function S(){v=[w("B"),w("KB"),w("MB"),w("GB"),w("TB"),w("PB"),w("EB"),w("ZB"),w("YB")]}return{shortenUri:function(F,k){F=F??"";var D=F.replace(/^https?:\/\//,""),y=D.length-k;if(y<=0)return D;var d=D.length/2,m=d-y/2-1,o=d+y/2+1;return D.substring(0,m)+"..."+D.substring(o,D.length)},fileSize:function(F,k){v||S();var D=0,y=v.length,d=!1;k>10&&(k=10),k==="smart"&&(k=3,d=!0);for(var m=Math.pow(10,k||0);F>=1024&&D<y;)F=F/1024,D++;return F=Math.round(F*m)/m,F===1024&&(F=F/1024,D++),d&&D<3&&(k=0),D===0&&(k=0),w("%1$d %2$s",d?M.number(F,0,k):M.number(F,k),v[D])},size:function(F,k){var D=encodeURI(F).split(/%(?:u[0-9A-F]{2})?[0-9A-F]{2}|./).length-1;return k?(D/1024).toFixed():D}}});define("io.ox/core/attachments/backbone",["io.ox/core/folder/title","io.ox/core/capabilities","io.ox/contacts/api","settings!io.ox/mail"],function(M,w,v,S){"use strict";var F=function(){var o=0,i,e=$.Deferred(),t=function(){o=Math.floor(o+i/10),e.notify({loaded:o,total:i}),o/i>=1?e.resolve({data:["133713371337"]}):_.delay(t,1e3)};this.upload=function(n){return i=n.size,t(),e}},k=/\.((?: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,y={localFile:function(o){var i=2*(_.device("retina")?240:120);return require(["io.ox/contacts/widgets/canvasresize"]).then(function(e){return e(o.fileObj||o.get("originalFile"),{width:i,height:i,crop:!1,qual
3ity:80})}).then(function(e){var t=_.clone(o.get("meta"));return t.previewUrl=e,o.set("meta",t),e})},contact:function(o){var i=_.clone(o.get("meta"));return i.previewUrl=o.get("image1_url")||v.getFallbackImage(),o.set("meta",i),$.Deferred().resolve(i.previewUrl)},file:function(o){var i=$.Deferred(),e=_.device("retina")?240:120;return require(["io.ox/files/api"],function(t){var n=_.clone(o.get("meta"));n.previewUrl=t.getUrl(o.toJSON(),"view")+"&scaleType=cover&width="+e+"&height="+e,D.test(o.get("filename"))||(n.previewUrl+="&format=preview_image&session="+ox.session),i.resolve(n.previewUrl),o.set("meta",n)},i.reject),i},mail:function(o){var i=$.Deferred(),e=_.device("retina")?240:120;return require(["io.ox/mail/api"],function(t){var n=_.clone(o.get("meta"));n.previewUrl=t.getUrl(o.toJSON(),"view")+"&scaleType=cover&width="+e+"&height="+e;var u=o.get("security");u&&u.authentication&&(n.previewUrl+="&decrypt=true&cryptoAuth="+encodeURIComponent(u.authentication)),D.test(o.get("filename")||o.get("name"))||(n.previewUrl+="&format=preview_image&session="+ox.session),i.resolve(n.previewUrl),o.set("meta",n)},i.reject),i}},d=Backbone.Model.extend({defaults:function(){return{filename:"",disp:"attachment",uploaded:1,meta:{}}},initialize:function(o){if(o instanceof window.Blob&&(this.fileObj=o,this.set("filename",o.name,{silent:!0}),this.set("uploaded",0,{silent:!0}),this.set("file_size",o.size,{silent:!0})),this.isContact()){var i=this.get("display_name")||this.get("sort_name")||"vcard",e=i.replace(/\s/,"_").concat(".vcf");this.set("filename",e,{silent:!0})}},getTitle:function(){return this.get("com.openexchange.file.sanitizedFilename")||this.get("filename")||this.get("name")},getShortTitle:function(o){return M(this.getTitle(),o||30)},getSize:function(){var o=this.get("originalFile")?this.get("originalFile").size:void 0;return this.get("file_size")||this.get("size")||o||0},getExtension:function(){var o=String(this.get("filename")||this.get("name")||"").split(".");return o.length===1?"":o.pop().toLowerCase()},isFileAttachment:function(){return(this.get("disp")==="attachment"||this.get("contentDisposition")==="ATTACHMENT"||this.get("disp")==="inline")&&this.get("contentDisposition")!=="INLINE"&&!!this.getTitle()},isContact:function(){return this.get("group")==="contact"},isLocalFile:function(){return this.get("group")==="localFile"},needsUpload:function(){return this.get("uploaded")===0},previewUrl:function(o){o=o||{};var i=w.has("document_preview"),e=this.get("filename")||this.get("name"),t,n=this.fileObj||this.get("originalFile");
3if(this.isLocalFile()&&e.match(/psd|tif/)||!this.isFileAttachment()||!D.test(e)&&!(i&&k.test(e)||this.isContact())||this.get("group")==="localFile"&&i&&k.test(e)||this.get("group")==="localFile"&&n.size>=S.get("features/imageResize/fileSizeMax",10*1024*1024))return null;if(t=this.get("meta")?this.get("meta").previewUrl:!1,t)return t;var u=y[this.get("group")];return u?o.delayExecution?u.bind(this,this):u(this):null},upload:function(){if("FormData"in window){var o=new FormData;o.append("file",this.fileObj);var i=new F().upload(this.fileObj),e=this;i.then(function(){var n=v.getFallbackImage(),u=_.clone(e.get("meta"));u.previewUrl=u.previewUrl||n,e.set("meta",u),e.trigger("upload:complete")},function(){},function(n){e.set("uploaded",n.loaded/n.total)})}}}),m=Backbone.Collection.extend({model:d,fileAttachments:function(){return this.filter(function(o){return o.isFileAttachment()})},mailAttachments:function(){return this.filter(function(o){return o.get("disp")==="inline"||o.get("disp")==="attachment"}).map(function(o,i){var e;return i===0&&o.attributes.content_type==="text/plain"?(e=o.pick("content_type","content"),e.raw=!0):e=o.attributes,e})},getSize:function(){return this.reduce(function(o,i){return o+i.getSize()},0)},isValidModel:function(o){return o.isFileAttachment()},getValidModels:function(){return this.filter(this.isValidModel,this)}});return{Model:d,Collection:m}});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(M,w,v,S,F){"use strict";var k=F.extend({scrollStep:120,openByDefault:!1,events:{"click .toggle-details":"onToggleDetails","click .toggle-mode":"onToggleMode","click .scroll-left":"scrollLeft","click .scroll-right":"scrollRight"},initialize:function(d){this.options=_.extend({AttachmentView:y,editable:!1,mode:"list"},d),this.listenTo(this.collection,"add",this.addAttachment),this.$el.addClass("mail-attachment-list").addClass(_.device("touch")?"touch":""),this.options.editable&&this.$el.addClass("editable"),this.options.mode==="preview"&&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 m=this.getValidModels().length;this.$el.toggleClass("empty",m===0),this.updateScrollControls(),this.renderSummary(m),this.openByDefault&&this.toggleDetails(!0)}),this.listenTo(this.collection,"remove",function(){this.$preview.trigger("scroll")}),this.$el.toggleClass("empty",this.getValidModels().length===0)},render:function(){var d=_.uniqueId("list-container-"),m=_.uniqueId("preview-container-");return this.renderHeader(),this.$el.append(this.$header,$('<div class="list-container">').attr("id",d).append(this.$list),$('<div class="preview-container">').attr("id",m).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",[d,m].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",S("Toggle preview")).append('<i class="fa" aria-hidden="true">')),this.renderSummary()},renderSummary:function(d){d=d||this.getValidModels().length,this.$header.find(".summary").text(S.ngettext("%1$d attachment","%1$d attachments",d,d))},renderList:function(){function d(o,i,e){i.append(o.map(this.renderAttachment.bind(this,e)))}var m=this.getValidModels();d.call(this,m,this.$list,"list"),d.call(this,m,this.$preview,"preview"),this.isListRendered=!0},renderAttachment:function(d,m){return new this.options.AttachmentView({point:this.options.point,mode:d,model:m}).render().$el},addAttachment:function(d){this.isListRendered&&this.collection.isValidModel(
3d)&&(this.$list.append(this.renderAttachment("list",d)),this.$preview.append(this.renderAttachment("preview",d)))},getValidModels:function(){return this.collection.getValidModels()},updateAriaControls:function(){var d;this.$el.hasClass("show-preview")?d=this.$(".preview-container").attr("id"):d=this.$(".list-container").attr("id"),this.$header.find(".toggle-details").attr("aria-controls",d),this.$header.find(".toggle-mode").attr("aria-pressed",this.$el.hasClass("show-preview"))},toggleDetails:function(d){this.$el.toggleClass("open",d===!0||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(d){d.preventDefault(),this.toggleDetails(),this.updateScrollControls()},onToggleMode:function(d){d.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(d){var m=this.getScrollIndex()+d,o=this.getMaxScrollIndex();m<0||m>o||(this.updateScrollControls(m),this.$preview.stop(!0,!1).animate({scrollLeft:m*this.scrollStep},"fast"))},getScrollIndex:function(){return Math.ceil(this.$preview.scrollLeft()/this.scrollStep)},getMaxScrollIndex:function(){var d=this.$preview.width(),m=this.$preview.prop("scrollWidth");return Math.max(0,Math.ceil((m-d)/this.scrollStep))},updateScrollControls:function(d){d===void 0&&(d=this.getScrollIndex());var m=this.getMaxScrollIndex();this.$(".scroll-left").prop("disabled",d<=0),this.$(".scroll-right").prop("disabled",d>=m)}}),D=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(d){_.defer(function(){this.$el.lazyload({container:this.$el.closest("ul"),effect:"fadeIn",previewUrl:d})}.bind(this))},getColor:function(d){if(/^do[ct]x?$/.test(d))return"#2C5897";if(/^xlsx?|o[dt]s$/.test(d))return"#1D7047";if(/^p[po]tx?$/.test(d))return"#D04423";if(/^pdf$/.test(d))return"#C01E07";if(/^(zip|gz|gzip|tgz)$/.test(d))return"#FF940A"},fallback:function(){var d=this.model.getExtension(),m;d&&(m=this.getColor(d),this.$el.append($('<div class="abs fallback ellipsis">').css({color:m&&"white",backgroundColor:m}).text(d)))},render:function(){var d=this.model.previewUrl({delayExecution:!0});return _.isString(d)?(this.$el.addClass("lazy").attr("data-original",d),this.lazyload()):d!==null?(this.$el.addClass("lazy"),this.lazyload(d)):this.fallback(),this.$el.attr("tabindex","0"),this},onKeydown:function(d){d.which!==13&&d.which!==32||($(d.target).trigger("click"),d.preventDefault(),d.stopPropagation())}}),y=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(d){this.options=_.extend({mode:"list"},d),this.preview=this.options.mode==="preview"&&new D({model:this.model,el:this.el}),this.listenTo(this.model,{"change:uploaded":function(o){var i=o.get("uploaded")*100;i===0&&this.render(),this.$(".progress").width(i+"%")},"change:file_size change:size":this.render,"upload:complete":function(){this.render()},remove:this.onRemoveModel});var m=this.options.point?this.options.point+"/view":"io.ox/core/attachment/view";M.point(m).invoke("initialize",this)},onRemove:function(d){d.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 d=this.model.getSize();d>0&&this.$(".filesize").text(" ("+v.fileSize(d,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",S("Remove attachment")).append($('<i class="fa fa-tras
3h-o" aria-hidden="true">')))}});return{List:k,View:y,Preview:D,Model:w.Model,Collection:w.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(M,w,v,S){"use strict";var F=function(d){return d.id?(d.birthday&&moment.utc(d.birthday).local(!0).year()<=1&&(d.birthday=v.julianToGregorian(d.birthday)),d.anniversary&&moment.utc(d.anniversary).local(!0).year()<=1&&(d.anniversary=v.julianToGregorian(d.anniversary)),d):(_(d).each(function(m){m.birthday&&moment.utc(m.birthday).local(!0).year()<=1&&(m.birthday=v.julianToGregorian(m.birthday)),d.anniversary&&moment.utc(d.anniversary).local(!0).year()<=1&&(d.anniversary=v.julianToGregorian(d.anniversary))}),d)},k=w({module:"user",keyGenerator:function(d){return typeof d=="string"||typeof d=="number"?d:String(d.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(d){return{pattern:d}}}},pipe:{get:F,search:F}});ox.rampup.user&&ox.rampup.user.id===ox.user_id&&(k.caches.get.add(ox.rampup.user),k.caches.list.add(ox.rampup.user)),k.update=function(d){return _.isEmpty(d.data)?$.when():require(["io.ox/contacts/api"]).then(function(m){return d.data.birthday&&moment.utc(d.data.birthday).local(!0).year()<=1&&(d.data.birthday=v.gregorianToJulian(d.data.birthday)),d.data.anniversary&&moment.utc(d.data.anniversary).local(!0).year()<=1&&(d.data.anniversary=v.gregorianToJulian(d.data.anniversary)),d.data=_(d.data).each(function(o,i){(o===""||o===void 0)&&(d.data[i]=null)}),M.PUT({module:"user",params:{action:"update",id:d.id,timestamp:d.timestamp||_.then()},data:d.data,appendColumns:!1}).then(function(){return k.get({id:d.id},!1).then(function(o){var i="con://0/"+o.folder_id;return $.when(k.caches.get.add(o),k.caches.all.clear(),k.caches.list.remove({id:d.id}),m.caches.get.remove({folder_id:i,id:o.contact_id}),m.caches.all.grepRemove(i+m.DELIM),m.caches.list.remove({id:o.contact_id,folder:i}),m.clearFetchCache()).then(function(){return o}).done(function(){k.trigger("update:"+_.ecid(o),o),k.trigger("update",o),k.trigger("refresh.list"),d.data.image1===null&&(m.trigger("update:image",o),k.trigger("reset:image reset:image:"+d.id,{id:d.id})),!(String(o.folder_id)===v.getGabId(!0)&&S.has("!gab"))&&m.get({folder_id:i,id:o.contact_id}).done(function(e){m.trigger("update:"+_.ecid(e),e),m.trigger("update",e)})})})})})},k.editNewImage=function(d,m,o){var i=function(t){return $.when(k.caches.get.clear(),k.caches.all.clear(),k.caches.list.clear()).then(function(){k.trigger("refresh.list"),require(["io.ox/contacts/api"]).then(function(n){n.trigger("update:image",{id:d.id}),k.trigger("update update:image update:image:"+d.id,{id:d.id})})}),t};if("FormData"in window&&o instanceof window.File){var e=new FormData;return e.append("file",o),e.append("json",JSON.stringify(m)),M.UPLOAD({module:"user",params:{action:"update",id:d.id,timestamp:d.timestamp||_.then()},data:e,fixPost:!0}).then(i)}return M.FORM({module:"user",action:"update",form:o,data:m,params:{id:d.id,folder:d.folder_id,timestamp:d.timestamp||_.then()}}).then(i)},k.getName=function(d){return k.get({id:d}).then(function(m){return m.display_name||m.email1||""})},k.getGreeting=function(d){return k.get({id:d}).then(function(m){return m.first_name||m.display_name||m.email1||""})},k.getTextNode=function(d,m){var o=_.extend({type:"name",textZoom:!0},m),i=o.node||document.createTextNode("");return k.get({id:d}).done(function(e){var t="";if(o.type==="name"?t=e.display_name||e.email1:o.type==="email"?t=e.email1||e.display_name:o.type==="email-localpart"?t=(e.email1||e.display_name||"").replace(/@.*$/,""):o.type==="initials"&&(t=v.getInitials(e)),o.textZoom){i.nodeValue=t;return}$(i).replaceWith('<svg viewbox="0 0 48 48"><text x="24" y="30" text-anchor="middle">'+_.escape(t)+"</text></svg>")}),i}
3,k.getLink=function(d,m){return m=m?$.txt(m):k.getTextNode(d),$('<a href="#" class="halo-link">').append(m).data({internal_userid:d})},k.getCurrentUser=function(){return require(["io.ox/core/settings/user"]).then(function(d){return d.getCurrentUser()})};var D=k.get;k.get=function(){return!arguments.length||_.isEmpty(arguments)||_.isObject(arguments[0])&&arguments[0].id===void 0?D({id:ox.user_id}):D.apply(this,arguments)};var y=!1;return k.me=function(){return ox.rampup.user&&!y?$.when(ox.rampup.user):k.get()},k.on("update:"+_.ecid({folder_id:6,id:ox.user_id}),function(){y=!0,require(["io.ox/core/api/account"],function(d){d.reload().then(function(){ox.trigger("account:update",0)})})}),k.getNameExtended=function(d,m){if(d===void 0)return $.Deferred().reject({error:"Unknown User"});d=d.get?d.attributes:d,m=m||"created";var o=d[m+"_from"],i=k.checkForName(o);return i?$.when(i):(o=d[m+"_by"]===0&&o&&k.isMyself(o)?ox.user_id:d[m+"_by"],o?k.getName(o):$.Deferred().reject({error:"Unknown User"}))},k.getTextNodeExtended=function(d,m){if(d===void 0)return"";d=d.get?d.attributes:d,m=m||"created";var o=document.createTextNode(""),i=d[m+"_from"],e=k.checkForName(i);return e?(o.nodeValue=e,o):(i=d[m+"_by"]===0&&i&&k.isMyself(i)?ox.user_id:d[m+"_by"],i&&k.getTextNode(i,{node:o}),o)},k.isMyself=function(d){return!!(d.entity===ox.user_id||d.identifier===String(ox.user_id)||d.type==="guest"&&d.contact&&ox.rampup&&ox.rampup.user&&d.contact.email1===ox.rampup.user.email1)},k.checkForName=function(d){if(d){var m=_.isEmpty(d.contact)?d.display_name:v.getFullName(d.contact);return!m&&d.displayName&&(m=d.displayName),!m&&!k.isMyself(d)&&d.contact&&d.contact.email1&&(m=d.contact.email1),m}},k});define("io.ox/core/api/group",["io.ox/core/http","io.ox/core/api/factory"],function(M,w){"use strict";var v=w({module:"group",keyGenerator:function(D){return String(D.id)},requests:{all:{columns:"1,20",extendColumns:"io.ox/core/api/group/all",s
3ort:"500",order:"asc"},list:{},get:{},search:{action:"search",columns:"1,20,500,524",extendColumns:"io.ox/core/api/group/search",getData:function(D){return{pattern:D}}}}});function S(){v.caches.all.clear(),v.caches.list.clear(),v.caches.get.clear()}var F=Backbone.Model.extend({defaults:{display_name:"",members:[],name:""},initialize:function(){var D=this.get("members");_.isString(D)&&D!==""&&this.set("members",D.split(",").map(function(y){return parseInt(y,10)}),{silent:!0}),this.on("change:display_name",function(){this.set("name",this.getName())}),this.set("name",this.getName())},getName:function(){var D={\u00E4:"ae",\u00F6:"oe",\u00FC:"ue",\u00DF:"ss"};return function(){return this.has("id")&&this.get("name")?this.get("name"):this.get("display_name").trim().toLowerCase().replace(/[äöüÃ]/g,function(y){return D[y]}).replace(/\W+/g,"_")}}()}),k=Backbone.Collection.extend({comparator:function(D){return(D.get("display_name")||"").toLowerCase()},model:F});return v.collection=new k,v.getModel=function(D){return v.collection.get(D)||new F},v.create=function(D){return M.PUT({module:"group",params:{action:"new"},data:D,appendColumns:!1}).then(function(y){return v.get({id:y.id}).done(function(d){v.collection.add(d,{parse:!0}),v.trigger("create",d),S()})})},v.update=function(D){return M.PUT({module:"group",params:{action:"update",id:D.id,timestamp:_.then()},data:_(D).pick("name","display_name","members"),appendColumns:!1}).done(function(){var y=v.collection.get(D.id);y&&y.set(D),v.trigger("update",D),S()})},v.refreshGroup=function(D){return v.collection.get(D)?v.get({id:D},!1).done(function(y){return v.collection.get(D).set(y)}):$.when()},v.remove=function(D){return v.trigger("before:remove",D),M.PUT({module:"group",params:{action:"delete",timestamp:_.then()},data:{id:D},appendColumns:!1}).done(function(){var y=v.collection.get(D);y&&v.collection.remove(y),v.trigger("remove",D),S()})},v.getName=function(D){return v.get({id:D}).then(function(y){return y.display_name||y.name||""})},v.getTextNode=function(D){var y=document.createTextNode("");return v.get({id:D}).done(function(d){y.nodeValue=d.display_name}).always(function(){_.defer(function(){y=null})}),y},v});define("io.ox/core/api/resource",["io.ox/core/http","io.ox/core/api/factory"],function(M,w){"use strict";var v=w({module:"resource",keyGenerator:function(D){return String(D.id)},requests:{all:{},list:{},get:{},search:{action:"search",getData:function(D){return{pattern:D}}}}});function S(){v.caches.all.clear(),v.caches.list.clear(),v.caches.get.clear()}var F=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:function(){var D={\u00E4:"ae",\u00F6:"oe",\u00FC:"ue",\u00DF:"ss"};return function(){return this.has("id")&&this.get("name")?this.get("name"):this.get("display_name").trim().toLowerCase().replace(/[äöüÃ]/g,function(y){return D[y]}).replace(/\W+/g,"_")}}()}),k=Backbone.Collection.extend({comparator:function(D){return(D.get("display_name")||"").toLowerCase()},model:F});return v.collection=new k,v.getModel=function(D){return v.collection.get(D)||new F},v.create=function(D){return M.PUT({module:"resource",params:{action:"new"},data:D,appendColumns:!1}).then(function(y){return v.get({id:y.id}).done(function(d){v.collection.add(d,{parse:!0}),v.trigger("create",d),S()})})},v.update=function(D){return M.PUT({module:"resource",params:{action:"update",id:D.id,timestamp:_.then()},data:_(D).pick("description","display_name","mailaddress","name"),appendColumns:!1}).done(function(){var y=v.collection.get(D.id);y&&y.set(D),v.trigger("update",D),S()})},v.remove=function(D){return v.trigger("before:remove",D),M.PUT({module:"resource",params:{action:"delete",timestamp:_.then()},data:{id:D},appendColumns:!1}).done(function(){var y=v.collection.get(D);y&&v.collection.remove(y),v.trigger("remove",D),S()})},v});define("io.ox/core/api/quota",["io.ox/core/http","io.ox/core/capabilities","settings!io.ox/core"],function(M,w,v){"use strict";var S=Backbone.Model.extend({defaults:{quota:-1,use:0,countquota:-1,countuse:0},constructor:function(d){this.type=d,this.fetched=!1,Backbone.Model.apply(this,[])},fetch:function(){var d=v.get("quotaMode","default")==="unified",m=this.fetched||this.type==="mail"&&!w.has("webmail")&&!d||this.type==="filestore"&&!w.has("infostore")&&!d;return m?this.toJSON():M.GET({module:"quota",params:{action:d?"unified":this.type}}).then(function(o){return this.fetched=!0,this.type==="filestore"&&v.get("properties/infostoreUsage")>0&&v.set("properties/infostoreUsage",o.use),this.set(o).toJSON()}.bind(this))}}),F=new S("mail"),k=new S("filestore"),D=!1,y={mailQuota:F,fileQuota:k,checkQuota:function(d,m){return d.module!=="infostore"?{}:M.PUT({module:"folders",params:{action:"checklimits",id:d.id,type:"filestorage"},appendColumns:!1,data:{files:m.map(function(o){return{size:o.size,name:o.name}})}}).then(function(o){return[].concat.apply(o&&o.errors||[])})},getModel:function(d){return d==="mail"?F:k},load:function(){return M.pause(),v.get("quotaMode","default")!=="unified"&&this.mailQuota.fetch(),this.fileQuota.fetch(),M.resume().then(function(){return v.get("quotaMode","default")==="unified"&&(F.fetched=!0,F.set(k.attributes)),{mail:F.toJSON(),file:k.toJSON()}})},reload:function(){F.fetched=!1,D&&(k.fetched=!1),this.load()},getAccountQuota:function(){var d=new Backbone.Collection;return function(m,o,i){var e=d.find({account_id:m.replace(/.*:\/\//,""),module:o});return e&&i!==!1?$.when(e):M.GET({module:"quota",params:{account:m,module:o}}).then(function(t){return t=t||{account_id:m.replace(/.*:\/\//,"")},t.module=o,d.add(t)})}}()};return ox.on("refresh^",function(){y.reload()}),y.requestFileQuotaUpdates=function(){D=!0},y});define("io.ox/core/api/filestorage",["io.ox/core/http","io.ox/core/event","io.ox/core/extensions"],function(M,w,v){"use strict";var S={},F=new Backbone.Collection,k=new Backbone.Collection,D=[],y=function(m){var o=["googledrive","dropbox","boxcom","onedrive","xo
3x","xctx"];v.point("io.ox/core/filestorage/service-list").invoke("customize",o),_(m).each(function(i){i=i.get?i.toJSON():i,_(o).each(function(e){i.filestorageService&&i.filestorageService.indexOf(e)===0&&D.push(i.qualifiedId)})}),D=_.uniq(D)},d={rampupDone:!1,rampupFailed:!1,rampup:function(){return d.rampupDone?$.Deferred().resolve():(d.rampupFailed&&$.Deferred().reject(),M.pause(),d.getAllServices(),d.getAllAccounts(),M.resume().done(function(m){var o=!1;_(m).each(function(i){i.error&&(o=!0)}),o?(d.rampupDone=!1,d.rampupFailed=!0):(d.rampupDone=!0,d.rampupFailed=!1)}).fail(function(m){return d.rampupFailed=!0,m}))},getAccountsCache:function(){return k},getAllServices:function(m,o){if(o=o===void 0?!0:o,o&&F.length)return $.Deferred().resolve(F);var i={action:"all"};return m&&(i.filestorageService=m),M.GET({module:"fileservice",params:i}).then(function(e){return F.reset(e),_(e).each(function(t){try{t.configuration&&t.configuration.length>0&&t.configuration[0].options&&(S[t.configuration[0].options.type]={filestorageService:t.id,configuration:{type:t.configuration[0].options.type}})}catch(n){console.error(n)}}),F})},getService:function(m,o){if(o=_.defaultValue(o,!0),!m)return $.Deferred().reject();if(o&&F.length){var i=F.get(m);if(i)return $.Deferred().resolve(i)}return M.GET({module:"fileservice",params:{action:"get",id:m}}).then(function(e){return new Backbone.Model(e)})},getAllAccounts:function(m){return m=_.defaultValue(m,!0),m&&k.length>0?$.Deferred().resolve(k):M.GET({module:"fileaccount",params:{action:"all",connectionCheck:!0}}).then(function(o){return k.reset(o),y(o),k})},getAccount:function(m,o){if(o=_.defaultValue(o,!0),!m.id||!m.filestorageService)return $.Deferred().reject();if(o&&k.length>0){var i=k.get(m.id);if(i)return $.Deferred().resolve(i)}return M.GET({module:"fileaccount",params:{action:"get",id:m.id,filestorageService:m.filestorageService}}).then(function(e){return new Backbone.Model(e)})},createAccount:function(m){return M.PUT({module:"fileaccount",params:{action:"new"},data:m}).then(function(o){return d.getAccount({id:o,filestorageService:m.filestorageService}).then(function(i){return k.add(i),y([i]),d.trigger("create",k.get(i)),require(["io.ox/core/api/account"],function(e){e.trigger("create:account")}),k.get(i)})})},createAccountFromOauth:function(m,o){if(o=o||{},!m)return $.Deferred().reject();var i=d.getAccountForOauth(m);if(i)return $.Deferred().reject({code:"EEXISTS"});var e=_.copy(S[m.serviceId],!0);return e?(e.displayName=o.displayName||m.displayName,e.configuration.account=String(m.id),d.createAccount(e)):$.Deferred().reject()},deleteAccount:function(m,o){var i,e=o||{};m.attributes&&(i=m,m=m.attributes);function t(u){return k.remove(m),D=_(D).without(m.qualifiedId),d.trigger("delete",i||m),require(["io.ox/core/folder/api"],function(f){ox.trigger("account:delete",m.qualifiedId),f.propagate("account:delete")}),u}var n=e.softDelete?$.Deferred().resolve():M.PUT({module:"fileaccount",params:{action:"delete",id:m.id,filestorageService:m.filestorageService}});return n.then(t,t)},remove:function(m,o){return d.deleteAccount(m,o)},getAccountForOauth:function(m){var o;return _(k.models).each(function(i){i.get("configuration")&&i.get("configuration").account===String(m.id)&&(o=i)}),o},updateAccount:function(m){return M.PUT({module:"fileaccount",params:{action:"update"},data:m}).then(function(){return d.getAccount({id:m.id,filestorageService:m.filestorageService},!1).then(function(o){return k.add(o,{merge:!0}),d.trigger("update",k.get(o)),k.get(o)})})},isStorageAvailable:function(m){return m?!!S[m]:_.keys(S)},consistencyCheck:function(){!d.rampupDone||d.rampupFailed||require(["io.ox/oauth/keychain"],function(m){try{var o={},i=m.accounts;_(k.models).each(function(e){if((e.get("filestorageService")==="googledrive"||e.get("filestorageService")==="dropbox"||e.get("filestorageService")==="onedrive"||e.get("filestorageService")==="boxcom")&&e.get("configuration")&&e.get("configuration").account){var t=e.get("configuration").account;i.get(t)&&!o[t]?o[t]=!0:d.deleteAccount(e)}})}catch(e){ox.debug&&console.error(e)}})},isExternal:function(m,o){var i=!1,e=o||{};if(d.rampupDone&&m&&m.account_id&&(i=_(D).indexOf(m.account_id)!==-1),i&&(e.type||e.root)){var t=k.findWhere({qualifiedId:m.account_id});e.root&&(i=m.id===t.get("rootFolder")),i&&e.type&&(i=t.get("filestorageService"))}return i},getAllGuestUserIdentifier:function(){return _.compact(_(k.pluck("metadata")).map(function(m){return m&&m.guestUserIdentifier}))},getAccountMetaData:function(m){var o=k.findWhere({qualifiedId:m});return o?o.get("metadata"):null},getAccountUrl:function(m){var o=k.findWhere({qualifiedId:m}),i=o?o.get("configuration"):null;return i?i.url:null},isFederatedAccount:function(m){var o=d.getAccountMetaData(m);return o?_.has(o,"guestUserIdentifier"):null},getAccountDisplayName:function(m){var o=k.findWhere({qualifiedId:m});return o?o.get("displayName"):null}};
3return w.extend(d),require(["io.ox/core/folder/api"],function(m){m.on("remove:infostore",function(o){var i=/.*:\/\/(\d+)/.exec(o.account_id);if(!(i===null||!i[1])){var e=new RegExp("^"+o.account_id+"/?$").test(o.id);e&&k.remove(i[1])}})}),d});define("io.ox/contacts/util",["io.ox/core/util","io.ox/core/extensions","io.ox/core/yell","settings!io.ox/contacts","gettext!io.ox/contacts"],function(M,w,v,S,F){"use strict";var k=function(i){return i?"6":"con://0/6"};require(["settings!io.ox/contacts"]).then(function(i){i.get("showDepartment")&&($("html").addClass("showDepartment"),w.point("io.ox/core/person").extend({index:"last",id:"department",draw:function(e){String(e.data.folder_id)===k()&&e.data.department&&this.append($('<span class="department">').text(_.noI18n.format(" (%1$s) ",e.data.department)))}}))});function D(i,e){var t=new Array(i);return t[i-1]=e,{format:"%"+i+"$s",params:t}}function y(i){return/^(<span class="title">)?(dr\.?|prof\.?)/i.test(i)?i:""}function d(i){var e=moment.utc(i).local(!0),t,n,u;return e.month()<2?t=Math.floor((e.year()-1)/100):t=Math.floor(e.year()/100),n=Math.floor(t/4),u=t%4,Math.abs((3*n+u-2)*864e5)}function m(i,e,t){var n=i;return t===!0&&(n={},_(["title","first_name","last_name","company","display_name","cn"]).each(function(u){var f=$.trim(i[u]);if(!f)if(u==="last_name"&&$.trim(i.yomiLastName))f=$.trim(i.yomiLastName);else if(u==="first_name"&&$.trim(i.yomiFirstName))f=$.trim(i.yomiFirstName);else if(u==="company"&&$.trim(i.yomiCompany))f=$.trim(i.yomiCompany);else return;var a=u==="last_name"?"strong":"span";n[u]="<"+a+' class="'+u+'">'+_.escape(f)+"</"+a+">"})),e?o.getMailFullNameFormat(i):o.getFullNameFormat(n)}var o={getGabId:k,getSortName:function(i){return i=_.pick(i,"first_name","last_name","display_name","cn"),this.getFullName(i).toLowerCase()},getFullNameFormat:function(i){var e=$.trim(i.first_name),t=$.trim(i.last_name),n=$.trim(i.display_name||i.cn),u=$.trim(i.company),f=$.trim(i.title);if(e&&t){var a=S.get("fullNameFormat","auto"),b=[e,t],p;return f=y(f),f&&b.push(f),a==="firstname lastname"?p=f?"%3$s %1$s %2$s":"%1$s %2$s":a==="lastname, firstname"?p=f?"%3$s %2$s, %1$s":"%2$s, %1$s":p=F(f?"%3$s %2$s, %1$s":"%2$s, %1$s"),{format:p,params:b}}return t?D(2,t):e?D(1,e):u?D(1,u):n?D(4,M.unescapeDisplayName(n)):{format:"",params:[]}},getFullName:function(i,e){var t=m(i,!1,e);return _.noI18n.format(t.format,t.params)},getFullNameWithFurigana:function(i){return this.getFullName(i,!0)},getDisplayName:function(i){return i.display_name?M.unescapeDisplayName(i.display_name):i.last_name&&i.first_name?i.last_name+", "+i.first_name:i.last_name||i.first_name||""},getMailFullNameFormat:function(i){var e=$.trim(i.first_name),t=$.trim(i.last_name),n=$.trim(i.display_name);return t&&e?{format:F.pgettext("mail address","%1$s %2$s"),params:[e,t]}:t?D(2,t):e?D(1,e):n?D(4,M.unescapeDisplayName(n)):{format:"",params:[]}},getMailFullName:function(i,e){var t=m(i,!0,e);return _.noI18n.format(t.format,t.params)},getMailFormat:function(i){return i.email1?D(1,i.email1):i.email2?D(2,i.email2):i.email3?D(3,i.email3):{format:"",params:[]}},getMail:function(i){return i?(i.email1||i.email2||i.email3||i.mail||i.email||"").trim().toLowerCase():""},getJob:function(i){var e=_([i.company,i.position]).compact();return e.length?e.join(", "):i.email1||i.email2||i.email3||""},nameSort:function(i,e){var t,n;return i.display_name===void 0?t=i.mail:t=i.display_name.toLowerCase(),e.display_name===void 0?n=e.mail:n=e.display_name.toLowerCase(),t<n?-1:t>n?1:0},calcMailField:function(i,e){var t,n;return n=[i.email1,i.email2,i.email3],_.each(n,function(u,f){e===u&&(t=f+1)}),t},gregorianToJulian:function(i){return moment.utc(i-d(i)).valueOf()},julianToGregorian:function(i){return moment.utc(i+d(i)).valueOf()},getBirthday:function(i,e){return i=moment.utc(i),i.year()>1&&i.year()!==1604?i.format("l")+(e?" ("+F("Age: %1$d",moment().diff(i,"years"))+")":""):i.formatCLDR("Md")},getSummaryBusiness:function(i){var e=[i.position,i.company,i.department];return String(i.folder_id)===this.getGabId()&&e.splice(1,1),e.map($.trim).filter(Boolean).join(", ")},getSummaryLocation:function(i){var e=i.city_business?[i.city_business,i.country_business]:[i.city_home,i.country_home];
3return e.map($.trim).filter(Boolean).join(", ")},getImage:function(i,e){if(_.isObject(i)&&(i=i.image1_url),!i)return"";e=_.extend({width:40,height:40,scaleType:"cover"},e),_.device("retina")&&(e.width*=2,e.height*=2);var t=i.replace(/^https?:\/\/[^/]+/i,"");return t=M.replacePrefix(t),M.getShardingRoot(t+"&"+$.param(e))},getInitials:function(){var i=/^.*?([a-z0-9\xC0-\xFFä¸-龯ã-ãã¡-ã³\u0400-\u04FFα-Ï])/i,e=/\s.*?([a-z0-9\xC0-\xFFä¸-龯ã-ãã¡-ã³\u0400-\u04FFα-Ï])\S*$/i;function t(f){var a=i.exec(f);return a&&a[1]||""}function n(f){var a=e.exec(f);return a&&a[1]||""}function u(f){var a=$.trim(f.first_name),b=$.trim(f.last_name),p=$.trim(f.display_name);if(a&&b)return t(a)+t(b);if(p)return t(p)+n(p);if(b)return t(b);if(a)return t(a);var T=$.trim(f.email1||f.email2||f.email3||f.email);return T?t(T):""}return function(f){return u(f).toUpperCase()}}(),getInitialsColor:function(){var i=["red","orange","yellow","green","cyan","blue","purple","pink"],e=i.length;return function(t){return t?i[t[0].charCodeAt()%e]:i[0]}}(),validateDistributionList:function(i){if(!(!i||!_.isArray(i)||!i.length)){var e=[];return i=_(i).filter(function(t){t=t.attributes||t;var n=t.mail||t[t.field];return n||e.push(t),!!t.mail}),e.length&&require(["io.ox/core/yell"],function(t){if(e.length===1){t("warning",F("%1$s could not be added as the contact has no valid email field.",e[0].display_name));return}t("warning",F("Some contacts could not be added as they have no valid email field."))}),i}},checkDuplicateMails:function(i,e,t){t=t||{yell:!0};function n(a){return a instanceof Backbone.Model&&(a=a.toJSON()),a.field&&a[a.field]?a[a.field]:o.getMail(a)}Array.isArray(i)||(i=[i]);var u=e.map(n),f=i.filter(function(a){return!u.includes(n(a))});return t.yell&&i.length!==f.length&&v("warning",F("Some contacts could not be added because their email address is already in the list.")),f}};return o});define("l10n/ja_JP/io.ox/collation",function(){"use strict";var M="\uFF9E \u3099 \u309B".split(" "),w="\uFF9F \uFF9F \u309C".split(" "),v="\uFF73 \uFF74 \uFF75 \uFF76 \uFF77 \uFF78 \uFF79 \uFF7A \uFF7B \uFF7C \uFF7D \uFF7E \uFF7F \uFF80 \uFF81 \uFF82 \uFF6F \uFF83 \uFF84 \uFF8A \uFF8B \uFF8C \uFF8D \uFF8E \uFF9C \uFF66".split(" "),S="_",F=[["\u3042 \u3041 \u30A2 \uFF71 \u30A1","\u3044 \u3043 \u30A4 \uFF72 \u30A3","\u3046 \u3045 \u30A6 \uFF73 \u30A5 \u3094 \u30F4 \uFF73\uFF9E","\u3048 \u3047 \u30A8 \uFF74 \u30A7","\u304A \u3049 \u30AA \uFF75 \u30A9"],["\u304B \u3095 \u30AB \uFF76 \u30F5 \u304C \u30AC \uFF76\uFF9E","\u304D \u30AD \uFF77 \u304E \u30AE \uFF77\uFF9E","\u304F \u30AF \uFF78 \u31F0 \u3050 \u30B0 \u31F0\uFF9E","\u3051 \u3096 \u30B1 \uFF79 \u30F6 \u3052 \u30B2 \uFF79\uFF9E","\u3053 \u30B3 \uFF7A \u3054 \u30B4 \uFF7A\uFF9E"],["\u3055 \u30B5 \uFF7B \u3056 \u30B6 \uFF7B\uFF9E","\u3057 \u30B7 \uFF7C \u31F1 \u3058 \u30B8 \uFF7C\uFF9E","\u3059 \u30B9 \uFF7D \u31F2 \u305A \u30BA \uFF7D\uFF9E","\u305B \u30BB \uFF7E \u305C \u30BC \uFF7E\uFF9E","\u305D \u30BD \uFF7F \u305E \u30BE \uFF7F\uFF9E"],["\u305F \u30BF \uFF80 \u3060 \u30C0 \uFF80\uFF9E","\u3061 \u30C1 \uFF81 \u3062 \u30C2 \uFF81\uFF9E","\u3064 \u3063 \u30C4 \uFF82 \u30C3 \uFF6F \u3065 \u30C5 \uFF82\uFF9E \uFF6F\uFF9E","\u3066 \u30C6 \uFF83 \u3067 \u30C7 \uFF83\uFF9E","\u3068 \u30C8 \uFF84 \u31F3 \u3069 \u30C9 \uFF84\uFF9E"],["\u306A \u30CA \uFF85","\u306B \u30CB \uFF86","\u306C \u30CC \uFF87 \u31F4","\u306D \u30CD \uFF88","\u306E \u30CE \uFF89"],["\u306F \u30CF \uFF8A \u31F5 \u3070 \u30D0 \uFF8A\uFF9E \u3071 \u30D1 \uFF8A\uFF9F","\u3072 \u30D2 \uFF8B \u31F6 \u3073 \u30D3 \uFF8B\uFF9E \u3074 \u30D4 \uFF8B\uFF9F","\u3075 \u30D5 \uFF8C \u31F7 \u3076 \u30D6 \uFF8C\uFF9E \u3077 \u30D7 \uFF8C\uFF9F","\u3078 \u30D8 \uFF8D \u31F8 \u3079 \u30D9 \uFF8D\uFF9E \u307A \u30DA \uFF8D\uFF9F","\u307B \u30DB \uFF8E \u31F9 \u307C \u30DC \uFF8E\uFF9E \u307D \u30DD \uFF8E\uFF9F"],["\u307E \u30DE \uFF8F","\u307F \u30DF \uFF90","\u3080 \u30E0 \uFF91 \u31FA","\u3081 \u30E1 \uFF92","\u3082 \u30E2 \uFF93"],["\u3084 \u3083 \u30E4 \uFF94 \u30E3","\u3086 \u3085 \u30E6 \uFF95 \u30E5","\u3088 \u3087 \u30E8 \uFF96 \u30E7"],["\u3089 \u30E9 \uFF97 \u31FB","\u308A \u30EA \uFF98 \u31FC","\u308B \u30EB \uFF99 \u31FD","\u308C \u30EC \uFF9A \u31FE","\u308D \u30ED \uFF9B \u31FF"],["\u308F \u308E \u30E
3F \uFF9C \u30EE \u30F7 \uFF9C\uFF9E","\u3090 \u30F0 \u30F8","\u3091 \u30F1 \u30F9","\u3092 \u30F2 \uFF66 \u30FA","\u3093 \u30F3 \uFF9D"]],k={},D={},y=0,d,m,o,i=[],e=/^[a-zäöü]/i;k[" "]=y,k["\u3000"]=y++,_(F).each(function(n){i.push(n[0][0]),_(n).each(function(u){_(u.split(" ")).each(function(f){k[f]=y,D[f]=n[0][0]}),y++})}),o=_(D).keys();var t=function(n,u){return n&&u&&v.indexOf(n)!==-1&&(u[1]&&M.indexOf(u[1])!==-1&&(n=n+M[0]),u[1]&&w.indexOf(u[1])!==-1&&(n=n+w[0])),n};return d=function(n,u,f){var a=n.sort_name,b=u.sort_name,p=n.fullSortName||a,T=u.fullSortName||b;if(n=n.sort_name[0],u=u.sort_name[0],p===a&&T===b){if(n===void 0&&u===void 0)return 0;if(n===void 0)return 1;if(u===void 0)return-1;if(n!==u&&n===S&&u in k)return 1;if(n!==u&&u===S&&n in k)return-1}if(n===void 0&&u===void 0)return f||0;if(u===void 0||u===S&&n!==S&&n!==void 0)return 1;if(n===void 0||n===S&&u!==S&&u!==void 0)return-1;if(f&&(n===S||u===S))return f;if(n in k&&u in k){var r=n,g=u;return n=t(n,a),u=t(u,b),k[n]===k[u]?(f===void 0&&n!==u&&(f=_(o).indexOf(n)<_(o).indexOf(u)?-1:1),n={sort_name:a.slice(r===n?1:2),fullSortName:p},u={sort_name:b.slice(g===u?1:2),fullSortName:T},d(n,u,f)):k[n]-k[u]===0?f||0:k[n]-k[u]}if(n in k)return-1;if(u in k)return 1;if(n=n.toUpperCase(),u=u.toUpperCase(),n===u)return n={sort_name:a.slice(1),fullSortName:p},u={sort_name:b.slice(1),fullSortName:T},d(n,u,f);var l;return!e.test(n)&&!e.test(u)?(l=n<u?-1:n>u?1:0,l===0?f||0:l):e.test(n)?e.test(u)?(l=n<u?-1:n>u?1:0,l===0?f||0:l):1:-1},m=function(n,u){if(n&&n.email&&u&&u.email&&n.sort_name_without_mail&&u.sort_name_without_mail){var f=d({sort_name:n.sort_name_without_mail},{sort_name:u.sort_name_without_mail});return f!==0?f:d({sort_name:n.email},{sort_name:u.email})}return d(n,u)},{sorter:d,sorterWithMail:m,index:i,isKana:function(n){return D[n]!==void 0},getKanaLabel:function(n){return D[n]||""}}});define("io.ox/core/tk/list-selection",["settings!io.ox/core"],function(M){"use strict";var w=".selectable",v=".swipe-button.delete",S=".swipe-button.more",F=_.device("touch"),k=_.device("android")&&_.browser.android<"4.4",D=M.get("selectionMode","normal"),y=20,d=40,m=250,o=190,i=200,e=100,t=50,n=100,u="-84px",f,a=!1;function b(c,h){switch(h=_.isObject(h)?h:{},this.view=c,this.behavior=h.behavior||D,this._direction="down",this._lastPosition=-1,this.behavior){case"normal":_.extend(this,T);break;case"alternative":_.extend(this,T,r);break;case"simple":_.extend(this,g);break;case"single":_.extend(this,g,l);break;default:console.error("Unknown selection behavior",this.behavior);break}this.registerEvents()}var p={get:function(){return _(this.view.$el.find(w+".selected")).map(function(c){return $(c).attr("data-cid")})},resolve:function(){var c=this.view;return this.get().map(function(h){return c.collection.get(h)})},getItems:function(c){var h=this.view.$el.find(w);return c?h.filter(c):h},getNode:function(c){return this.getItems().filter('[data-cid="'+c+'"]')},getPosition:function(c){c=c||this.getItems();var h=c.index(c.filter(".precursor"));return h!==this._lastPosition&&(this._direction=h<this._lastPosition?"up":"down"),this._lastPosition=h,h},getDirection:function(){return this._direction},check:function(c){c.addClass("selected").attr("aria-selected",!0),this.triggerSelectEvent("add",c)},uncheck:function(c){c.removeClass("selected no-checkbox").attr({"aria-selected":!1,tabindex:"-1"}),this.triggerSelectEvent("remove",c)},toggle:function(c){c.hasClass("selected")?this.uncheck(c):this.check(c)},triggerSelectEvent:function(c,h){var L=h.map(function(){return $(this).attr("data-cid")}).toArray();this.view.trigger("selection:"+c,L)},set:function(c,h){if(_.isArray(c)){var L=this.getItems(),s={};if(this.clear(),_(c).each(function(C){var N=typeof C=="string"?C:_.cid(C);s[N]=!0}),L=L.filter(function(){var C=$(this).attr("data-cid");return C in s}),this.check(L),L.length){var x=L.last().attr("tabindex","0");h&&x.focus()}this.triggerChange()}},triggerAction:function(c){var h=$(c.currentTarget).attr("data-cid");this.view.trigger("selection:action",[h])},triggerDouble:function(c){var h=$(c.currentTarget).attr("data-cid");this.view.trigger("selection:doubleclick",[h])},triggerChange:function(c,h){c=c||this.getItems();var L=this.get(),s="selection:change";L.length===0?s+=" selection:empty":L.length===1?s+=" selection:one":L.length>1&&(s+=" selection:multiple"),c&&c.length>0&&c.length===L.length&&(c.length!==1||!$(c[0]).hasClass("no-checkbox"))?s+=" selection:all":s+=" selection:subset",this.view.trigger(s,L,h)},clear:function(c){c=c||this.getItems(),this.resetTabIndex(c),this.resetCheckmark(c),this.reset()},reset:function(){this.triggerChange()},remove:function(c,h){h=h||this.getNode(c),h.is(".selected")&&this.triggerChange()}
3,isRange:function(c){return c&&c.shiftKey},isCheckmark:function(c){return c&&$(c.target).is(".list-item-checkmark, .fa.fa-checkmark, .checkmark, .checkbox")},isMultiple:function(c){return c&&(c.metaKey||c.ctrlKey||/35|36/.test(c.which)||this.isCheckmark(c))},isEmpty:function(){return _.isEmpty(this.get())},resetTabIndex:function(c,h){c=c.filter('[tabindex="0"]'),c.not(h).attr("tabindex","-1")},resetCheckmark:function(c){c=c.filter(".selected").removeClass("selected no-checkbox").attr("aria-selected",!1),this.triggerSelectEvent("remove",c)},resetSwipe:function(c){var h=c.filter(".swipe-left");return h.removeClass("swipe-left").find(".swipe-left-content").remove(),!!h.length},focus:function(c,h,L){h=h||this.getItems();var s=h.eq(c).attr("tabindex","0");return L!==!1&&(_.device("ie")?_.defer(function(){s.focus()}):s.focus()),_.device("chrome < 48")&&s.hide(0,function(){$(this).show()}),s},pick:function(c,h,L,s){var x;h=h||this.getItems(),this.isRange(L)?this.pickRange(c,h):(h.removeClass("precursor"),x=this.focus(c,h,s).addClass("precursor"),this.isMultiple(L)?this.pickMultiple(x,h):this.pickSingle(x))},pickRange:function(c,h){var L=this.getPosition(h,c),s=Math.min(c,L),x=Math.max(c,L);$(h.slice(s,x+1)).removeClass("no-checkbox"),this.check(h.slice(s,x+1)),this.focus(c,h)},pickMultiple:function(c,h){c.hasClass("selected no-checkbox")?c.removeClass("no-checkbox"):(h.filter(".no-checkbox").removeClass("selected no-checkbox").attr("aria-selected",!1),this.toggle(c))},pickSingle:function(c){this.check(c)},select:function(c,h,L){h=h||this.getItems(),!(c>=h.length)&&(this.resetCheckmark(h),this.resetTabIndex(h,h.eq(c)),this.pick(c,h,null,L),this.selectEvents(h))},selectEvents:function(c){this.triggerChange(c)},selectAll:function(c){c=_.isString(c)?this.getItems(c):c||this.getItems();var h=c.slice(0,c.length);h.removeClass("no-checkbox precursor"),h.first().addClass("precursor"),this.check(h),this.focus(0,c),this.triggerChange(c)},selectNone:function(){this.clear(),this.triggerChange()},move:function(c){var h=this.getItems(),L=this.getPosition()+c;L<0?L=0:L>=h.length&&(L=h.length-1),this.select(L,h)},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 c=this.getItems(),h=c.filter(".selected"),L=h.length,s=c.index(h.first()),x=c.index(h.last()),C=c.length-1,N=this.select.bind(this),I=this.getDirection(),P=$.contains(this.view.el,document.activeElement);if(c.length===L)return this.clear();if(x===C&&(I="up"),I==="up"&&s>0)return N(s-1,c,P);if(I==="down"&&x<C)return N(x+1,c,P);c.slice(s).each(function(B){if(!$(this).hasClass("selected"))return N(s+B,c,P),!1})},onCursor:function(c){var h=this.view.$el.hasClass("grid-layout"),L=/37|39/.test(c.which);if(!(!h&&L)){var s=this.getItems(),x=$(document.activeElement),C=s.index(x)||0,N=parseInt(this.view.$el.attr("grid-count")||1,10),I=C%N,P=/38|40|35|36/.test(c.which),B=/37|38|36/.test(c.which),W=h&&P?N:1;if(C+=B?-W:+W,W>1&&/40|35/.test(c.which)&&C>=s.length&&I>=s.length%N&&(C=s.length-1),C=this.outOfBounds(C,s),C!==!1){c.preventDefault(),this.isMultiple(c)&&(C=/38|36/.test(c.which)?0:-1);var z=s.eq(C);this.resetTabIndex(s,z),this.resetCheckmark(s),this.pick(C,s,c),this.getPosition(),this.isMultiple(c)||this.isRange(c)?this.triggerChange(s,z.attr("data-cid")):this.selectEvents(s)}}},outOfBounds:function(c,h){return c<0?!1:c>=h.length?(this.view.$el.scrollTop(16777215),!1):c},onPageUpDown:function(c){c.preventDefault();var h=this.getItems(),L=h.first().outerHeight(),s;L&&(s=Math.floor(this.view.$el.height()/L),c.which===33?this.move(-s):this.move(s))},onKeydown:function(c){switch(c.which){case 13:case 32:this.triggerAction(c);break;case 65:case 97:c.ctrlKey||c.metaKey||a?(c.preventDefault(),this.selectAll()):c.which===65&&!c.shiftKey&&!c.altKey&&this.view.trigger("selection:archive",this.get());break;case 91:a=!0,setTimeout(function(){a=!1},2e3);break;case 8:case 46:if(c.ctrlKey||c.metaKey||c.altKey)return;c.preventDefault(),this.view.trigger("selection:delete",this.get(),c.shift
3Key);break;case 35:case 36:case 37:case 38:case 39:case 40:this.onCursor(c);break;case 33:case 34:this.onPageUpDown(c);break}},onMousedown:function(){this.view.mousedown=!0},onMouseup:function(){this.view.mousedown=!1},onClick:function(c,h){if(h=h||{},c.type==="tap"&&(c.preventDefault(),c.stopPropagation()),!(c.type==="mousedown"&&!this.isMultiple(c)&&$(c.currentTarget).is(".selected"))&&!(c.type==="click"&&this.isMultiple(c))){var L=this.getItems(),s=$(c.currentTarget),x=L.index(s)||0,C=this.get();F&&this.resetSwipe(L)||c.isDefaultPrevented()&&c.type!=="tap"||(this.isMultiple(c)||this.resetCheckmark(L),this.resetTabIndex(L,L.eq(x)),this.pick(x,L,c),!h.customEvents&&(_.isEqual(C,this.get())||this.triggerChange(L,$(c.currentTarget).attr("data-cid"))))}},onSwipeDelete:function(c){c.preventDefault();var h=$(this.currentSelection).closest(w),L=h.attr("data-cid"),s=h.nextAll(),x=this,C=function(){this.removeAttr("style"),_(this).each(function(N){var I=$(N).data("velocity");I.transformCache={},$(N).data("velocity",I)}),x.view.off("remove-mobile",C)};s.length>0?s.velocity({translateY:u},{duration:i,complete:function(){x.view.on("remove-mobile",C,s),x.view.trigger("selection:delete",[L]),x.currentSelection.swipeCell.remove(),x.currentSelection.swipeCell=null,$(x.view).removeClass("unfolded"),x.currentSelection.unfolded=x.unfold=!1}}):(x.view.on("remove-mobile",C,s),x.view.trigger("selection:delete",[L]),x.currentSelection.swipeCell.remove(),x.currentSelection.swipeCell=null,$(x.view).removeClass("unfolded"),x.currentSelection.unfolded=x.unfold=!1)},onSwipeMore:function(c){c.preventDefault();var h=$(this.currentSelection).closest(w),L=h.attr("data-cid"),s=this;this.view.trigger("selection:more",[L],$(this.currentSelection.btnMore)),_.delay(function(){s.resetSwipeCell.call(s.currentSelection,s)},250)},isAnyCellUnfolded:function(){return!!this.unfold},resetSwipeCell:function(c,h,L){var s=this;try{c.startX=0,c.startY=0,c.unfold=!1,c.target=null,c.otherUnfolded=!1,L?($(s).removeAttr("style"),$(s).removeClass("unfolded"),s.swipeCell&&s.swipeCell.remove(),s.swipeCell=null):$(s).velocity({translateX:[0,h]},{duration:n,complete:function(){$(s).removeAttr("style"),$(s).removeClass("unfolded"),s.swipeCell&&s.swipeCell.remove(),s.swipeCell=null}})}catch(x){console.warn("something went wrong during reset",x)}},onTouchStart:function(c){var h=c.originalEvent.touches[0],L=h.pageX,s=h.pageY,x=$(this).css("transition","");this.startX=L,this.startY=s,this.distanceX=0,this.unfold=this.remove=this.scrolling=this.isMoving=!1,this.unfolded=x.hasClass("unfolded"),this.otherUnfolded=x.siblings().hasClass("unfolded"),!this.unfolded&&this.otherUnfolded&&c.data.resetSwipeCell.call(c.data.currentSelection,c.data,-o)},onTouchMove:function(c){var h=c.originalEvent.touches[0],L=h.pageX;if(!(c.originalEvent.touches.length>1)&&(this.distanceX=(this.startX-L)*-1,this.scrolling=!1,!(L>this.startX&&!this.unfolded&&this.distanceX<=y))){if(c.data.isScrolling){this.scrolling=!0;return}if(this.unfolded&&(this.distanceX+=-190),Math.abs(this.distanceX)>y||this.isMoving){if(c.preventDefault(),this.isMoving=!0,c.data.view.isSwiping=!0,this.target||(this.target=$(c.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+y<=0||this.unfolded&&this.distanceX<=0){var s=this.unfolded?this.distanceX:this.distanceX+y;this.target.css({"-webkit-transform":"translate3d("+s+"px,0,0)",transform:"translate3d("+s+"px,0,0)"})}Math.abs(this.distanceX)>=m&&!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)<=m&&(this.expandDelete=!1,this.btnDelete.css("width","95px"),this.faBars.css("opacity",1),this.btnMore.removeAttr("style"))}}},onTouchEnd:function(c){if(!this.scrolling){if(this.remove=this.unfold=c.data.view.isSwiping=!1,this.isMoving=!1,this.distanceX>0&&!this.unfolded){c.data.resetSwipeCell.call(this,c.data,0,!0);return}if(this.unfolded&&this.distanceX<=10)return c.data.resetSwipeCell.call(c.data.currentSelection,c.data,this.distanceX===0?-o:this.distanceX),!1;if(this.otherUnfolded&&Math.abs(this.distanceX)<=10)return!1;if(Math.abs(this.distanceX)>=d&&(this.unfold=!0),this.expandDelete&&(this.remove=!0,this.unfold=!1),f=$(this),this.unfold)this.expandDelete=!1,f.velocity({translateX:[-o,this.distanceX]},{duration:e,complete:function(){f.addClass("unfolded")}}),c.data.unfold=!0,c.data.currentSelection=this;else if(this.remove){var h=this,L=c.data.view,s=function(){this.removeAttr("style"),_(this).each(function(x){var C=$(x).data("velocity");C&&(C.transformCache={})}),L.off("remove-mobile",s)};$(this).velocity({translateX:["-100%",this.distanceX]},{duration:t,complete:function(){h.btnMore.remove(),h.startX=h.startY=0,f.data("velocity").transformCache={};var x=$(h).nextAll();if(x.length>0)x.velocity({translateY:u},{duration:i,complete:function(){var I=$(h).closest(w),P=I.attr("data-cid");L.on("remove-mobile",s,x),L.trigger("selection:delete",[P]),h.swipeCell.remove(),h.swipeCell=null,$(h).removeClass("unfolded"),h.unfolded=h.unfold=!1}});else{var C=$(h).closest(w),N=C.attr("data-cid");L.on("remove-mobile",s,x),L.trigger("selection:delete",[N]),h.swipeCell.remove(),h.swipeCell=null,$(h).removeClass("unfolded"),h.unfolded=h.unfold=!1}}})}else if(this.distanceX)return c.data.resetSwipeCell.call(this,c.data,Math.abs(this.distanceX)),!1;ox.off("delete:canceled").on("delete:canceled",function(){f.removeAttr("style"),f.nextAll().velocity({translateY:-u})})}},onSwipeLeft:function(c){var h=$(c.currentTarget);h.hasClass("swipe-left")||(this.resetSwipe(this.getItems()),this.renderInplaceRemove(h),h.addClass("swipe-left"))},onSwipeRight:function(c){this.resetSwipe($(c.currentTarget))}
3,inplaceRemoveScaffold:$('<div class="swipe-left-content"><i class="fa fa-trash-o" aria-hidden="true"></i></div>'),renderInplaceRemove:function(c){c.append(this.inplaceRemoveScaffold.clone())},onTapRemove:function(c){c.preventDefault(),c.stopImmediatePropagation();var h=$(c.currentTarget).closest(w),L=h.attr("data-cid");this.view.trigger("selection:delete",[L])},onFocus:function(){var c=this.getItems(),h=c.filter('[tabindex="0"]:first'),L=c.index(h);L=L<0?0:L,this.focus(L,c)},getBehavior:function(){return this.behavior}},T={registerEvents:function(){this.view.$el.on("mousedown",$.proxy(this.onMousedown,this)).on("mouseup",$.proxy(this.onMouseup,this)).on("keydown",w,$.proxy(this.onKeydown,this)).on("mousedown click",w,$.proxy(this.onClick,this)).on("focus",$.proxy(function(){this.view.mousedown||this.onFocus()},this)).on("click",w,$.proxy(function(c){this.isMultiple(c)||this.triggerAction(c)},this)).on("dblclick",w,$.proxy(function(c){c.ctrlKey||c.metaKey||this.triggerDouble(c)},this)).on("contextmenu",function(c){c.preventDefault()}),this.view.options.swipe&&(F&&_.device("android || ios")&&!k?this.view.$el.on("touchstart",w,this,this.onTouchStart).on("touchmove",w,this,this.onTouchMove).on("touchend",w,this,this.onTouchEnd).on("tap",v,$.proxy(function(c){this.onSwipeDelete(c)},this)).on("tap",S,$.proxy(function(c){this.onSwipeMore(c)},this)):F&&this.view.$el.on("swipeleft",w,$.proxy(this.onSwipeLeft,this)).on("swiperight",w,$.proxy(this.onSwipeRight,this)).on("tap",".swipe-left-content",$.proxy(this.onTapRemove,this)))}},r={pickSingle:function(c){c.addClass("selected no-checkbox").attr("aria-selected",!0),this.view.trigger("selection:subset")},onKeydown:function(c){if(c.which===32){c.preventDefault();var h=this.getItems().filter(".selected");h.length===1?h.find(".list-item-checkmark").trigger("mousedown"):h.length===0&&(h=$(this.getItems()[this.getItems().index($(document.activeElement))]),h.find(".list-item-checkmark").trigger("mousedown"))}else p.onKeydown.call(this,c)},outOfBounds:function(c,h){return c<0?0:(c>=h.length&&(c=h.length-1,this.view.$el.scrollTop(16777215)),c)},onClick:function(c){var h=this.get(),L=$(c.currentTarget),s=c.type==="mousedown"&&!this.isMultiple(c)&&!L.is(".selected");p.onClick.call(this,c,{customEvents:s}),s&&this.selectEvents(),_.isEqual(h,this.get())&&c.type==="mousedown"&&this.isMultiple(c)&&this.triggerChange(this.getItems(),L.attr("data-cid"))},selectEvents:function(c){c=c||this.getItems();var h=this.view.app&&this.view.app.props.get("layout")||"list";if(h==="list")this.triggerChange(c);else{var L=this.get(),s="selection:change selection:action";c&&c.length>0&&c.length===L.length&&(c.length!==1||!$(c[0]).hasClass("no-checkbox"))?s+=" selection:all":s+=" selection:subset",L.length>1&&(s+=" selection:multiple"),this.view.trigger(s,L)}}},g={registerEvents:function(){this.view.$el.addClass("focus-indicator"),this.view.$el.on("click",w,$.proxy(this.onClick,this)).on("keydown",w,$.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(){this.getItems().parent().find("li:focus").length>0||(this._lastposition=-1)},onFocus:function(){if(!this.view.mousedown){var c=this.getItems(),h=c.filter('[tabindex="0"]:first'),L=c.index(h);this.focus(L>-1?L:0,c)}},onClick:function(c){var h=this.getItems(),L=$(c.currentTarget),s=h.index(L);this.resetTabIndex(h,h.eq(s)),this.pick(s,h,c),this.triggerChange(h,L.attr("data-cid")),this.setPosition(c)},onKeydown:function(c){switch(c.which){case 13:case 32:this.onSpace(c);break;case 38:case 40:this.onCursor(c);break;case 65:case 97:(c.ctrlKey||c.metaKey)&&(c.preventDefault(),this.selectAll());break;case 68:case 100:(c.ctrlKey||c.metaKey)&&(c.preventDefault(),this.selectNone(),this.focus(0));break}},onSpace:function(c){this.onClick(c),c.preventDefault()},setPosition:function(c,h){this._lastposition=_.isUndefined(h)?this.getItems().index($(c.target).closest("li"))||0:h},getPosition:function(c,h){return this._lastposition>-1?this._lastposition:h},onCursor:function(c){var h=this.getItems(),L=$(document.activeElement),s=h.index(L)||0,x=c.which===40;if(c.preventDefault(),!!/^(40|38)$/.test(c.which)){if(s+=x?1:-1,s=this.outOfBounds(s,h),this.isRange(c))return this.setPosition(c),this.pickRange(s,h);this.triggerChange(h,L.attr("data-cid")),this.setPosition(c,s),this.focus(s,h)}}},l={isMultiple:function(){return!1},onClick:function(c){var h=$(c.currentTarget);this.set([h.attr("data-cid")])}};return _.extend(b.prototype,p),b});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(M,w,v,S,F,k,D,y,d){"use strict";
3var m=/^text\/html$/i;function o(p){return p&&p.data&&p.data.from&&p.data.from[0]&&p.data.from[0][1]}var i={empty:function(p){p.source===""&&(p.stopPropagation(),p.source=p.isHTML?'<div class="no-content">'+d("This mail has no content")+"</div>":d("This mail has no content"))},images:function(p){p.source=w.replaceImagePrefix(p.source)},plainTextLinks:function(p){p.isLarge||(p.source=p.source.replace(/(<a href="https?:\/\/[^"]+" target="_blank">https?:\/\/[^<]+<\/a>) <<a href="https?:\/\/[^"]+" target="_blank">https?:\/\/[^<]+<\/a>>/g,"$1"))},removeWBR:function(p){p.isLarge||(p.source=p.source.replace(/<wbr>/g,""))},linkTarget:function(p){p.source=p.source.replace(/<a[^>]*href=(?:"|')((?!https?:\/\/)[^'">]+)(?:"|')[^>]*>/g,t).replace(/<a[^>]*href\s*=\s*(?:"|')(https?:\/\/[^>]+)(?:"|')[^>]*>/g,e)},whitespace:function(p){p.isLarge||(p.source=p.source.replace(/^(<div[^>]+>)(\s| |\0x20|<br\/?>|<p[^>]*>(\s|<br\/?>| | |\0x20)*<\/p>|<div[^>]*>(\s|<br\/?>| | |\0x20)*<\/div>)+/g,"$1").replace(/\s*<\/html>\s*$/g,"").replace(/(\s| |\0x20|<br\/?>|<p[^>]*>(\s|<br\/?>| | |\0x20)*<\/p>|<div[^>]*>(\s|<br\/?>| | |\0x20)*<\/div>)+<\/div>$/g,""))},linkDisable:function(p){return p.replace(/(<a[^>]*)>/g,'$1 disabled="disabled" aria-disabled="true">')},linkRemoveRef:function(p){return p.replace(/(<a[^>]+?href[\s]*=[\s]*["']).*?(["'][^>]*)>/g,"$1#$2>")},linkRemoveStyle:function(p){return p.replace(/(<a[^>]+?style[\s]*=[\s]*["'])(.*?)(["'][^>]*>)/g,function(T,r,g,l){return r+g.replace(/(^|;|\s)color:[^;]+?($|;)/g,"").replace(/text-decoration:[^;]+?($|;)/g,"")+l})},tableHeight:function(p){!_.browser.safari&&!p.isHTML||(p.source=p.source.replace(/(<table[^>]+?style[\s]*=[\s]*["'])(.*?)(["'][^>]*>)/g,function(T,r,g,l){return r+g.replace(/[^-]height:\s100%\s!important/,"height: auto")+l}))},anchorLinks:function(p){p.isHTML&&this.addEventListener("click",function(T){if($(T.target).is('a[href^="#"]')){T.preventDefault();var r=$.escape($(T.target).attr("href").substr(1)),g=$(this).find("#"+r+', [name="'+$.escape(r)+'"]');g.length&&g[0].scrollIntoView()}},!1)},disableLinks:function(p){!w.isMalicious(p.data)&&!w.authenticity("block",p.data)||w.isWhiteListed(p.data)||$(this).addClass("disable-links").on("click",function(){return!1})},pseudoBlockquotes:function(p){p.isHTML&&n(this,'div[style*="none none none solid"][style*="1.5pt"]',function(T){$(T).replaceWith($('<blockquote type="cite">').append($(T).contents()))})},nested:function(p){if(p.isHTML){var T=p.data;"folder_id"in T||!("filename"in T)||n(this,'img[src^="cid:"]',function(r){var g="<"+String(r.getAttribute("src")||"").substr(4)+">",l,c=_.chain(p.data.attachments).filter(function(h){return h.cid===g}).first().value();c&&(l=M.getUrl(_.extend(c,{mail:T.parent}),"view"),r.setAttribute("src",l))})}},fixedWidth:function(p){p.isText&&y.get("useFixedWidthFont",!1)&&$(this).addClass("fixed-width-font")},colorQuotes:function(){y.get("isColorQuoted",!0)&&$(this).addClass("colorQuoted")},cleanBlockquotes:function(){n(this,"blockquote",function(p){var T=/border:\s*(none|0)/i.test(p.getAttribute("style"));p.removeAttribute("style"),p.removeAttribute("type"),T&&(p.style.border="0")})},checkLinks:function(p){var T=p.data.headers["X-Open-Xchange-Share-URL"];n(this,"a",function(r){var g=$(r),l=g.attr("href")||"",c,h;if(k.isInternalDeepLink(l)){c=k.parseDeepLink(l),/^(\d+)\.\1\/\d+$/.test(c.id)&&(c.id=c.id.replace(/^\d+\./,"")),/^\d+\./.test(c.id)&&(c.id=c.id.replace(/\./,"/")),g.addClass(c.className).data(c),T&&g.attr("href")===T&&(ox.ui.apps.get("io.ox/"+c.app)||ox.ui.apps.get(c.app))&&g.addClass("deep-link-app");return}g.removeClass("deep-link-files","deep-link-contacts","deep-link-calendar","deep-link-tasks","deep-link-gdpr","deep-link-app"),l.search(/^\s*mailto:/i)>-1?(g.addClass("mailto-link").attr("target","_blank"),h=g.text(),h.search(/^mailto:/)>-1&&(h=h.substring(7),h=h.split(/\?/,2)[0],g.text(h))):g.attr("href")?(g.attr({rel:"noopener",target:"_blank"}),g.attr("href",g.attr("href").replace(/"/g,"%22"))):l||g.removeAttr("href")})},autoCollapse:function(p){p.options.autoCollapseBlockquotes!==!1&&y.get("features/autoCollapseBlockquotes",!0)===!0&&(n(this,"blockquote",function(T){if(!u(T,"blockquote")){var r=f(T);if(!(r.length<500)){var g=_.uniqueId("collapsed-blockquote-"),l=$('<button type="button" class="bqt">').attr("title",d("Show quoted text")).append($('<span aria-hidden="true">').text("..."));_.browser.Chrome||l.attr({"aria-controls":g,"aria-expanded":!1});var c=[l],h=f(T,!0).replace(/<\s/g,"<").replace(/\s>/g,">").replace(/("'\s?|\s?'")/g,"").replace(/[-_]{3,}/g,"");h.length>500?c.push($.txt(h.substr(0,210).replace(/\s\S{1,10}$/," ")+"\u2026"),$("<br>"),$.txt("\u2026"+h.substr(-210).replace(/^\S{1,10}\s/," "))):c.push($.txt(h)),$(T).addClass("collapsed-blockquote").hide().attr("id",g).after($('<div class="blockquote-toggle">').append(c))}}}),$(this).on("click keydown",".blockquote-toggle",a))},checkSimple:function(){var p=$(this);p.find("table").length===0&&p.addClass("simple-mail")},formSubmit:function(){$(this).on("submit","form",function(p){p.preventDefault();var T=_.uniqueId("blank");blankshield.open("javascript:0",T),this.target=T,setTimeout(this.submit.bind(this))})}};S.point("io.ox/mail/detail/source").extend({id:"empty",index:100,process:i.empty}),S.point("io.ox/mail/detail/source").extend({id:"images",index:200,process:i.images}),S.point("io.ox/mail/detail/source").extend({id:"plain-text-links",index:300,process:i.plainTextLinks}),S.point("io.ox/mail/detail/source").extend({id:"remove-wbr",index:400,process:i.removeWBR}),S.point("io.ox/mail/detail/source").extend({id:"link-target",index:500,process:i.linkTarget}),S.point("io.ox/mail/detail/source").extend({id:"table-height",index:550,process:i.tableHeight}),S.point("io.ox/mail/detail/source").extend({id:"white-space",index:600,process:i.whitespace}),S.point("io.ox/mail/detail/source").extend({id:"disable-links",index:700,enabled:y.get("maliciousCheck"),process:function(p){!w.isMalicious(p.data)&&!w.authenticity("block",p.data)||w.isWhiteListed(p.data)||(p.source=p.source.replace(/.*/g,i.linkDisable).replace(/.*/g,i.linkRemoveRef).replace(/.*/g,i.linkRemoveStyle))}}),S.point("io.ox/mail/detail/content-general").extend({id:"anchor-links",index:100,process:i.anchorLinks}),S.point("io.ox/mail/detail/content-general").extend({id:"disable-links",index:200,process:i.disableLinks}),S.point("io.ox/mail/detail/content").extend({id:"pseudo-blockquotes",index:100,process:i.pseudoBlockquotes}),S.point("io.ox/mail/detail/content").extend({id:"nested",index:500,process:i.nested}),S.point("io.ox/mail/detail/content").extend({id:"fixed-width",index:600,process:i.fixedWidth}),S.point("io.ox/mail/detail/content").extend({id:"color-quotes",index:700,process:i.colorQuotes}),S.point("io.ox/mail/detail/content").extend({id:"clean-blockquotes",index:800,process:i.cleanBlockquotes}),S.point("io.ox/mail/detail/content").extend({id:"check-links",index:900,process:i.checkLinks}),S.point("io.ox/mail/detail/content").extend({id:"auto-collapse",index:1e3,process:i.autoCollapse}),S.point("io.ox/mail/detail/content").extend({id:"check-simple",index:1100,process:i.checkSimple}),S.point("io.ox/mail/detail/content").extend({id:"form-submit",index:1200,process:i.formSubmit}),S.point("io.ox/mail/detail/content").extend({id:"image-load",index:1200,process:function(){var p=this;$(p).find('img[src!=""]').each(function(){var T=$(this);T.on("load error",function(){$(p).trigger("imageload")})})}}),S.point("io.ox/mail/detail/beautify").extend({id:"no-ampersand",process:function(p){p.data=p.data.replace(/&/g,"&")}},{id:"trim",process:function(p){p.data=p.data.trim()}},{id:"carriage-return",process:function(p){p.data=p.data.replace(/\r/g,"")}},{id:"multiple-empty-lines",process:function(p){y.get("transform/multipleEmptyLines",!0)&&(p.data=p.data.replace(/\n{4,}/g,` 4 5 6`))}},{id:"text-to-html",process:function(p){p.data=this.text2html(p.data,{blockquotes:!0,images:!0,links:!0})}},{id:"br",process:function(p){p.data=p.data.replace(/^\s*(<br\s*\/?>\s*)+/g,"")}},{id:"white-space",process:function(p){p.data=p.data.replace(/(>) |( ) /g,"$1$2 ")}});function e(p){return/target="[^"]*"/.test(p)?p.replace(/(target="[^"]*")/i,'target="_blank"'):p.replace(">",' target="_blank" rel="noopener">')}function t(p,T){return/^[^:.#]+:/.test(T)||/^#/.test(T)?p:p.replace(T,"http://"+T)}function n(p,T,r){_(p.querySelectorAll(T)).each(r)}function u(p,T){for(;p;)if(p=p.parentNode,p&&p.matches&&p.matches(T))return!0;return!1}function f(p,T){var r=p.nodeType===3&&String(p.nodeValue).trim()||"",g=r?r+" ":"";return _(p.childNodes).each(function(l){l.tagName!=="STYLE"&&(T&&l.tagName==="BLOCKQUOTE"||(g+=f(l,T)))}),g}function a(p){(p.which===13||p.which===23||p.type==="click")&&(p.preventDefault(),p.stopPropagation(),$(this).hide().prev().show(),_.delay(function(){$(p.delegateTarget).trigger("resize").trigger("toggle-blockquote")},20),$(this).remove())}var b={extensions:i,get:function(p,T,r){if(!p||!p.attachments)return{content:$(),isLarge:!1,type:"text/plain"};var g=new S.Baton(_({data:p,options:T||{},source:"",type:"text/plain",flow:r}).omit(function(L){return L===void 0})),l,c=/^text\/(plain|html)$/i,h=/^image\//i;try{_(p.attachments).find(function(L){return L.disp!=="attachment"&&L.disp!=="none"&&c.test(L.content_type)?(g.type=L.content_type.toLowerCase(),!0):!1}),_(p.attachments).each(function(L){L.disp==="inline"&&(L.content_type===g.type?g.source+=L.content:g.type==="text/plain"&&h.test(L.content_type)&&y.get("allowHtmlMessages",!0)&&(g.source+=` 7!(api/image/mail/picture?`+$.param({folder:p.folder_id,id:p.id,uid:L.filename,scaleType:"contain",width:1024}).replace(/\(/g,"%28").replace(/\)/g,"%29")+`) 8`))}),g.source=g.source.trim(),g.isHTML=m.test(g.type),g.isText=!g.isHTML,g.isLarge=g.source.length>1024*(_.device("chrome >= 30")?64:32),S.point("io.ox/mail/detail/source").invoke("process",$(),g),g.isHTML?(g.source=D.sanitize({content_type:"text/html",content:g.source}
8).content,l=document.createElement("HTML"),l.innerHTML=g.source,l=l.getElementsByTagName("body")[0],w.fixMalformattedMails(l,[o(g)]),l.className=l.className+" mail-detail-content noI18n",n(l,"script, base, meta",function(L){L.parentNode.removeChild(L)})):(l=document.createElement("DIV"),l.className="mail-detail-content plain-text noI18n",g.source=b.beautifyPlainText(g.source),l.innerHTML=g.source),l.setAttribute("role","complementary"),l.setAttribute("aria-label",p.subject),S.point("io.ox/mail/detail/content-general").invoke("process",l,g),g.isLarge||S.point("io.ox/mail/detail/content").invoke("process",l,g)}catch(L){console.error("mail.getContent",L.message,L,p)}return{content:l,isLarge:g.isLarge,type:g.type,isText:g.isText}},beautifyPlainText:function(p){var T=S.Baton({data:p});return S.point("io.ox/mail/detail/beautify").invoke("process",this,T),D.simpleSanitize(T.data)},transformForHTMLEditor:function(p){return this.text2html(p,{blockquotes:!0,links:!0})},text2html:function(){var p=/^>+( [^\n]*|)(\n>+( [^\n]*|))*\n?/,T=/^\n+/,r=/^[^\n]*(\n(?![ ]*(> ))[^\n]*)*\n?/,g=/(https?:\/\/.*?)([!?.,>()[\]]+\s|\s|[!?.,>()[\]]+$|$)/gi,l=/([^@"\s<,:;|()[\]\u0100-\uFFFF]+?@[^@\s]*?(\.[\w-]+)+)/g,c=/^!\([^)]+\)$/gm,h={blockquotes:!0,images:!0,links:!0};function L(C,N){var I=C.exec(N);return I&&I[0]}function s(C,N){var I="",P;for(N=N||h;C;){if(N.blockquotes&&(P=L(p,C))){C=C.substr(P.length),P=P.replace(/^(>(>)|> |>$)/gm,"$2"),P=s(P,N).replace(/(<br>)?(<\/?blockquote[^>]*>)(<br>)?/g,"$2").replace(/<br>$/,""),I+='<blockquote type="cite">'+P+"</blockquote>";continue}if(P=L(T,C)){C=C.substr(P.length),I+=P.replace(/\n/g,"<div><br></div>");continue}if(P=L(r,C)){C=C.substr(P.length),P=P.replace(/</g,"\r<"),N.images&&(P=P.replace(c,x)),N.links&&/(http|@)/i.test(P)&&(P=P.replace(g,function(B,W,z){return W=W.replace(/@/g,"@"),'<a href="'+W+'" rel="noopener" target="_blank">'+W+"</a>"+z}).replace(l,function(B,W){return'<a href="mailto:'+W+'">'+W+"</a>"})),I+="<div>"+P.replace(/\r/g,"").replace(/\n+/g,function(B){return"</div>"+new Array(B.length).join("<div><br></div>")+"<div>"})+"</div>";continue}if(C){ox.debug&&console.error("Ooops",I+` 9 10`+C);break}}return I=I.replace(/<div><\/div>/g,""),I}function x(C){return'<img src="'+C.substr(2,C.length-3)+'" alt="">'}return s}()};return b});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(M,w,v,S,F){"use strict";function k(g){var l=g.match(/^https?:\/\/([^\/#]+)/i);return l===null||l.length===0?!1:l[1]==="test"?!0:_(ox.serverConfig.hosts).indexOf(l[1])>-1}function D(g){var l=$();return g.prefix&&(l=l.add(r(g.prefix))),l=l.add(g.replacement),g.suffix&&(l=l.add(r(g.suffix))),$(g.node).replaceWith(l),l}var y,d,m,o,i=/^(io.ox\/office\/|io.ox\/(contacts|calendar|tasks)\/detail$)/;(function(){var g="all prefix link app params param name suffix".split(" "),l="all prefix link suffix".split(" "),c={"io.ox/contacts":"contacts","io.ox/calendar":"calendar","io.ox/tasks":"tasks","io.ox/infostore":"files","io.ox/files":"files",infostore:"files"},h={contacts:F("Contact"),calendar:F("Appointment"),tasks:F("Task"),files:F("File"),infostore:F("File"),"io.ox/office/text":F("Document"),"io.ox/office/spreadsheet":F("Spreadsheet")},L={contacts:F("Address Book"),calendar:F("Calendar"),tasks:F("Tasks"),files:F("Folder"),"io.ox/settings":F("Download")},s=/^([\s\S]*)(http[^#]+#!{0,2}&?app=([^&]+)((&(folder|id|item|perspective)=[^&\s]+)+))([\s\S]*)$/i,x=/^([\s\S]*)(http[^#]+#m=(contacts|calendar|tasks|infostore)((&(f|i)=[^&\s]+)+))([\s\S]*)$/i,C=/^([\s\S]*)(https?:\/\/.*?)([!?.,>()]\s[\s\S]*|\s[\s\S]*|[!?.,>()]$|$)/i;y=function(N){return s.test(N)||x.test(N)},d=function(N){return y(N)&&k(N)},m=function(N){var I=String(N).match(s.test(N)?s:x),P=_.object(g,I),B=_.deserialize(P.params,"&");P.app=c[P.app]||P.app,/^(files|infostore)$/.test(P.app)?P.className="deep-link-files":/^(contacts|calendar|tasks)$/.test(P.app)?P.className="deep-link-"+P.app:/^io.ox\/settings$/.test(P.app)&&B.folder==="virtual/settings/personaldata"?P.className="deep-link-gdpr":i.test(P.app)&&(P.className="deep-link-app");var W=String(N).match(C),z=_.object(l,W),R=B.folder&&B.id&&_.cid({folder:B.folder,id:B.id});return $.extend(P,{folder:B.f,id:B.i},{cid:R,folder:B.folder,id:B.id||B.item,perspective:B.perspective},z)},o=function(N){var I=m(N.nodeValue),P=("id"in I?h[I.app]:L[I.app])||F("Link"),B=$('<a href="#" target="_blank" class="deep-link" role="button">').attr("href",I.link).text(P);return I.className?(k(I.link)&&B.addClass(I.className).data(I),$(N).parent().attr("href")===I.link&&(N=$(N).parent().get(0)),{node:N,prefix:I.prefix,replacement:B,suffix:I.suffix}):null}})();var e=/^([\s\S]*?)(((http|https|ftp|ftps)\:\/\/|www\.)\S+)([\s\S]*)$/i,t=/^([\s\S]*?)(((http|https|ftp|ftps)\:\/\/|www\.)\S+)([\s\S]*)$/i;function n(g){var l=g.nodeValue.match(t);if(l===null||l.length===0)return g;var c=l[1],h=l[2],L=l[5],s=w.fixUrlSuffix(h,L),x=s.url;/^http/i.test(x)||(x="http://"+x);var C=$('<a href="#" target="_blank" rel="noopener">').attr("href",x).text(s.url);return{node:g,prefix:c,replacement:C,suffix:s.suffix}}var u=/^([\s\S]*?)([^"\s<,:;\(\)\[\]\u0100-\uFFFF]+@([a-z0-9äöüÃ\-]+\.)+[a-z]{2,})([\s\S]*)$/i,f=/^([\s\S]*?)([^"\s<,:;\(\)\[\]\u0100-\uFFFF]+@([a-z0-9äöüÃ\-]+\.)+[a-z]{2,})([\s\S]*)$/i;function a(g){var l=g.nodeValue.match(f);if(l===null||l.length===0)return g;var c=l[1],h=l[2],L=l[4];if(/(http:|https:)$/i.test(c)||/^www\./i.test(h))return!1;var s=$('<a href="#" class="mailto-link" target="_blank">').attr("href","mailto:"+h).data({address:h}).text(h);return{node:g,prefix:c,replacement:s,suffix:L}}var b=/^([\s\S]*?)(?:"([^&]+)"|"([^"]+)"|'([^']+)')(?:\s|<br>)+(?:<|<)([^@]+@[^&].*?)(?:>|>)([\s\S]*)$/;function p(g){var l=g.nodeValue.match(b);if(l===null||l.length===0)return g;var c=l[1],h=l[2]||l[3]||l[4],L=l[5],s=l[6],x=$('<a href="#" class="mailto-link" target="_blank">').attr("href","mailto:"+L).data({address:L,name:h}).text(h);return{node:g,prefix:c,replacement:x,suffix:s}}var T={deeplink:{test:function(g){return g.nodeValue.indexOf("http")===-1?!1:y(g.nodeValue)},process:o},"mail-address-complex":{test:function(g){return g.nodeValue.indexOf("@")===-1?!1:b.test(g.nodeValue)&&$(g).closest("a").length===0},process:p},"mail-address":{test:function(g){return g.nodeValue.indexOf("@")===-1?!1:u.test(g.nodeValue)&&$(g).closest("a").length===0},process:a},url:{test:function(g){return/(http|www\.)/.test(g.nodeValue)?e.test(g.nodeValue)&&$(g).closest("a").length===0:!1},process:n},"long-character-sequences":{test:function(g){var l=g.nodeValue;return l.length>=30&&/[\S\u00A0]{30}/.test(l)&&$(g).closest("a").length===0},process:function(g){return{node:g,replacement:$.parseHTML(w.breakableHTML(g.nodeValue))}}}};S.get("features/recognizeDates",!1)&&function(){var g={},l={},c,h=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],L=["s
10onntag","montag","dienstag","mittwoch","donnerstag","freitag","samstag"],s=moment().year();c={names:"(((this|next|last|diesen|n\xE4chsten|letzten)\\s)?("+h.join("|")+"|"+L.join("|")+"))",relative:"(yesterday|today|tomorrow|day\\safter\\stomorrow|gestern|heute|morgen|\xFCbermorgen)",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)"},c.day="("+c.names+"|"+c.relative+"|"+c.date+")",["day","name","date","time"].forEach(function(E){g[E]=new RegExp(c[E],"i"),l[E]=new RegExp(c[E],"ig")});var x=moment().hour(12).minute(0),C=" 12:00",N="DD.MM.YYYY HH:mm",I="MM/DD/YYYY HH:mm",P=[[/\d{1,2}\.\d{1,2}\.\d{2,4}/,function(E){return moment(E+C,N)}],[/\d{1,2}\.\d{1,2}\./,function(E){return moment(E+s+C,N)}],[/\d{1,2}\/\d{1,2}\/\d{2,4}/,function(E){return moment(E+C,I)}],[/\d{1,2}\/\d{1,2}/,function(E){return moment(E+s+C,I)}],[/(cw|kw|week)\s?(\d{1,2})/i,function(E,O){return R().week(O[2])}]],B=[[/(\d{1,2}):(\d\d)h?/,function(E,O){return moment(0).hour(O[1]).minute(O[2])}],[/(\d{1,2}):(\d\d)\s?(am|pm|a|p)/,function(E,O){return moment(0).hour(O[1]).minute(O[2]).add(R[3][0]==="p"?12:0,"h")}]],W={yesterday:function(){return R().subtract(1,"d")},today:function(){return R()},tomorrow:function(){return R().add(1,"d")},"day after tomorrow":function(){return R().add(2,"d")}},z={gestern:"yesterday",heute:"today",morgen:"tomorrow",\u00FCbermorgen:"day after tomorrow"};_.range(0,7).forEach(function(E){var O=h[E],U=L[E];W["this "+O]=function(){return R().day(E)},W["last "+O]=function(){return R().day(E-7)},W["next "+O]=W[O]=function(){return R().day(E+7)},z["diesen "+U]="this "+O,z["letzten "+U]="last "+O,z["n\xE4chsten "+U]=z[U]="next "+O});function R(){return moment(x)}function H(E,O){var U=E===null?O:E,X=se(U),ie;return X.isValid()?(E!==null&&(ie=ne(O),ie&&ie.isValid()&&X.hour(ie.hour()).minute(ie.minute())),'<a href="#" class="calendar-link" data-start-time="'+X+'" role="button">'+O+"</a>"):O}function K(E){var O=E.match(g.day);return O?O[0]:null}function ee(E){return _.escape(E).replace(/(\w\w[.?!]\s|$)/g,"$1�").replace(/\x1D$/,"").split(/\x1D/)}function ne(E){for(var O in B){var U=B[O][0].exec(E);if(U)return B[O][1](E,U)}return 0}function se(E){for(var O in P){var U=P[O][0].exec(E);if(U)return P[O][1](E,U)}return E=E.toLowerCase(),z[E]&&(E=z[E]),W[E]?W[E]():(console.error('Unsupported date "'+E+'"'),moment())}$(document).on("click",".calendar-link",function(E){E.preventDefault();var O=$(this).data("startTime"),U=$(this).data("endTime")||O+36e5;ox.load(["io.ox/calendar/edit/main"]).done(function(X){X.getApp().launch().done(function(){this.create({start_date:O,end_date:U})})})}),T.dates={test:function(E){var O=E.nodeValue;return(g.day.test(O)||g.time.test(O))&&(!E.parentNode||E.parentNode.tagName!=="A")},process:function(E){var O=ee(E.nodeValue),U,X=_(O).reduce(function(ie,oe){return U=K(oe)||U||"today",ie+oe.replace(l.day,H.bind(null,null)).replace(l.range,H.bind(null,U)).replace(l.time,H.bind(null,U))},"");return{node:E,replacement:$.parseHTML(X)}}}}();function r(g){if(_.isString(g)&&(g=$.txt(g)),g.nodeType===3){var l,c,h;for(l in T)if(c=T[l],!!c.test(g)&&(h=c.process(g),h))return D(h);return g}}return v.point("io.ox/mail/detail/content").extend({id:"links",index:100,process:function(g){g.isLarge||($(this).contents().each(function(){r(this)}),$(this).find("*:not(style)").contents().each(function(){r(this)}))}}),{handlers:T,isValidHost:k,isDeepLink:y,isInternalDeepLink:d,parseDeepLink:m,processDeepLink:o,processTextNode:r}});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(M,w,v,S,F,k){"use strict";window.callback_antivirus=i;var D=_(["0008","0009","0011"]).map(function(e){return"ANTI-VIRUS-SERVICE-"+e});function y(e){return{id:e.id,folder_id:e.folder||e.folder_id}}function d(e){return JSON.stringify(_.map(e,function(t){return t.managedId?t.managedId:t.id}))}function m(e){e+=(e.indexOf("?")===-1?"?":"&")+"callback=antivirus",v.has("antivirus")&&(e+="&scan=true"),$("#tmp").append($("<iframe>",{src:e,class:"hidden download-frame"}))}function o(e){e=e||{},v.has("antivirus")&&(e.url+="&scan=true");var t=_.uniqueId("iframe"),n=$("<iframe>",{src:"blank.html",name:t,class:"hidden download-frame"}),u=$("<form>",{iframeName:t,action:e.url,method:"post",target:t}).append($('<input type="hidden" name="body" value="">').val(e.body));_.device("ios")||$("#tmp").append(n),$("#tmp").append(u),u.submit()}k.point("io.ox/core/download/antiviruspopup").extend({index:100,id:"buttonThreatFound",render:function(e){if(e.model.get("code")==="ANTI-VIRUS-SERVICE-0011"){var t={action:"ignore",label:F("Download infected file"),className:"btn-default"};if(_.device("!ios && safari")){this.addDownloadButton(_.extend(t,{href:e.model.get("dlFrame").src.replace("&scan=true","")}));return}this.addButton(t),this.addButton({action:"cancel",label:F("Cancel"),className:"btn-primary"})}}}),k.point("io.ox/core/download/antiviruspopup").extend({index:200,id:"buttonNotScanned",render:function(e){if(e.model.get("code")!=="ANTI-VIRUS-SERVICE-0011"){var t={action:"ignore",label:F("Download unscanned file"),className:"btn-default"};if(_.device("!ios && safari")){this.addDownloadButton(_.extend(t,{href:e.model.get("dlFrame").src.replace("&scan=true","")}));return}this.addButton({action:"cancel",label:F("Cancel"),className:"btn-default"}),this.addButton(t)}}}),k.point("io.ox/core/download/antiviruspopup").extend({index:300,id:"message",render:function(e){var t=e.model.get("error"),n=e.model.get("code")==="ANTI-VIRUS-SERVICE-0011"?"av-danger":"av-warning";D.indexOf(e.model.get("code"))===-1&&(t=F("Unable to perform Anti-Virus check for the requested file(s)")),this.$body.addClass("av-dialog").addClass(n).append($('<i class="fa fa-warning" aria-hidden="true">'),$("<div>").text(t))}});function i(e){if(e){if(e.code.indexOf("ANTI-VIRUS-SERVICE")!==0){require(["i
10o.ox/core/yell"],function(t){t(e)});return}_($("#tmp iframe.hidden.download-frame")).each(function(t){t.contentDocument.head.innerHTML.indexOf(e.error_id)!==-1&&(e.dlFrame=t)}),new S({title:e.code.match(/0011/)?F("Malicious file detected"):F("Anti-Virus warning"),point:"io.ox/core/download/antiviruspopup",model:new Backbone.Model(e)}).on("ignore",function(){if(e.url){var t=blankshield.open("blank.html","_blank");t.callback_antivirus=function(u){i(u),t.close()},t.location=e.url.replace("&scan=true","");return}if(e.dlFrame.src.indexOf("blank.html")!==-1){var n=$('#tmp form[iframeName="'+e.dlFrame.name+'"]');if(!n.length)return;n[0].action=n[0].action.replace("&scan=true",""),n.submit();return}_.device("safari")||(e.dlFrame.src=e.dlFrame.src.replace("&scan=true",""))}).on("cancel",function(){e.dlFrame&&$(e.dlFrame).remove()}).open()}}return{url:m,multiple:o,window:function(e,t){if(t=t||{},t.antivirus){e+=(e.indexOf("?")===-1?"?":"&")+"callback=antivirus",v.has("antivirus")&&(e+="&scan=true");var n=blankshield.open(e,"_blank");return n.callback_antivirus=function(u){u.url=e,i(u),n.close()},n}return blankshield.open(e,"_blank")},file:function(e){var t=_.device("ios")&&this.window("blank.html");M.get(e).done(function(n){e.version&&(n=_.extend({},n,{version:e.version})),e.filename&&(n=_.extend(n,{filename:e.filename}));var u=M.getUrl(n,"download",{params:e.params});_.device("ios")?(u+=(u.indexOf("?")===-1?"?":"&")+"callback=antivirus",v.has("antivirus")&&(u+="&scan=true"),t.callback_antivirus=function(f){f.url=u,i(f),t.close()},t.location=u):m(u)})},exported:function(e){if(/^(VCARD|ICAL|CSV)$/i.test(e.format)){var t=_.extend({include:!0},e),n=!t.folder&&t.list;o({url:ox.apiRoot+"/export?action="+t.format.toUpperCase()+(n?"":"&folder="+t.folder)+"&export_dlists="+(t.include?"true":"false")+"&content_disposition=attachment"+(t.columns&&t.format.toUpperCase()==="CSV"?"&columns="+t.columns:"")+"&session="+ox.session,body:n?JSON.stringify(_.map(t.list,y)):""})}},files:function(e){o({url:ox.apiRoot+"/files?action=zipdocuments&callback=antivirus&session="+ox.session,body:JSON.stringify(_.map(e,y))})},chronosMultiple:function(e){var t=ox.apiRoot+"/chronos?"+$.param({session:ox.session,action:"zipAttachments",folder:e.get("folder"),id:e.get("id")});o({url:t,body:d(e.get("attachments"))})},pimAttachments:function(e,t){var n=ox.apiRoot+"/attachment?action=zipDocuments&callback=antivirus&session="+ox.session+"&folder="+t.folder+"&attached="+t.attached+"&module="+t.module;o({url:n,body:d(e)})},mail:function(e){var t=w.getUrl(e,"eml");m(t)},composeAttachment:function(e){var t=e.space,n=e.id,u=ox.apiRoot+"/mail/compose/"+t+"/attachments/"+n+"?session="+ox.session;m(u)},mails:function(e){o({url:ox.apiRoot+"/mail?action=zip_messages&session="+ox.session,body:JSON.stringify(_.map(e,w.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/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(M,w,v,S,F,k,D,y,d,m,o,i,e,t,n,u,f,a,b,p,T,r,g,l,c){"use strict";var h=ox.ui.createApp({name:"io.ox/mail",id:"io.ox/mail",title:"Mail"}),L=!1;return h.mediator({"pages-mobile":function(s){if(!_.device("!smartphone")){var x=s.getWindow(),C=$('<div class="mobile-navbar">'),N=$('<div class="mobile-toolbar">').on("hide",function(){x.nodes.body.removeClass("mobile-toolbar-visible")}).on("show",function(){x.nodes.body.addClass("mobile-toolbar-visible")}),I=y.Baton({app:s}
10);s.navbar=C,s.toolbar=N,s.pages=new i({appname:s.options.name,toolbar:N,navbar:C,container:x.nodes.main}),x.nodes.body.addClass("classic-toolbar-visible").append(C,N),s.pages.addPage({name:"folderTree",navbar:new o.NavbarView({baton:I,extension:"io.ox/mail/mobile/navbar"})}),s.pages.addPage({name:"listView",startPage:!0,navbar:new o.NavbarView({baton:I,extension:"io.ox/mail/mobile/navbar"}),toolbar:new o.ToolbarView({baton:I,page:"listView",extension:"io.ox/mail/mobile/toolbar"}),secondaryToolbar:new o.ToolbarView({baton:I,page:"listView/multiselect",extension:"io.ox/mail/mobile/toolbar"})}),s.pages.addPage({name:"threadView",navbar:new o.NavbarView({baton:I,extension:"io.ox/mail/mobile/navbar"}),toolbar:new o.ToolbarView({baton:I,page:"threadView",extension:"io.ox/mail/mobile/toolbar"})}),s.pages.addPage({name:"detailView",navbar:new o.NavbarView({baton:I,extension:"io.ox/mail/mobile/navbar"}),toolbar:new o.ToolbarView({baton:I,page:"detailView",extension:"io.ox/mail/mobile/toolbar"})}),s.pages.getPage("detailView").on("pagebeforehide",function(){$(this).find(".popover-open").popover("destroy")}),s.pages.setBackbuttonRules({listView:"folderTree",threadView:"listView"})}},"navbars-mobile":function(s){_.device("smartphone")&&(s.pages.getNavbar("listView").setLeft(T("Folders")).setRight(T("Edit")),s.pages.getNavbar("folderTree").setTitle(T("Folders")).setLeft(!1).setRight(T("Edit")),s.pages.getNavbar("detailView").setTitle("").setLeft(T("Back")),s.pages.getNavbar("threadView").setTitle(T("Thread")).setLeft(T("Back")),s.pages.showPage("listView"))},"toolbars-mobile":function(){_.device("smartphone")&&(h.pages.getNavbar("listView").on("leftAction",function(){h.pages.goBack()}),h.pages.getNavbar("threadView").on("leftAction",function(){h.pages.goBack(),h.listView.selection.selectNone()}),h.pages.getNavbar("detailView").on("leftAction",function(){h.pages.goBack(),h.listView.selection.selectNone()}),h.pages.getNavbar("listView").on("rightAction",function(){h.props.set("checkboxes",!h.props.get("checkboxes"))}))},"pages-desktop":function(s){_.device("smartphone")||(s.pages=new i(s),s.getWindow().nodes.main.addClass("vsplit"),s.pages.addPage({name:"listView",container:s.getWindow().nodes.main,classes:"leftside"}),s.pages.addPage({name:"detailView",container:s.getWindow().nodes.main,classes:"rightside"}))},"folder-view":function(s){_.device("smartphone")||(s.treeView=new t({app:s,module:"mail",contextmenu:!0}),n.initialize({app:s,tree:s.treeView}),s.folderView.resize.enable())},"folder-view-mobile":function(s){if(_.device("!smartphone"))return s;var x=s.pages.getNavbar("folderTree"),C=s.pages.getPage("folderTree");x.on("rightAction",function(){s.toggleFolders()});var N=new t({app:s,module:"mail",root:"1",contextmenu:!0});n.initialize({app:s,tree:N}),C.append(N.render().$el),s.treeView=N},"account-error-handling":function(s){s.addAccountErrorHandler=function(x,C,N,I){var P=s.treeView.getNodeView(x),B=function(W){W.showStatusIcon(T("There is a problem with this account. Click for more information"),C||"checkAccountStatus",N||W.options.model_id,I)};P?B(P):s.treeView.on("appear:"+x,function(){P=s.treeView.getNodeView(x),P&&B(P),s.treeView.off("appear:"+x)})}},"folder-view-ssl-events":function(s){g.get("security/acceptUntrustedCertificates")||!g.get("security/manageCertificates")||(s.treeView.on("accountlink:ssl",function(){ox.launch("io.ox/settings/main",{folder:"virtual/settings/io.ox/certificate"})}),s.treeView.on("accountlink:sslexamine",function(x){c.openExaminDialog(x)}))},"folder-view-account-ssl-error":function(s){function x(N,I){var P=[];return _.each(I,function(B){_(_.values(B)).contains(N)&&P.push(B)}),P}function C(N,I,P){p.all().done(function(B){var W=N?x(N,B):B;_.each(W,function(z){p.getStatus(z.id).done(function(R){var H=s.treeView.getNodeView(z.root_folder);if(H)if(R[z.id].status==="invalid_ssl"){var K=I?"accountlink:sslexamine":"accountlink:ssl",ee=I?P:H.options.model_id;s.addAccountErrorHandler(z.root_folder,K,ee)}else(!R[z.id].status||R[z.id].status==="ok")&&(H.hideStatusIcon(),H.render())})})})}ox.on("http:error SSL:remove",function(N){/^SSL/.test(N.code)&&l.get({fingerprint:N.error_params[0]}).done(function(I){_.isEmpty(I)?C(I.hostname,["accountlink:sslexamine"],N):C(I.hostname)})}),p.on("refresh:ssl",function(N,I){C(I)})},"account-status-check":function(){function s(){p.all().done(function(x){_.each(x,function(C){p.getStatus(C.id).done(function(N){var I=N[C.id].status;if(["ok","deactivated"].indexOf(I)>=0){var P=h.treeView.getNodeView(C.root_folder);if(!P)return;
10P.hideStatusIcon()}else I!=="ok"&&h.addAccountErrorHandler(C.root_folder,"checkAccountStatus")})})})}p.on("account:recovered",s),h.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"})})}),s()},"OAuth-reauthorize":function(s){ox.on("account:reauthorized",function(x){if(x){var C=_(x.get("associations")).filter({module:"mail"})[0];if(C){var N=s.treeView.getNodeView(C.folder);N&&N.hideStatusIcon()}}}),require(["io.ox/oauth/keychain","io.ox/oauth/reauth_handler"]).then(function(x,C){ox.on("http:error:OAUTH-0040 http:error:MSG-0114",function(N){var I=x.accounts.get(N.error_params[C.columnForError(N.code)]);if(I){var P=_(I.get("associations")).filter({module:"mail"})[0];P&&s.addAccountErrorHandler(P.folder,"OAuthReauthorize",{account:I,err:N},!0)}}),s.treeView.on("OAuthReauthorize",function(N){C.showDialog(N.account,N.err)})})},"mail-quota":function(s){if(!_.device("smartphone")){var x=new f({title:g.get("quotaMode","default")==="unified"?T("Quota"):T("Mail quota"),renderUnlimited:!1,upsell:{title:T("Need more space?"),requires:"active_sync || caldav || carddav",id:"mail-folderview-quota",icon:""},upsellLimit:5*1024*1024});u.on("cleared-trash",function(){x.getQuota(!0)}),w.on("deleted-mails-from-trash",function(){x.getQuota(!0)}),w.on("refresh.all",function(){x.getQuota(!0)}),s.treeView.$el.append(x.render().$el)}},"select-all-actions":function(){w.on("move deleted-mails archive",function(){h.listView.collection.length||h.listView.reload()})},props:function(s){function x(){if(_.device("smartphone"))return"vertical";var C=s.settings.get("layout","vertical");return C==="compact"&&_.device("!desktop")&&(C="vertical"),C}s.props=new Backbone.Model({layout:x(),checkboxes:_.device("smartphone")?!1:s.settings.get("showCheckboxes",!1),contactPictures:_.device("smartphone")?!1:s.settings.get("showContactPictures",!1),textPreview:s.settings.get("showTextPreview",!0),exactDates:s.settings.get("showExactDates",!1),alwaysShowSize:s.settings.get("alwaysShowSize",!1),categories:s.settings.get("categories/enabled",!1),category_id:b.getInitialCategoryId(),mobileFolderSelectMode:!1})},"toggle-folder-editmode":function(s){if(!_.device("!smartphone")){var x=function(){var C=s.pages.getPage("folderTree"),N=s.props.get("mobileFolderSelectMode"),I=T(N?"Edit":"Cancel");s.props.set("mobileFolderSelectMode",!N),s.pages.getNavbar("folderTree").setRight(I),C.toggleClass("mobile-edit-mode",!N)};s.toggleFolders=x}},"all-unseen":function(s){var x=w.collectionLoader,C=x.getQueryParams({folder:"virtual/all-unseen"}),N=x.getCollection(C);N.gc=!1,N.preserve=!0,N.CUSTOM_PAGE_SIZE=250,N.on("load reload",function(){this.setComplete(!0)});var I=u.pool.getModel("virtual/all-unseen");w.on("all-unseen",function(W,z){I.set("unread",z)});function P(){w.getAllUnseenMessages().done(function(z){var R=_(z).chain().filter(function(H){return H.id=H.original_id,H.folder_id=H.original_folder_id,!p.is("spam|confirmed_spam|trash",H.folder_id)}).pluck("folder_id").uniq().value();u.multiple(R)})}function B(){P(),ox.on("refresh^",P)}r.get("features/unseenFolder")&&(r.get("unseenMessagesFolder")?B():r.once("change:features/unseenFolder",B)),s.folderView.tree.selection.addSelectableVirtualFolder("virtual/all-unseen")},"unselectable-folders":function(){if(p.cache[0]){var s=p.cache[0].root_folder+"/Shared";h.folderView.tree.selection.addUnselectableFolder(s)}},vsplit:function(s){var x=s.pages.getPage("listView"),C=s.pages.getPage("detailView");s.left=x.toggleClass("border-right",_.device("!smartphone")),s.right=C.addClass("mail-detail-pane")},"list-view":function(s){s.listView=new F({swipe:!0,app:s,draggable:!0,ignoreFocus:!0,selectionOptions:{mode:"special"}}),s.listView.model.set({folder:s.folder.get(),thread:s.settings.get("threadSupport",!0)}),window.list=s.listView},"list-view-checkboxes":function(s){_.device("smartphone")||s.listView.toggleCheckboxes(s.props.get("checkboxes"))},"list-view-checkboxes-mobile":function(s){_.device("smartphone")&&(s.props.set("checkboxes",!1),s.listView.toggleCheckboxes(!1))},"react to markunread":function(){w.on("after:refresh.unseen",function(s,x){x.length===1&&(w.setToUnread=x[0].cid)}),h.listView.on("selection:multiple selection:one",function(){delete w.setToUnread}),h.listView.on("selection:action",function(){h.props.get("layout")!=="list"&&delete w.setToUnread})},"auto-scroll":function(s){s.listView.on("add",function(x,C){if(C===0&&M.isUnseen(x.toJSON())){var N=s.listView.$el.height()/2;s.listView.$el.scrollTop()>N||s.listView.$el.scrollTop(0)}})},"get-view-options":function(s){s.getViewOptions=function(x){var C=s.settings.get(["viewOptions",x],{});s.settings.get("threadSupport",!0)||(C.thread=!1),p.is("sent|drafts",x)&&(C.thread=!1),s.folder.get()==="virtual/all-unseen"&&(C.thread=!1);var N=!r.get("features/flag/color")&&C.sort===102||!r.get("features/flag/star")&&C.sort===660||C.sort===610||C.sort===602&&!u.pool.getModel(x).supports("ATTACHMENT_MARKER");return N&&delete C.sort,_.extend({sort:661,order:"desc",thread:!1},C)}},"prop-folderview":function(s){s.props.set("folderview",_.device("smartphone")?!1:s.settings.get("folderview/visible/"+_.display(),!0))},"change:sort":function(s){s.props.on("change:sort",function(x,C){x=s.listView.model,C==="from-to"&&(C=p.is("sent|drafts",x.get("folder"))?604:603),s.changingFolders||(x.set("order",/^(610|661|608|102|660)$/.test(C)?"desc":"asc",{silent:!0}),s.props.set("order",x.get("order"))),x.set({sort:C})})},"change:order":function(s){s.props.on("change:order",function(x,C){s.listView.model.set("order",C)})},"change:thread":function(s){s.props.on("change:thread",function(x,C){if(!s.changingFolders&&s.listView.collection){var N=s.listView.collection;_.defer(function(){N.reset(),N.setComplete(!1)})}s.listView.model.set("thread",!!C)})},isThreaded:function(s){s.isThreaded=function(){return s.listView.loader.mode==="search"||s.folder.get()==="virtual/all-unseen"?!1:s.props.get("thread")}},getContextualData:function(s){s.getContextualData=function(x){var C=s.isThreaded(),N=w.resolve(x,C);return{app:s,data:N,folder_id:s.folder.get(),isThread:C}}},"store-view-options":function(s){s.props.on("change",_.debounce(function(){if(!s.props.get("find-result")){var x=s.folder.get(),C=s.props.toJSON();s.settings.set(["viewOptions",x],{sort:C.sort,order:C.order,thread:C.thread}).set("showTextPreview",C.textPreview).set("showExactDates",C.exactDates).set("alwaysShowSize",C.alwaysShowSize).set("categories/enabled",C.categories),_.device("!smartphone")&&s.settings.set("layout",C.layout).set("showCheckboxes",C.checkboxes).set("showContactPictures",C.contactPictures),s.settings.save()}},500))},"restore-view-options":function(s){var x=s.getViewOptions(s.folder.get());s.changingFolders=!0,s.props.set(x),s.changingFolders=!1},"list-view-control":function(s){s.listControl=new k({id:"io.ox/mail",listView:s.listView,app:s}),s.left.append(s.listControl.render().$el.attr("aria-label",T("Messages")).find(".toolbar").attr("aria-label",T("Messages options")).end()),_.device("smartphone")&&(s.listControl.$(".toolbar.bottom").hide(),s.listControl.$(".toolbar.top").removeClass("top").addClass("bottom"),s.listControl.$el.removeClass("toolbar-top-visible")),s.listControl.resizable()},textPreview:function(s){var x=r.get("features/textPreview",!0);s.supportsTextPreview=function(){return x},s.supportsTextPreviewConfiguration=function(){var C=s.folder.get();return x&&(p.isPrimary(C)||C==="virtual/all-unseen")},s.useTextPreview=function(){return s.supportsTextPreviewConfiguration()&&s.props.get("textPreview")},s.on("resume",function(){this.listView.fetchTextPreview()})},"thread-view":function(s){_.device("smartphone")||(s.threadView=new D.Desktop({app:s}
10),s.right.append(s.threadView.render().$el))},"thread-view-mobile":function(s){_.device("smartphone")&&(s.threadView=new D.Mobile,s.threadView.$el.on("showmail",function(x){var C=$(x.target).data().cid;s.showMail(C),s.pages.changePage("detailView")}),s.pages.getPage("threadView").append(s.threadView.render().$el))},"selection-message":function(s){s.right.append($('<div class="io-ox-center multi-selection-message"><div class="message"></div></div>'))},navigation:function(s){s.threadView.on({back:function(){s.right.removeClass("preview-visible"),s.listView.focus()},previous:function(){s.listView.previous()},next:function(){s.listView.next()}})},position:function(s){function x(){var C=s.listView;s.threadView.updatePosition(C.getPosition()+1).togglePrevious(C.hasPrevious()).toggleNext(C.hasNext())}s.listView.on("selection:action",x),x()},"folder:change":function(s){s.folderView.tree.on("selection:action",function(){s.props.get("layout")==="list"&&s.right.hasClass("preview-visible")&&s.threadView.trigger("back")}),s.on("folder:change",function(x){if(!s.props.get("mobileFolderSelectMode")){s.changingFolders=!0;var C=s.getViewOptions(x);s.props.set(_.pick(C,"sort","order","thread")),C.sort==="from-to"&&s.listView.model.set("sort",p.is("sent|drafts",x)?604:603),s.listView.model.set("folder",x),s.folder.getData(),s.changingFolders=!1}})},"auto-subscribe":function(s){function x(C){C.module==="mail"&&(C.subscribed?s.folderView.tree.select(C.id):u.update(C.id,{subscribed:!0},{silent:!0}).done(function(){u.refresh().done(function(){s.folderView.tree.select(C.id)})}))}s.folder.getData().done(x),s.on("folder:change",function(C,N){x(N)})},"folder:change-mobile":function(s){_.device("smartphone")&&s.on("folder:change",function(){s.props.get("mobileFolderSelectMode")||s.folder.getData().done(function(x){s.pages.getNavbar("listView").setTitle(x.title)})})},"show-mail":function(s){if(_.device("smartphone"))return;var x=0,C,N,I;s.recentDelete=function(){return x>0};function P(){if(s.listView.collection.get(I)&&(s.threadView.autoSelect=s.autoSelect,delete s.autoSelect,s.threadView.show(I,s.isThreaded()),L||s.props.get("layout")==="list")){L=!1;var B=s.threadView.$(".list-item"),W=B.index(B.filter(".expanded"));B.filter(".expanded:first").find(".body").visibleFocus(),W===0&&s.threadView.$(".scrollable").scrollTop(0)}}s.showMail=function(B){if(I=B,!x||s.threadView.model&&s.threadView.model.cid===B)return P();s.threadView.empty(),clearTimeout(N);var W=(x-1)*1e3;N=setTimeout(P,W)},w.on("beforedelete",function(){x<2&&x++,clearTimeout(C),C=setTimeout(function(){x=0},4e3)})},"show-mail-mobile":function(s){_.device("smartphone")&&(s.showMail=function(x){s.pages.getPage("detailView").empty().append(s.threadView.renderMail(x))})},"mobile-show-thread-overview":function(s){s.showThreadOverview=function(x){s.threadView.show(x,s.isThreaded())}},"show-empty":function(s){s.showEmpty=function(){s.threadView.empty(),s.right.find(".multi-selection-message .message").empty().append(T("No message selected")).attr("id","mail-multi-selection-message")}},"show-multiple":function(s){_.device("smartphone")||(s.showMultiple=function(x){s.threadView.empty(),x=w.resolve(x,s.isThreaded());var C=s.folder.get(),N=u.pool.getModel(C),I=N.get("total"),P=s.get("find")&&s.get("find").isActive();_.defer(function(){var B=$('<span class="number">').text(x.length).prop("outerHTML");s.right.find(".multi-selection-message .message").empty().attr("id","mail-multi-selection-message").append($("<div>").append(T.ngettext("%1$d message selected","%1$d messages selected",x.length,B)),C&&I>x.length&&!P?$('<div class="inline-actions selection-message">').append(T.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.",I,I)).hide():$())})},s.showSelectionMessage=function(){_.defer(function(){s.right.find(".selection-message").show()})})},"show-multiple-mobile":function(s){_.device("!smartphone")||(s.showMultiple=function(x){s.threadView.empty(),x?(x=w.resolve(x,s.isThreaded()),s.pages.getCurrentPage().navbar.setTitle(T("%1$d selected",x.length)),s.pages.getCurrentPage().secondaryToolbar.render()):s.folder.getData().done(function(C){s.pages.getCurrentPage().navbar.setTitle(C.title)})})},"page-change-detail-view-mobile":function(){h.pages.getPage("detailVie
10w").on("header_ready",function(){h.pages.changePage("detailView")})},"selection-mobile":function(s){_.device("smartphone")&&s.listView.on({"selection:empty":function(){s.props.get("checkboxes")&&s.showMultiple(!1)},"selection:one":function(x){s.props.get("checkboxes")&&s.showMultiple(x)},"selection:multiple":function(x){s.props.get("checkboxes")&&s.showMultiple(x)},"selection:action":function(x){var C=_.contains(p.getFoldersByType("drafts"),this.model.get("folder"));if(s.listView.selection.get().length===1&&!s.props.get("checkboxes")){var N=x[0],I=this.collection.get(N).get("threadSize")>1;if(C){var P=_.cid(N);ox.registry.call("mail-compose","open",{type:"edit",original:{folderId:P.folder_id,id:P.id}})}else I?(s.showThreadOverview(N),s.pages.changePage("threadView")):s.showMail(N)}}})},selection:function(s){if(_.device("smartphone"))return;function x(I){return s.right.removeClass("selection-empty selection-one selection-multiple preview-visible".replace(I,"")).addClass(I)}function C(I){return s.left.removeClass("selection-empty selection-one selection-multiple".replace(I,"")).addClass(I)}var N=_.debounce(function(I,P){if(s.props.get("layout")==="list"&&I==="action"){x("selection-one preview-visible"),C("selection-one"),s.showMail(P[0]);return}else if(s.props.get("layout")==="list"&&I==="one"){x("selection-one"),C("selection-one");return}switch(I){case"empty":x("selection-empty"),C("selection-empty"),s.showEmpty();break;case"one":case"action":x("selection-one"),C("selection-one"),s.showMail(P[0]);break;case"multiple":x("selection-multiple"),C("selection-multiple"),s.showMultiple(P);break}},1);s.listView.on({"selection:empty":function(){s.right.find(".multi-selection-message div").attr("id",null),N("empty")},"selection:one":function(I){s.right.find(".multi-selection-message div").attr("id",null);var P="one";s.listView.selection.getBehavior()==="alternative"&&(P="multiple"),N(P,I)},"selection:multiple":function(I){s.right.find(".multi-selection-message div").attr("id",null),x("selection-multiple"),C("selection-multiple"),s.showMultiple(I)},"selection:action":function(I){s.right.find(".multi-selection-message div").attr("id",null),s.listView.selection.get().length===1&&N("action",I)},"selection:showHint":function(){s.showSelectionMessage()}})},"preserve-selection":function(s){_.device("smartphone")||s.listView.on({"selection:add":function(x){s.props.get("sort")===651&&_(x).each(function(C){w.pool.preserveModel(C,!0)})},"selection:remove":function(x){_(x).each(function(C){w.pool.preserveModel(C,!1)})}})},"change:layout":function(s){s.props.on("change:layout",function(x,C){s.threadView.toggleNavigation(C==="list"),ox.ui.apps.trigger("layout",s)}),s.threadView.toggleNavigation(s.props.get("layout")==="list")},"apply-layout":function(s){_.device("smartphone")||(s.applyLayout=function(){var x=s.props.get("layout"),C=s.getWindow().nodes,N,I,P,B=s.settings.get("listview/width/"+_.dis
10play()),W=s.settings.get("listview/height/"+_.display());function z(H){var K=H===void 0?"":H+"px";s.right.css("left",K),s.left.css("width",K)}function R(H){var K=H===void 0?"":H+"px";s.right.css("top",K),s.left.css("height",K)}s.left.css({width:"",height:""}),s.right.css({left:"",top:""}),x==="vertical"||x==="compact"?(C.main.addClass("preview-right").removeClass("preview-bottom preview-none"),_.device("touch")||z(B)):x==="horizontal"?(C.main.addClass("preview-bottom").removeClass("preview-right preview-none"),_.device("touch")||R(W)):x==="list"&&C.main.addClass("preview-none").removeClass("preview-right preview-bottom"),N=C.body.find(".classic-toolbar-container"),I=C.body.find(".categories-toolbar-container"),P="classic-toolbar-visible",x==="compact"?(C.body.removeClass(P),s.right.addClass(P).prepend(N),I.length>0&&s.right.prepend(I)):(s.right.removeClass(P),C.body.addClass(P).prepend(N),I.length>0&&C.body.prepend(I)),x!=="list"&&s.props.previousAttributes().layout==="list"&&!s.right.hasClass("preview-visible")&&s.listView.selection.get().length>0&&s.listView.selection.selectEvents(s.listView.selection.getItems()),this.listControl.applySizeConstraints()},s.props.on("change:layout",function(){var x=s.getWindow().nodes.body,C=x.find('*[data-dropdown="view"] a:first').is(":focus");s.applyLayout(),s.listView.redraw(),C&&x.find('*[data-dropdown="view"] a:first').focus()}),s.getWindow().on("show:initial",function(){s.applyLayout()}))},refresh:function(s){w.on("refresh.all",function(){s.listView.reload()})},reloadOnFolderChange:function(s){w.on("changesAfterReloading",function(){s.listView.reload()})},"auto-select":function(s){if(!(!r.get("autoselectMailOnStart",!0)||_.device("smartphone"))){var x=function(){s.listView.collection.find(function(C,N){if(!M.isUnseen(C.get("flags")))return s.autoSelect=!0,s.listView.selection.select(N,!1,!1),s.listView.selection.getItems().eq(N).attr("tabindex","0").intoViewport(),!0})};s.listView.on("first-reset",function(){if(s.props.get("layout")==="list"){s.props.once("change:layout",function(){s.listView.selection.get().length||_.defer(x)});return}_.defer(x)})}},"init-navbarlabel-mobile":function(s){_.device("smartphone")&&s.listView.on("first-reset",function(){s.folder.getData().done(function(x){s.pages.getNavbar("listView").setTitle(x.title)})})},prefetch:function(s){var x=r.get("prefetch/count",5);!_.isNumber(x)||x<=0||(s.prefetch=function(C){var N=require("io.ox/core/http");N.pause(),C.chain().filter(function(I){return!M.isDeleted(I)}).slice(0,x).each(function(I){var P=I.get("thread")||[I.toJSON()],B,W;for(B=P.length-1;W=P[B];B--)if(_.isString(W)&&(W=_.cid(W)),(B===0||M.isUnseen(W))&&!M.isDeleted(W)){w.get({folder:W.folder_id,id:W.id,unseen:!0});break}}),N.resume()},s.listView.on("first-reset",s.prefetch))},"prefetch-message":function(s){_.device("smartphone")||r.get("prefetch/next",!0)&&s.listView.on("selection:one",function(){if(!s.recentDelete()){var x=this.selection.getItems(),C=this.selection.getPosition(x),N=this.selection.getDirection(),I=x.length-1,P;N==="down"&&C<I?P=x.eq(C+1):N==="up"&&C>0&&(P=x.eq(C-1)),P&&(P=_.cid(P.attr("data-cid")),P.unseen=!0,w.get(P))}})},"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(s){s.getAll()})})},3e3)},"connect-loader":function(s){s.listView.connect(w.collectionLoader)},"before-delete":function(s){if(_.device("smartphone")||!r.get("features/selectBeforeDelete",!0))return;function x(C,N){if(C.length!==1||N.length!==1)return!1;var I=_.cid(C[0]),P=String(N[0]).replace(/^thread\./,"");return I!==P}w.on("beforedelete beforeexpunge",function(C,N){var I=s.listView.selection.get();if(!x(N,I)&&(N.length>0&&!_.isString(N[0])&&(N=_(N).map(_.cid)),_.intersection(N,I).length)){if(s.listView.selection.dodge(),s.isThreaded()&&w.one("deleted-mails",function(){s.listView.reload()}),N.length===1)return;s.listView.onBatchRemove(N.slice(1))}})},"before-delete-mobile":function(s){_.device("smartphone")&&w.on("beforedelete",function(){s.pages.getCurrentPage().name==="detailVie
10w"&&(s.isThreaded()&&s.threadView.collection.length===1?s.pages.changePage("listView",{animation:"slideright"}):s.pages.goBack()),s.listView.selection.selectNone()})},"drag-drop":function(){h.getWindow().nodes.outer.on("selection:drop",function(s,x){var C=y.Baton(h.getContextualData(x.data));C.target=x.target,d.invoke("io.ox/mail/actions/move",C)})},"selection-archive":function(){h.listView.on("selection:archive",function(s){var x=y.Baton(h.getContextualData(s));d.invoke("io.ox/mail/actions/archive",x)})},"selection-delete":function(){h.listView.on("selection:delete",function(s,x){var C=y.Baton(h.getContextualData(s));C.options.shiftDelete=x,d.invoke("io.ox/mail/actions/delete",C)})},"selection-doubleclick":function(s){_.device("smartphone")||s.listView.on("selection:doubleclick",function(x){if(!(s.props&&s.props.get("layout")==="list")){s.isThreaded()&&(x=_(w.threads.get(x[0])).pluck("cid"));var C=x[0],N=_.cid(C),I=p.is("drafts",N.folder_id);I?w.get(N).then(function(P){d.invoke("io.ox/mail/actions/edit",P)}):ox.launch("io.ox/mail/detail/main",{cid:C})}})},"selection-mobile-swipe":function(s){_.device("!smartphone")||(y.point("io.ox/mail/mobile/swipeButtonMore").extend({draw:function(x){new a({el:this,point:"io.ox/mail/links/inline"}).setSelection(x.array(),{data:x.array(),app:s,isThread:x.isThread})}}),s.listView.on("selection:more",function(x,C){var N=y.Baton({data:x});N.isThread=N.data.length===1&&/^thread\./.test(N.data[0]),N.data=w.resolve(N.data,s.isThreaded()),y.point("io.ox/mail/mobile/swipeButtonMore").invoke("draw",C,N),C.find("a.dropdown-toggle").click()}))},"change:folderview":function(s){_.device("smartphone")||(s.props.on("change:folderview",function(x,C){s.folderView.toggle(C)}),s.on("folderview:close",function(){s.props.set("folderview",!1)}),s.on("folderview:open",function(){s.props.set("folderview",!0)}))},"change:checkboxes":function(s){_.device("smartphone")||(s.listView.selection.getBehavior()==="alternative"?s.listView.toggleCheckboxes(!0):s.props.on("change:checkboxes",function(x,C){s.listView.toggleCheckboxes(C)}))},"change:checkboxes-mobile":function(s){_.device("!smartphone")||(s.listControl.$el.toggleClass("toolbar-bottom-visible",!1),s.props.on("change:checkboxes",function(x,C){s.listView.toggleCheckboxes(C),s.listControl.$el.toggleClass("toolbar-bottom-visible",C),C?s.pages.getNavbar("listView").setRight(T("Cancel")).hide(".left"):(s.pages.getNavbar("listView").setRight(T("Edit")).show(".left"),s.folder.getData().done(function(N){s.pages.getCurrentPage().navbar.setTitle(N.title)}),s.listView.selection.selectNone())}))},"change:viewOptions":function(s){s.props.on("change:contactPictures change:exactDates change:alwaysShowSize change:textPreview",function(){s.listView.redraw(),s.listView.$el.trigger("scroll"),x()}),s.on("folder:change",x),x();function x(){s.listView.$el.toggleClass("show-contact-pictures",s.props.get("contactPictures")).toggleClass("show-text-preview",s.useTextPreview())}},"fix-mobile-lazyload":function(s){_.device("!smartphone")||s.pages.getPage("detailView").on("pageshow",function(){$(this).scrollTop(0),$(this).find("li.lazy").trigger("scroll")})},"inplace-find":function(s){if(_.device("smartphone")||!e.has("search")||!s.isFindSupported())return;s.initFind();function x(C,N){N.on("collectionLoader:created",function(I){I.each=function(P){w.pool.add("detail",P)}})}return s.get("find")?x(s,s.get("find")):s.once("change:find",x)},"on:pull-to-refresh":function(s){_.device("!touch")||s.on("pull-to-refresh",function(){w.refresh().always(function(){s.listView.removePullToRefreshIndicator()})})},"contextual-help":function(s){s.getContextualHelp=function(){return"ox.appsuite.user.sect.email.gui.html"}},a11y:function(s){s.listView.$el.attr("aria-label",T("List view")),s.listView.$el.on("keydown",".list-item",function(x){if(x.which===13){L=!0;return}if(x.which===27)return s.folderView.tree.$(".folder.selected").focus(),!1}),s.threadView.$el.on("keydown",function(x){x.which===27&&($(x.target).is(".dropdown-toggle, :input")||(s.right.removeClass("preview-visible"),s.listView.restoreFocus(!0)))}
10),s.folderView.tree.$el.on("keydown",".folder",function(x){$(x.target).hasClass("folder")&&x.which===13&&s.listView.restoreFocus(!0)})},"auto-expunge":function(s){if(!r.get("features/autoExpunge",!1))return;function x(C){return(C.get("flags")&2)===2}s.listView.on("collection:load collection:paginate collection:reload",function(){var C=this.collection.any(x);C&&w.expunge(s.folder.get())})},"folder-errors":function(s){u.on("error:MSG-0092",function(x){m.yell(x)}),s.folder.handleErrors(),ox.on("account:status",function(x){x.deactivated&&(s.folder.get().indexOf(x.root_folder)<0||s.folder.setDefault())})},"composition-spaces":function(){w.on("deleted-mails",function(C,N){_.some(N,function(I){return ox.ui.spaces[I.cid]})&&_.delay(s,1e3)}),ox.on("refresh^",s),v.on("refresh",s);function s(){var C={};v.space.all().then(function(I){return _.chain(I).map(function(P){return C[P.cid]={description:T("Mail: %1$s",P.subject||T("No subject")),floating:!0,id:P.id+Math.random().toString(16),cid:P.cid,keepOnRestore:!1,module:"io.ox/mail/compose",point:P,timestamp:new Date().valueOf(),ua:navigator.userAgent},C[P.cid]}).filter(function(P){return!ox.ui.apps.getByCID(P.cid)}).value()}).then(function(N){return ox.ui.App.restoreLoad({spaces:N})}).then(function(){_.each(ox.ui.App.get("io.ox/mail/compose"),function(N){var I=C[N.cid];if(I&&I.point){var P=x(I.point.cid);P&&P.set("title",I.description)}return I?N.resume(I):N.onError({code:"UI-SPACEMISSING"})})}).catch(function(N){ox.debug&&console.error(N)})}function x(C){return _.find(ox.ui.floatingWindows.models,function(N){return N.get("cid")===C})}},"database-drafts":function(){v.on("before:send before:save",function(s,x){var C=x.meta.editFor;if(!(!C||x.mailPath)){var N=_.cid({id:C.originalId,folder_id:C.originalFolderId}),I=p.getFoldersByType("drafts");_(I).each(function(P){_(w.pool.getByFolder(P)).each(function(B){B.remove(N)})})}}),v.on("after:save",function(s){if(!s.mailPath){var x=h.folder.get();p.is("drafts",x)&&h.listView.reload()}}),v.on("after:send",function(s){var x=s.meta.editFor;if(!(!x||s.mailPath)){var C=h.folder.get();p.is("drafts",C)&&h.listView.reload()}})},"real-drafts":function(){v.on("before:send",function(x,C){if(C.mailPath){var N=(C.mailPath||{}).id,I=(C.mailPath||{}).folderId;_(w.pool.getByFolder(I)).each(function(P){P.remove(_.cid({id:N,folder_id:I}))})}}),v.on("after:send after:update after:remove after:save add mailref:changed",function(x,C){var N=x.mailPath||C.mailPath;if(N){var I=h.folder.get();if(p.is("drafts",I))return h.listView.reload();_(w.pool.getByFolder(N.folderId)).each(function(P){P.expire()})}})},"mail-progress":function(){_.device("smartphone")||y.point("io.ox/mail/sidepanel").extend({id:"progress",index:300,draw:function(){var s=$('<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",T("Close")).append($('<i class="fa fa-times" aria-hidden="true">').attr("title",T("Close")))));v.queue.collection.on("progress",function(x){if(!x.count)return _.device("safari")&&(s.closest(".window-sidepanel").find(".folder-tree")[0].scrollTop+=1),s.hide();var C=x.count,N=Math.round(x.pct*100),I=T.ngettext("Sending %1$d message ... %2$d%","Sending %1$d messages ... %2$d%",C,C,N);s.find(".progress-bar").css("width",N+"%"),s.find(".caption span").text(I),s.find('[data-action="close"]').off().on("click",function(P){P.preventDefault(),x.abort()}).toggle(x.pct<1),s.show()}),this.append(s)}})},"refresh-folders":function(){var s=_.throttle(function(){var C=_(["inbox","sent","drafts"]).chain().map(function(N){var I=p.getFoldersByType(N);return w.pool.resetFolder(I),I}).flatten().value();u.multiple(C,{cache:!1}),w.trigger("refresh.all")},5e3,{leading:!1});function x(C,N){if(N.error)return $.Deferred().reject(N).promise();if(N.data){var I=N.data.folderId;$.when(p.getUnifiedMailboxName(),p.getPrimaryAddress()).done(function(P,B){var W=!1;_.chain(_.union(C.to,C.cc,C.bcc)).each(function(z){if(z[1]===B[1]){W=!0;return}}),setTimeout(function(){P!==null?u.refresh():W?u.reload(I,p.getInbox()):u.reload(I)},5e3)})}}v.on("after:save",function(C,N){C.mailPath||(s(),x(C,N))}
10),v.on("after:send",function(C,N){s(),x(C,N)})},sidepanel:function(s){if(!_.device("smartphone")){y.point("io.ox/mail/sidepanel").extend({id:"tree",index:100,draw:function(C){this.addClass("border-right").append(C.app.treeView.$el)}});var x=s.getWindow().nodes.sidepanel;y.point("io.ox/mail/sidepanel").invoke("draw",x,y.Baton({app:s}))}},metrics:function(s){s.options.first&&s.listView.on("first-reset",function(){var x=_.now()-ox.t0;ox.trigger("timing:mail:ready",x)}),require(["io.ox/metrics/main"],function(x){if(!x.isEnabled())return;var C=s.getWindow().nodes,N=C.outer,I=C.sidepanel;x.watch({node:N,selector:'[data-action="add-mail-account"]',type:"click"},{app:"mail",target:"folder/account",type:"click",action:"add"});function P(B,W){W=$(W);var z=!!W.attr("data-name");x.trackEvent({app:"mail",target:B,type:"click",action:z?W.attr("data-name"):W.attr("data-action"),detail:z?W.attr("data-value"):""})}C.body.on("mousedown",".categories-toolbar-container .category",function(B){x.trackEvent({app:"mail",target:"toolbar",type:"click",action:"select-tab",detail:$(B.currentTarget).attr("data-id")})}),C.body.on("track",".classic-toolbar-container",function(B,W){P("toolbar",W)}),C.body.on("track",".thread-view-control",function(B,W){P("detail/toolbar",W)}),C.main.find(".list-view-control .toolbar").on("mousedown","a[data-name], a[data-action]",function(B){P("list/toolbar",B.currentTarget)}),_.defer(function(){I.find(".context-dropdown").on("mousedown","a",function(B){x.trackEvent({app:"mail",target:"folder/context-menu",type:"click",action:$(B.currentTarget).attr("data-action")})})}),I.find(".bottom").on("mousedown","a[data-action]",function(B){var W=$(B.currentTarget);W.attr("data-action")&&x.trackEvent({app:"mail",target:"folder/toolbar",type:"click",action:$(B.currentTarget).attr("data-action")})}),s.getWindow().nodes.outer.on("selection:drop",function(B,W){x.trackEvent({app:"mail",target:"folder",type:"click",action:"drop",detail:W.data.length?"single":"multiple"})}),s.on("folder:change folder-virtual:change",function(B,W){W=W||{},x.getFolderFlags(B).then(function(z){u.is("unifiedfolder",W)&&z.unshift("unfified"),z.unshift(u.is("external",W)?"external":"primary"),x.trackEvent({app:"mail",target:"folder",type:"click",action:"select",detail:z.join("/")})})}),s.listView.on({"selection:multiple selection:one":_.throttle(function(B){x.trackEvent({app:"mail",target:"list/"+s.props.get("layout"),type:"click",action:"select",detail:B.length>1?"multiple":"one"})},100,{trailing:!1})})})},"unified-folder-support":function(){p.getUnifiedMailboxName().done(function(s){if(s){var x=function(C){var N=w.getAccountIDFromFolder(C.get("folder_id")),I={7:"INBOX",9:"Drafts",10:"Sent",11:"Spam",12:"Trash"};return p.get(N).then(function(P){var B,W,z,R;if(P){if(P.unified_inbox_enabled){B=u.pool.models[C.get("folder_id")];var K=I[B.get("standard_folder_type")];if(K)return z=s+"/"+K,R=z+"/"+B.get("id"),[{folder_id:z,id:C.get("folder_id")+"/"+C.get("id")},{folder_id:R,id:C.get("id")}]}}else{if(B=u.pool.models[C.get("folder_id")],B&&B.is("unifiedfolder")){W=C.get("original_folder_id"),R=C.get("folder_id")+"/"+W;var H=C.get("original_id");return[{folder_id:W,id:H},{folder_id:R,id:H}]}if(B=u.pool.models[B.get("folder_id")],B&&B.is("unifiedfolder"))return z=B.id,W=C.get("folder_id").replace(B.id+"/",""),[{folder_id:z,id:W+"/"+C.get("id")},{folder_id:W,id:C.get("id")}]}return $.Deferred().reject()})};w.pool.get("detail").on("change:flags",function(C,N,I){if(I=I||{},!(!C||I.unifiedSync)){var P=M.isUnseen(C.previous("flags")),B=M.isUnseen(C.get("flags"));P!==B&&x(C).done(function(W){_(W).each(function(z){var R=w.pool.get("detail").get(_.cid(z));if(R){var H={flags:B?R.get("flags")&-33:R.get("flags")|32};B||(H.unseen=!1),R.set(H,{unifiedSync:!0}),w.threads.touch(R.attributes),w.trigger("update:"+_.ecid(R.attributes),R.attributes)}else u.changeUnseenCounter(z.folder_id,B?1:-1);w.pool.resetFolder(z.folder_id)})})}}),w.pool.get("detail").on("remove",function(C){if(C){var N=M.isUnseen(C.get("flags"));x(C).done(function(I){_(I).each(function(P){N&&u.changeUnseenCounter(P.folder_id,-1),w.pool.resetFolder(P.folder_id)})})}})}})},sockets:function(s){ox.on("socket:mail:new",function(x){u.reload(x.folder),x.folder!==s.folder.get(x.folder)?_(w.pool.getByFolder(x.folder)).invoke("expire"):s.listView.reload()})},"vacation-notice":function(s){e.has("mailfilter_v2")&&require(["i
10o.ox/mail/mailfilter/vacationnotice/indicator"],function(x){new x().attachTo(s.listControl.$el)})},"autoforward-notice":function(s){e.has("mailfilter_v2")&&require(["io.ox/mail/mailfilter/autoforward/indicator"],function(x){new x().attachTo(s.listControl.$el)})}}),h.setLauncher(function(){var s=ox.ui.createWindow({name:"io.ox/mail",title:"Inbox",chromeless:!0,find:e.has("search")});_.url.hash("mailto")&&ox.registry.call("mail-compose","open"),h.setWindow(s),h.settings=r,window.mailapp=h,S.addFolderSupport(h,null,"mail",h.options.folder).always(function(){h.mediate(),s.show()}).fail(function(C){var N=r.get("folder/inbox")&&C&&C.error?C.error+" "+T("Application may not work as expected until this problem is solved."):w.mailServerDownMessage;m.yell("error",N)})}),h.setResume(function(s){if(s&&s.folder&&s.folder!==this.folder.get()){var x=this.getWindow();return x.busy(),this.folder.set(s.folder).always(function(){x.idle()})}return $.when()}),{getApp:h.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.