!function(){"use strict";function a(b){"function"!=typeof b.then&&(angular.extend(this,b),_.forEach(this.identities,function(a){a.fullName?a.full=a.fullName+" <"+a.email+">":a.full="<"+a.email+">"}),a.$log.debug("Account: "+JSON.stringify(b,void 0,2)))}a.$factory=["$q","$timeout","$log","sgSettings","Resource","Preferences","Mailbox","Message",function(b,c,d,e,f,g,h,i){return angular.extend(a,{$q:b,$timeout:c,$log:d,$$resource:new f(e.activeUser("folderURL")+"Mail",e.activeUser()),$Preferences:g,$Mailbox:h,$Message:i}),a}];try{angular.module("SOGo.MailerUI")}catch(a){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").factory("Account",a.$factory),a.$findAll=function(b){return b?a.$unwrapCollection(b):a.$$resource.fetch("","mailAccounts").then(function(b){return a.$unwrapCollection(b)})},a.$unwrapCollection=function(b){var c=[];return angular.forEach(b,function(b,d){b.id=d,c[d]=new a(b)}),a.$accounts=c,c},a.prototype.getLength=function(){return this.$flattenMailboxes().length},a.prototype.getItemAtIndex=function(a){var b;return b=this.$flattenMailboxes(),a>=0&&a=0,a.children&&a.children.length>0&&d(a.children)})};a.$Preferences.settings.Mail.ExpandedFolders&&(b=angular.isString(a.$Preferences.settings.Mail.ExpandedFolders)?angular.fromJson(a.$Preferences.settings.Mail.ExpandedFolders):a.$Preferences.settings.Mail.ExpandedFolders,c.$expanded=b.indexOf("/"+c.id)>=0,b.length>0&&d(c.$mailboxes)),a.$accounts&&(c.$expanded|=1==a.$accounts.length),c.$flattenMailboxes({reload:!0})}),c.$mailboxes}):a.$q.when(this.$mailboxes)},a.prototype.$flattenMailboxes=function(b){var c=this,d=[],e=[],f=function(a){_.forEach(a,function(a){d.push(a),(b&&b.all||a.$expanded)&&a.children&&a.children.length>0&&f(a.children)})};return!this.$$flattenMailboxes||b&&(b.reload||b.all)?(f(this.$mailboxes),b&&b.all||(c.$$flattenMailboxes=d,b&&b.saveState&&(_.forEach(a.$accounts,function(a){a.$expanded&&e.push("/"+a.id),_.reduce(a.$$flattenMailboxes,function(a,b){return b.$expanded&&a.push("/"+b.id),a},e)}),a.$$resource.post(null,"saveFoldersState",e)))):d=this.$$flattenMailboxes,d},a.prototype.$getMailboxByType=function(a){var b=function(c){var d=_.find(c,function(b){return b.type==a});return d||angular.forEach(c,function(a){!d&&a.children&&a.children.length>0&&(d=b(a.children))}),d};return b(this.$mailboxes)},a.prototype.$getMailboxByPath=function(a){var b=function(c){var d=_.find(c,function(b){return b.path==a});return d||angular.forEach(c,function(a){!d&&a.children&&a.children.length>0&&(d=b(a.children))}),d};return b(this.$mailboxes)},a.prototype.$newMailbox=function(b,c){var d=this;return a.$$resource.post(b.toString(),"createFolder",{name:c}).then(function(){d.$getMailboxes({reload:!0})})},a.prototype.updateQuota=function(a){var b,c,d;b=Math.round(1e4*a.usedSpace/a.maxQuota)/100,c=l("quotasFormat"),d=c.formatted(b,Math.round(a.maxQuota/10.24)/100),this.$quota={percent:b,description:d}},a.prototype.$newMessage=function(){var b=this;return a.$$resource.fetch(this.id.toString(),"compose").then(function(c){return a.$log.debug("New message (compose): "+JSON.stringify(c,void 0,2)),new a.$Message(c.accountId,b.$getMailboxByPath(c.mailboxPath),c)}).then(function(b){return a.$$resource.fetch(b.$absolutePath({asDraft:!0}),"edit").then(function(c){return a.$log.debug("New message (edit): "+JSON.stringify(c,void 0,2)),angular.extend(b.editable,c),b.isNew=!0,b})})},a.prototype.$addDelegate=function(b){var c=this,d=a.$q.defer(),e={uid:b.uid};return!b.uid||_.indexOf(_.map(this.delegates,"uid"),b.uid)>-1?d.resolve():a.$$resource.fetch(this.id.toString(),"addDelegate",e).then(function(){c.delegates.push(b),d.resolve(c.users)},function(a,b){d.reject(l("An error occured please try again."))}),d.promise},a.prototype.$removeDelegate=function(b){var c=this,d={uid:b};return a.$$resource.fetch(this.id.toString(),"removeDelegate",d).then(function(){var a=_.indexOf(_.map(c.delegates,"uid"),b);a>=0&&c.delegates.splice(a,1)})}}(),function(){"use strict";function a(b,c){if(this.$account=b,"function"!=typeof c.then){if(this.init(c),this.name&&!this.path){var d=a.$$resource.create("createFolder",this.name);this.$unwrap(d)}}else this.$unwrap(c)}a.$factory=["$q","$timeout","$log","sgSettings","Resource","Message","Acl","Preferences","sgMailbox_PRELOAD",function(b,c,d,e,f,g,h,i,j){return angular.extend(a,{$q:b,$timeout:c,$log:d,$$resource:new f(e.activeUser("folderURL")+"Mail",e.activeUser()),$Message:g,$$Acl:h,$Preferences:i,$query:{sort:"arrival",asc:0},selectedFolder:null,$refreshTimeout:null,$virtualMode:!1,PRELOAD:j}),i.ready().then(function(){i.settings.Mail.SortingState&&(a.$query.sort=i.settings.Mail.SortingState[0],a.$query.asc=parseInt(i.settings.Mail.SortingState[1]))}),a}];try{angular.module("SOGo.MailerUI")}catch(a){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").constant("sgMailbox_PRELOAD",{LOOKAHEAD:50,SIZE:100}).factory("Mailbox",a.$factory),a.$find=function(b,c){var d;return d=c&&c.all?this.$$resource.fetch(b.id.toString(),"viewAll"):this.$$resource.fetch(b.id.toString(),"view"),a.$unwrapCollection(b,d)},a.$unwrapCollection=function(b,c){var d=[],e=function(c,d){for(var f=0;f=0&&a=0},a.prototype.isNoSelect=function(){return this.flags.indexOf("noselect")>=0},a.prototype.$rename=function(){var b,c,d,e,f=this;return this.name==this.$shadowData.name?a.$q.when():(b=function(a,c){var d=null;return _.find(c,function(a){return a.path==f.path})?d=a:angular.forEach(c,function(a){!d&&a.children&&a.children.length>0&&(d=b(a,a.children))}),d},c=b(null,this.$account.$mailboxes),d=null===c?this.$account.$mailboxes:c.children,e=_.indexOf(_.map(d,"id"),this.id),this.$save().then(function(b){var c,g=f.path;f.init(b),d.splice(e,1),c=_.find(d,function(b){return a.$log.debug(b.name+" ? "+f.name),"folder"==b.type&&b.name.localeCompare(f.name)>0}),e=c?_.indexOf(_.map(d,"id"),c.id):d.length,d.splice(e,0,f);var h=new RegExp("^"+g),i=function(a){_.forEach(a.children,function(a){a.path=a.path.replace(h,f.path),a.id=a.$id(),i(a)})};i(f)}))},a.prototype.$compact=function(){var b=this;return a.$$resource.post(this.id,"expunge").then(function(a){a.quotas&&b.$account.updateQuota(a.quotas)})},a.prototype.$canFolderAs=function(){return"folder"==this.type&&0===this.level},a.prototype.$setFolderAs=function(b){return a.$$resource.post(this.id,"setAs"+b+"Folder")},a.prototype.$emptyTrash=function(){var b=this;return a.$$resource.post(this.id,"emptyTrash").then(function(a){b.$messages=[],b.uidsMap={},b.unseenCount=0,angular.isDefined(b.children)&&b.children.length&&b.$account.$getMailboxes({reload:!0}),a.quotas&&b.$account.updateQuota(a.quotas)})},a.prototype.$markAsRead=function(){return a.$$resource.post(this.id,"markRead")},a.prototype.$flagMessages=function(b,c,d){var e={msgUIDs:_.map(b,"uid"),flags:c,operation:d};return a.$$resource.post(this.id,"addOrRemoveLabel",e).then(function(){return b})},a.prototype.saveSelectedMessages=function(){var b,c;return b=_.filter(this.$messages,function(a){return a.selected}),c=_.map(b,"uid"),{uids:c},{filename:l("Saved Messages.zip")},a.$$resource.download(this.id,"saveMessages",{uids:c})},a.prototype.exportFolder=function(){var b;return b={filename:this.name+".zip"},a.$$resource.download(this.id,"exportFolder",null,b)},a.prototype.$delete=function(b){var c=this;return a.$$resource.post(this.id,"delete",b).then(function(){return c.$account.$getMailboxes({reload:!0}),!0})},a.prototype.$_deleteMessages=function(a,b){var c,d=this,e=this.$messages.length;return c=_.filter(b,function(a,b){return!a.isread}),this.unseenCount-=c.length,_.forEachRight(this.$messages,function(b,c){var f=_.findIndex(a,function(a){return b.uid==a});f>-1?(a.splice(f,1),delete d.uidsMap[b.uid],b.uid==d.selectedMessage&&delete d.selectedMessage,d.$messages.splice(c,1),cb.uids.length-1)&&(c.$topIndex=0),c.init(b),c.uids&&(a.$log.debug("unwrapping "+c.uids.length+" messages"),f=_.invokeMap(c.headers[0],"toLowerCase"),c.headers.splice(0,1),c.threaded&&(e=c.uids[0],c.uids.splice(0,1)),_.reduce(c.uids,function(b,d,f){var g;return g=c.threaded?_.zipObject(e,d):{uid:d.toString()},c.uidsMap[g.uid]=f,b.push(new a.$Message(c.$account.id,c,g,!0)),b},c.$messages),_.forEach(c.headers,function(a){var b=_.zipObject(f,a),d=c.uidsMap[b.uid.toString()];_.extend(c.$messages[d],b)})),a.$log.debug("mailbox "+c.id+" ready"),c.$isLoading=!1,d.resolve(c.$messages)})},function(a){angular.extend(c,a),c.isError=!0,d.reject()}),d.promise},a.prototype.$unwrapHeaders=function(b){var c=this;b.then(function(b){a.$timeout(function(){var a,d;b.length>0&&(a=_.invokeMap(b[0],"toLowerCase"),b.splice(0,1),_.forEach(b,function(b){b=_.zipObject(a,b),d=c.uidsMap[b.uid.toString()],angular.isDefined(d)&&_.extend(c.$messages[d],b)}))})})},a.prototype.$updateSubscribe=function(){var b=this.subscribed?"subscribe":"unsubscribe";a.$$resource.post(this.id,b)}}(),function(){"use strict";function a(a,b,c,d){this.accountId=a,this.$mailbox=b,this.$hasUnsafeContent=!1,this.$loadUnsafeContent=!1,this.editable={to:[],cc:[],bcc:[]},this.selected=!1,"function"!=typeof c.then?(!angular.isUndefined(d)&&d||(angular.extend(this,c),this.$formatFullAddresses()),this.uid=parseInt(c.uid)):this.$unwrap(c)}a.$factory=["$q","$timeout","$log","sgSettings","sgMessage_STATUS","Resource","Preferences",function(b,c,d,e,f,g,h){return angular.extend(a,{STATUS:f,$q:b,$timeout:c,$log:d,$$resource:new g(e.activeUser("folderURL")+"Mail",e.activeUser()),$avatar:angular.bind(h,h.avatar)}),h.ready().then(function(){h.defaults.SOGoMailLabelsColors&&(a.$tags=h.defaults.SOGoMailLabelsColors),h.defaults.SOGoMailDisplayRemoteInlineImages&&"always"==h.defaults.SOGoMailDisplayRemoteInlineImages&&(a.$displayRemoteInlineImages=!0)}),a}];try{angular.module("SOGo.MailerUI")}catch(a){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").constant("sgMessage_STATUS",{NOT_LOADED:0,DELAYED_LOADING:1,LOADING:2,LOADED:3,DELAYED_MS:300}).factory("Message",a.$factory),a.filterTags=function(b,c){var d=new RegExp(b,"i"),e=[];return _.forEach(_.keys(a.$tags),function(b){var f=a.$tags[b];-1!=f[0].search(d)&&(_.includes(c,b)||e.push({name:b,description:f[0],color:f[1]}))}),e},a.prototype.$absolutePath=function(b){function c(){var a;return a=_.map(d.$mailbox.path.split("/"),function(a){return"folder"+a.asCSSIdentifier()}),a.splice(0,0,d.accountId),a.join("/")}var d=this,e=this.id;return(angular.isUndefined(this.id)||b&&b.nocache)&&(this.id=c()+"/"+this.uid,e=this.id),b&&b.asDraft&&this.draftId&&(e=c()+"/"+this.draftId),b&&b.withResourcePath&&(e=a.$$resource.path(e)),e},a.prototype.$setUID=function(a){var b,c=this.uid||-1,d=this;c!=parseInt(a)&&(this.uid=parseInt(a),this.$absolutePath({nocache:!0}),c>-1?(c=c.toString(),angular.isDefined(this.$mailbox.uidsMap[c])&&(b=this.$mailbox.uidsMap[c],this.$mailbox.uidsMap[a]=b,delete this.$mailbox.uidsMap[c],_.forEach(["from","to","subject"],function(a){d.$mailbox.$messages[b][a]=d[a]}))):this.$mailbox.constructor.selectedFolder&&"draft"==this.$mailbox.constructor.selectedFolder.type&&this.$mailbox.constructor.selectedFolder.$filter())},a.prototype.$formatFullAddresses=function(){var b=this,c=_.map(b.$mailbox.$account.identities,"email");_.forEach(["from","to","cc","bcc","reply-to"],function(d){_.forEach(b[d],function(b){b.name&&b.name!=b.email?(b.full=b.name+" <"+b.email+">",b.name.length<10?b.shortname=b.name:b.name.split(" ").length&&(b.shortname=_.first(_.last(b.name.split(/, */)).split(/ +/)).replace("'",""))):b.email&&(b.full="<"+b.email+">",b.shortname=b.email.split("@")[0]),b.image=a.$avatar(b.email,32),_.indexOf(c,b.email)>=0&&(b.shortname=l("me"))})})},a.prototype.$shortRecipients=function(a){var b=this,c=[],d=0,e=0;return _.forEach(["to","cc","bcc"],function(f){e+=b[f]?b[f].length:0,_.forEach(b[f],function(b,e){da&&c.push(l("and %{0} more...",e-a)),c.join(", ")},a.prototype.$shortAddress=function(a){var b="";return this[a]&&this[a].length>0&&(b=this[a][0].name||this[a][0].email||""),b},a.prototype.allowReplyAll=function(){var a=0;return a=_.reduce(["to","cc"],_.bind(function(a,b){return this[b]?a+this[b].length:a},this),a),!this.isDraft&&a>1},a.prototype.loadUnsafeContent=function(){this.$loadUnsafeContent=!0},a.prototype.$content=function(){var b=this,c=[],d=function(e){if(e.msgclass="msg-attachment-other","UIxMailPartAlternativeViewer"==e.type)d(_.find(e.content,function(a){return e.preferredPart==a.contentType}));else if(angular.isArray(e.content)){if("UIxMailPartSignedViewer"==e.type&&1===e["supports-smime"]){var f="

"+e.error.replace(/\n/,'

');f=f.replace(/\n/g,'

')+"

",b.$smime={validSignature:e.valid,message:f}}_.forEach(e.content,function(a){d(a)})}else angular.isUndefined(e.safeContent)&&(e.safeContent=e.content,b.$hasUnsafeContent|=e.safeContent.indexOf(" unsafe-")>-1),"UIxMailPartHTMLViewer"==e.type?(e.html=!0,b.$loadUnsafeContent||a.$displayRemoteInlineImages?(angular.isUndefined(e.unsafeContent)&&(e.unsafeContent=document.createElement("div"),e.unsafeContent.innerHTML=e.safeContent,angular.forEach(["src","data","classid","background","style"],function(a){var b,c,d,f=e.unsafeContent.querySelectorAll("[unsafe-"+a+"]");for(d=0;d=0)for(b=0,c=0;c0){var d=_.map(b,"uid");f.push(b);var h=a.$$resource.post(c,"addOrRemoveLabel",_.assign(e,{msgUIDs:d}));g.push(h)}}),a.$q.all(g).then(function(){return _.flatten(f)})},a.prototype.$deleteMessages=function(b){var c=[];return _.forEach(b,function(a,b){if(a.length>0){var d=a[0].$mailbox,e=d.$deleteMessages(a);c.push(e)}}),a.$q.all(c)},a.prototype.$markOrUnMarkMessagesAsJunk=function(b){var c=[];return _.forEach(b,function(a,b){if(a.length>0){var d=a[0].$mailbox,e=d.$markOrUnMarkMessagesAsJunk(a);c.push(e)}}),a.$q.all(c)},a.prototype.$copyMessages=function(b,c){var d=[];return _.forEach(b,function(a,b){if(a.length>0){var e=a[0].$mailbox,f=e.$copyMessages(a,c);d.push(f)}}),a.$q.all(d)},a.prototype.$moveMessages=function(b,c){var d=[];return _.forEach(b,function(a,b){if(a.length>0){var e=a[0].$mailbox,f=e.$moveMessages(a,c);d.push(f)}}),a.$q.all(d)}}(),function(){"use strict";function a(a,b,c,d,e,f,g,h,i,j,k,m,n,o,p,q,r){function s(a){return Q.selectedFolder.$compact()}function t(a){Q.selectedFolder.$filter({sort:a})}function u(a){return r.$query.sort==a}function v(){Q.mode.search=!0,o("search")}function w(){Q.mode.search=!1,Q.selectedFolder.$filter().then(function(){Q.selectedFolder.selectedMessage&&c(function(){Q.selectedFolder.$topIndex=Q.selectedFolder.uidsMap[Q.selectedFolder.selectedMessage]})})}function x(a,b){var c;null===Q.messageDialog&&(b?y():(c=Q.account.$newMessage(),Q.messageDialog=f.show({parent:angular.element(document.body),targetEvent:a,clickOutsideToClose:!1,escapeToClose:!1,templateUrl:"UIxMailEditor",controller:"MessageEditorController",controllerAs:"editor",locals:{stateAccount:Q.account,stateMessage:c}}).finally(function(){Q.messageDialog=null})))}function y(){var b=[n.baseURL(),"UIxMailPopupView#!/Mail",Q.account.id,m(m(Q.selectedFolder.path)),"new"].join("/"),c=Q.selectedFolder.$id()+"/"+Math.random(0,1e3);console.debug(b),a.open(b,c,["width=680","height=520","resizable=1","scrollbars=1","toolbar=0","location=0","directories=0","status=0","menubar=0","copyhistory=0"].join(","))}function z(a){var b=Q.selectedFolder.$selectedMessageIndex();return angular.isDefined(b)?(b--,Q.selectedFolder.$topIndex>0&&Q.selectedFolder.$topIndex--):(b=Q.selectedFolder.getLength()-1,Q.selectedFolder.$topIndex=Q.selectedFolder.getLength()),b>-1&&D(Q.selectedFolder.$messages[b]),a.preventDefault(),b}function A(a){var b=Q.selectedFolder.$selectedMessageIndex();return angular.isDefined(b)?(b++,Q.selectedFolder.$topIndex=0&&E(a,Q.selectedFolder.$messages[b])}function C(a){var b;Q.selectedFolder.hasSelectedMessage()&&(b=A(a))>=0&&E(a,Q.selectedFolder.$messages[b])}function D(a){r.$virtualMode?e.go("mail.account.virtualMailbox.message",{mailboxId:m(a.$mailbox.path),messageId:a.uid}):e.go("mail.account.mailbox.message",{messageId:a.uid})}function E(a,b){var c,d,e,f=Q.selectedFolder;if(b||(b=f.$selectedMessage()),b.selected=!b.selected,Q.mode.multiple+=b.selected?1:-1,a.shiftKey&&f.$selectedCount()>1){for(c=f.uidsMap[b.uid],d=c-2;d>=0&&!f.$messages[d].selected;)d--;if(d<0)for(d=c+2;d=0&&d0&&(g-=1,d=Q.selectedFolder.$messages[g]),b0&&(Q.messageDialog=p.confirm(l("Confirmation"),l("Are you sure you want to delete the selected messages?"),{ok:l("Delete")}).then(function(){var a=Q.selectedFolder.hasSelectedMessage();Q.selectedFolder.$deleteMessages(b).then(function(b){r.$virtualMode?a&&e.go("mail.account.virtualMailbox"):G(a,b)},function(c){Q.messageDialog=p.confirm(l("Warning"),l("The messages could not be moved to the trash folder. Would you like to delete them immediately?"),{ok:l("Delete")}).then(function(){Q.selectedFolder.$deleteMessages(b,{withoutTrash:!0}).then(function(b){r.$virtualMode?a&&e.go("mail.account.virtualMailbox"):G(a,b)})})})}).finally(function(){Q.messageDialog=null})),a.preventDefault()}function I(){var a=Q.selectedFolder.hasSelectedMessage(),b=Q.selectedFolder.$selectedMessages();0===_.size(b)&&a&&(b=[Q.selectedFolder.$selectedMessage()]), _.size(b)>0&&Q.selectedFolder.$markOrUnMarkMessagesAsJunk(b).then(function(){var c="/"+Q.account.id+"/folderINBOX";"junk"!=Q.selectedFolder.type&&(c="/"+Q.account.$getMailboxByType("junk").id),Q.selectedFolder.$moveMessages(b,c).then(function(b){r.$virtualMode?a&&e.go("mail.account.virtualMailbox"):G(a,b)})})}function J(a){var b=Q.selectedFolder.$selectedMessages();_.size(b)>0&&Q.selectedFolder.$copyMessages(b,"/"+a).then(function(){g.show(g.simple().content(l("%{0} message(s) copied",Q.selectedFolder.$selectedCount())).position("top right").hideDelay(2e3))})}function K(a){var b=Q.selectedFolder.hasSelectedMessage(),c=Q.selectedFolder.$selectedMessages(),d=Q.selectedFolder.$selectedCount();_.size(c)>0&&Q.selectedFolder.$moveMessages(c,"/"+a).then(function(a){g.show(g.simple().content(l("%{0} message(s) moved",d)).position("top right").hideDelay(2e3)),r.$virtualMode?b&&e.go("mail.account.virtualMailbox"):G(b,a)})}function L(){var a=0;_.forEach(F(),function(b){for(var c=0,d=b.$messages.length;c0&&Q.selectedFolder.$flagMessages(a,"\\Flagged","add").then(function(a){_.forEach(a,function(a){a.isflagged=!0})})}function O(){var a=Q.selectedFolder.$selectedMessages();_.size(a)>0&&Q.selectedFolder.$flagMessages(a,"seen","remove").then(function(a){_.forEach(a,function(a){a.isread&&a.$mailbox.unseenCount++,a.isread=!1})})}function P(){var a=Q.selectedFolder.$selectedMessages();_.size(a)>0&&Q.selectedFolder.$flagMessages(a,"seen","add").then(function(a){_.forEach(a,function(a){a.isread||a.$mailbox.unseenCount--,a.isread=!0})})}var Q=this,R=angular.element(a.document).find("title").attr("sg-default")||"SOGo",S=[];a.$mailboxController=Q,Q.service=r,Q.accounts=h,Q.account=i,Q.selectedFolder=j,Q.selectMessage=D,Q.messageDialog=null,Q.toggleMessageSelection=E,Q.sort=t,Q.sortedBy=u,Q.searchMode=v,Q.cancelSearch=w,Q.newMessage=x,Q.mode={search:!1,multiple:0},Q.confirmDeleteSelectedMessages=H,Q.markOrUnMarkMessagesAsJunk=I,Q.copySelectedMessages=J,Q.moveSelectedMessages=K,Q.markSelectedMessagesAsFlagged=N,Q.markSelectedMessagesAsUnread=O,Q.markSelectedMessagesAsRead=P,Q.selectAll=L,Q.unselectMessages=M,j.selectFolder(),function(a){a.push(k.createHotkey({key:l("hotkey_search"),description:l("Search"),callback:v})),a.push(k.createHotkey({key:l("hotkey_compose"),description:l("Write a new message"),callback:function(a){null===Q.messageDialog&&x(a)}})),a.push(k.createHotkey({key:l("hotkey_junk"),description:l("Mark the selected messages as junk"),callback:I})),a.push(k.createHotkey({key:"space",description:l("Toggle item"),callback:E})),a.push(k.createHotkey({key:"shift+space",description:l("Toggle range of items"),callback:E})),a.push(k.createHotkey({key:"up",description:l("View next item"),callback:z,preventInClass:["sg-mail-part"]})),a.push(k.createHotkey({key:"down",description:l("View previous item"),callback:A,preventInClass:["sg-mail-part"]})),a.push(k.createHotkey({key:"shift+up",description:l("Add next item to selection"),callback:B,preventInClass:["sg-mail-part"]})),a.push(k.createHotkey({key:"shift+down",description:l("Add previous item to selection"),callback:C,preventInClass:["sg-mail-part"]})),a.push(k.createHotkey({key:"backspace",description:l("Delete selected message or folder"),callback:H})),_.forEach(a,function(a){k.registerHotkey(a)})}(S),angular.element(a).on("beforeunload",s),b.$on("$destroy",function(){angular.element(a).off("beforeunload",s),_.forEach(S,function(a){k.deregisterHotkey(a)})}),b.$watch(function(){return Q.selectedFolder.unseenCount},function(b){var c=R+" - ";b&&(c+="("+b+") "),c+=Q.selectedFolder.$displayName,a.document.title=c})}function b(a){return a[0].controller.prototype.resetScroll=function(){"messagesList"==this.$element.parent().attr("id")?this.updateSize():this.scrollTo(0)},a}a.$inject=["$window","$scope","$timeout","$q","$state","$mdDialog","$mdToast","stateAccounts","stateAccount","stateMailbox","sgHotkeys","encodeUriFilter","sgSettings","sgFocus","Dialog","Account","Mailbox"],angular.module("material.components.virtualRepeat").decorator("mdVirtualRepeatContainerDirective",b),b.$inject=["$delegate"],angular.module("SOGo.MailerUI").controller("MailboxController",a)}(),function(){"use strict";function a(a,b,c,d,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t,u){function v(a){T.showingAdvancedSearch=!0,T.search.mailbox=a,g(i["gt-md"])||h("left").close()}function w(){T.showingAdvancedSearch=!1,T.service.$virtualMode=!1,R=T.accounts[0],S=T.searchPreviousMailbox,b.go("mail.account.mailbox",{accountId:R.id,mailboxId:k(S.path)})}function x(){if(q.selectedFolder.$isLoading)T.virtualMailbox.stopSearch();else{var a,c=[],d=function(a){_.forEach(a,function(a){c.push(a),a.children&&a.children.length>0&&d(a.children)})};T.virtualMailbox=new r(T.accounts[0]),q.$virtualMode||(T.searchPreviousMailbox=q.selectedFolder),q.selectedFolder=T.virtualMailbox,q.$virtualMode=!0,angular.isDefined(T.search.mailbox)?(a=T.accounts[0].$getMailboxByPath(T.search.mailbox),c.push(a),T.search.subfolders&&a.children.length&&d(a.children)):c=T.accounts[0].$flattenMailboxes(),T.virtualMailbox.setMailboxes(c),T.virtualMailbox.startSearch(T.search.match,T.search.params),b.go("mail.account.virtualMailbox",{accountId:T.accounts[0].id})}}function y(a){return T.currentSearchParam=a,j("advancedSearch"),!1}function z(a){if(a.length&&T.currentSearchParam.length){var b=0,c=T.currentSearchParam;return a.startsWith("!")&&(b=1,a=a.substring(1).trim()),T.currentSearchParam="",{searchBy:c,searchInput:a,negative:b}}}function A(a){a.$expanded=!a.$expanded,a.$flattenMailboxes({reload:!0,saveState:!0}),c(function(){angular.element(d).triggerHandler("resize")},150)}function B(a){function b(a,b,c){function d(){b.cancel()}var e=this;e.loading=!0,e.filter={name:""},e.account=new p({id:c.id,name:c.name}),e.close=d,e.account.$getMailboxes({reload:!0,all:!0}).then(function(){e.loading=!1})}e.show({templateUrl:a.id+"/subscribe",controller:b,controllerAs:"subscriptions",clickOutsideToClose:!0,escapeToClose:!0,locals:{srcAccount:a}}).finally(function(){a.$getMailboxes({reload:!0})}),b.$inject=["$scope","$mdDialog","srcAccount"]}function C(a){m.prompt(l("New Folder..."),l("Enter the new name of your folder")).then(function(b){a.$newMailbox(a.id,b).then(function(){},function(a,c){m.alert(l('An error occured while creating the mailbox "%{0}".',b),l(a.error))})})}function D(a){function b(a,b,c,d){function e(a){return c.$filter(a,d.delegates)}function f(){b.hide()}function g(a){d.$removeDelegate(a.uid).catch(function(a,b){m.alert(l("Warning"),l("An error occured please try again."))})}function h(a){a&&d.$addDelegate(a).then(function(){i.userToAdd="",i.searchText=""},function(a){m.alert(l("Warning"),a)})}var i=this;i.users=d.delegates,i.account=d,i.userToAdd="",i.searchText="",i.userFilter=e,i.closeModal=f,i.removeUser=g,i.addUser=h}e.show({templateUrl:a.id+"/delegation",controller:b,controllerAs:"delegate",clickOutsideToClose:!0,escapeToClose:!0,locals:{User:s,account:a}}),b.$inject=["$scope","$mdDialog","User","account"]}function E(a){T.editMode=a.path,j("mailboxName_"+a.path)}function F(a){a.$reset(),T.editMode=!1}function G(a,c,d){T.editMode!=d.path&&(T.editMode=!1,T.showingAdvancedSearch=!1,T.service.$virtualMode=!1,g(i["gt-md"])||h("left").close(),b.go("mail.account.mailbox",{accountId:c.id,mailboxId:k(d.path)}),a.stopPropagation(),a.preventDefault())}function H(a){a.$rename().then(function(a){T.editMode=!1})}function I(a){a.$compact().then(function(){f.show(f.simple().content(l("Folder compacted")).position("top right").hideDelay(3e3))})}function J(a){a.$emptyTrash().then(function(){f.show(f.simple().content(l("Trash emptied")).position("top right").hideDelay(3e3))})}function K(a){m.confirm(l("Warning"),l("Do you really want to move this folder into the trash ?"),{ok:l("Delete")}).then(function(){a.$delete().then(function(){b.go("mail.account.inbox")},function(c){m.confirm(l("Warning"),l("The mailbox could not be moved to the trash folder. Would you like to delete it immediately?"),{ok:l("Delete")}).then(function(){a.$delete({withoutTrash:!0}).then(function(){b.go("mail.account.inbox")},function(b){m.alert(l('An error occured while deleting the mailbox "%{0}".',a.name),l(b.error))})})})})}function L(a){a.$markAsRead()}function M(a){a.$acl.$users().then(function(){e.show({templateUrl:a.id+"/UIxAclEditor",controller:"AclController",controllerAs:"acl",clickOutsideToClose:!0,escapeToClose:!0,locals:{usersWithACL:a.$acl.users,User:s,folder:a}})})}function N(a,b){a.$setFolderAs(b).then(function(){a.$account.$getMailboxes({reload:!0})})}function O(){var a=d.unseenCountFolders;_.forEach(T.accounts,function(b){_.includes(a,b.id+"/folderINBOX")||a.push(b.id+"/folderINBOX"),_.forEach(b.$$flattenMailboxes,function(b){angular.isDefined(b.unseenCount)&&!_.includes(a,b.id)&&a.push(b.id)})}),p.$$resource.post("","unseenCount",{mailboxes:a}).then(function(a){_.forEach(T.accounts,function(b){_.forEach(b.$$flattenMailboxes,function(b){a[b.id]&&(b.unseenCount=a[b.id])})})}),t.ready().then(function(){var a=t.defaults.SOGoRefreshViewCheck;a&&"manually"!=a&&c(T.refreshUnseenCount,1e3*a.timeInterval())})}function P(a,b){return b.id!=a.id&&!b.isNoSelect()}function Q(a,c,d){var e,g,h,i,j,k;e="/"+c.id,g=a.$selectedMessages(),0===g.length&&(g=[a.$selectedMessage()]),h=_.map(g,"uid"),i=a.selectedMessage&&h.indexOf(a.selectedMessage)>=0,"copy"==d?(j=a.$copyMessages(g,e),k=l("%{0} message(s) copied",g.length)):(j=a.$moveMessages(g,e),k=l("%{0} message(s) moved",g.length)),j.then(function(){i&&b.go("mail.account.mailbox"),f.show(f.simple().content(k).position("top right").hideDelay(2e3))})}var R,S,T=this,U=[];T.service=q,T.accounts=u,T.toggleAccountState=A,T.subscribe=B,T.newFolder=C,T.delegate=D,T.editFolder=E,T.revertEditing=F,T.selectFolder=G,T.saveFolder=H,T.compactFolder=I,T.emptyTrashFolder=J,T.confirmDelete=K,T.markFolderRead=L,T.share=M,T.setFolderAs=N,T.refreshUnseenCount=O,T.isDroppableFolder=P,T.dragSelectedMessages=Q,T.showingAdvancedSearch=!1,T.currentSearchParam="",T.addSearchParam=y,T.newSearchParam=z,T.showAdvancedSearch=v,T.hideAdvancedSearch=w,T.toggleAdvancedSearch=x,T.search={options:{"":"",subject:l("Enter Subject"),from:l("Enter From"),to:l("Enter To"),cc:l("Enter Cc"),body:l("Enter Body")},mailbox:"INBOX",subfolders:1,match:"AND",params:[]},t.ready().then(function(){T.showSubscribedOnly=t.defaults.SOGoMailShowSubscribedFoldersOnly}),T.refreshUnseenCount(),function(a){a.push(o.createHotkey({key:"backspace",description:l("Delete selected message or folder"),callback:function(){q.selectedFolder&&!q.selectedFolder.hasSelectedMessage()&&K(q.selectedFolder)}})),_.forEach(a,function(a){o.registerHotkey(a)})}(U),a.$on("$destroy",function(){_.forEach(U,function(a){o.deregisterHotkey(a)})})}a.$inject=["$scope","$state","$timeout","$window","$mdDialog","$mdToast","$mdMedia","$mdSidenav","sgConstant","sgFocus","encodeUriFilter","Dialog","sgSettings","sgHotkeys","Account","Mailbox","VirtualMailbox","User","Preferences","stateAccounts"],angular.module("SOGo.MailerUI").controller("MailboxesController",a)}(),function(){"use strict";function a(a,b,c,d,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t,u){function v(){return b.mailbox?(arguments.length>0&&(b.mailbox.messageDialog=arguments[0]),b.mailbox.messageDialog):null}function w(a){return function(){if(null===v())return a.apply(P,arguments)}}function x(){var b,c,d={};return a.opener&&a.opener.$mailboxController&&a.opener.$mailboxController.selectedFolder.$id()==i.$id()&&(c=a.opener.$mailboxController,d.mailboxCtrl=c,a.opener.$messageController&&a.opener.$messageController.message.uid==j.uid&&(b=a.opener.$messageController,d.messageCtrl=b)),d}function y(a){P.$showDetailedRecipients=!P.$showDetailedRecipients,a.stopPropagation(),a.preventDefault()}function z(a){var b,c,d,e;"A"==a.target.tagName&&"href"in a.target.attributes&&(b=a.target.attributes.href.value,(c=/^mailto:([^\?]+)/.exec(b))&&(d=_.map(decodeURIComponent(c[1]).split(","),function(a){return"<"+a+">"}),e={to:d},_.forEach(["subject","body"],function(a){var d=new RegExp(a+"=([^&]+)");a="body"==a?"text":a,(c=d.exec(b))&&(e[a]=[decodeURIComponent(c[1])])}),_.forEach(["cc","bcc"],function(a){var d=new RegExp(a+"=([^&]+)");(c=d.exec(b))&&(e[a]=[decodeURIComponent(c[1])])}),J(a,e)))}function A(){var a,b,e,g,h,k=x();k.messageCtrl?(a=k.mailboxCtrl.selectedFolder,b=k.messageCtrl.message,e=k.messageCtrl.$state):(a=i,b=j,e=c),a.$deleteMessages([b]).then(function(c){var i=c;if(b=null,angular.isDefined(e)){c>0&&(i-=1,g=a.$messages[i]),ca.$lastVisibleIndex&&(a.$topIndex=i-(a.$lastVisibleIndex-a.$topIndex))):e.go("mail.account.mailbox").then(function(){b=null,delete a.selectedMessage})}catch(a){}}I()})}function B(a,b){null===v()&&v(e.show({parent:angular.element(document.body),targetEvent:a,clickOutsideToClose:!1,escapeToClose:!1,templateUrl:"UIxMailEditor",controller:"MessageEditorController",controllerAs:"editor",locals:{stateAccount:P.account,stateMessage:b}}).finally(function(){v(null),I()}))}function C(){c.go("mail.account.mailbox").then(function(){P.message=null,delete i.selectedMessage})}function D(a){B(a,P.message.$reply())}function E(a){B(a,P.message.$replyAll())}function F(a){B(a,P.message.$forward())}function G(a){P.message.$editableContent().then(function(){B(a,P.message)})}function H(){var b=[n.baseURL(),"UIxMailPopupView#!/Mail",P.message.accountId,m(m(P.message.$mailbox.path)),P.message.uid].join("/"),c=P.message.$absolutePath();Q=a.open(b,c,["width=680","height=520","resizable=1","scrollbars=1","toolbar=0","location=0","directories=0","status=0","menubar=0","copyhistory=0"].join(","))}function I(){a.opener&&a.close()}function J(a,b){P.account.$newMessage().then(function(c){angular.extend(c.editable,b),B(a,c)}),a.stopPropagation(),a.preventDefault()}function K(a){P.showRawSource||P.message.$rawSource?P.showRawSource=!P.showRawSource:u.$$resource.post(P.message.id,"viewsource").then(function(a){P.message.$rawSource=a,P.showRawSource=!0})}function L(b){a.print()}function M(a){return O(a,"appointment")}function N(a){return O(a,"task")}function O(a,b){P.message.$plainContent().then(function(c){var d={pid:q.$defaultCalendar(),type:b,summary:c.subject,comment:c.content},f=new r(d),g=[n.activeUser("folderURL"),"Calendar","UIx"+b.capitalize()+"EditorTemplate"].join("/");return e.show({parent:angular.element(document.body),targetEvent:a,clickOutsideToClose:!0,escapeToClose:!0,templateUrl:g,controller:"ComponentEditorController",controllerAs:"editor",locals:{stateComponent:f}})})}var P=this,Q=null,R=[];a.$messageController=P,P.$state=c,P.accounts=g,P.account=h,P.mailbox=i,P.message=j,P.service=u,P.tags={searchText:"",selected:""},P.showFlags=j.flags&&j.flags.length>0,P.$showDetailedRecipients=!1,P.toggleDetailedRecipients=y,P.filterMailtoLinks=z,P.deleteMessage=A,P.close=C,P.reply=D,P.replyAll=E,P.forward=F,P.edit=G,P.openPopup=H,P.closePopup=I,P.newMessage=J,P.toggleRawSource=K,P.showRawSource=!1,P.print=L,P.convertToEvent=M,P.convertToTask=N,function(a){a.push(k.createHotkey({key:l("hotkey_reply"),description:l("Reply to the message"),callback:w(D)})),a.push(k.createHotkey({key:l("hotkey_replyall"),description:l("Reply to sender and all recipients"),callback:w(E)})),a.push(k.createHotkey({key:l("hotkey_forward"),description:l("Forward selected message"),callback:w(F)})),a.push(k.createHotkey({key:l("hotkey_flag"),description:l("Flagged"),callback:w(angular.bind(j,j.toggleFlag))})),a.push(k.createHotkey({key:"backspace",callback:w(function(a){0===P.mailbox.$selectedCount()&&A(),a.preventDefault()})})),_.forEach(a,function(a){k.registerHotkey(a)})}(R),a.opener?(b.$watchCollection(function(){return P.message.flags},function(a,b){var c;(a||b)&&(c=x(),c.messageCtrl&&c.messageCtrl.service.$timeout(function(){c.messageCtrl.showFlags=!0,c.messageCtrl.message.flags=a}))}),b.$watch(function(){return P.message.isflagged},function(a,b){var c=x();c.mailboxCtrl&&c.mailboxCtrl.service.$timeout(function(){_.find(c.mailboxCtrl.selectedFolder.$messages,{uid:P.message.uid}).isflagged=a})})):b.$watchCollection(function(){return P.message.flags},function(a,b){var c,d,e;(a||b)&&(c=a||[],d=b||[],_.forEach(c,function(a,b){angular.isObject(a)&&(c[b]=a.name)}),c.length>d.length?(e=_.difference(c,d),_.forEach(e,function(a){P.message.addTag(a)})):c.length