/**
 * Roundcube Webmail Client Script
 *
 * This file is part of the Roundcube Webmail client
 *
 * @licstart  The following is the entire license notice for the
 * JavaScript code in this file.
 *
 * Copyright (C) 2005-2015, The Roundcube Dev Team
 * Copyright (C) 2011-2015, Kolab Systems AG
 *
 * The JavaScript code in this page is free software: you can
 * redistribute it and/or modify it under the terms of the GNU
 * General Public License (GNU GPL) as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option)
 * any later version.  The code is distributed WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
 *
 * As additional permission under GNU GPL version 3 section 7, you
 * may distribute non-source (e.g., minimized or compacted) forms of
 * that code without the copy of the GNU GPL normally required by
 * section 4, provided you include this license notice and a URL
 * through which recipients can access the Corresponding Source.
 *
 * @licend  The above is the entire license notice
 * for the JavaScript code in this file.
 *
 * @author Thomas Bruederli <roundcube@gmail.com>
 * @author Aleksander 'A.L.E.C' Machniak <alec@alec.pl>
 * @author Charles McNulty <charles@charlesmcnulty.com>
 *
 * @requires jquery.js, common.js, list.js
 */
function rcube_webmail(){this.labels={};this.buttons={};this.buttons_sel={};this.gui_objects={};this.gui_containers={};this.commands={};this.command_handlers={};this.onloads=[];this.messages={};this.group2expand={};this.http_request_jobs={};this.menu_stack=[];this.dblclick_time=500;this.message_time=5E3;this.identifier_expr=/[^0-9a-z_-]/gi;this.env={request_timeout:180,draft_autosave:0,comm_path:"./",recipients_separator:",",recipients_delimiter:", ",popup_width:1150,popup_width_small:900};this.ref=
"rcmail";var f=this;$.ajaxSetup({cache:!1,timeout:1E3*this.env.request_timeout,error:function(a,b,d){f.http_error(a,b,d)},beforeSend:function(a){a.setRequestHeader("X-Roundcube-Request",f.env.request_token)}});$(window).on("beforeunload",function(){f.unload=!0});this.set_env=function(a,b){if(null==a||"object"!==typeof a||b)this.env[a]=b;else for(var d in a)this.env[d]=a[d]};this.add_label=function(a,b){"string"==typeof a?this.labels[a]=b:"object"==typeof a&&$.extend(this.labels,a)};this.register_button=
function(a,b,d,e,g,h){b={id:b,type:d};e&&(b.act=e);g&&(b.sel=g);h&&(b.over=h);this.buttons[a]||(this.buttons[a]=[]);this.buttons[a].push(b);this.loaded&&u(a,b)};this.gui_object=function(a,b){this.gui_objects[a]=this.loaded?rcube_find_object(b):b};this.gui_container=function(a,b){this.gui_containers[a]=b};this.add_element=function(a,b){this.gui_containers[b]&&this.gui_containers[b].jquery&&this.gui_containers[b].append(a)};this.register_command=function(a,b,d){this.command_handlers[a]=b;d&&this.enable_command(a,
!0)};this.add_onload=function(a){this.onloads.push(a)};this.init=function(){var a;this.task=this.env.task;if(409==this.env.server_error||bw.dom&&bw.xmlhttp_test()){this.env.blankpage||(this.env.blankpage=this.assets_path("program/resources/blank.gif"));for(a in this.gui_containers)this.gui_containers[a]=$("#"+this.gui_containers[a]);for(a in this.gui_objects)this.gui_objects[a]=rcube_find_object(this.gui_objects[a]);if(this.env.x_frame_options)try{if("deny"==this.env.x_frame_options&&top.location.href!=
self.location.href)top.location.href=self.location.href;else if(top.location.hostname!=self.location.hostname)throw 1;}catch(b){$("form").each(function(){f.lock_form(this,!0)});this.display_message("Blocked: possible clickjacking attack!","error");return}this.init_buttons();this.is_framed()&&(parent.rcmail.set_busy(!1,null,parent.rcmail.env.frame_lock),parent.rcmail.env.frame_lock=null);this.enable_command("close","logout","mail","addressbook","settings","save-pref","compose","undo","about","switch-task",
"menu-open","menu-close","menu-save",!0);this.set_button(this.task,"sel");this.env.permaurl&&this.enable_command("permaurl","extwin",!0);switch(this.task){case "mail":this.enable_command("list","checkmail","add-contact","search","reset-search","collapse-folder","import-messages",!0);this.gui_objects.messagelist&&(this.message_list=new rcube_list_widget(this.gui_objects.messagelist,{multiselect:!0,multiexpand:!0,draggable:!0,keyboard:!0,column_movable:this.env.col_movable,dblclick_time:this.dblclick_time}),
this.message_list.addEventListener("initrow",function(a){f.init_message_row(a)}).addEventListener("dblclick",function(a){f.msglist_dbl_click(a)}).addEventListener("click",function(a){f.msglist_click(a)}).addEventListener("keypress",function(a){f.msglist_keypress(a)}).addEventListener("select",function(a){f.msglist_select(a)}).addEventListener("dragstart",function(a){f.drag_start(a)}).addEventListener("dragmove",function(a){f.drag_move(a)}).addEventListener("dragend",function(a){f.drag_end(a)}).addEventListener("expandcollapse",
function(a){f.msglist_expand(a)}).addEventListener("column_replace",function(a){f.msglist_set_coltypes(a)}).addEventListener("listupdate",function(a){f.triggerEvent("listupdate",a)}).init(),$(this.message_list.thead).on("click","a.sortcol",function(a){return f.command("sort",$(this).attr("rel"),this)}),this.enable_command("toggle_status","toggle_flag","sort",!0),this.enable_command("set-listmode",this.env.threads&&!this.is_multifolder_listing()),this.command("list"),$(this.gui_objects.qsearchbox).val(this.env.search_text).focusin(function(){f.message_list.blur()}));
this.set_button_titles();this.env.message_commands="show reply reply-all reply-list move copy delete open mark edit viewsource print load-attachment download-attachment show-headers hide-headers download forward forward-inline forward-attachment change-format".split(" ");if("show"==this.env.action||"preview"==this.env.action){if(this.enable_command(this.env.message_commands,this.env.uid),this.enable_command("reply-list",this.env.list_post),"show"==this.env.action&&this.http_request("pagenav",{_uid:this.env.uid,
_mbox:this.env.mailbox,_search:this.env.search_request},this.display_message("","loading")),this.env.blockedobjects&&(this.gui_objects.remoteobjectsmsg&&(this.gui_objects.remoteobjectsmsg.style.display="block"),this.enable_command("load-images","always-load",!0)),"preview"==this.env.action&&this.is_framed()&&(this.enable_command("compose","add-contact",!1),parent.rcmail.show_contentframe(!0)),this.gui_objects.attachments)$("li > a",this.gui_objects.attachments).not(".drop").on("dragstart",function(a){var b=
this.href,d=a.originalEvent.dataTransfer;d&&(b=b.replace(/^https?:\/\//,function(a){return a+urlencode(f.env.username)+"@"}),a=$(this).clone(),a.children().remove(),d.setData("roundcube-uri",b),d.setData("roundcube-name",$.trim(a.text())))})}else"compose"==this.env.action?(this.env.address_group_stack=[],this.env.compose_commands="send-attachment remove-attachment send cancel toggle-editor list-addresses pushgroup search reset-search extwin insert-response save-response menu-open menu-close".split(" "),
this.env.drafts_mailbox&&this.env.compose_commands.push("savedraft"),this.enable_command(this.env.compose_commands,"identities","responses",!0),$.merge(this.env.compose_commands,["add-recipient","firstpage","previouspage","nextpage","lastpage"]),window.googie&&(this.env.editor_config.spellchecker=googie,this.env.editor_config.spellcheck_observer=function(a){f.spellcheck_state()},this.env.compose_commands.push("spellcheck"),this.enable_command("spellcheck",!0)),this.editor_init(this.env.editor_config,
this.env.composebody),this.gui_objects.responseslist&&($("a.insertresponse",this.gui_objects.responseslist).attr("unselectable","on").mousedown(function(a){return rcube_event.cancel(a)}).on("mouseup keypress",function(a){if("mouseup"==a.type||13==rcube_event.get_keycode(a))return f.command("insert-response",$(this).attr("rel")),$(document.body).trigger("mouseup"),rcube_event.cancel(a)}),$.each(this.buttons["save-response"]||[],function(a,b){$("#"+b.id).mousedown(function(a){return rcube_event.cancel(a)})})),
this.init_messageform()):"get"==this.env.action?this.enable_command("download","print",!0):"print"!=this.env.action||!this.env.uid||this.env.is_pgp_content||this.env.pgp_mime_part||this.print_dialog();this.gui_objects.mailboxlist&&(this.env.unread_counts={},this.gui_objects.folderlist=this.gui_objects.mailboxlist,this.http_request("getunread",{_page:this.env.current_page}));this.gui_objects.contactslist&&(this.contact_list=new rcube_list_widget(this.gui_objects.contactslist,{multiselect:!0,draggable:!1,
keyboard:!0}),this.contact_list.addEventListener("initrow",function(a){f.triggerEvent("insertrow",{cid:a.uid,row:a})}).addEventListener("select",function(a){f.compose_recipient_select(a)}).addEventListener("dblclick",function(a){f.compose_add_recipient()}).addEventListener("keypress",function(a){a.key_pressed==a.ENTER_KEY&&(f.compose_add_recipient()||a.last_selected&&"G"==String(a.last_selected).charAt(0)&&$(a.rows[a.last_selected].obj).find("a").first().click())}).init(),$("#_to,#_cc,#_bcc").focus(function(){f.env.focused_field=
this}));this.gui_objects.addressbookslist&&(this.gui_objects.folderlist=this.gui_objects.addressbookslist,this.enable_command("list-addresses",!0));if(this.env.mdn_request&&this.env.uid){var d="sendmdn",e={_uid:this.env.uid,_mbox:this.env.mailbox};confirm(this.get_label("mdnrequest"))||(e._flag="mdnsent",d="mark");this.http_post(d,e)}this.check_mailvelope(this.env.action);this.is_framed()||this.env.extwin||this.browser_capabilities_check();break;case "addressbook":this.env.address_group_stack=[];
this.gui_objects.folderlist&&(this.env.contactfolders=$.extend($.extend({},this.env.address_sources),this.env.contactgroups));this.enable_command("add","import",this.env.writable_source);this.enable_command("list","listgroup","pushgroup","popgroup","listsearch","search","reset-search","advanced-search",!0);this.gui_objects.contactslist&&(this.contact_list=new rcube_list_widget(this.gui_objects.contactslist,{multiselect:!0,draggable:this.gui_objects.folderlist?!0:!1,keyboard:!0}),this.contact_list.addEventListener("initrow",
function(a){f.triggerEvent("insertrow",{cid:a.uid,row:a})}).addEventListener("keypress",function(a){f.contactlist_keypress(a)}).addEventListener("select",function(a){f.contactlist_select(a)}).addEventListener("dragstart",function(a){f.drag_start(a)}).addEventListener("dragmove",function(a){f.drag_move(a)}).addEventListener("dragend",function(a){f.drag_end(a)}).init(),$(this.gui_objects.qsearchbox).focusin(function(){f.contact_list.blur()}),this.update_group_commands(),this.command("list"));this.gui_objects.savedsearchlist&&
(this.savedsearchlist=new rcube_treelist_widget(this.gui_objects.savedsearchlist,{id_prefix:"rcmli",id_encode:this.html_identifier_encode,id_decode:this.html_identifier_decode}),this.savedsearchlist.addEventListener("select",function(a){f.triggerEvent("selectfolder",{folder:a.id,prefix:"rcmli"})}));this.set_page_buttons();this.env.cid&&(this.enable_command("show","edit",!0),this.gui_objects.editform&&$("input.groupmember").change(function(){f.group_member_change(this.checked?"add":"del",f.env.cid,
f.env.source,this.value)}));this.gui_objects.editform?(this.enable_command("save",!0),"add"!=this.env.action&&"edit"!=this.env.action&&"search"!=this.env.action||this.init_contact_form()):"print"==this.env.action&&this.print_dialog();break;case "settings":this.enable_command("preferences","identities","responses","save","folders",!0);"identities"==this.env.action?this.enable_command("add",2>this.env.identities_level):"edit-identity"==this.env.action||"add-identity"==this.env.action?(this.enable_command("save",
"edit","toggle-editor",!0),this.enable_command("delete",2>this.env.identities_level),this.editor_init(this.env.editor_config,"rcmfd_signature")):"folders"==this.env.action?this.enable_command("subscribe","unsubscribe","create-folder","rename-folder",!0):"edit-folder"==this.env.action&&this.gui_objects.editform?(this.enable_command("save","folder-size",!0),parent.rcmail.env.exists=this.env.messagecount,parent.rcmail.enable_command("purge",this.env.messagecount)):"responses"==this.env.action&&this.enable_command("add",
!0);this.gui_objects.identitieslist?(this.identity_list=new rcube_list_widget(this.gui_objects.identitieslist,{multiselect:!1,draggable:!1,keyboard:!0}),this.identity_list.addEventListener("select",function(a){f.identity_select(a)}).addEventListener("keypress",function(a){a.key_pressed==a.ENTER_KEY&&f.identity_select(a)}).init().focus()):this.gui_objects.sectionslist?(this.sections_list=new rcube_list_widget(this.gui_objects.sectionslist,{multiselect:!1,draggable:!1,keyboard:!0}),this.sections_list.addEventListener("select",
function(a){f.section_select(a)}).addEventListener("keypress",function(a){a.key_pressed==a.ENTER_KEY&&f.section_select(a)}).init().focus()):this.gui_objects.subscriptionlist?this.init_subscription_list():this.gui_objects.responseslist&&(this.responses_list=new rcube_list_widget(this.gui_objects.responseslist,{multiselect:!1,draggable:!1,keyboard:!0}),this.responses_list.addEventListener("select",function(a){var b;a=a.get_single_selection();f.enable_command("delete",!!a&&0>$.inArray(a,f.env.readonly_responses));
a&&(b=f.get_frame_window(f.env.contentframe))&&(f.set_busy(!0),f.location_href({_action:"edit-response",_key:a,_framed:1},b))}).init().focus());break;case "login":var g=window.jstz,h=$("#rcmloginuser"),k=$("#rcmlogintz");h.keyup(function(a){return f.login_user_keyup(a)});""==h.val()?h.focus():$("#rcmloginpwd").focus();g&&(d=g.determine())&&(e=d.name());k.val(e?e:(new Date).getStdTimezoneOffset()/-60);$("form").submit(function(){$("input[type=submit]",this).prop("disabled",!0);f.clear_messages();f.display_message("",
"loading")});this.enable_command("login",!0)}this.gui_objects.editform&&$("input,select,textarea",this.gui_objects.editform).not(":hidden").not(":disabled").first().select().focus();this.env.contentframe&&!$("#"+this.env.contentframe).is(":visible")&&(this.env.contentframe=null);bw.ie&&$("input[type=file]").keydown(function(a){"13"==a.keyCode&&a.preventDefault()});this.loaded=!0;this.env.lastrefresh=new Date;this.pending_message&&this.display_message.apply(this,this.pending_message);this.gui_objects.folderlist&&
window.rcube_treelist_widget&&this.gui_objects.folderlist!=this.gui_objects.addressbookslist&&(this.treelist=new rcube_treelist_widget(this.gui_objects.folderlist,{selectable:!0,id_prefix:"rcmli",parent_focus:!0,id_encode:this.html_identifier_encode,id_decode:this.html_identifier_decode,check_droptarget:function(a){return!a.virtual&&f.check_droptarget(a.id)}}),this.treelist.addEventListener("collapse",function(a){f.folder_collapsed(a)}).addEventListener("expand",function(a){f.folder_collapsed(a)}).addEventListener("beforeselect",
function(a){return!f.busy}).addEventListener("select",function(a){f.triggerEvent("selectfolder",{folder:a.id,prefix:"rcmli"})}));this.gui_objects.filedrop&&this.env.filedrop&&(window.XMLHttpRequest&&XMLHttpRequest.prototype&&XMLHttpRequest.prototype.sendAsBinary||window.FormData)&&($(document.body).on("dragover dragleave drop",function(a){return f.document_drag_hover(a,"dragover"==a.type)}),$(this.gui_objects.filedrop).addClass("droptarget").on("dragover dragleave",function(a){return f.file_drag_hover(a,
"dragover"==a.type)}).get(0).addEventListener("drop",function(a){return f.file_dropped(a)},!1));d=function(a){return f.doc_mouse_up(a)};$(document.body).mouseup(d).keydown(function(a){return f.doc_keypress(a)});rcube_webmail.set_iframe_events({mouseup:d});this.triggerEvent("init",{task:this.task,action:this.env.action});for(a in this.onloads)if("string"===typeof this.onloads[a])eval(this.onloads[a]);else if("function"===typeof this.onloads[a])this.onloads[a]();this.start_refresh();this.start_keepalive()}else this.goto_url("error",
"_code=0x199")};this.log=function(a){window.console&&console.log&&console.log(a)};this.command=function(a,b,d,e){var g,h,k,l=!1;!d||!d.blur||e&&rcube_event.is_keyboard(e)||d.blur();if(this.busy&&("reset-search"!=a||"search"!=this.last_command)&&!a.match(/^menu-/))return!1;if(d&&d.href&&0>String(d.href).indexOf("#")&&rcube_event.get_modifier(e))return!0;if(!this.commands[a])return this.is_framed()&&parent.rcmail.command(a,b),!1;if("mail"==this.task&&"compose"==this.env.action&&!this.env.server_error&&
"save-pref"!=a&&0>$.inArray(a,this.env.compose_commands)){if(!this.env.is_sent&&this.cmp_hash!=this.compose_field_hash()&&!confirm(this.get_label("notsentwarning")))return!1;this.remove_compose_data(this.env.compose_id);this.compose_skip_unsavedcheck=!0}this.last_command=a;if("function"===typeof this.command_handlers[a])return g=this.command_handlers[a](b,d,e),void 0!==g?g:d?!1:!0;if("string"===typeof this.command_handlers[a])return g=window[this.command_handlers[a]](b,d,e),void 0!==g?g:d?!1:!0;this.triggerEvent("actionbefore",
{props:b,action:a,originalEvent:e});g=this.triggerEvent("before"+a,b||e);if(void 0!==g){if(!1===g)return!1;b=g}g=void 0;switch(a){case "login":this.gui_objects.loginform&&this.gui_objects.loginform.submit();break;case "logout":case "mail":case "addressbook":case "settings":this.switch_task(a);break;case "about":this.redirect("?_task=settings&_action=about",!1);break;case "permaurl":if(d&&d.href&&d.target)return!0;this.env.permaurl&&(parent.location.href=this.env.permaurl);break;case "extwin":if("compose"==
this.env.action){if(e=this.gui_objects.messageform,h=this.open_window(""))this.save_compose_form_local(),this.compose_skip_unsavedcheck=!0,$("input[name='_action']",e).val("compose"),e.action=this.url("mail/compose",{_id:this.env.compose_id,_extwin:1}),e.target=h.name,e.submit()}else this.open_window(this.env.permaurl,!0);break;case "change-format":e=this.env.permaurl+"&_format="+b;"preview"==this.env.action&&(e=e.replace(/_action=show/,"_action=preview")+"&_framed=1");this.env.extwin&&(e+="&_extwin=1");
location.href=e;break;case "menu-open":b&&"attachmentmenu"==b.menu&&(h=this.env.attachments[b.id],this.enable_command("open-attachment",h&&this.env.mimetypes&&0<=$.inArray(h,this.env.mimetypes)));this.show_menu(b,b.show||void 0,e);break;case "menu-close":this.hide_menu(b,e);break;case "menu-save":return this.triggerEvent(a,{props:b,originalEvent:e}),!1;case "open":if(h=this.get_single_uid())return d.href=this.url("show",this.params_from_uid(h)),!0;break;case "close":this.env.extwin&&window.close();
break;case "list":b&&""!=b&&this.reset_qsearch(!0);"compose"==this.env.action&&this.env.extwin?window.close():"mail"==this.task?(this.list_mailbox(b),this.set_button_titles()):"addressbook"==this.task&&this.list_contacts(b);break;case "set-listmode":this.set_list_options(null,void 0,void 0,"threads"==b?1:0);break;case "sort":e=this.env.sort_order;h=this.env.disabled_sort_col?this.env.sort_col:b;this.env.disabled_sort_order||(e=this.env.sort_col==h&&"ASC"==e?"DESC":"ASC");this.set_list_sorting(h,e);
this.list_mailbox("","",h+"_"+e);break;case "nextpage":this.list_page("next");break;case "lastpage":this.list_page("last");break;case "previouspage":this.list_page("prev");break;case "firstpage":this.list_page("first");break;case "expunge":this.env.exists&&this.expunge_mailbox(this.env.mailbox);break;case "purge":case "empty-mailbox":this.env.exists&&this.purge_mailbox(this.env.mailbox);break;case "show":"mail"==this.task?(h=this.get_single_uid(),!h||this.env.uid&&h==this.env.uid||(this.env.mailbox==
this.env.drafts_mailbox?this.open_compose_step({_draft_uid:h,_mbox:this.env.mailbox}):this.show_message(h))):"addressbook"==this.task&&(k=b?b:this.get_single_cid(),!k||"show"==this.env.action&&k==this.env.cid||this.load_contact(k,"show"));break;case "add":if("addressbook"==this.task)this.load_contact(0,"add");else if("settings"==this.task&&"responses"==this.env.action){if(e=this.get_frame_window(this.env.contentframe))this.set_busy(!0),this.location_href({_action:"add-response",_framed:1},e)}else"settings"==
this.task&&(this.identity_list.clear_selection(),this.load_identity(0,"add-identity"));break;case "edit":"addressbook"==this.task&&(k=this.get_single_cid())?this.load_contact(k,"edit"):"settings"==this.task&&b?this.load_identity(b,"edit-identity"):"mail"==this.task&&(h=this.get_single_uid())&&(e={_mbox:this.get_message_mailbox(h)},e[this.env.mailbox==this.env.drafts_mailbox&&"new"!=b?"_draft_uid":"_uid"]=h,this.open_compose_step(e));break;case "save":var m;if(e=this.gui_objects.editform){if("search"!=
this.env.action)if((m=$("input[name='_pagesize']",e))&&m.length&&isNaN(parseInt(m.val()))){alert(this.get_label("nopagesizewarning"));m.focus();break}else{if("reload"==b)e.action+="&_reload=1";else if("settings"==this.task&&0==this.env.identities_level%2&&(m=$("input[name='_email']",e))&&m.length&&!rcube_check_email(m.val())){alert(this.get_label("noemailwarning"));m.focus();break}$("input.placeholder").each(function(){this.value==this._placeholder&&(this.value="")})}parent.rcmail&&parent.rcmail.env.source&&
(e.action=this.add_url(e.action,"_orig_source",parent.rcmail.env.source));e.submit()}break;case "delete":"mail"==this.task?this.delete_messages(e):"addressbook"==this.task?this.delete_contacts():"settings"==this.task&&"responses"==this.env.action?this.delete_response():"settings"==this.task&&this.delete_identity();break;case "move":case "moveto":"mail"==this.task?this.move_messages(b,e):"addressbook"==this.task&&this.move_contacts(b);break;case "copy":"mail"==this.task?this.copy_messages(b,e):"addressbook"==
this.task&&this.copy_contacts(b);break;case "mark":b&&this.mark_message(b);break;case "toggle_status":case "toggle_flag":e="toggle_flag"==a?"flagged":"read";if(h=b)"flagged"==e?this.message_list.rows[h].flagged&&(e="unflagged"):this.message_list.rows[h].deleted?e="undelete":this.message_list.rows[h].unread||(e="unread"),this.mark_message(e,h);break;case "always-load":if(this.env.uid&&this.env.sender){this.add_contact(this.env.sender);setTimeout(function(){f.command("load-images")},300);break}case "load-images":this.env.uid&&
this.show_message(this.env.uid,!0,"preview"==this.env.action);break;case "load-attachment":case "open-attachment":case "download-attachment":e="_mbox="+urlencode(this.env.mailbox)+"&_uid="+this.env.uid+"&_part="+b;h=this.env.attachments[b];if("download-attachment"!=a&&h&&this.env.mimetypes&&0<=$.inArray(h,this.env.mimetypes)&&this.open_window(this.env.comm_path+"&_action=get&"+e+"&_frame=1"))break;this.goto_url("get",e+"&_download=1",!1,!0);break;case "select-all":this.select_all_mode=b?!1:!0;this.dummy_select=
!0;"invert"==b?this.message_list.invert_selection():this.message_list.select_all("page"==b?"":b);this.dummy_select=null;break;case "select-none":this.select_all_mode=!1;this.message_list.clear_selection();break;case "expand-all":this.env.autoexpand_threads=1;this.message_list.expand_all();break;case "expand-unread":this.env.autoexpand_threads=2;this.message_list.collapse_all();this.expand_unread();break;case "collapse-all":this.env.autoexpand_threads=0;this.message_list.collapse_all();break;case "nextmessage":this.env.next_uid&&
this.show_message(this.env.next_uid,!1,"preview"==this.env.action);break;case "lastmessage":this.env.last_uid&&this.show_message(this.env.last_uid);break;case "previousmessage":this.env.prev_uid&&this.show_message(this.env.prev_uid,!1,"preview"==this.env.action);break;case "firstmessage":this.env.first_uid&&this.show_message(this.env.first_uid);break;case "compose":e={};if("mail"==this.task)e={_mbox:this.env.mailbox,_search:this.env.search_request},b&&(e._to=b);else if("addressbook"==this.task)if(b&&
0<b.indexOf("@"))e._to=b;else{e=[];b?e.push(b):this.contact_list&&(e=this.contact_list.get_selection());e.length?this.http_post("mailto",{_cid:e.join(","),_source:this.env.source},!0):this.env.group&&this.http_post("mailto",{_gid:this.env.group,_source:this.env.source},!0);break}else b&&"string"==typeof b?e._to=b:b&&"object"==typeof b&&$.extend(e,b);this.open_compose_step(e);break;case "spellcheck":this.spellcheck_state()?this.editor.spellcheck_stop():this.editor.spellcheck_start();break;case "savedraft":clearTimeout(this.save_timer);
if(this.env.draft_id&&this.cmp_hash==this.compose_field_hash()){this.auto_save_start();break}this.submit_messageform(!0);break;case "send":if(!b.nocheck&&!this.env.is_sent&&!this.check_compose_input(a))break;clearTimeout(this.save_timer);this.submit_messageform();break;case "send-attachment":clearTimeout(this.save_timer);(e=this.upload_file(b||this.gui_objects.uploadform,"upload"))||(!1!==e&&alert(this.get_label("selectimportfile")),l=!0);break;case "insert-sig":this.change_identity($("[name='_from']")[0],
!0);break;case "list-addresses":this.list_contacts(b);this.enable_command("add-recipient",!1);break;case "add-recipient":this.compose_add_recipient(b);break;case "reply-all":case "reply-list":case "reply":if(h=this.get_single_uid())e={_reply_uid:h,_mbox:this.get_message_mailbox(h),_search:this.env.search_request},"reply-all"==a?e._all=!b&&1==this.env.reply_all_mode&&this.commands["reply-list"]?"list":"all":"reply-list"==a&&(e._all="list"),this.open_compose_step(e);break;case "forward-attachment":case "forward-inline":case "forward":h=
this.env.uid?[this.env.uid]:this.message_list?this.message_list.get_selection():[];if(h.length){e={_forward_uid:this.uids_to_list(h),_mbox:this.env.mailbox,_search:this.env.search_request};if("forward-attachment"==a||!b&&this.env.forward_attachment||1<h.length)e._attachment=1;this.open_compose_step(e)}break;case "print":if("addressbook"==this.task){if(h=this.contact_list.get_single_selection())e="&_action=print&_cid="+h,this.env.source&&(e+="&_source="+urlencode(this.env.source)),this.open_window(this.env.comm_path+
e,!0,!0)}else if("get"==this.env.action)this.gui_objects.messagepartframe.contentWindow.print();else if(h=this.get_single_uid())e=this.url("print",this.params_from_uid(h,{_safe:this.env.safemode?1:0})),this.open_window(e,!0,!0)&&"show"!=this.env.action&&this.mark_message("read",h);break;case "viewsource":(h=this.get_single_uid())&&this.open_window(this.url("viewsource",this.params_from_uid(h)),!0,!0);break;case "download":"get"==this.env.action?location.href=this.secure_url(location.href.replace(/_frame=/,
"_download=")):(h=this.get_single_uid())&&this.goto_url("viewsource",this.params_from_uid(h,{_save:1}),!1,!0);break;case "search":if(!b&&this.gui_objects.qsearchbox&&(b=this.gui_objects.qsearchbox.value),b){this.qsearch(b);break}case "reset-search":var n;e=this.env.search_request||this.env.qsearch;this.reset_qsearch(!0);this.select_all_mode=!1;if(e&&"compose"==this.env.action)this.contact_list&&this.list_contacts_clear();else if(e&&this.env.mailbox)this.list_mailbox(this.env.mailbox,1);else if(e&&
"addressbook"==this.task){if(""==this.env.source){for(n in this.env.address_sources)break;this.env.source=n;this.env.group=""}this.list_contacts(this.env.source,this.env.group,1)}break;case "pushgroup":this.env.address_group_stack.push(b.id),d&&e&&rcube_event.cancel(e);case "listgroup":this.reset_qsearch();this.list_contacts(b.source,b.id);break;case "popgroup":1<this.env.address_group_stack.length&&(this.env.address_group_stack.pop(),this.reset_qsearch(),this.list_contacts(b.source,this.env.address_group_stack[this.env.address_group_stack.length-
1]));break;case "import-messages":e=b||this.gui_objects.importform;h=this.set_busy(!0,"importwait");$('input[name="_unlock"]',e).val(h);(e=this.upload_file(e,"import",h))||(this.set_busy(!1,null,h),!1!==e&&alert(this.get_label("selectimportfile")),l=!0);break;case "import":if("import"==this.env.action&&this.gui_objects.importform){if((e=document.getElementById("rcmimportfile"))&&!e.value){alert(this.get_label("selectimportfile"));l=!0;break}this.gui_objects.importform.submit();this.set_busy(!0,"importwait");
this.lock_form(this.gui_objects.importform,!0)}else this.goto_url("import",this.env.source?"_target="+urlencode(this.env.source)+"&":"");break;case "export":0<this.contact_list.rowcount&&this.goto_url("export",{_source:this.env.source,_gid:this.env.group,_search:this.env.search_request},!1,!0);break;case "export-selected":0<this.contact_list.rowcount&&this.goto_url("export",{_source:this.env.source,_gid:this.env.group,_cid:this.contact_list.get_selection().join(",")},!1,!0);break;case "upload-photo":this.upload_contact_photo(b||
this.gui_objects.uploadform);break;case "delete-photo":this.replace_contact_photo("-del-");break;case "preferences":case "identities":case "responses":case "folders":this.goto_url("settings/"+a);break;case "undo":this.http_request("undo","",this.display_message("","loading"));break;default:h=a.replace(/-/g,"_"),this[h]&&"function"===typeof this[h]&&(g=this[h](b,d,e))}l||!1!==this.triggerEvent("after"+a,b)||(g=!1);this.triggerEvent("actionafter",{props:b,action:a,aborted:l,ret:g});return!1===g?!1:
d?!1:!0};this.enable_command=function(){var a,b,d=Array.prototype.slice.call(arguments),e=d.pop(),g;for(b=0;b<d.length;b++)if(g=d[b],"string"===typeof g)this.commands[g]=e,this.set_button(g,e?"act":"pas"),this.triggerEvent("enable-command",{command:g,status:e});else for(a in g)d.push(g[a])};this.command_enabled=function(a){return this.commands[a]};this.set_busy=function(a,b,d){a&&b?(d=this.get_label(b),d==b&&(d="Loading..."),d=this.display_message(d,"loading")):!a&&d&&this.hide_message(d);this.busy=
a;this.gui_objects.editform&&this.lock_form(this.gui_objects.editform,a);return d};this.gettext=this.get_label=function(a,b){return b&&this.labels[b+"."+a]?this.labels[b+"."+a]:this.labels[a]?this.labels[a]:a};this.switch_task=function(a){if(this.task!==a||"mail"==a){var b=this.get_task_url(a);"mail"==a?b+="&_mbox=INBOX":"logout"!=a||this.env.server_error||(b=this.secure_url(b),this.clear_compose_data());this.redirect(b)}};this.get_task_url=function(a,b){b||(b=this.env.comm_path);return b.match(/[?&]_task=[a-zA-Z0-9_-]+/)?
b.replace(/_task=[a-zA-Z0-9_-]+/,"_task="+a):b.replace(/\?.*$/,"")+"?_task="+a};this.reload=function(a){this.is_framed()?parent.rcmail.reload(a):a?setTimeout(function(){f.reload()},a):window.location&&(location.href=this.url("",{_extwin:this.env.extwin}))};this.add_url=function(a,b,d){d=urlencode(d);if(/(\?.*)$/.test(a)){var e=RegExp.$1,g=RegExp("((\\?|&)"+RegExp.escape(b)+"=[^&]*)"),e=g.test(e)?e.replace(g,RegExp.$2+b+"="+d):e+("&"+b+"="+d);return a.replace(/(\?.*)$/,e)}return a+"?"+b+"="+d};this.secure_url=
function(a){return this.add_url(a,"_token",this.env.request_token)};this.is_framed=function(){return this.env.framed&&parent.rcmail&&parent.rcmail!=this&&"function"==typeof parent.rcmail.command};this.save_pref=function(a){var b={_name:a.name,_value:a.value};a.session&&(b._session=a.session);a.env&&(this.env[a.env]=a.value);this.http_post("save-pref",b)};this.html_identifier=function(a,b){return b?this.html_identifier_encode(a):String(a).replace(this.identifier_expr,"_")};this.html_identifier_encode=
function(a){return Base64.encode(String(a)).replace(/=+$/,"").replace(/\+/g,"-").replace(/\//g,"_")};this.html_identifier_decode=function(a){for(a=String(a).replace(/-/g,"+").replace(/_/g,"/");a.length%4;)a+="=";return Base64.decode(a)};this.drag_menu=function(a,b){var d=rcube_event.get_modifier(a),e=this.gui_objects.dragmenu;return e&&d==SHIFT_KEY&&this.commands.copy?(d=rcube_event.get_mouse_pos(a),this.env.drag_target=b,this.show_menu(this.gui_objects.dragmenu.id,!0,a),$(e).css({top:d.y-10+"px",
left:d.x-10+"px"}),!0):!1};this.drag_menu_action=function(a){var b=this.gui_objects.dragmenu;b&&$(b).hide();this.command(a,this.env.drag_target);this.env.drag_target=null};this.drag_start=function(a){this.drag_active=!0;this.preview_timer&&clearTimeout(this.preview_timer);this.preview_read_timer&&clearTimeout(this.preview_read_timer);this.treelist&&this.treelist.drag_start()};this.drag_end=function(a){var b,d;this.treelist&&this.treelist.drag_end();if(b=this.message_list)d=this.env.mailboxes;else if(b=
this.contact_list)d=this.env.contactfolders;this.drag_active&&d&&this.env.last_folder_target&&(d=d[this.env.last_folder_target],b.draglayer.hide(),this.contact_list?this.contacts_drag_menu(a,d)||this.command("move",d):this.drag_menu(a,d)||this.command("move",d));this.drag_active=!1;this.env.last_folder_target=null};this.drag_move=function(a){if(this.gui_objects.folderlist){var b,d,e="draglayernormal";a=rcube_event.get_mouse_pos(a);this.contact_list&&this.contact_list.draglayer&&(d=this.contact_list.draglayer.attr("class"));
this.treelist&&(b=this.treelist.intersects(a,!0))?(this.env.last_folder_target=b,e="draglayer"+(1<this.check_droptarget(b)?"copy":"normal")):this.env.last_folder_target=null;e!=d&&this.contact_list&&this.contact_list.draglayer&&this.contact_list.draglayer.attr("class",e)}};this.collapse_folder=function(a){this.treelist&&this.treelist.toggle(a)};this.folder_collapsed=function(a){var b="addressbook"==this.env.task?"collapsed_abooks":"collapsed_folders",d=this.env[b];if(a.collapsed)this.env[b]=this.env[b]+
"&"+urlencode(a.id)+"&",!a.virtual&&this.env.mailbox&&this.env.mailbox.startsWith(a.id+this.env.delimiter)&&this.command("list",a.id);else{var e=RegExp("&"+urlencode(a.id)+"&");this.env[b]=this.env[b].replace(e,"")}this.drag_active||(d!==this.env[b]&&this.command("save-pref",{name:b,value:this.env[b]}),this.env.unread_counts&&this.set_unread_count_display(a.id,!1))};this.doc_mouse_up=function(a){var b,d=rcube_event.get_target(a);if(!$(d).closest(".ui-dialog, .ui-widget-overlay").length){window.rcube_list_widget&&
rcube_list_widget._instances.length&&$.each(rcube_list_widget._instances,function(b,d){d&&!rcube_mouse_is_over(a,d.list.parentNode)&&d.blur()});if(this.buttons_sel){for(b in this.buttons_sel)"function"!==typeof b&&this.button_out(this.buttons_sel[b],b);this.buttons_sel={}}setTimeout(function(a){var b,h,k,l,m=$(d).parents();for(l=f.menu_stack.length-1;0<=l;l--)k=f.menu_stack[l],b=$("#"+k),!b.is(":visible")||d==b.data("opener")||d==b.get(0)||m.is(b.data("opener"))||k==h||"true"==b.attr("data-editable")&&
$(d).parents("#"+k).length||"true"==b.attr("data-sticky")&&rcube_mouse_is_over(a,b.get(0))||f.hide_menu(k,a),h=b.data("parent")},10,a)}};this.doc_keypress=function(a){var b=function(a){var b,d=0>a?"prevAll":"nextAll",e=0>a?"last":"first";return f.focused_menu&&(b=$("#"+f.focused_menu))?(a=b.find(":focus").closest("li")[d](":has(:not([aria-disabled=true]))").find("a,input")[e](),a.length||(a=b.find(":focus").closest("ul")[d](":has(:not([aria-disabled=true]))").find("a,input")[e]()),a.focus().length):
0},d=a.target||{},e=rcube_event.get_keycode(a);rcube_event._last_keyboard_event=a;if(27!=a.keyCode&&(!this.menu_keyboard_active||"TEXTAREA"==d.nodeName||"SELECT"==d.nodeName))return!0;switch(e){case 38:case 40:case 63232:case 63233:return b(38==e||63232==e?-1:1),rcube_event.cancel(a);case 9:return this.focused_menu&&(d=rcube_event.get_modifier(a),b(d==SHIFT_KEY?-1:1)||this.hide_menu(this.focused_menu,a)),rcube_event.cancel(a);case 27:this.menu_stack.length&&this.hide_menu(this.menu_stack[this.menu_stack.length-
1],a)}return!0};this.msglist_select=function(a){this.preview_timer&&clearTimeout(this.preview_timer);this.preview_read_timer&&clearTimeout(this.preview_read_timer);var b=a.get_single_selection();this.enable_command(this.env.message_commands,null!=b);b&&(this.env.mailbox==this.env.drafts_mailbox?this.enable_command("reply","reply-all","reply-list","forward","forward-attachment","forward-inline",!1):this.env.messages[b].ml||this.enable_command("reply-list",!1));this.enable_command("delete","move","copy",
"mark","forward","forward-attachment",0<a.selection.length);if(b||a.selection.length&&a.selection.length!=a.rowcount)this.select_all_mode=!1;b&&this.env.contentframe&&!a.multi_selecting&&!this.dummy_select?this.preview_timer=setTimeout(function(){f.msglist_get_preview()},this.dblclick_time):this.env.contentframe&&this.show_contentframe(!1)};this.msglist_click=function(a){a.multi_selecting||!this.env.contentframe||a.get_single_selection()||(a=this.get_frame_window(this.env.contentframe))&&0<=a.location.href.indexOf(this.env.blankpage)&&
(this.preview_timer&&clearTimeout(this.preview_timer),this.preview_read_timer&&clearTimeout(this.preview_read_timer),this.preview_timer=setTimeout(function(){f.msglist_get_preview()},this.dblclick_time))};this.msglist_dbl_click=function(a){this.preview_timer&&clearTimeout(this.preview_timer);this.preview_read_timer&&clearTimeout(this.preview_read_timer);(a=a.get_single_selection())&&(this.env.messages[a].mbox||this.env.mailbox)==this.env.drafts_mailbox?this.open_compose_step({_draft_uid:a,_mbox:this.env.mailbox}):
a&&this.show_message(a,!1,!1)};this.msglist_keypress=function(a){a.modkey!=CONTROL_KEY&&(a.key_pressed==a.ENTER_KEY?this.command("show"):a.key_pressed==a.DELETE_KEY||a.key_pressed==a.BACKSPACE_KEY?this.command("delete"):33==a.key_pressed?this.command("previouspage"):34==a.key_pressed&&this.command("nextpage"))};this.msglist_get_preview=function(){var a=this.get_single_uid();a&&this.env.contentframe&&!this.drag_active?this.show_message(a,!1,!0):this.env.contentframe&&this.show_contentframe(!1)};this.msglist_expand=
function(a){this.env.messages[a.uid]&&(this.env.messages[a.uid].expanded=a.expanded);$(a.obj)[a.expanded?"addClass":"removeClass"]("expanded")};this.msglist_set_coltypes=function(a){var b,d=a.thead.rows[0].cells;this.env.listcols=[];for(a=0;a<d.length;a++)d[a].id&&d[a].id.startsWith("rcm")&&(b=d[a].id.slice(3),this.env.listcols.push(b));0<=(a=$.inArray("flag",this.env.listcols))&&(this.env.flagged_col=a);0<=(a=$.inArray("subject",this.env.listcols))&&(this.env.subject_col=a);this.command("save-pref",
{name:"list_cols",value:this.env.listcols,session:"list_attrib/columns"})};this.check_droptarget=function(a){switch(this.task){case "mail":return!this.env.mailboxes[a]||this.env.mailboxes[a].virtual||this.env.mailboxes[a].id==this.env.mailbox&&!this.is_multifolder_listing()?0:1;case "addressbook":var b;if(a!=this.env.source&&(b=this.env.contactfolders[a]))if("group"==b.type){if(b.id!=this.env.group&&!this.env.contactfolders[b.source].readonly)return!(1<this.env.selection_sources.length||-1==$.inArray(b.source,
this.env.selection_sources))||this.commands.move?1:2}else if(!b.readonly&&(1<this.env.selection_sources.length||-1==$.inArray(a,this.env.selection_sources)))return this.commands.move?1:2}return 0};this.open_window=function(a,b,d){var e="rcmextwin"+(new Date).getTime();a+=(a.match(/\?/)?"&":"?")+"_extwin=1";if(this.env.standard_windows)var g=window.open(a,e);else{var h=this.is_framed()?parent.window:window,f=$(h),l=f.width(),f=bw.mz?$("body",h).height():f.height();b=Math.min(b?this.env.popup_width_small:
this.env.popup_width,l);g=window.open(a,e,"width="+b+",height="+f+",top="+((h.screenTop||h.screenY)+20)+",left="+((h.screenLeft||h.screenX)+20)+",resizable=yes,location=no,scrollbars=yes"+(d?",toolbar=yes,menubar=yes,status=yes":",toolbar=no,menubar=no,status=no"))}if(!g||g.closed)this.display_message(this.get_label("windowopenerror"),"warning");else return!a&&g.document&&g.document.write("<html><body>"+this.get_label("loading")+"</body></html>"),this.triggerEvent("openwindow",{url:a,handle:g}),setTimeout(function(){g&&
g.focus()},10),g};this.init_message_row=function(a){var b={},d=a.uid,e=(null!=this.env.status_col?"status":"msg")+"icn"+a.id;d&&this.env.messages[d]&&$.extend(a,this.env.messages[d]);if(a.icon=document.getElementById(e))b.icon=function(a){f.command("toggle_status",d)};a.msgicon=null!=this.env.status_col?document.getElementById("msgicn"+a.id):a.icon;null!=this.env.flagged_col&&(a.flagicon=document.getElementById("flagicn"+a.id))&&(b.flagicon=function(a){f.command("toggle_flag",d)});!a.depth&&a.has_children&&
(a.expando=document.getElementById("rcmexpando"+a.id))&&(b.expando=function(a){f.expand_message_row(a,d)});$.each(b,function(b,d){a[b].onclick=function(a){d(a);return rcube_event.cancel(a)};bw.touch&&a[b].addEventListener&&a[b].addEventListener("touchend",function(a){if(1==a.changedTouches.length)return d(a),rcube_event.cancel(a)},!1)});this.triggerEvent("insertrow",{uid:d,row:a})};this.add_message_row=function(a,b,d,e){if(!this.gui_objects.messagelist||!this.message_list||d.mbox!=this.env.mailbox&&
!d.skip_mbox_check)return!1;this.env.messages[a]||(this.env.messages[a]={});$.extend(this.env.messages[a],{deleted:d.deleted?1:0,replied:d.answered?1:0,unread:d.seen?0:1,forwarded:d.forwarded?1:0,flagged:d.flagged?1:0,has_children:d.has_children?1:0,depth:d.depth?d.depth:0,unread_children:d.unread_children?d.unread_children:0,parent_uid:d.parent_uid?d.parent_uid:0,selected:this.select_all_mode||this.message_list.in_selection(a),ml:d.ml?1:0,ctype:d.ctype,mbox:d.mbox,flags:d.extra_flags});var g,h,f,
l="",m="",n="",p="",q=this.message_list,s=q.rows;f=this.env.messages[a];var t=this.html_identifier(a,!0),v="message"+(d.seen?"":" unread")+(d.deleted?" deleted":"")+(d.flagged?" flagged":"")+(f.selected?" selected":""),w={cols:[],style:{},id:"rcmrow"+t,uid:a};g="msgicon";null===this.env.status_col&&(g+=" status",d.deleted?(l+=" deleted",m+=this.get_label("deleted")+" "):d.seen?0<d.unread_children&&(l+=" unreadchildren"):(l+=" unread",m+=this.get_label("unread")+" "));d.answered&&(l+=" replied",m+=
this.get_label("replied")+" ");d.forwarded&&(l+=" forwarded",m+=this.get_label("forwarded")+" ");f.selected&&!q.in_selection(a)&&q.selection.push(a);this.env.threading&&(f.depth?(n+='<span id="rcmtab'+t+'" class="branch" style="width:'+15*f.depth+'px;">&nbsp;&nbsp;</span>',s[f.parent_uid]&&!1===s[f.parent_uid].expanded||!(0!=this.env.autoexpand_threads&&2!=this.env.autoexpand_threads||s[f.parent_uid]&&s[f.parent_uid].expanded)?(w.style.display="none",f.expanded=!1):f.expanded=!0,v+=" thread expanded"):
f.has_children&&(void 0===f.expanded&&(1==this.env.autoexpand_threads||2==this.env.autoexpand_threads&&f.unread_children)&&(f.expanded=!0),p='<div id="rcmexpando'+w.id+'" class="'+(f.expanded?"expanded":"collapsed")+'">&nbsp;&nbsp;</div>',v+=" thread"+(f.expanded?" expanded":"")),d.unread_children&&d.seen&&!f.expanded&&(v+=" unroot"));n+='<span id="msgicn'+w.id+'" class="'+g+l+'" title="'+m+'"></span>';w.className=v;b.subject&&(g=d.mbox==this.env.drafts_mailbox?"compose":"show",m={_mbox:d.mbox},m[d.mbox==
this.env.drafts_mailbox?"_draft_uid":"_uid"]=a,b.subject='<a href="'+this.url(g,m)+'" onclick="return rcube_event.keyboard_only(event)" onmouseover="rcube_webmail.long_subject_title(this,'+(f.depth+1)+')" tabindex="-1"><span>'+b.subject+"</span></a>");for(h in this.env.listcols)g=this.env.listcols[h],a={className:String(g).toLowerCase(),events:{}},this.env.coltypes[g]&&this.env.coltypes[g].hidden&&(a.className+=" hidden"),"flag"==g?(g=d.flagged?"flagged":"unflagged",f=this.get_label(g),g='<span id="flagicn'+
w.id+'" class="'+g+'" title="'+f+'"></span>'):"attachment"==g?(f=this.get_label("withattachment"),g=d.attachmentClass?'<span class="'+d.attachmentClass+'" title="'+f+'"></span>':/application\/|multipart\/(m|signed)/.test(d.ctype)?'<span class="attachment" title="'+f+'"></span>':/multipart\/report/.test(d.ctype)?'<span class="report"></span>':"&nbsp;"):"status"==g?(f="",d.deleted?(g="deleted",f=this.get_label("deleted")):d.seen?g=0<d.unread_children?"unreadchildren":"msgicon":(g="unread",f=this.get_label("unread")),
g='<span id="statusicn'+w.id+'" class="'+g+l+'" title="'+f+'"></span>'):"threads"==g?g=p:"subject"==g?(bw.ie&&(a.events.mouseover=function(){rcube_webmail.long_subject_title_ex(this)}),g=n+b[g]):"priority"==g?0<d.prio&&6>d.prio?(f=this.get_label("priority")+" "+d.prio,g='<span class="prio'+d.prio+'" title="'+f+'"></span>'):g="&nbsp;":g="folder"==g?'<span onmouseover="rcube_webmail.long_subject_title(this)">'+b[g]+"<span>":b[g],a.innerHTML=g,w.cols.push(a);q.insert_row(w,e);e&&this.env.pagesize&&q.rowcount>
this.env.pagesize&&(a=q.get_last_row(),q.remove_row(a),q.clear_selection(a))};this.set_list_sorting=function(a,b){var d="arrival"==a?"date":a;$("#rcm"+("arrival"==this.env.sort_col?"date":this.env.sort_col)).removeClass("sorted"+this.env.sort_order.toUpperCase());d&&$("#rcm"+d).addClass("sorted"+b);$("#rcmdate > a").prop("rel","arrival"==a?"arrival":"date");this.env.sort_col=a;this.env.sort_order=b};this.set_list_options=function(a,b,d,e){var g,h={};void 0===b&&(b=this.env.sort_col);d||(d=this.env.sort_order);
if(this.env.sort_col!=b||this.env.sort_order!=d)g=1,this.set_list_sorting(b,d);this.env.threading!=e&&(g=1,h._threads=e);if(a&&a.length){var f,l,m=[],n=this.env.listcols;for(e=0;e<n.length;e++)l=n[e],f=$.inArray(l,a),-1!=f&&(m.push(l),delete a[f]);for(e=0;e<a.length;e++)a[e]&&m.push(a[e]);m.join()!=n.join()&&(g=1,h._cols=m.join(","))}g&&this.list_mailbox("","",b+"_"+d,h)};this.show_message=function(a,b,d){if(a){var e,g=window,h=this.params_from_uid(a,{_caps:this.browser_capabilities()});d&&(e=this.get_frame_window(this.env.contentframe))&&
(g=e,h._framed=1);b&&(h._safe=1);this.env.search_request&&(h._search=this.env.search_request);this.env.extwin&&(h._extwin=1);h=this.url(d?"preview":"show",h);d&&0<=String(g.location.href).indexOf(h)?this.show_contentframe(!0):(d||!this.env.message_extwin||this.env.extwin?this.location_href(h,g,!0):this.open_window(h,!0),d&&this.message_list&&this.message_list.rows[a]&&this.message_list.rows[a].unread&&0<this.env.preview_pane_mark_read&&(this.preview_read_timer=setTimeout(function(){f.set_unread_message(a,
f.env.mailbox);f.http_post("mark",{_uid:a,_flag:"read",_mbox:f.env.mailbox,_quiet:1})},1E3*this.env.preview_pane_mark_read)))}};this.set_unread_message=function(a,b){var d=this;d.message_list||(d=d.opener());!d&&window.parent&&(d=parent.rcmail);d&&d.message_list&&(!1===d.set_message(a,"unread",!1)&&d.set_message(a+"-"+b,"unread",!1),0<d.env.unread_counts[b]&&(d.env.unread_counts[b]-=1,d.set_unread_count(b,d.env.unread_counts[b],"INBOX"==b&&!d.is_multifolder_listing())))};this.show_contentframe=function(a){var b,
d,e=this.env.contentframe;if(e&&(b=this.get_frame_element(e)))if(!a&&(d=this.get_frame_window(e)))0>d.location.href.indexOf(this.env.blankpage)&&(d.stop?d.stop():d.document.execCommand("Stop"),d.location.href=this.env.blankpage);else if(!bw.safari&&!bw.konq)$(b)[a?"show":"hide"]();!a&&this.env.frame_lock&&this.set_busy(!1,null,this.env.frame_lock)};this.get_frame_element=function(a){var b;if(a&&(b=document.getElementById(a)))return b};this.get_frame_window=function(a){if((a=this.get_frame_element(a))&&
a.name&&window.frames)return window.frames[a.name]};this.lock_frame=function(){this.env.frame_lock||((this.is_framed()?parent.rcmail:this).env.frame_lock=this.set_busy(!0,"loading"))};this.list_page=function(a){"next"==a?a=this.env.current_page+1:"last"==a?a=this.env.pagecount:"prev"==a&&1<this.env.current_page?a=this.env.current_page-1:"first"==a&&1<this.env.current_page&&(a=1);0<a&&a<=this.env.pagecount&&(this.env.current_page=a,"addressbook"==this.task||this.contact_list?this.list_contacts(this.env.source,
this.env.group,a):"mail"==this.task&&this.list_mailbox(this.env.mailbox,a))};this.checkmail=function(){var a=this.set_busy(!0,"checkingmail"),b=this.check_recent_params();this.http_post("check-recent",b,a)};this.filter_mailbox=function(a){if(!this.filter_disabled){var b=this.set_busy(!0,"searching");this.clear_message_list();this.env.current_page=1;this.env.search_filter=a;this.http_request("search",this.search_params(!1,a),b)}};this.refresh_list=function(){this.list_mailbox(this.env.mailbox,this.env.current_page||
1,null,{_clear:1},!0);this.message_list&&this.message_list.clear_selection()};this.list_mailbox=function(a,b,d,e,g){var h=window;"object"!=typeof e&&(e={});a||(a=this.env.mailbox?this.env.mailbox:"INBOX");d&&(e._sort=d);this.env.mailbox!=a?(b=1,this.env.current_page=b,this.env.search_scope="base",this.select_all_mode=!1,this.reset_search_filter()):this.env.search_request&&(e._search=this.env.search_request);if(!g){this.clear_message_list();if(a!=this.env.mailbox||a==this.env.mailbox&&!b&&!d)e._refresh=
1;this.select_folder(a,"",!0);this.unmark_folder(a,"recent","",!0);this.env.mailbox=a}if(this.gui_objects.messagelist)this.list_mailbox_remote(a,b,e);else{if(d=this.get_frame_window(this.env.contentframe))h=d,e._framed=1;this.env.uid&&(e._uid=this.env.uid);a&&(this.set_busy(!0,"loading"),e._mbox=a,b&&(e._page=b),this.location_href(e,h))}};this.clear_message_list=function(){this.env.messages={};this.show_contentframe(!1);this.message_list&&this.message_list.clear(!0)};this.list_mailbox_remote=function(a,
b,d){var e=this.set_busy(!0,"loading");"object"!=typeof d&&(d={});d._mbox=a;b&&(d._page=b);this.http_request("list",d,e);this.update_state({_mbox:a,_page:b&&1<b?b:null})};this.update_selection=function(){var a=this.message_list,b=a.selection,d=a.rows,e,g=[];for(e in b)d[b[e]]&&g.push(b[e]);a.selection=g;try{var h=this.get_frame_window(this.env.contentframe).rcmail.env.uid;h&&!a.in_selection(h)&&this.show_contentframe(!1)}catch(f){}};this.expand_unread=function(){for(var a,b=this.message_list.tbody.firstChild;b;)1==
b.nodeType&&(a=this.message_list.rows[b.uid])&&a.unread_children&&(this.message_list.expand_all(a),this.set_unread_children(a.uid)),b=b.nextSibling;return!1};this.expand_message_row=function(a,b){var d=this.message_list.rows[b];d.expanded=!d.expanded;this.set_unread_children(b);d.expanded=!d.expanded;this.message_list.expand_row(a,b)};this.expand_threads=function(){if(this.env.threading&&this.env.autoexpand_threads&&this.message_list)switch(this.env.autoexpand_threads){case 2:this.expand_unread();
break;case 1:this.message_list.expand_all()}};this.init_threads=function(a,b){if(b&&b!=this.env.mailbox)return!1;for(var d=0,e=a.length;d<e;d++)this.add_tree_icons(a[d]);this.expand_threads()};this.add_tree_icons=function(a){var b,d,e,g,h=[],f=[],l,m=this.message_list.rows;for(l=a?m[a]?m[a].obj:null:this.message_list.tbody.firstChild;l;){if(1==l.nodeType&&(d=m[l.uid]))if(d.depth){for(b=h.length-1;0<=b&&!(e=h[b].length,e>d.depth?(g=e-d.depth,h[b][g]&2||(h[b][g]=h[b][g]?h[b][g]+2:2)):e==d.depth&&(h[b][0]&
2||(h[b][0]+=2)),d.depth>e);b--);h.push(Array(d.depth));h[h.length-1][0]=1;f.push(d.uid)}else{if(h.length){for(b in h)this.set_tree_icons(f[b],h[b]);h=[];f=[]}if(a&&l!=m[a].obj)break}l=l.nextSibling}if(h.length)for(b in h)this.set_tree_icons(f[b],h[b])};this.set_tree_icons=function(a,b){var d,e=[],g="",h=b.length;for(d=0;d<h;d++)2<b[d]?e.push({"class":"l3",width:15}):1<b[d]?e.push({"class":"l2",width:15}):0<b[d]?e.push({"class":"l1",width:15}):e.length&&!e[e.length-1]["class"]?e[e.length-1].width+=
15:e.push({"class":null,width:15});for(d=e.length-1;0<=d;d--)g=e[d]["class"]?g+('<div class="tree '+e[d]["class"]+'" />'):g+('<div style="width:'+e[d].width+'px" />');g&&$("#rcmtab"+this.html_identifier(a,!0)).html(g)};this.update_thread_root=function(a,b){if(this.env.threading){var d=this.message_list.find_root(a);if(a!=d){var e=this.message_list.rows[d];if("read"==b&&e.unread_children)e.unread_children--;else if("unread"==b&&e.has_children)e.unread_children=e.unread_children?e.unread_children+1:
1;else return;this.set_message_icon(d);this.set_unread_children(d)}}};this.update_thread=function(a){if(!this.env.threading)return 0;var b,d=0,e=this.message_list.rows,g=e[a],h=e[a].depth,k=[];g.depth?g.unread&&(a=this.message_list.find_root(a),e[a].unread_children--,this.set_unread_children(a)):d--;a=g.parent_uid;for(g=g.obj.nextSibling;g;){if(1==g.nodeType&&(b=e[g.uid])){if(!b.depth||b.depth<=h)break;b.depth--;$("#rcmtab"+b.id).width(15*b.depth).html("");b.depth?(b.depth==h&&(b.parent_uid=a),b.unread&&
k.length&&k[k.length-1].unread_children++):(d++,b.parent_uid=0,b.has_children&&($("#"+b.id+" .leaf:first").attr("id","rcmexpando"+b.id).attr("class","none"!=b.obj.style.display?"expanded":"collapsed").mousedown({uid:b.uid},function(a){return f.expand_message_row(a,a.data.uid)}),b.unread_children=0,k.push(b)),"none"==b.obj.style.display&&$(b.obj).show())}g=g.nextSibling}for(b=0;b<k.length;b++)this.set_unread_children(k[b].uid);return d};this.delete_excessive_thread_rows=function(){for(var a=this.message_list.rows,
b=this.message_list.tbody.firstChild,d=this.env.pagesize+1;b;)1==b.nodeType&&(r=a[b.uid])&&(!r.depth&&d&&d--,d||this.message_list.remove_row(b.uid)),b=b.nextSibling};this.set_message_icon=function(a){var b="",d=this.message_list.rows[a];if(!d)return!1;d.icon&&(a="msgicon",d.deleted?(a+=" deleted",b+=this.get_label("deleted")+" "):d.unread?(a+=" unread",b+=this.get_label("unread")+" "):d.unread_children&&(a+=" unreadchildren"),d.msgicon==d.icon&&(d.replied&&(a+=" replied",b+=this.get_label("replied")+
" "),d.forwarded&&(a+=" forwarded",b+=this.get_label("forwarded")+" "),a+=" status"),$(d.icon).attr("class",a).attr("title",b));d.msgicon&&d.msgicon!=d.icon&&(b="",a="msgicon",!d.unread&&d.unread_children&&(a+=" unreadchildren"),d.replied&&(a+=" replied",b+=this.get_label("replied")+" "),d.forwarded&&(a+=" forwarded",b+=this.get_label("forwarded")+" "),$(d.msgicon).attr("class",a).attr("title",b));d.flagicon&&(a=d.flagged?"flagged":"unflagged",b=this.get_label(a),$(d.flagicon).attr("class",a).attr("aria-label",
b).attr("title",b))};this.set_message_status=function(a,b,d){var e=this.message_list.rows[a];if(!e)return!1;"unread"==b&&e.unread!=d&&this.update_thread_root(a,d?"unread":"read");-1<$.inArray(b,["unread","deleted","replied","forwarded","flagged"])&&(e[b]=d)};this.set_message=function(a,b,d){var e=this.message_list&&this.message_list.rows[a];if(!e)return!1;b&&this.set_message_status(a,b,d);if(-1<$.inArray(b,["unread","deleted","flagged"]))$(e.obj)[e[b]?"addClass":"removeClass"](b);this.set_unread_children(a);
this.set_message_icon(a)};this.set_unread_children=function(a){a=this.message_list.rows[a];a.parent_uid||(a.unread||!a.unread_children||a.expanded?$(a.obj).removeClass("unroot"):$(a.obj).addClass("unroot"))};this.copy_messages=function(a,b){if(a&&"object"===typeof a)a=a.id;else if(!a)return this.folder_selector(b,function(a){f.command("copy",a)});if(a&&a!=this.env.mailbox){var d=this.selection_post_data({_target_mbox:a});d._uid&&this.http_post("copy",d,this.display_message(this.get_label("copyingmessage"),
"loading"))}};this.move_messages=function(a,b){if(a&&"object"===typeof a)a=a.id;else if(!a)return this.folder_selector(b,function(a){f.command("move",a)});if(a&&(a!=this.env.mailbox||this.is_multifolder_listing())){var d=!1,e=this.selection_post_data({_target_mbox:a});e._uid&&("show"==this.env.action?d=this.set_busy(!0,"movingmessage"):this.show_contentframe(!1),this.enable_command(this.env.message_commands,!1),this._with_selected_messages("move",e,d))}};this.delete_messages=function(a){var b=this.message_list,
d=this.env.trash_mailbox;if(this.env.flag_for_deletion)return this.mark_message("delete"),!1;d&&this.env.mailbox!=d?this.env.delete_junk&&this.env.junk_mailbox&&this.env.mailbox==this.env.junk_mailbox?this.permanently_remove_messages():b&&b.modkey==SHIFT_KEY||a&&rcube_event.get_modifier(a)==SHIFT_KEY?confirm(this.get_label("deletemessagesconfirm"))&&this.permanently_remove_messages():this.move_messages(d):this.permanently_remove_messages();return!0};this.permanently_remove_messages=function(){var a=
this.selection_post_data();a._uid&&(this.show_contentframe(!1),this._with_selected_messages("delete",a))};this._with_selected_messages=function(a,b,d){var e=0,g="delete"==a||!this.is_multifolder_listing();if(this.message_list){var h,f,l,m=[],n=this.message_list.get_selection();h=0;for(len=n.length;h<len;h++)f=n[h],this.env.threading&&(e+=this.update_thread(f),l=this.message_list.find_root(f),l!=f&&0>$.inArray(l,m)&&m.push(l)),g&&this.message_list.remove_row(f,this.env.display_next&&h==n.length-1);
!this.env.display_next&&g&&this.message_list.clear_selection();h=0;for(len=m.length;h<len;h++)this.add_tree_icons(m[h])}0>e?b._count=-1*e:0<e&&g&&this.delete_excessive_thread_rows();g||(b._refresh=1);d||(d=this.display_message(this.get_label("move"==a?"movingmessage":"deletingmessage"),"loading"));this.http_post(a,b,d)};this.selection_post_data=function(a){"object"!=typeof a&&(a={});a._mbox=this.env.mailbox;if(!a._uid){var b=this.env.uid?[this.env.uid]:this.message_list.get_selection();a._uid=this.uids_to_list(b)}this.env.action&&
(a._from=this.env.action);this.env.search_request&&(a._search=this.env.search_request);this.env.display_next&&this.env.next_uid&&(a._next_uid=this.env.next_uid);return a};this.mark_message=function(a,b){var d=[],e=[],g,h,f,l=this.message_list;b?d[0]=b:this.env.uid?d[0]=this.env.uid:l&&(d=l.get_selection());if(l)for(l.focus(),h=0,g=d.length;h<g;h++)f=d[h],("read"==a&&l.rows[f].unread||"unread"==a&&!l.rows[f].unread||"delete"==a&&!l.rows[f].deleted||"undelete"==a&&l.rows[f].deleted||"flagged"==a&&!l.rows[f].flagged||
"unflagged"==a&&l.rows[f].flagged)&&e.push(f);else e=d;if(e.length||this.select_all_mode)switch(a){case "read":case "unread":this.toggle_read_status(a,e);break;case "delete":case "undelete":this.toggle_delete_status(e);break;case "flagged":case "unflagged":this.toggle_flagged_status(a,d)}};this.toggle_read_status=function(a,b){var d,e=b.length,g=this.selection_post_data({_uid:this.uids_to_list(b),_flag:a}),h=this.display_message(this.get_label("markingmessage"),"loading");for(d=0;d<e;d++)this.set_message(b[d],
"unread","unread"==a?!0:!1);this.http_post("mark",g,h)};this.toggle_flagged_status=function(a,b){var d,e=b.length,g=this.selection_post_data({_uid:this.uids_to_list(b),_flag:a}),h=this.display_message(this.get_label("markingmessage"),"loading");for(d=0;d<e;d++)this.set_message(b[d],"flagged","flagged"==a?!0:!1);this.http_post("mark",g,h)};this.toggle_delete_status=function(a){var b=a.length,d,e,g=!0,h=this.message_list?this.message_list.rows:{};if(1==b)return!this.message_list||h[a[0]]&&!h[a[0]].deleted?
this.flag_as_deleted(a):this.flag_as_undeleted(a),!0;for(d=0;d<b;d++)if(e=a[d],h[e]&&!h[e].deleted){g=!1;break}g?this.flag_as_undeleted(a):this.flag_as_deleted(a);return!0};this.flag_as_undeleted=function(a){var b,d=a.length,e=this.selection_post_data({_uid:this.uids_to_list(a),_flag:"undelete"}),g=this.display_message(this.get_label("markingmessage"),"loading");for(b=0;b<d;b++)this.set_message(a[b],"deleted",!1);this.http_post("mark",e,g)};this.flag_as_deleted=function(a){for(var b=[],d=this.selection_post_data({_uid:this.uids_to_list(a),
_flag:"delete"}),e=this.display_message(this.get_label("markingmessage"),"loading"),g=this.message_list?this.message_list.rows:{},h=0,f=0,l=a.length;f<l;f++)uid=a[f],g[uid]&&(g[uid].unread&&(b[b.length]=uid),this.env.skip_deleted?(h+=this.update_thread(uid),this.message_list.remove_row(uid,this.env.display_next&&f==this.message_list.selection.length-1)):this.set_message(uid,"deleted",!0));this.env.skip_deleted&&this.message_list&&(this.env.display_next||this.message_list.clear_selection(),0>h?d._count=
-1*h:0<h&&this.delete_excessive_thread_rows());b.length&&(d._ruid=this.uids_to_list(b));this.env.skip_deleted&&this.env.display_next&&this.env.next_uid&&(d._next_uid=this.env.next_uid);this.http_post("mark",d,e)};this.flag_deleted_as_read=function(a){var b,d,e,g=this.message_list?this.message_list.rows:{};"string"==typeof a&&(a=a.split(","));d=0;for(e=a.length;d<e;d++)b=a[d],g[b]&&this.set_message(b,"unread",!1)};this.uids_to_list=function(a){return this.select_all_mode?"*":1>=a.length?a.join(","):
a};this.set_button_titles=function(){var a="deletemessage";this.env.flag_for_deletion||!this.env.trash_mailbox||this.env.mailbox==this.env.trash_mailbox||this.env.delete_junk&&this.env.junk_mailbox&&this.env.mailbox==this.env.junk_mailbox||(a="movemessagetotrash");this.set_alttext("delete",a)};this.init_pagejumper=function(a){$(a).addClass("rcpagejumper").on("focus",function(b){var d,e="";for(d=1;d<=f.env.pagecount;d++)e+="<li>"+d+"</li>";e='<ul class="toolbarmenu">'+e+"</ul>";f.pagejump||(f.pagejump=
$('<div id="pagejump-selector" class="popupmenu"></div>').appendTo(document.body).on("click","li",function(){f.busy||$(a).val($(this).text()).change()}));f.pagejump.data("count")!=d&&f.pagejump.html(e);f.pagejump.attr("rel","#"+this.id).data("count",d);f.show_menu("pagejump-selector",!0,b);$(this).keydown()}).on("keydown keyup click",function(b){var d=$("#pagejump-selector"),e=$("ul",d),g=$("li",e);e.height();var h=parseInt(this.value);if(27!=b.which&&9!=b.which&&13!=b.which&&!d.is(":visible"))return f.show_menu("pagejump-selector",
!0,b);if("keydown"==b.type)if(40==b.which)g.length>h&&(this.value=h+=1);else if(38==b.which)1<h&&g.length>h-1&&(this.value=h-=1);else{if(13==b.which)return $(this).change();if(27==b.which||9==b.which)return $(a).val(f.env.current_page)}$("li.selected",e).removeClass("selected");(b=$(g[h-1])).length&&(b.addClass("selected"),$("#pagejump-selector").scrollTop(e.height()/g.length*(h-1)-d.height()/2))}).on("change",function(a){(a=parseInt(this.value))&&a!=f.env.current_page&&!f.busy&&(f.hide_menu("pagejump-selector"),
f.list_page(a))})};this.update_pagejumper=function(){$("input.rcpagejumper").val(this.env.current_page).prop("disabled",2>this.env.pagecount)};this.check_mailvelope=function(a){if("undefined"!==typeof window.mailvelope)this.mailvelope_load(a);else $(window).on("mailvelope",function(){f.mailvelope_load(a)})};this.mailvelope_load=function(a){this.env.browser_capabilities&&(this.env.browser_capabilities.pgpmime=1);var b=this.env.user_id;mailvelope.getKeyring(b).then(function(b){f.mailvelope_keyring=
b;f.mailvelope_init(a,b)},function(d){mailvelope.createKeyring(b).then(function(b){f.mailvelope_keyring=b;f.mailvelope_init(a,b)},function(a){console.error(a)})})};this.mailvelope_init=function(a,b){if(window.mailvelope)if("show"==a||"preview"==a||"print"==a)if(this.env.is_pgp_content){var d=$(this.env.is_pgp_content).text();f.mailvelope_display_container(this.env.is_pgp_content,d,b)}else{if(this.env.pgp_mime_part){var e=this.display_message(this.get_label("loadingdata"),"loading"),g=this.env.pgp_mime_container;
$.ajax({type:"GET",url:this.url("get",{_mbox:this.env.mailbox,_uid:this.env.uid,_part:this.env.pgp_mime_part}),error:function(a,b,d){f.http_error(a,b,d,e)},success:function(a){f.mailvelope_display_container(g,a,b,e)}})}}else if("compose"==a){this.env.compose_commands.push("compose-encrypted");var h=0<$('input[name="_is_html"]').val();if(this.env.pgp_mime_message){var k=this.set_busy(!0,this.get_label("loadingdata"));$.ajax({type:"GET",url:this.url("get",this.env.pgp_mime_message),error:function(a,
b,d){f.http_error(a,b,d,k);f.enable_command("compose-encrypted",!h)},success:function(a){f.set_busy(!1,null,k);h&&(f.command("toggle-editor",{html:!1,noconvert:!0}),$("#"+f.env.composebody).val(""));f.compose_encrypted({quotedMail:a});f.enable_command("compose-encrypted",!0)}})}else this.enable_command("compose-encrypted",!h);this.addEventListener("actionafter",function(a){a.ret&&"toggle-editor"==a.action&&f.enable_command("compose-encrypted",!a.props.html)})}};this.compose_encrypted=function(a){var b,
d=$("#"+this.env.composebody).parent();f.mailvelope_editor?(f.mailvelope_editor=null,f.compose_skip_unsavedcheck=!1,f.set_button("compose-encrypted","act"),d.removeClass("mailvelope").find("iframe:not([aria-hidden=true])").remove(),$("#"+f.env.composebody).show(),$("[name='_pgpmime']").remove(),f.enable_command("spellcheck","insert-sig","toggle-editor","insert-response","save-response",!0),f.triggerEvent("compose-encrypted",{active:!1})):(this.spellcheck_state()&&this.editor.spellcheck_stop(),b=a.quotedMail?
{quotedMail:a.quotedMail,quotedMailIndent:!1}:{predefinedText:$("#"+this.env.composebody).val()},"reply"==this.env.compose_mode&&(b.quotedMailIndent=!0,b.quotedMailHeader=this.env.compose_reply_header),mailvelope.createEditorContainer("#"+d.attr("id"),f.mailvelope_keyring,b).then(function(a){f.mailvelope_editor=a;f.compose_skip_unsavedcheck=!0;f.set_button("compose-encrypted","sel");d.addClass("mailvelope");$("#"+f.env.composebody).hide();f.enable_command("spellcheck","insert-sig","toggle-editor",
"insert-response","save-response",!1);f.triggerEvent("compose-encrypted",{active:!0});f.env.attachments&&!$.isEmptyObject(f.env.attachments)&&(alert(f.get_label("encryptnoattachments")),$.each(f.env.attachments,function(a,b){f.remove_from_attachment_list(a)}))},function(a){console.error(a);console.log(b)}))};this.mailvelope_submit_messageform=function(a,b){var d=[];$.each(["to","cc","bcc"],function(a,b){for(var e,f=$.trim($('[name="_'+b+'"]').val());f.length&&rcube_check_email(f,!0);)e=RegExp.$2,
d.push(e),f=f.substr(f.indexOf(e)+e.length+1).replace(/^\s*,\s*/,"")});var e=0<d.length;f.mailvelope_keyring.validKeyForAddress(d).then(function(g){var h=[];$.each(g,function(a,b){!1===b&&(e=!1,h.push(a))});if(!e&&h.length)return f.show_popup_dialog(f.get_label("nopubkeyfor").replace("$email",h.join(", "))+"<p>"+f.get_label("searchpubkeyservers")+"</p>",f.get_label("encryptedsendialog"),[{text:f.get_label("search"),"class":"mainaction",click:function(){var a=$(this);f.mailvelope_search_pubkeys(h,
function(){a.dialog("close")})}},{text:f.get_label("cancel"),click:function(){$(this).dialog("close")}}]),!1;if(!e)return d.length||(alert(f.get_label("norecipientwarning")),$("[name='_to']").focus()),!1;var k=[],l=f.env.identities[$("[name='_from'] option:selected").val()];$.each(f.env.identities,function(a,b){k.push(b.email)});f.mailvelope_keyring.validKeyForAddress(k).then(function(e){valid_sender=null;$.each(e,function(a,b){if(!1!==b&&(valid_sender=a,valid_sender==l))return!1});if(!valid_sender&&
!confirm(f.get_label("nopubkeyforsender")))return!1;d.push(valid_sender);f.mailvelope_editor.encrypt(d).then(function(d){var e=f.gui_objects.messageform,g=$("[name='_pgpmime']",e),h=f.set_busy(!0,a||b?"savingmessage":"sendingmessage");e.target="savetarget";e._draft.value=a?"1":"";e.action=f.add_url(e.action,"_unlock",h);e.action=f.add_url(e.action,"_framed",1);b&&(e.action=f.add_url(e.action,"_saveonly",1));g.length||(g=$('<input type="hidden" name="_pgpmime">').appendTo(e));g.val(d);e.submit()},
function(a){console.log(a)})},function(a){console.error(a)})},function(a){console.error(a)});return!1};this.mailvelope_display_container=function(a,b,d,e){mailvelope.createDisplayContainer(a,b,d,{showExternalContent:this.env.safemode}).then(function(){$(a).addClass("mailvelope").children().not("iframe").hide();f.hide_message(e);setTimeout(function(){$(window).resize()},10)},function(a){console.error(a);f.hide_message(e);f.display_message("Message decryption failed: "+a.message,"error")})};this.mailvelope_search_pubkeys=
function(a,b){var d=[],e=new PublicKey,g=f.display_message(f.get_label("loading"),"loading");$.each(a,function(a,b){var g=$.Deferred();e.search(b,function(a,d){null!==d?g.resolve([b]):g.resolve([b].concat(a))});d.push(g)});$.when.apply($,d).then(function(){var a=[],d=[];$.each(arguments,function(b,e){var g=e.shift();e.length?d=d.concat(e):a.push(g)});f.hide_message(g);b(!0);d.length&&f.mailvelope_key_import_dialog(d);a.length&&f.display_message(f.get_label("nopubkeyfor").replace("$email",a.join(", ")),
"warning")}).fail(function(){console.error("Pubkey lookup failed with",arguments);f.hide_message(g);f.display_message("pubkeysearcherror","error");b(!1)})};this.mailvelope_key_import_dialog=function(a){var b=$("<div>").addClass("listing mailvelopekeyimport");$.each(a,function(a,e){var g=$("<div>").addClass("key");e.revoked&&g.addClass("revoked");e.disabled&&g.addClass("disabled");e.expired&&g.addClass("expired");g.append($("<label>").addClass("keyid").text(f.get_label("keyid")));g.append($("<a>").text(e.keyid.substr(-8).toUpperCase()).attr("href",
e.info).attr("target","_blank").attr("tabindex","-1"));g.append($("<label>").addClass("keylen").text(f.get_label("keylength")));g.append($("<span>").text(e.keylen));e.expirationdate&&(g.append($("<label>").addClass("keyexpired").text(f.get_label("keyexpired"))),g.append($("<span>").text((new Date(1E3*e.expirationdate)).toDateString())));e.revoked&&g.append($("<span>").addClass("keyrevoked").text(f.get_label("keyrevoked")));var h=$("<ul>").addClass("uids");$.each(e.uids,function(a,b){var d=$("<li>").addClass("uid");
b.revoked&&d.addClass("revoked");b.disabled&&d.addClass("disabled");b.expired&&d.addClass("expired");h.append(d.text(b.uid))});g.append(h);g.append($("<input>").attr("type","button").attr("rel",e.keyid).attr("value",f.get_label("import")).addClass("button importkey").prop("disabled",e.revoked||e.disabled||e.expired));b.append(g)});f.show_popup_dialog($("<div>").append($("<p>").html(f.get_label("encryptpubkeysfound"))).append(b),f.get_label("importpubkeys"),[{text:f.get_label("close"),click:function(){$(this).dialog("close")}}]);
b.on("click","input.button.importkey",function(){var a=$(this),b=a.attr("rel"),g=new PublicKey,h=f.display_message(f.get_label("loading"),"loading");g.get(b,function(g,l){f.hide_message(h);l?f.display_message(f.get_label("keyservererror"),"error"):f.mailvelope_keyring.importPublicKey(g).then(function(g){"REJECTED"!==g&&(g=b.substr(-8).toUpperCase(),a.closest(".key").fadeOut(),f.display_message(f.get_label("keyimportsuccess").replace("$key",g),"confirmation"))},function(a){console.log(a)})})})};this.expunge_mailbox=
function(a){var b,d={_mbox:a};a==this.env.mailbox&&(b=this.set_busy(!0,"loading"),d._reload=1,this.env.search_request&&(d._search=this.env.search_request));this.http_post("expunge",d,b)};this.purge_mailbox=function(a){var b,d={_mbox:a};if(!confirm(this.get_label("purgefolderconfirm")))return!1;a==this.env.mailbox&&(b=this.set_busy(!0,"loading"),d._reload=1);this.http_post("purge",d,b)};this.purge_mailbox_test=function(){return this.env.exists&&(this.env.mailbox==this.env.trash_mailbox||this.env.mailbox==
this.env.junk_mailbox||this.env.mailbox.startsWith(this.env.trash_mailbox+this.env.delimiter)||this.env.mailbox.startsWith(this.env.junk_mailbox+this.env.delimiter))};this.login_user_keyup=function(a){var b=rcube_event.get_keycode(a),d=$("#rcmloginpwd");return 13==b&&d.length&&!d.val()?(d.focus(),rcube_event.cancel(a)):!0};this.open_compose_step=function(a){a=this.url("mail/compose",a);this.env.compose_extwin&&!this.env.extwin?this.open_window(a):(this.redirect(a),this.env.extwin&&window.resizeTo(Math.max(this.env.popup_width,
$(window).width()),$(window).height()+24))};this.init_messageform=function(){if(!this.gui_objects.messageform)return!1;var a,b,d=$("[name='_from']"),e=$("[name='_to']"),g=$("input[name='_subject']"),f=$("[name='_message']").get(0),k="1"==$("input[name='_is_html']").val(),l=["cc","bcc","replyto","followupto"],m,n=this.opener();n&&"compose"==n.env.action&&(setTimeout(function(){1<opener.history.length?opener.history.back():n.redirect(n.get_task_url("mail"))},100),this.env.opened_extwin=!0);0<this.env.autocomplete_threads&&
(m={threads:this.env.autocomplete_threads,sources:this.env.autocomplete_sources});this.init_address_input_events(e,m);for(a in l)this.init_address_input_events($("[name='_"+l[a]+"']"),m);k||(a=this.env.top_posting&&this.env.compose_mode?0:f.value.length,"select-one"==d.prop("type")&&this.change_identity(d[0]),this.set_caret_pos(f,a),a&&$(f).scrollTop(f.scrollHeight));this.env.save_localstorage&&this.compose_restore_dialog(0,k);""==e.val()?b=e:""==g.val()?b=g:f&&(b=f);$(b).filter(":visible").focus();
this.env.compose_focus_elem=document.activeElement;this.compose_field_hash(!0);this.auto_save_start()};this.compose_restore_dialog=function(a,b){var d,e,g,h=this.local_storage_get_item("compose.index",[]),k=function(a){++a<h.length&&f.compose_restore_dialog(a,b)};for(d=a||0;d<h.length;d++)if(e=h[d],g=this.local_storage_get_item("compose."+e,null,!0)){if(g.changed&&e==this.env.compose_id){this.restore_compose_form(e,b);break}if(!(this.env.draft_id&&g.draft_id&&g.draft_id!=this.env.draft_id||this.env.reply_msgid&&
g.reply_msgid!=this.env.reply_msgid)&&g.changed&&g.session!=this.env.session_id){this.show_popup_dialog(this.get_label("restoresavedcomposedata").replace("$date",(new Date(g.changed)).toLocaleString()).replace("$subject",g._subject).replace(/\n/g,"<br/>"),this.get_label("restoremessage"),[{text:this.get_label("restore"),"class":"mainaction",click:function(){f.restore_compose_form(e,b);f.remove_compose_data(e);f.save_compose_form_local();$(this).dialog("close")}},{text:this.get_label("delete"),"class":"delete",
click:function(){f.remove_compose_data(e);$(this).dialog("close");k(d)}},{text:this.get_label("ignore"),click:function(){$(this).dialog("close");k(d)}}]);break}}};this.init_address_input_events=function(a,b){this.env.recipients_delimiter=this.env.recipients_separator+" ";a.keydown(function(a){return f.ksearch_keydown(a,this,b)}).attr({autocomplete:"off","aria-autocomplete":"list","aria-expanded":"false",role:"combobox"})};this.submit_messageform=function(a,b){var d=this.gui_objects.messageform;if(d){if(!b&&
this.env.is_sent)return this.show_popup_dialog(this.get_label("messageissent"),"",[{text:this.get_label("save"),"class":"mainaction",click:function(){f.submit_messageform(!1,!0);$(this).dialog("close")}},{text:this.get_label("cancel"),click:function(){$(this).dialog("close")}}]);if(this.mailvelope_editor)return this.mailvelope_submit_messageform(a,b);var e=this.set_busy(!0,a||b?"savingmessage":"sendingmessage"),g=this.spellcheck_lang(),h=[];$("li",this.gui_objects.attachmentlist).each(function(){h.push(this.id.replace(/^rcmfile/,
""))});$('input[name="_attachments"]',d).val(h.join());d.target="savetarget";d._draft.value=a?"1":"";d.action=this.add_url(d.action,"_unlock",e);d.action=this.add_url(d.action,"_lang",g);d.action=this.add_url(d.action,"_framed",1);b&&(d.action=this.add_url(d.action,"_saveonly",1));this.submit_timer=setTimeout(function(){f.set_busy(!1,null,e);f.display_message(f.get_label("requesttimedout"),"error")},1E3*this.env.request_timeout);d.submit()}};this.compose_recipient_select=function(a){var b,d,e=0;for(d=
0;d<a.selection.length;d++)b=a.selection[d],this.env.contactdata[b]&&e++;this.enable_command("add-recipient",e)};this.compose_add_recipient=function(a){a||(a=$(this.env.focused_field).filter(":visible"),a=a.length?a.attr("id").replace("_",""):"to");var b=[],d=$("#_"+a),e=this.env.recipients_delimiter;if(this.contact_list&&this.contact_list.selection.length)for(var g,f=0;f<this.contact_list.selection.length;f++)if((g=this.contact_list.selection[f])&&this.env.contactdata[g]&&(b.push(this.env.contactdata[g]),
"E"==g.charAt(0)&&0>this.env.contactdata[g].indexOf("@")&&d.length)){var k=g.substr(1);this.group2expand[k]={name:this.env.contactdata[g],input:d.get(0)};this.http_request("group-expand",{_source:this.env.source,_gid:k},!1)}b.length&&d.length&&(g=d.val(),f=RegExp(RegExp.escape(e)+"\\s*$"),g&&!f.test(g)&&(g+=e+" "),d.val(g+b.join(e+" ")+e+" ").change(),this.triggerEvent("add-recipient",{field:a,recipients:b}));return b.length};this.check_compose_input=function(a){var b=$("[name='_to']"),d=$("[name='_cc']"),
e=$("[name='_bcc']"),g=$("[name='_from']"),h=$("[name='_subject']");if("text"==g.prop("type")&&!rcube_check_email(g.val(),!0))return alert(this.get_label("nosenderwarning")),g.focus(),!1;d=b.val()?b.val():d.val()?d.val():e.val();if(!rcube_check_email(d.replace(/^\s+/,"").replace(/[\s,;]+$/,""),!0))return alert(this.get_label("norecipientwarning")),b.focus(),!1;for(var k in this.env.attachments)if("object"===typeof this.env.attachments[k]&&!this.env.attachments[k].complete)return alert(this.get_label("notuploadedwarning")),
!1;if(""==h.val()){var b={},l=$('<div class="prompt">').html('<div class="message">'+this.get_label("nosubjectwarning")+"</div>").appendTo(document.body),m=$("<input>").attr({type:"text",size:30}).val(this.get_label("nosubject")).appendTo(l),n=function(){h.val(m.val());l.dialog("close");f.command(a,{nocheck:!0})};b[this.get_label("sendmessage")]=function(){n($(this))};b[this.get_label("cancel")]=function(){h.focus();$(this).dialog("close")};l.dialog({modal:!0,resizable:!1,buttons:b,close:function(a,
b){$(this).remove()}});m.select().keydown(function(a){13==a.which&&n()});return!1}if(!this.mailvelope_editor&&!this.editor.get_content()&&!confirm(this.get_label("nobodywarning")))return this.editor.focus(),!1;this.editor.save();return!0};this.toggle_editor=function(a,b,d){b=this.editor.toggle(a.html,a.noconvert||!1);a.mode=a.html?"html":"plain";!b&&d&&(a.mode=a.html?"plain":"html",$(d.target).filter("select").val(a.mode));b&&$("input[name='_is_html']").val(a.html?1:0);return b};this.insert_response=
function(a){a=this.env.textresponses[a]?this.env.textresponses[a].text:null;if(!a)return!1;this.editor.replace(a)};this.save_response=function(){var a={},b=this.editor.get_content({selection:!0,format:"text",nosig:!0}),d='<form class="propform"><div class="prop block"><label>'+this.get_label("responsename")+'</label><input type="text" name="name" id="ffresponsename" size="40" /></div><div class="prop block"><label>'+this.get_label("responsetext")+'</label><textarea name="text" id="ffresponsetext" cols="40" rows="8"></textarea></div></form>';
a[this.get_label("save")]=function(a){a=$("#ffresponsename").val();var b=$("#ffresponsetext").val();if(!b)return $("#ffresponsetext").select(),!1;a||(a=b.substring(0,40));var d=f.display_message(f.get_label("savingresponse"),"loading");f.http_post("settings/responses",{_insert:1,_name:a,_text:b},d);$(this).dialog("close")};a[this.get_label("cancel")]=function(){$(this).dialog("close")};this.show_popup_dialog(d,this.get_label("newresponse"),a,{button_classes:["mainaction"]});$("#ffresponsetext").val(b);
$("#ffresponsename").select()};this.add_response_item=function(a){var b=a.key;this.env.textresponses[b]=a;if(this.gui_objects.responseslist){var d=$("<li>").appendTo(this.gui_objects.responseslist);$("<a>").addClass("insertresponse active").attr("href","#").attr("rel",b).attr("tabindex","0").html(this.quote_html(a.name)).appendTo(d).mousedown(function(a){return rcube_event.cancel(a)}).on("mouseup keypress",function(a){if("mouseup"==a.type||13==rcube_event.get_keycode(a))return f.command("insert-response",
$(this).attr("rel")),$(document.body).trigger("mouseup"),rcube_event.cancel(a)})}};this.edit_responses=function(){};this.delete_response=function(a){!a&&this.responses_list&&(a=this.responses_list.get_selection()[0]);a&&confirm(this.get_label("deleteresponseconfirm"))&&this.http_post("settings/delete-response",{_key:a},!1)};this.spellcheck_state=function(){var a=this.editor.spellcheck_state();$.each(this.buttons.spellcheck||[],function(b,d){$("#"+d.id)[a?"addClass":"removeClass"]("selected")});return a};
this.spellcheck_lang=function(){return this.editor.get_language()};this.spellcheck_lang_set=function(a){this.editor.set_language(a)};this.spellcheck_resume=function(a){this.editor.spellcheck_resume(a)};this.set_draft_id=function(a){if(a&&a!=this.env.draft_id){var b={task:"mail",action:""};(b=this.opener(!1,b)||this.opener(!0,b))&&b.env.mailbox==this.env.drafts_mailbox&&b.command("checkmail");this.env.draft_id=a;$("input[name='_draft_saveid']").val(a);window.frames.savetarget&&window.frames.savetarget.history&&
!this.draft_autosave_submit&&!this.mailvelope_editor&&window.frames.savetarget.history.back();this.draft_autosave_submit=!1}this.remove_compose_data(this.env.compose_id);this.compose_skip_unsavedcheck=!1};this.auto_save_start=function(){this.env.draft_autosave&&(this.draft_autosave_submit=!1,this.save_timer=setTimeout(function(){f.draft_autosave_submit=!0;f.command("savedraft")},1E3*this.env.draft_autosave));!this.local_save_timer&&window.localStorage&&this.env.save_localstorage&&(this.compose_type_activity=
this.compose_type_activity_last=0,$(document).keypress(function(a){f.compose_type_activity++}),this.local_save_timer=setInterval(function(){f.compose_type_activity>f.compose_type_activity_last&&(f.save_compose_form_local(),f.compose_type_activity_last=f.compose_type_activity)},5E3),$(window).on("unload",function(){f.env.server_error||f.remove_compose_data(f.env.compose_id)}));window.onbeforeunload||(window.onbeforeunload=function(){if(!f.compose_skip_unsavedcheck&&f.cmp_hash!=f.compose_field_hash())return f.get_label("notsentwarning")});
this.busy=!1};this.compose_field_hash=function(a){var b,d,e,g="",f=["to","cc","bcc","subject"];for(b=0;b<f.length;b++)if(e=$('[name="_'+f[b]+'"]').val())g+=e+":";g+=this.editor.get_content({refresh:!1});if(this.env.attachments)for(d in this.env.attachments)g+=d;this.mailvelope_editor&&(g+=";"+(new Date).getTime());a&&(this.cmp_hash=g);return g};this.save_compose_form_local=function(){if(this.env.save_localstorage){var a={session:this.env.session_id,changed:(new Date).getTime()},b=!0;this.editor.save();
this.env.draft_id&&(a.draft_id=this.env.draft_id);this.env.reply_msgid&&(a.reply_msgid=this.env.reply_msgid);$("input, select, textarea",this.gui_objects.messageform).each(function(d,e){switch(e.tagName.toLowerCase()){case "input":if("button"==e.type||"submit"==e.type||"hidden"==e.type&&"_is_html"!=e.name)break;a[e.name]="checkbox"!=e.type||e.checked?$(e).val():"";""!=a[e.name]&&"hidden"!=e.type&&(b=!1);break;case "select":a[e.name]=$("option:checked",e).val();break;default:a[e.name]=$(e).val(),""!=
a[e.name]&&(b=!1)}});if(!b){var d=this.local_storage_get_item("compose.index",[]),e=this.env.compose_id;0>$.inArray(e,d)&&d.push(e);this.local_storage_set_item("compose."+e,a,!0);this.local_storage_set_item("compose.index",d)}}};this.restore_compose_form=function(a,b){var d=this.local_storage_get_item("compose."+a,!0);d&&"object"==typeof d&&($.each(d,function(a,b){if("_"==a[0]){var d=$("*[name='"+a+"']");d[0]&&"checkbox"==d[0].type?d.prop("checked",""!=b):d.val(b)}}),("1"==d._is_html&&!b||"1"!=d._is_html&&
b)&&this.command("toggle-editor",{id:this.env.composebody,html:!b,noconvert:!0}))};this.remove_compose_data=function(a){var b=this.local_storage_get_item("compose.index",[]);0<=$.inArray(a,b)&&(this.local_storage_remove_item("compose."+a),this.local_storage_set_item("compose.index",$.grep(b,function(b,e){return b!=a})))};this.clear_compose_data=function(){var a,b=this.local_storage_get_item("compose.index",[]);for(a=0;a<b.length;a++)this.local_storage_remove_item("compose."+b[a]);this.local_storage_remove_item("compose.index")};
this.change_identity=function(a,b){if(!a||!a.options)return!1;b||(b=this.env.show_sig);var d=a.options[a.selectedIndex].value,e=this.env.identity,g=this.env.recipients_separator,h=RegExp.escape(g);this.env.signatures&&this.env.signatures[d]?(this.enable_command("insert-sig",!0),this.env.compose_commands.push("insert-sig")):this.enable_command("insert-sig",!1);if(!this.env.identities_initialized&&(this.env.identities_initialized=!0,this.env.show_sig_later&&(this.env.show_sig=!0),this.env.opened_extwin))return;
$.each(["replyto","bcc"],function(){var a,b=e&&f.env.identities[e]?f.env.identities[e][this]:"",m=d&&f.env.identities[d]?f.env.identities[d][this]:"",n=$('[name="_'+this+'"]'),p=n.val();b&&p&&(a=RegExp("\\s*"+RegExp.escape(b)+"\\s*"),p=p.replace(a,""));a=RegExp(h+"\\s*"+h,"g");p=String(p).replace(a,g);a=RegExp("^[\\s"+h+"]+");p=p.replace(a,"");m&&-1==p.indexOf(m)&&-1==p.indexOf(m.replace(/"/g,""))&&(p&&(a=RegExp("["+h+"\\s]+$"),p=p.replace(a,"")+g+" "),p+=m+g+" ");(b||m)&&n.val(p).change()});this.editor.change_signature(d,
b);this.env.identity=d;this.triggerEvent("change_identity");return!0};this.upload_file=function(a,b,d){if(a){var e=0,g=0;$("input[type=file]",a).each(function(a,b){var d=b.files?b.files.length:b.value?1:0;if(b.files)for(a=0;a<d;a++)e+=b.files[a].size;g+=d});if(g){if(this.env.max_filesize&&this.env.filesizeerror&&e>this.env.max_filesize)return this.display_message(this.env.filesizeerror,"error"),!1;b=this.async_upload_form(a,b||"upload",function(a){var b,e="";try{this.contentDocument?b=this.contentDocument:
this.contentWindow&&(b=this.contentWindow.document),e=b.childNodes[1].innerHTML}catch(g){}e.match(/add2attachment/)||bw.opera&&(!f.env.uploadframe||f.env.uploadframe!=a.data.ts)||(e.match(/display_message/)||f.display_message(f.get_label("fileuploaderror"),"error"),f.remove_from_attachment_list(a.data.ts),d&&f.set_busy(!1,null,d));bw.opera&&(f.env.uploadframe=a.data.ts)});var h="<span>"+this.get_label("uploading"+(1<g?"many":""))+"</span>",k=b.replace(/^rcmupload/,"");this.add2attachment_list(k,{name:"",
html:h,classname:"uploading",frame:b,complete:!1});this.env.upload_progress_time&&this.upload_progress_start("upload",k);this.gui_objects.attachmentform=a;return!0}}};this.add2attachment_list=function(a,b,d){d&&this.triggerEvent("fileuploaded",{name:a,attachment:b,id:d});this.env.attachments||(this.env.attachments={});d&&this.env.attachments[d]&&delete this.env.attachments[d];this.env.attachments[a]=b;if(!this.gui_objects.attachmentlist)return!1;!b.complete&&this.env.loadingicon&&(b.html='<img src="'+
this.env.loadingicon+'" alt="" class="uploading" />'+b.html);!b.complete&&b.frame&&(b.html='<a title="'+this.get_label("cancel")+'" onclick="return rcmail.cancel_attachment_upload(\''+a+"', '"+b.frame+'\');" href="#cancelupload" class="cancelupload">'+(this.env.cancelicon?'<img src="'+this.env.cancelicon+'" alt="'+this.get_label("cancel")+'" />':this.get_label("cancel"))+"</a>"+b.html);var e,g=$("<li>");g.attr("id",a).addClass(b.classname).html(b.html).on("mouseover",function(){rcube_webmail.long_subject_title_ex(this)});
d&&(e=document.getElementById(d))?g.replaceAll(e):g.appendTo(this.gui_objects.attachmentlist);a=$(this.gui_objects.attachmentlist).attr("data-tabindex")||"0";g.find("a").attr("tabindex",a);return!0};this.remove_from_attachment_list=function(a){this.env.attachments&&(delete this.env.attachments[a],$("#"+a).remove())};this.remove_attachment=function(a){a&&this.env.attachments[a]&&this.http_post("remove-attachment",{_id:this.env.compose_id,_file:a});return!0};this.cancel_attachment_upload=function(a,
b){if(!a||!b)return!1;this.remove_from_attachment_list(a);$("iframe[name='"+b+"']").remove();return!1};this.upload_progress_start=function(a,b){setTimeout(function(){f.http_request(a,{_progress:b})},1E3*this.env.upload_progress_time)};this.upload_progress_update=function(a){var b=$("#"+a.name+" > span");b.length&&a.text&&(b.text(a.text),a.done||this.upload_progress_start(a.action,a.name))};this.add_contact=function(a){a&&this.http_post("addcontact",{_address:a});return!0};this.qsearch=function(a){if(""!=
a){var b=this.set_busy(!0,"searching");a=this.search_params(a);var d="compose"==this.env.action&&this.contact_list?"search-contacts":"search";this.message_list?this.clear_message_list():this.contact_list&&this.list_contacts_clear();this.env.source&&(a._source=this.env.source);this.env.group&&(a._gid=this.env.group);this.env.current_page=1;a=this.http_request(d,a,b);this.env.qsearch={lock:b,request:a};this.enable_command("set-listmode",this.env.threads&&"base"==(this.env.search_scope||"base"));return!0}return!1};
this.continue_search=function(a){var b=this.set_busy(!0,"stillsearching");setTimeout(function(){var d=f.search_params();d._continue=a;f.env.qsearch={lock:b,request:f.http_request("search",d,b)}},100)};this.search_params=function(a,b){var d,e={},g=[],f=this.env.search_mods,k=this.env.search_scope||"base",l="all"==k?"*":this.env.mailbox;!b&&this.gui_objects.search_filter&&(b=this.gui_objects.search_filter.value);!a&&this.gui_objects.qsearchbox&&(a=this.gui_objects.qsearchbox.value);b&&(e._filter=b);
this.gui_objects.search_interval&&(e._interval=$(this.gui_objects.search_interval).val());if(a&&(e._q=a,f&&this.message_list&&(f=f[l]||f["*"]),f)){for(d in f)g.push(d);e._headers=g.join(",")}k&&(e._scope=k);l&&"all"!=k&&(e._mbox=l);return e};this.reset_search_filter=function(){this.filter_disabled=!0;this.gui_objects.search_filter&&$(this.gui_objects.search_filter).val("ALL").change();this.filter_disabled=!1};this.reset_qsearch=function(a){this.gui_objects.qsearchbox&&(this.gui_objects.qsearchbox.value=
"");this.gui_objects.search_interval&&$(this.gui_objects.search_interval).val("");this.env.qsearch&&this.abort_request(this.env.qsearch);a&&(this.env.search_scope="base",this.reset_search_filter());this.env.qsearch=null;this.env.search_request=null;this.env.search_id=null;this.enable_command("set-listmode",this.env.threads)};this.set_searchscope=function(a){var b=this.env.search_scope;this.env.search_scope=a;a!=b&&this.env.search_request&&(!this.qsearch(this.gui_objects.qsearchbox.value)&&this.env.search_filter&&
"ALL"!=this.env.search_filter&&this.filter_mailbox(this.env.search_filter),"all"!=a&&this.select_folder(this.env.mailbox,"",!0))};this.set_searchinterval=function(a){var b=this.env.search_interval;this.env.search_interval=a;a!=b&&this.env.search_request&&(!this.qsearch(this.gui_objects.qsearchbox.value)&&this.env.search_filter&&"ALL"!=this.env.search_filter&&this.filter_mailbox(this.env.search_filter),a&&this.select_folder(this.env.mailbox,"",!0))};this.set_searchmods=function(a){var b=this.env.mailbox;
"all"==(this.env.search_scope||"base")&&(b="*");this.env.search_mods||(this.env.search_mods={});b&&(this.env.search_mods[b]=a)};this.is_multifolder_listing=function(){return void 0!==this.env.multifolder_listing?this.env.multifolder_listing:this.env.search_request&&"base"!=(this.env.search_scope||"base")};this.sent_successfully=function(a,b,d,e){this.display_message(b,a);this.compose_skip_unsavedcheck=!0;if(this.env.extwin){e||this.lock_form(this.gui_objects.messageform);var g={task:"mail",action:""};
if(g=this.opener(!1,g)||this.opener(!0,g))g.display_message(b,a),d&&0<=$.inArray(g.env.mailbox,d)&&g.command("checkmail");e||setTimeout(function(){window.close()},1E3)}else e||setTimeout(function(){f.list_mailbox()},500);e&&(this.env.is_sent=!0)};this.ksearch_keydown=function(a,b,d){this.ksearch_timer&&clearTimeout(this.ksearch_timer);var e=rcube_event.get_keycode(a),g=rcube_event.get_modifier(a);switch(e){case 38:case 40:if(!this.ksearch_visible())return;b=38==e?1:0;e=document.getElementById("rcmkSearchItem"+
this.ksearch_selected);e||(e=this.ksearch_pane.__ul.firstChild);e&&this.ksearch_select(b?e.previousSibling:e.nextSibling);return rcube_event.cancel(a);case 9:if(g==SHIFT_KEY||!this.ksearch_visible()){this.ksearch_hide();return}case 13:if(!this.ksearch_visible())return!1;this.insert_recipient(this.ksearch_selected);this.ksearch_hide();return rcube_event.cancel(a);case 27:this.ksearch_hide();return;case 37:case 39:return}this.ksearch_timer=setTimeout(function(){f.ksearch_get_results(d)},200);this.ksearch_input=
b;return!0};this.ksearch_visible=function(){return null!==this.ksearch_selected&&void 0!==this.ksearch_selected&&this.ksearch_value};this.ksearch_select=function(a){this.ksearch_pane&&a&&this.ksearch_pane.find("li.selected").removeClass("selected").removeAttr("aria-selected");a&&($(a).addClass("selected").attr("aria-selected","true"),this.ksearch_selected=a._rcm_id,$(this.ksearch_input).attr("aria-activedescendant","rcmkSearchItem"+this.ksearch_selected))};this.insert_recipient=function(a){if(null!==
a&&this.env.contacts[a]&&this.ksearch_input){var b=this.ksearch_input.value,d=this.get_caret_pos(this.ksearch_input),d=b.lastIndexOf(this.ksearch_value,d),e=!1,g="",f=b.substring(0,d),b=b.substring(d+this.ksearch_value.length,b.length);this.ksearch_destroy();"object"!==typeof this.env.contacts[a]||"group"!=this.env.contacts[a].type||this.env.contacts[a].email?"object"===typeof this.env.contacts[a]&&this.env.contacts[a].name?(g=this.env.contacts[a].name+this.env.recipients_delimiter,e=!0):"string"===
typeof this.env.contacts[a]&&(g=this.env.contacts[a]+this.env.recipients_delimiter,e=!0):(g+=this.env.contacts[a].name+this.env.recipients_delimiter,this.group2expand[this.env.contacts[a].id]=$.extend({input:this.ksearch_input},this.env.contacts[a]),this.http_request("mail/group-expand",{_source:this.env.contacts[a].source,_gid:this.env.contacts[a].id},!1));this.ksearch_input.value=f+g+b;this.set_caret_pos(this.ksearch_input,d+g.length);e&&(this.triggerEvent("autocomplete_insert",{field:this.ksearch_input,
insert:g,data:this.env.contacts[a]}),this.compose_type_activity++)}};this.replace_group_recipients=function(a,b){this.group2expand[a]&&(this.group2expand[a].input.value=this.group2expand[a].input.value.replace(this.group2expand[a].name,b),this.triggerEvent("autocomplete_insert",{field:this.group2expand[a].input,insert:b}),this.group2expand[a]=null,this.compose_type_activity++)};this.ksearch_get_results=function(a){var b=this.ksearch_input?this.ksearch_input.value:null;if(null!==b){this.ksearch_pane&&
this.ksearch_pane.is(":visible")&&this.ksearch_pane.hide();var d=this.get_caret_pos(this.ksearch_input),e=b.lastIndexOf(this.env.recipients_separator,d-1),b=b.substring(e+1,d),e=this.env.autocomplete_min_length,d=this.ksearch_data,b=$.trim(b);b!=this.ksearch_value&&(this.ksearch_destroy(),b.length&&b.length<e?this.ksearch_info||(this.ksearch_info=this.display_message(this.get_label("autocompletechars").replace("$min",e))):(e=this.ksearch_value,this.ksearch_value=b,!b.length||e&&e.length&&b.startsWith(e)&&
(!d||0>=d.num)&&this.env.contacts&&!this.env.contacts.length||(d=a&&a.sources?a.sources:[""],this.ksearch_data={id:this.multi_thread_http_request({items:d,threads:a&&a.threads?a.threads:1,action:a&&a.action?a.action:"mail/autocomplete",postdata:{_search:b,_source:"%s"},lock:this.display_message(this.get_label("searching"),"loading")}),sources:d.slice(),num:d.length})))}};this.ksearch_query_results=function(a,b,d){this.multi_thread_http_response(a,d);if(this.ksearch_value&&(!this.ksearch_input||b==
this.ksearch_value)){var e,g,h,k,l,m=this.ksearch_value,n=this.env.autocomplete_max?this.env.autocomplete_max:15;this.ksearch_pane||(b=$("<ul>"),this.ksearch_pane=$("<div>").attr("id","rcmKSearchpane").attr("role","listbox").css({position:"absolute","z-index":3E4}).append(b).appendTo(document.body),this.ksearch_pane.__ul=b[0]);b=this.ksearch_pane.__ul;d&&this.ksearch_pane.data("reqid")==d?n-=b.childNodes.length:(this.ksearch_pane.data("reqid",d),b.innerHTML="",this.env.contacts=[],e=$(this.ksearch_input).offset(),
this.ksearch_pane.css({left:e.left+"px",top:e.top+this.ksearch_input.offsetHeight+"px",display:"none"}));if(a&&(h=a.length))for(e=0;e<h&&0<n;e++)k="object"===typeof a[e]?a[e].display||a[e].name:a[e],l="object"===typeof a[e]?a[e].type:"",g=e+this.env.contacts.length,$("<li>").attr("id","rcmkSearchItem"+g).attr("role","option").html('<i class="icon"></i>'+this.quote_html(k.replace(RegExp("("+RegExp.escape(m)+")","ig"),"##$1%%")).replace(/##([^%]+)%%/g,"<b>$1</b>")).addClass(l||"").appendTo(b).mouseover(function(){f.ksearch_select(this)}).mouseup(function(){f.ksearch_click(this)}).get(0)._rcm_id=
g,n-=1;b.childNodes.length&&($(this.ksearch_input).attr("aria-haspopup","true").attr("aria-expanded","true").attr("aria-owns","rcmKSearchpane"),this.ksearch_pane.show(),this.env.contacts.length||this.ksearch_select($("li:first",b).get(0)));h&&(this.env.contacts=this.env.contacts.concat(a));this.ksearch_data.id==d&&this.ksearch_data.num--}};this.ksearch_click=function(a){this.ksearch_input&&this.ksearch_input.focus();this.insert_recipient(a._rcm_id);this.ksearch_hide()};this.ksearch_blur=function(){this.ksearch_timer&&
clearTimeout(this.ksearch_timer);this.ksearch_input=null;this.ksearch_hide()};this.ksearch_hide=function(){this.ksearch_selected=null;this.ksearch_value="";this.ksearch_pane&&this.ksearch_pane.hide();$(this.ksearch_input).attr("aria-haspopup","false").attr("aria-expanded","false").removeAttr("aria-activedescendant").removeAttr("aria-owns");this.ksearch_destroy()};this.ksearch_destroy=function(){this.ksearch_data&&this.multi_thread_request_abort(this.ksearch_data.id);this.ksearch_info&&this.hide_message(this.ksearch_info);
this.ksearch_msg&&this.hide_message(this.ksearch_msg);this.ksearch_msg=this.ksearch_info=this.ksearch_data=null};this.contactlist_keypress=function(a){a.key_pressed==a.DELETE_KEY&&this.command("delete")};this.contactlist_select=function(a){this.preview_timer&&clearTimeout(this.preview_timer);var b,d,e,g,h=!1,k=a.selection.length,l=this.env.source?this.env.address_sources[this.env.source]:null;this.env.contentframe&&(d=a.get_single_selection())?this.preview_timer=setTimeout(function(){f.load_contact(d,
"show")},200):this.env.contentframe&&this.show_contentframe(!1);if(k){a.draggable=!1;this.env.selection_sources=[];l&&this.env.selection_sources.push(this.env.source);for(b in a.selection)g=a.data[a.selection[b]],l?h=h||!l.readonly&&!g.readonly:(e=String(a.selection[b]).replace(/^[^-]+-/,""))&&this.env.address_sources[e]&&(h=h||!this.env.address_sources[e].readonly&&!g.readonly,this.env.selection_sources.push(e)),"group"!=g._type&&(a.draggable=!0);this.env.selection_sources=$.unique(this.env.selection_sources)}this.enable_command("group-remove-selected",
this.env.group&&k&&h);this.enable_command("compose",this.env.group||k);this.enable_command("print",1==k);this.enable_command("export-selected","copy",0<k);this.enable_command("edit",d&&h);this.enable_command("delete","move",k&&h);return!1};this.list_contacts=function(a,b,d){var e,g={},f=void 0===a&&void 0===b&&void 0===d,k=window;a||(a=this.env.source);f&&(b=this.env.group);if(d&&this.current_page==d&&a==this.env.source&&b==this.env.group)return!1;a!=this.env.source?(d=this.env.current_page=1,this.reset_qsearch()):
f||b==this.env.group||(d=this.env.current_page=1);this.env.search_id?e="S"+this.env.search_id:this.env.search_request||(e=b?"G"+a+b:a);this.env.source=a;this.env.group=b;f=$.inArray(this.env.group,this.env.address_group_stack);this.env.address_group_stack=0>f?[]:this.env.address_group_stack.slice(0,f);this.env.group?(this.env.address_group_stack.push(this.env.group),e="G"+a+this.env.address_group_stack[0]):this.gui_objects.addresslist_title&&$(this.gui_objects.addresslist_title).html(this.get_label("contacts"));
this.env.search_id||this.select_folder(e,"",!0);if(this.gui_objects.contactslist)this.list_contacts_remote(a,b,d);else{if(e=this.get_frame_window(this.env.contentframe))k=e,g._framed=1;b&&(g._gid=b);d&&(g._page=d);a&&(g._source=a);this.env.search_request&&(g._search=this.env.search_request);this.set_busy(!0,"loading");this.location_href(g,k)}};this.list_contacts_remote=function(a,b,d){this.list_contacts_clear();var e={},g=this.set_busy(!0,"loading");a&&(e._source=a);d&&(e._page=d);b&&(e._gid=b);this.env.source=
a;this.env.group=b;this.env.search_request&&(e._search=this.env.search_request);this.http_request("mail"==this.env.task?"list-contacts":"list",e,g)};this.list_contacts_clear=function(){this.contact_list.data={};this.contact_list.clear(!0);this.show_contentframe(!1);this.enable_command("delete","move","copy","print",!1);this.enable_command("compose",this.env.group)};this.set_group_prop=function(a){if(this.gui_objects.addresslist_title){var b=$(this.gui_objects.addresslist_title).html("");1<this.env.address_group_stack.length&&
($('<a href="#list">...</a>').attr("title",this.get_label("uponelevel")).addClass("poplink").appendTo(b).click(function(a){return f.command("popgroup","",this)}),b.append("&nbsp;&raquo;&nbsp;"));b.append($("<span>").text(a.name))}this.triggerEvent("groupupdate",a)};this.load_contact=function(a,b,d){var e,g={},f=window,k=this.contact_list?this.contact_list.data[a]:null;if(e=this.get_frame_window(this.env.contentframe))g._framed=1,f=e,this.show_contentframe(!0),a||this.contact_list.clear_selection(),
this.enable_command("compose",k&&k.email),this.enable_command("export-selected","print",k&&"group"!=k._type);else if(d)return!1;!b||!a&&"add"!=b||this.drag_active||(this.env.group&&(g._gid=this.env.group),this.env.search_request&&(g._search=this.env.search_request),g._action=b,g._source=this.env.source,g._cid=a,this.location_href(g,f,!0));return!0};this.group_member_change=function(a,b,d,e){"add"!=a&&(a="del");var g=this.get_label("add"==a?"addingmember":"removingmember"),g=this.display_message(g,
"loading");this.http_post("group-"+a+"members",{_cid:b,_source:d,_gid:e},g)};this.contacts_drag_menu=function(a,b){var d="group"==b.type?b.source:b.id,e=this.env.source;if(!this.env.address_sources[d]||this.env.address_sources[d].readonly)return!0;""==e&&1==this.env.selection_sources.length&&(e=this.env.selection_sources[0]);return"group"==b.type&&d==e?(e=this.contact_list.get_selection().join(","),this.group_member_change("add",e,d,b.id),!0):this.commands.move||rcube_event.get_modifier(a)==SHIFT_KEY?
this.drag_menu(a,b):(this.copy_contacts(b),!0)};this.copy_contacts=function(a){var b="group"==a.type?a.source:a.id,d=this.env.source,e=this.env.group?this.env.group:"",g=this.contact_list.get_selection().join(",");g&&this.env.address_sources[b]&&!this.env.address_sources[b].readonly&&(""==d&&1==this.env.selection_sources.length&&(d=this.env.selection_sources[0]),"group"==a.type?b!=d&&(d=this.display_message(this.get_label("copyingcontact"),"loading"),a={_cid:g,_source:this.env.source,_to:b,_togid:a.id,
_gid:e},this.http_post("copy",a,d)):a.id!=d&&(d=this.display_message(this.get_label("copyingcontact"),"loading"),a={_cid:g,_source:this.env.source,_to:a.id,_gid:e},this.http_post("copy",a,d)))};this.move_contacts=function(a){var b="group"==a.type?a.source:a.id,d=this.env.source;this.env.address_sources[b]&&!this.env.address_sources[b].readonly&&(""==d&&1==this.env.selection_sources.length&&(d=this.env.selection_sources[0]),"group"==a.type?b!=d&&this._with_selected_contacts("move",{_to:b,_togid:a.id}):
a.id!=d&&this._with_selected_contacts("move",{_to:a.id}))};this.delete_contacts=function(){if(this.env.source&&this.env.address_sources[this.env.source].undelete||confirm(this.get_label("deletecontactconfirm")))return this._with_selected_contacts("delete")};this._with_selected_contacts=function(a,b){var d=this.contact_list?this.contact_list.get_selection():[];if(d.length||this.env.cid){var e,g=[],f=this.display_message(this.get_label("delete"==a?"contactdeleting":"movingcontact"),"loading");if(this.env.cid)g.push(this.env.cid);
else{for(e=0;e<d.length;e++)id=d[e],g.push(id),this.contact_list.remove_row(id,e==d.length-1);1==d.length&&this.show_contentframe(!1)}b||(b={});b._source=this.env.source;b._from=this.env.action;b._cid=g.join(",");this.env.group&&(b._gid=this.env.group);this.env.search_request&&(b._search=this.env.search_request);this.http_post(a,b,f);return!0}};this.update_contact_row=function(a,b,d,e,g){var f=this.contact_list;a=this.html_identifier(a);f.rows[a]||(a=a+"-"+e,d&&(d=d+"-"+e));f.update_row(a,b,d,!0);
f.data[a]=g};this.add_contact_row=function(a,b,d,e){if(!this.gui_objects.contactslist)return!1;var g,f=this.contact_list,k={cols:[]};k.id="rcmrow"+this.html_identifier(a);k.className="contact "+(d||"");f.in_selection(a)&&(k.className+=" selected");for(g in b)d={},d.className=String(g).toLowerCase(),d.innerHTML=b[g],k.cols.push(d);f.data[a]=e;f.insert_row(k);this.enable_command("export",0<f.rowcount)};this.init_contact_form=function(){var a;if(this.env.coltypes)for(a in this.set_photo_actions($("#ff_photo").val()),
this.env.coltypes)this.init_edit_field(a,null);$(".contactfieldgroup .row a.deletebutton").click(function(){f.delete_edit_field(this);return!1});$("select.addfieldmenu").change(function(){f.insert_edit_field($(this).val(),$(this).attr("rel"),this);this.selectedIndex=0});$.datepicker&&this.env.date_format&&($.datepicker.setDefaults({dateFormat:this.env.date_format,changeMonth:!0,changeYear:!0,yearRange:"-120:+10",showOtherMonths:!0,selectOtherMonths:!0}),$("input.datepicker").datepicker());"search"==
this.env.action&&$(this.gui_objects.editform).append($('<input type="submit">').hide()).submit(function(){$("input.mainaction").click();return!1})};this.group_create=function(){var a=$("<input>").attr("type","text"),b=$("<label>").text(this.get_label("namex")).append(a);this.show_popup_dialog(b,this.get_label("newgroup"),[{text:this.get_label("save"),"class":"mainaction",click:function(){var b;(b=a.val())&&f.http_post("group-create",{_source:f.env.source,_name:b},f.set_busy(!0,"loading"));$(this).dialog("close")}}])};
this.group_rename=function(){if(this.env.group){var a=this.env.contactgroups["G"+this.env.source+this.env.group].name,b=$("<input>").attr("type","text").val(a),d=$("<label>").text(this.get_label("namex")).append(b);this.show_popup_dialog(d,this.get_label("grouprename"),[{text:this.get_label("save"),"class":"mainaction",click:function(){var d;(d=b.val())&&d!=a&&f.http_post("group-rename",{_source:f.env.source,_gid:f.env.group,_name:d},f.set_busy(!0,"loading"));$(this).dialog("close")}}],{open:function(){b.select()}})}};
this.group_delete=function(){if(this.env.group&&confirm(this.get_label("deletegroupconfirm"))){var a=this.set_busy(!0,"groupdeleting");this.http_post("group-delete",{_source:this.env.source,_gid:this.env.group},a)}};this.remove_group_item=function(a){var b="G"+a.source+a.id;this.treelist.remove(b)&&(this.triggerEvent("group_delete",{source:a.source,id:a.id}),delete this.env.contactfolders[b],delete this.env.contactgroups[b]);this.list_contacts(a.source,0)};this.group_remove_selected=function(){this.http_post("group-delmembers",
{_cid:this.contact_list.selection,_source:this.env.source,_gid:this.env.group})};this.remove_group_contacts=function(a){if(void 0!==this.env.group&&this.env.group===a.gid){var b=this.contact_list.get_selection();for(a=0;a<b.length;a++)id=b[a],this.contact_list.remove_row(id,a==b.length-1)}};this.insert_contact_group=function(a){a.type="group";var b="G"+a.source+a.id,d=$("<a>").attr("href","#").attr("rel",a.source+":"+a.id).click(function(){return f.command("listgroup",a,this)}).html(a.name);this.env.contactfolders[b]=
this.env.contactgroups[b]=a;this.treelist.insert({id:b,html:d,classes:["contactgroup"]},a.source,"contactgroup");this.triggerEvent("group_insert",{id:a.id,source:a.source,name:a.name,li:this.treelist.get_item(b)})};this.update_contact_group=function(a){var b="G"+a.source+a.id,d={};if(a.newid){var e="G"+a.source+a.newid,g=$.extend({},a);this.env.contactfolders[e]=this.env.contactfolders[b];this.env.contactfolders[e].id=a.newid;this.env.group=a.newid;delete this.env.contactfolders[b];delete this.env.contactgroups[b];
g.id=a.newid;g.type="group";d.id=e;d.html=$("<a>").attr("href","#").attr("rel",a.source+":"+a.newid).click(function(){return f.command("listgroup",g,this)}).html(a.name)}else $(this.treelist.get_item(b)).children().first().html(a.name),this.env.contactfolders[b].name=this.env.contactgroups[b].name=a.name;this.treelist.update(b,d,!0);this.triggerEvent("group_update",{id:a.id,source:a.source,name:a.name,li:this.treelist.get_item(b),newid:a.newid})};this.update_group_commands=function(){var a=""!=this.env.source?
this.env.address_sources[this.env.source]:null,a=a&&a.groups&&!a.readonly;this.enable_command("group-create",a);this.enable_command("group-rename","group-delete",a&&this.env.group)};this.init_edit_field=function(a,b){var d=this.env.coltypes[a].label;b||(b=$(".ff_"+a));d&&b.placeholder(d)};this.insert_edit_field=function(a,b,d){var e=$("#ff_"+a);if(e.length)e.show().focus(),$(d).children('option[value="'+a+'"]').prop("disabled",!0);else{$(".ff_"+a);e=$("#contactsection"+b+" .contactcontroller"+a);
if(!e.length){b=$("#contactsection"+b);var g=$(".contactfieldgroup",b).last(),e=$("<fieldset>").addClass("contactfieldgroup contactcontroller"+a);g.length?e.insertAfter(g):b.prepend(e)}if(e.length&&"FIELDSET"==e.get(0).nodeName){var h;b=this.env.coltypes[a];var k="ff_"+a+(b.count||0),g=$("<div>").addClass("row"),l=$("<div>").addClass("contactfieldcontent data"),m=$("<div>").addClass("contactfieldlabel label");b.subtypes_select?m.html(b.subtypes_select):m.html('<label for="'+k+'">'+b.label+"</label>");
var n=1!=b.limit?"[]":"";if("text"==b.type||"date"==b.type)h=$("<input>").addClass("ff_"+a).attr({type:"text",name:"_"+a+n,size:b.size,id:k}).appendTo(l),this.init_edit_field(a,h),"date"==b.type&&$.datepicker&&h.datepicker();else if("textarea"==b.type)h=$("<textarea>").addClass("ff_"+a).attr({name:"_"+a+n,cols:b.size,rows:b.rows,id:k}).appendTo(l),this.init_edit_field(a,h);else if("composite"==b.type){var p,q,s=[],t=[];if(h=this.env[a+"_template"])for(k=0;k<h.length;k++)s.push(h[k][1]),t.push(h[k][2]);
else for(p in b.childs)s.push(p);for(k=0;k<s.length;k++)p=s[k],h=b.childs[p],h=$("<input>").addClass("ff_"+p).attr({type:"text",name:"_"+p+n,size:h.size}).appendTo(l),l.append(t[k]||" "),this.init_edit_field(p,h),q||(q=h);h=q}else if("select"==b.type){h=$("<select>").addClass("ff_"+a).attr({name:"_"+a+n,id:k}).appendTo(l);var v=h.attr("options");v[v.length]=new Option("---","");b.options&&$.each(b.options,function(a,b){v[v.length]=new Option(b,a)})}h&&($('<a href="#del"></a>').addClass("contactfieldbutton deletebutton").attr({title:this.get_label("delete"),
rel:a}).html(this.env.delbutton).click(function(){f.delete_edit_field(this);return!1}).appendTo(l),g.append(m).append(l).appendTo(e.show()),h.first().focus(),b.count||(b.count=0),++b.count==b.limit&&b.limit&&$(d).children('option[value="'+a+'"]').prop("disabled",!0))}}};this.delete_edit_field=function(a){var b=$(a).attr("rel"),d=this.env.coltypes[b],e=$(a).parents("fieldset.contactfieldgroup"),g=e.parent().find("select.addfieldmenu");0>=--d.count&&d.visible?$(a).parent().children("input").val("").blur():
($(a).parents("div.row").remove(),e.children("div.row").length||e.hide());g.length&&(a=g.children('option[value="'+b+'"]'),a.length?a.prop("disabled",!1):$("<option>").attr("value",b).html(d.label).appendTo(g),g.show())};this.upload_contact_photo=function(a){a&&a.elements._photo.value&&(this.async_upload_form(a,"upload-photo",function(a){f.set_busy(!1,null,f.file_upload_id)}),this.file_upload_id=this.set_busy(!0,"uploading"))};this.replace_contact_photo=function(a){var b="-del-"==a?this.env.photo_placeholder:
this.env.comm_path+"&_action=photo&_source="+this.env.source+"&_cid="+(this.env.cid||0)+"&_photo="+a;this.set_photo_actions(a);$(this.gui_objects.contactphoto).children("img").attr("src",b)};this.photo_upload_end=function(){this.set_busy(!1,null,this.file_upload_id);delete this.file_upload_id};this.set_photo_actions=function(a){var b,d=this.buttons["upload-photo"];for(b=0;d&&b<d.length;b++)$("a#"+d[b].id).html(this.get_label("-del-"==a?"addphoto":"replacephoto"));$("#ff_photo").val(a);this.enable_command("upload-photo",
this.env.coltypes.photo?!0:!1);this.enable_command("delete-photo",this.env.coltypes.photo&&"-del-"!=a)};this.advanced_search=function(){var a,b={_form:1,_action:"search"},d=window;if(a=this.get_frame_window(this.env.contentframe))b._framed=1,d=a,this.contact_list.clear_selection();this.location_href(b,d,!0);return!0};this.unselect_directory=function(){this.select_folder("");this.enable_command("search-delete",!1)};this.insert_saved_search=function(a,b){var d="S"+b,e=$("<a>").attr("href","#").attr("rel",
b).click(function(){return f.command("listsearch",b,this)}).html(a),g={name:a,id:b};this.savedsearchlist.insert({id:d,html:e,classes:["contactsearch"]},null,"contactsearch");this.select_folder(d,"",!0);this.enable_command("search-delete",!0);this.env.search_id=b;this.triggerEvent("abook_search_insert",g)};this.search_create=function(){var a=$("<input>").attr("type","text"),b=$("<label>").text(this.get_label("namex")).append(a);this.show_popup_dialog(b,this.get_label("searchsave"),[{text:this.get_label("save"),
"class":"mainaction",click:function(){var b;(b=a.val())&&f.http_post("search-create",{_search:f.env.search_request,_name:b},f.set_busy(!0,"loading"));$(this).dialog("close")}}])};this.search_delete=function(){if(this.env.search_request){var a=this.set_busy(!0,"savedsearchdeleting");this.http_post("search-delete",{_sid:this.env.search_id},a)}};this.remove_search_item=function(a){this.savedsearchlist.remove("S"+a)&&this.triggerEvent("search_delete",{id:a,li:void 0});this.env.search_id=null;this.env.search_request=
null;this.list_contacts_clear();this.reset_qsearch();this.enable_command("search-delete","search-create",!1)};this.listsearch=function(a){var b=this.set_busy(!0,"searching");this.contact_list&&this.list_contacts_clear();this.reset_qsearch();this.savedsearchlist?(this.treelist.select(""),this.savedsearchlist.select("S"+a)):this.select_folder("S"+a,"",!0);this.env.current_page=1;this.http_request("search",{_sid:a},b)};this.section_select=function(a){var b;b=a.get_single_selection();a=window;var d={_action:"edit-prefs",
_section:b};if(b){if(b=this.get_frame_window(this.env.contentframe))d._framed=1,a=b;this.location_href(d,a,!0)}return!0};this.identity_select=function(a){var b;if(b=a.get_single_selection())this.enable_command("delete",1<a.rowcount&&2>this.env.identities_level),this.load_identity(b,"edit-identity")};this.load_identity=function(a,b){if("edit-identity"==b&&(!a||a==this.env.iid))return!1;var d,e=window,g={_action:b,_iid:a};if(d=this.get_frame_window(this.env.contentframe))g._framed=1,e=d;(a||"add-identity"==
b)&&this.location_href(g,e,!0);return!0};this.delete_identity=function(a){var b=this.identity_list.get_selection();if(b.length||this.env.iid)a||(a=this.env.iid?this.env.iid:b[0]),a&&confirm(this.get_label("deleteidentityconfirm"))&&this.http_post("settings/delete-identity",{_iid:a},!0)};this.update_identity_row=function(a,b,d){var e=this.identity_list;a=this.html_identifier(a);d?(e.insert_row({id:"rcmrow"+a,cols:[{className:"mail",innerHTML:b}]}),e.select(a)):e.update_row(a,[b])};this.update_response_row=
function(a,b){var d=this.responses_list;d&&b?d.update_row(b,[a.name],a.key,!0):d&&(d.insert_row({id:"rcmrow"+a.key,cols:[{className:"name",innerHTML:a.name}]}),d.select(a.key))};this.remove_response=function(a){var b;this.env.textresponses&&delete this.env.textresponses[a];this.responses_list&&(this.responses_list.remove_row(a),this.env.contentframe&&(b=this.get_frame_window(this.env.contentframe))&&(b.location.href=this.env.blankpage));this.enable_command("delete",!1)};this.remove_identity=function(a){var b,
d=this.identity_list,e=this.html_identifier(a);d&&a&&(d.remove_row(e),this.env.contentframe&&(b=this.get_frame_window(this.env.contentframe))&&(b.location.href=this.env.blankpage));this.enable_command("delete",!1)};this.init_subscription_list=function(){var a=RegExp.escape(this.env.delimiter);this.last_sub_rx=RegExp("["+a+"]?[^"+a+"]+$");this.subscription_list=new rcube_treelist_widget(this.gui_objects.subscriptionlist,{selectable:!0,tabexit:!1,parent_focus:!0,id_prefix:"rcmli",id_encode:this.html_identifier_encode,
id_decode:this.html_identifier_decode,searchbox:"#foldersearch"});this.subscription_list.addEventListener("select",function(a){f.subscription_select(a.id)}).addEventListener("collapse",function(a){f.folder_collapsed(a)}).addEventListener("expand",function(a){f.folder_collapsed(a)}).addEventListener("search",function(a){a.query&&f.subscription_select()}).draggable({cancel:"li.mailbox.root"}).droppable({accept:function(a){if(!$(a).is(".mailbox"))return!1;a=f.folder_id2name($(a).attr("id"));var d=f.folder_id2name(this.id),
e=f.env.subscriptionrows[a];return e&&!e[2]&&d!=a.replace(f.last_sub_rx,"")&&!d.startsWith(a+f.env.delimiter)},drop:function(a,d){var e=f.folder_id2name(d.draggable.attr("id")),g=f.folder_id2name(this.id);f.subscription_move_folder(e,g)}})};this.folder_id2name=function(a){return a?f.html_identifier_decode(a.replace(/^rcmli/,"")):null};this.subscription_select=function(a){var b;a&&"*"!=a&&(b=this.env.subscriptionrows[a])?(this.env.mailbox=a,this.show_folder(a),this.enable_command("delete-folder",!b[2])):
(this.env.mailbox=null,this.show_contentframe(!1),this.enable_command("delete-folder","purge",!1))};this.subscription_move_folder=function(a,b){if(a&&null!==b&&a!=b&&b!=a.replace(this.last_sub_rx,"")){var d=a.split(this.env.delimiter).pop(),d=""===b||"*"===b?d:b+this.env.delimiter+d;d!=a&&this.http_post("rename-folder",{_folder_oldname:a,_folder_newname:d},this.set_busy(!0,"foldermoving"))}};this.create_folder=function(){this.show_folder("",this.env.mailbox)};this.delete_folder=function(a){a||(a=
this.env.mailbox);a&&confirm(this.get_label("deletefolderconfirm"))&&this.http_post("delete-folder",{_mbox:a},this.set_busy(!0,"folderdeleting"))};this.add_folder_row=function(a,b,d,e,g,h,k,l){if(!this.gui_objects.subscriptionlist)return!1;this.subscription_list.is_search()&&(this.subscription_select(),this.subscription_list.reset_search());this.subscription_list.draggable("destroy").droppable("destroy");var m,n,p,q,s,t="",v=[],w=[],u=[],x=$(this.gui_objects.subscriptionlist);m=k?k:$($("li",x).get(1)).clone(!0);
if(!m.length)return this.goto_url("folders"),!1;m.attr({id:"rcmli"+this.html_identifier_encode(a),"class":h});k&&k.length||($("ul,div.treetoggle",m).remove(),m.removeData("filtered"));$("a:first",m).text(d);$('input[name="_subscribed[]"]:first',m).val(a).prop({checked:g?!0:!1,disabled:e?!0:!1});this.env.subscriptionrows[a]=[b,d,!1];$.each(this.env.subscriptionrows,function(a,b){b[3]=a;v.push(b)});try{s=new Intl.Collator(this.env.locale.replace("_","-"))}catch(y){}v.sort(function(a,b){var d,e,g,h=
a[0].split(f.env.delimiter),k=b[0].split(f.env.delimiter),l=h.length;for(d=0;d<l;d++){e=h[d];g=k[d];if(e!==g)return void 0===g?1:s?s.compare(e,g):e<g?-1:1;if(d==l-1)return-1}});for(n in v)d=v[n][3],v[n][2]?(b=d+this.env.delimiter,b!=this.env.prefix_ns&&(u.push(d),p=b)):p&&d.startsWith(p)?u.push(d):(w.push(d),p=null);for(n=0;n<u.length;n++)a.startsWith(u[n]+this.env.delimiter)&&(q=u[n]);for(n=0;!q&&n<w.length;n++)n&&w[n]==a&&(q=w[n-1]);if(q&&(n=this.subscription_list.get_item(q,!0))){if(p=a.lastIndexOf(this.env.delimiter))t=
a.substring(0,p),t=this.subscription_list.get_item(t,!0),$("div.treetoggle",t).length||$("<div>&nbsp;</div>").addClass("treetoggle collapsed").appendTo(t),$("ul",t).length||$("<ul>").css("display","none").appendTo(t);if(t&&n==t)$("ul:first",t).append(m);else{for(;(d=$(n).parent().parent().get(0))&&(!t||d!=t)&&$(d).is("li.mailbox");)n=d;$(n).after(m)}}else x.append(m);$.extend(this.env.subscriptionrows,l||{});this.subscription_list.reset(!0);this.subscription_select();t&&this.subscription_list.expand(this.folder_id2name(t.id));
m=m.show().get(0);m.scrollIntoView&&m.scrollIntoView();return m};this.replace_folder_row=function(a,b,d,e,g,h){if(!this.gui_objects.subscriptionlist)return this.is_framed()?window.parent.rcmail.replace_folder_row(a,b,d,e,g,h):!1;this.subscription_list.is_search()&&(this.subscription_select(),this.subscription_list.reset_search());var k={},l=this.subscription_list.get_item(a,!0),m=$(l).parent(),n=a.length,p=this.env.subscriptionrows[a][0].length,q=$('input[name="_subscribed[]"]:first',l).prop("checked");
a==b?$(l).attr("class",h||""):($("li",l).each(function(){var a=f.folder_id2name(this.id),e=f.env.subscriptionrows[a],g=b+a.slice(n);this.id="rcmli"+f.html_identifier_encode(g);$('input[name="_subscribed[]"]:first',this).val(g);e[0]=d+e[0].slice(p);k[g]=e;delete f.env.subscriptionrows[a]}),l=$(l).detach(),delete this.env.subscriptionrows[a],m.get(0)==this.gui_objects.subscriptionlist||$("li",m).length||$("ul,div.treetoggle",m.parent()).remove(),this.add_folder_row(b,d,e,g,q,h,l,k))};this.remove_folder_row=
function(a){this.subscription_list.is_search()&&(this.subscription_select(),this.subscription_list.reset_search());var b=[],d=this.subscription_list.get_item(a,!0);$("li",d).each(function(){b.push(f.folder_id2name(this.id))});this.subscription_list.remove(a);b.push(a);$.each(b,function(a,b){delete f.env.subscriptionrows[b]})};this.subscribe=function(a){if(a){var b=this.display_message(this.get_label("foldersubscribing"),"loading");this.http_post("subscribe",{_mbox:a},b)}};this.unsubscribe=function(a){if(a){var b=
this.display_message(this.get_label("folderunsubscribing"),"loading");this.http_post("unsubscribe",{_mbox:a},b)}};this.show_folder=function(a,b,d){var e=window;a="&_action=edit-folder&_mbox="+urlencode(a);b&&(a+="&_path="+urlencode(b));if(b=this.get_frame_window(this.env.contentframe))e=b,a+="&_framed=1";0<=String(e.location.href).indexOf(a)&&!d?this.show_contentframe(!0):this.location_href(this.env.comm_path+a,e,!0)};this.disable_subscription=function(a){(a=this.subscription_list.get_item(a,!0))&&
$('input[name="_subscribed[]"]:first',a).prop("disabled",!0)};this.reset_subscription=function(a,b){var d=this.subscription_list.get_item(a,!0);d&&$('input[name="_subscribed[]"]:first',d).prop("checked",b)};this.folder_size=function(a){var b=this.set_busy(!0,"loading");this.http_post("folder-size",{_mbox:a},b)};this.folder_size_update=function(a){$("#folder-size").replaceWith(a)};this.folder_filter=function(a){this.subscription_list.reset_search();this.subscription_list.container.children("li").each(function(){var b,
d=f.folder_id2name(this.id);if("---"!=a)if(a){if(d!==a){$(this).data("filtered",!0).hide();return}}else for(b in f.env.ns_roots)if(d===f.env.ns_roots[b]){$(this).data("filtered",!0).hide();return}$(this).removeData("filtered").show()})};var u=function(a,b){var d=document.getElementById(b.id);if(d){var e=!1;"image"==b.type&&(d=d.parentNode,e=!0);d._command=a;d._id=b.id;b.sel&&(d.onmousedown=function(a){return f.button_sel(this._command,this._id)},d.onmouseup=function(a){return f.button_out(this._command,
this._id)},e&&((new Image).src=b.sel));b.over&&(d.onmouseover=function(a){return f.button_over(this._command,this._id)},d.onmouseout=function(a){return f.button_out(this._command,this._id)},e&&((new Image).src=b.over))}};this.init_buttons=function(){for(var a in this.buttons)if("string"===typeof a)for(var b=0;b<this.buttons[a].length;b++)u(a,this.buttons[a][b])};this.set_button=function(a,b){var d,e,g,f=this.buttons[a],k=f?f.length:0;for(d=0;d<k;d++)if(e=f[d],(g=document.getElementById(e.id))&&e.status!==
b)"image"!=e.type||e.status?e.status||(e.pas=String(g.className)):(e.pas=g._original_src?g._original_src:g.src,g.runtimeStyle&&g.runtimeStyle.filter&&g.runtimeStyle.filter.match(/src=['"]([^'"]+)['"]/)&&(e.pas=RegExp.$1)),e.status=b,"image"==e.type&&e[b]?g.src=e[b]:void 0!==e[b]&&(g.className=e[b]),"input"==e.type?g.disabled="pas"==b:"uibutton"==e.type?(e.status=b,$(g).button("option","disabled","pas"==b)):(e=$(g),e.attr("tabindex","pas"==b||"sel"==b?"-1":e.attr("data-tabindex")||"0").attr("aria-disabled",
"pas"==b||"sel"==b?"true":"false"))};this.set_alttext=function(a,b){var d,e,g,f,k=this.buttons[a],l=k?k.length:0;for(d=0;d<l;d++)e=k[d],g=document.getElementById(e.id),"image"==e.type&&g?(g.setAttribute("alt",this.get_label(b)),(f=g.parentNode)&&"a"==f.tagName.toLowerCase()&&f.setAttribute("title",this.get_label(b))):g&&g.setAttribute("title",this.get_label(b))};this.button_over=function(a,b){this.button_event(a,b,"over")};this.button_sel=function(a,b){this.button_event(a,b,"sel")};this.button_out=
function(a,b){this.button_event(a,b,"act")};this.button_event=function(a,b,d){var e,g,f,k=this.buttons[a],l=k?k.length:0;for(e=0;e<l;e++)g=k[e],g.id==b&&"act"==g.status&&(g[d]&&(f=document.getElementById(g.id))&&(f["image"==g.type?"src":"className"]=g[d]),"sel"==d&&(this.buttons_sel[b]=a))};this.set_pagetitle=function(a){a&&document.title&&(document.title=a)};this.display_message=function(a,b,d,e){if(this.is_framed())return parent.rcmail.display_message(a,b,d);if(!this.gui_objects.message)return"loading"!=
b&&(this.pending_message=[a,b,d,e]),1;b||(b="notice");e||(e=this.html_identifier(a));var g=b+(new Date).getTime();if(!d)switch(b){case "error":case "warning":d=2*this.message_time;break;case "uploading":d=0;break;default:d=this.message_time}"loading"==b&&(e="loading",d=1E3*this.env.request_timeout,a||(a=this.get_label("loading")));if(this.messages[e])return this.messages[e].obj&&this.messages[e].obj.html(a),"loading"==b&&this.messages[e].labels.push({id:g,msg:a}),this.messages[e].elements.push(g),
setTimeout(function(){f.hide_message(g,"loading"==b)},d),g;var h=$("<div>").addClass(b).html(a).data("key",e);$(this.gui_objects.message).append(h).show();this.messages[e]={obj:h,elements:[g]};"loading"==b?this.messages[e].labels=[{id:g,msg:a}]:"uploading"!=b&&h.click(function(){return f.hide_message(h)}).attr("role","alert");this.triggerEvent("message",{message:a,type:b,timeout:d,object:h});0<d&&setTimeout(function(){f.hide_message(g,"loading"!=b)},d);return g};this.hide_message=function(a,b){if(this.is_framed())return parent.rcmail.hide_message(a,
b);if(this.gui_objects.message){var d,e,g,f,k=this.messages;if("object"===typeof a)f=$(a),d=f.data("key"),this.hide_message_object(f,b),k[d]&&delete k[d];else for(d in k)for(e in k[d].elements)if(k[d]&&k[d].elements[e]==a)if(k[d].elements.splice(e,1),!k[d].elements.length)this.hide_message_object(k[d].obj,b),delete k[d];else if("loading"==d)for(g in k[d].labels)k[d].labels[g].id==a?delete k[d].labels[g]:(f=k[d].labels[g].msg,k[d].obj.html(f))}};this.hide_message_object=function(a,b){b?a.fadeOut(600,
function(){$(this).remove()}):a.hide().remove()};this.clear_messages=function(){if(this.is_framed())return parent.rcmail.clear_messages();var a,b,d=this.messages;for(a in d)for(b in d[a].elements)d[a].obj&&this.hide_message_object(d[a].obj);this.messages={}};this.display_progress=function(a){if(a&&a.name){var b=this.messages["progress"+a.name];a.label||(a.label=this.get_label("uploadingmany"));b?!a.total||100<=a.percent?this.hide_message(b.obj):(a.text&&(a.label+=" "+a.text),b.obj.text(a.label)):
(!a.percent||100>a.percent)&&this.display_message(a.label,"uploading",0,"progress"+a.name)}};this.show_popup_dialog=function(a,b,d,e){if(this.is_framed())return parent.rcmail.show_popup_dialog(a,b,d,e);var g=$('<div class="popup">');"object"==typeof a?g.append(a):g.html(a);e=$.extend({title:b,buttons:d,modal:!0,resizable:!0,width:500,close:function(a,b){$(this).remove()}},e||{});g.dialog(e);b=$(window);a=b.width();b=b.height();var f=g.width(),k=g.height();g.dialog("option",{height:Math.min(b-40,k+
75+(d?50:0)),width:Math.min(a-20,f+36)});$.each(e.button_classes||[],function(a,b){b&&$($(".ui-dialog-buttonpane button.ui-button",g.parent()).get(a)).addClass(b)});return g};this.set_page_buttons=function(){this.enable_command("nextpage","lastpage",this.env.pagecount>this.env.current_page);this.enable_command("previouspage","firstpage",1<this.env.current_page);this.update_pagejumper()};this.select_folder=function(a,b,d){this.savedsearchlist&&this.savedsearchlist.select("");this.treelist?this.treelist.select(a):
this.gui_objects.folderlist&&($("li.selected",this.gui_objects.folderlist).removeClass("selected"),$(this.get_folder_li(a,b,d)).addClass("selected"),this.triggerEvent("selectfolder",{folder:a,prefix:b}))};this.mark_folder=function(a,b,d,e){$(this.get_folder_li(a,d,e)).addClass(b);this.triggerEvent("markfolder",{folder:a,mark:b,status:!0})};this.unmark_folder=function(a,b,d,e){$(this.get_folder_li(a,d,e)).removeClass(b);this.triggerEvent("markfolder",{folder:a,mark:b,status:!1})};this.get_folder_li=
function(a,b,d){b||(b="rcmli");if(this.gui_objects.folderlist)return a=this.html_identifier(a,d),document.getElementById(b+a)};this.set_message_coltypes=function(a,b,d){var e=this.message_list,g=e?e.thead:null,f,k;this.env.listcols=a;this.env.coltypes||(this.env.coltypes={});if(g){if(b){g.innerHTML="";k=document.createElement("tr");c=0;for(a=b.length;c<a;c++)f=document.createElement("th"),f.innerHTML=b[c].html||"",b[c].id&&(f.id=b[c].id),b[c].className&&(f.className=b[c].className),k.appendChild(f);
g.appendChild(k)}k=0;for(a=this.env.listcols.length;k<a;k++)b=this.env.listcols[k],!(f=g.rows[0].cells[k])||"from"!=b&&"to"!=b&&"fromto"!=b||$(f).attr("rel",b).find("span,a").text(this.get_label("fromto"==b?d:b))}this.env.subject_col=null;this.env.flagged_col=null;this.env.status_col=null;this.env.coltypes.folder&&(this.env.coltypes.folder.hidden=!(this.env.search_request||this.env.search_id)||"base"==this.env.search_scope);0<=(k=$.inArray("subject",this.env.listcols))&&(this.env.subject_col=k,e&&
(e.subject_col=k));0<=(k=$.inArray("flag",this.env.listcols))&&(this.env.flagged_col=k);0<=(k=$.inArray("status",this.env.listcols))&&(this.env.status_col=k);e&&(e.hide_column("folder",this.env.coltypes.folder&&this.env.coltypes.folder.hidden||0>$.inArray("folder",this.env.listcols)),e.init_header())};this.set_rowcount=function(a,b){if(b&&b!=this.env.mailbox)return!1;$(this.gui_objects.countdisplay).html(a);this.set_page_buttons()};this.set_mailboxname=function(a){this.gui_objects.mailboxname&&a&&
(this.gui_objects.mailboxname.innerHTML=a)};this.set_quota=function(a){this.gui_objects.quotadisplay&&a&&"text"==a.type&&$(this.gui_objects.quotadisplay).text((a.percent||0)+"%").attr("title",a.title);this.triggerEvent("setquota",a);this.env.quota_content=a};this.set_trash_count=function(a){this[(a?"un":"")+"mark_folder"](this.env.trash_mailbox,"empty","",!0)};this.set_unread_count=function(a,b,d,e){if(!this.gui_objects.mailboxlist)return!1;this.env.unread_counts[a]=b;this.set_unread_count_display(a,
d);e?this.mark_folder(a,e,"",!0):b||this.unmark_folder(a,"recent","",!0)};this.set_unread_count_display=function(a,b){var d,e,g,f,k;if(g=this.get_folder_li(a,"",!0)){f=this.env.unread_counts[a]?this.env.unread_counts[a]:0;e=$(g).children("a").eq(0);d=e.children("span.unreadcount");!d.length&&f&&(d=$("<span>").addClass("unreadcount").appendTo(e));e=0;if((k=g.getElementsByTagName("div")[0])&&k.className.match(/collapsed/))for(var l in this.env.unread_counts)l.startsWith(a+this.env.delimiter)&&(e+=this.env.unread_counts[l]);
f&&d.length?d.html(this.env.unreadwrap.replace(/%[sd]/,f)):d.length&&d.remove();d=RegExp(RegExp.escape(this.env.delimiter)+"[^"+RegExp.escape(this.env.delimiter)+"]+$");a.match(d)&&this.set_unread_count_display(a.replace(d,""),!1);0<f+e?$(g).addClass("unread"):$(g).removeClass("unread")}d=/^\([0-9]+\)\s+/i;b&&document.title&&(g="",g=String(document.title),g=f&&g.match(d)?g.replace(d,"("+f+") "):f?"("+f+") "+g:g.replace(d,""),this.set_pagetitle(g))};this.set_headers=function(a){this.gui_objects.all_headers_row&&
this.gui_objects.all_headers_box&&a&&$(this.gui_objects.all_headers_box).html(a).show()};this.show_headers=function(a,b){this.gui_objects.all_headers_row&&this.gui_objects.all_headers_box&&this.env.uid&&($(b).removeClass("show-headers").addClass("hide-headers"),$(this.gui_objects.all_headers_row).show(),b.onclick=function(){f.command("hide-headers","",b)},this.gui_objects.all_headers_box.innerHTML||this.http_post("headers",{_uid:this.env.uid,_mbox:this.env.mailbox},this.display_message(this.get_label("loading"),
"loading")))};this.hide_headers=function(a,b){this.gui_objects.all_headers_row&&this.gui_objects.all_headers_box&&($(b).removeClass("hide-headers").addClass("show-headers"),$(this.gui_objects.all_headers_row).hide(),b.onclick=function(){f.command("show-headers","",b)})};this.folder_selector=function(a,b){var d=this.folder_selector_element;if(!d){var e=[],g=this.env.delimiter,h=$('<ul class="toolbarmenu">'),k=document.createElement("a"),d=$('<div id="folder-selector" class="popupmenu"></div>');k.href=
"#";k.className="icon";$.each(this.env.mailboxes_list,function(){var a=0,b=0,d=f.env.mailboxes[this],h=d.id,q=$(k.cloneNode(!1)),s=$("<li>");d.virtual?q.addClass("virtual").attr("aria-disabled","true").attr("tabindex","-1"):q.addClass("active").data("id",d.id);for(d["class"]&&q.addClass(d["class"]);0<=(b=h.indexOf(g,b));)a++,b++;q.css("padding-left",a?16*a+"px":0);q.append($("<span>").text(d.name));s.append(q);e.push(s)});h.append(e).appendTo(d);d.css({left:"-1000px",top:"-1000px"}).appendTo($("body")).show();
10<e.length&&d.css("max-height",10*$("li",d)[0].offsetHeight+9);d.on("click","a.active",function(a){d.data("callback")($(this).data("id"));return!1});this.folder_selector_element=d}d.data("callback",b);this.show_menu("folder-selector",!0,a)};this.show_menu=function(a,b,d){var e="object"==typeof a?a.menu:a,g=$("#"+e),f=d&&d.target?$(d.target):$(g.attr("rel")||"#"+e+"link"),k=rcube_event.is_keyboard(d),l=g.attr("data-align")||"",m=!1;"A"!=f.get(0).tagName&&f.closest("a").length&&(f=f.closest("a"));
"string"==typeof a&&(a={menu:e});g.length||(g=this.triggerEvent("menu-get",{name:e,props:a,originalEvent:d}));if(!g||!g.length)return this.triggerEvent(!1===b?"menu-close":"menu-open",{name:e,props:a,originalEvent:d});g.appendTo(document.body);"undefined"==typeof b&&(b=g.is(":visible")?!1:!0);if(b&&f.length){var n=$(window),p=f.offset(),q=0<=l.indexOf("bottom"),m="menuitem"==f.attr("role")||0<f.closest("[role=menuitem]").length;f.offsetWidth=f.outerWidth();f.offsetHeight=f.outerHeight();!q&&p.top+
f.offsetHeight+g.height()>n.height()&&(q=!0);0<=l.indexOf("right")?p.left=p.left+f.outerWidth()-g.width():m&&(p.left=p.left+f.offsetWidth-5,p.top-=f.offsetHeight);p.left+g.width()>n.width()&&(p.left=n.width()-g.width()-12);p.top=Math.max(0,p.top+(q?-g.height():f.offsetHeight));g.css({left:p.left+"px",top:p.top+"px"})}if(b){for(l=this.menu_stack.length-1;m&&0<=l;l--)$(f).parents("#"+this.menu_stack[l]).length||"menuitem"==$(d.target).parent().attr("role")||this.hide_menu(this.menu_stack[l],d);m&&this.menu_stack.length?
(g.data("parent",$.last(this.menu_stack)),g.css("z-index",($("#"+$.last(this.menu_stack)).css("z-index")||0)+1)):!m&&this.menu_stack.length&&this.hide_menu(this.menu_stack[0],d);g.show().attr("aria-hidden","false").data("opener",f.attr("aria-expanded","true").get(0));this.triggerEvent("menu-open",{name:e,obj:g,props:a,originalEvent:d});this.menu_stack.push(e);if(this.menu_keyboard_active=b&&k)this.focused_menu=e,g.find("a,input:not(:disabled)").not("[aria-disabled=true]").first().focus()}else this.hide_menu(e,
d);return b};this.hide_menu=function(a,b){if(this.menu_stack.length){for(var d,e=rcube_event.is_keyboard(b),f=this.menu_stack.length-1;0<=f;f--)d=$("#"+this.menu_stack[f]).hide().attr("aria-hidden","true").data("parent",!1),this.triggerEvent("menu-close",{name:this.menu_stack[f],obj:d,props:{menu:this.menu_stack[f]},originalEvent:b}),this.menu_stack[f]==a&&(f=-1,d.data("opener")&&($(d.data("opener")).attr("aria-expanded","false"),e&&d.data("opener").focus())),this.menu_stack.pop();this.menu_stack.length&&
e?(this.menu_keyboard_active=!0,this.focused_menu=$.last(this.menu_stack),d&&d.data("opener")||$("#"+this.focused_menu).find("a,input:not(:disabled)").not("[aria-disabled=true]").first().focus()):(this.focused_menu=null,this.menu_keyboard_active=!1)}else this.triggerEvent("menu-close",{name:a,props:{menu:a},originalEvent:b})};this.element_position=function(a,b){b=$(b);var d=$(window),e=b.outerWidth(),f=b.outerHeight(),h=b.data("menu-pos"),k=d.height(),l=$(a).height(),m=$(a).width(),n=b.offset(),p=
n.top,n=n.left+e;"bottom"==h?(p+=f,n-=e):n-=5;p+l>k&&(p-=l-f,0>p&&(p=Math.max(0,(k-l)/2)));n+m>d.width()&&(n-=m+e);a.css({left:n+"px",top:p+"px"})};this.editor_init=function(a,b){this.editor=new rcube_text_editor(a,b)};this.html2plain=function(a,b){return this.format_converter(a,"html",b)};this.plain2html=function(a,b){return this.format_converter(a,"plain",b)};this.format_converter=function(a,b,d){if(!a||"html"==b&&!a.replace(/<[^>]+>|&nbsp;|\xC2\xA0|\s/g,"").length||"html"!=b&&!a.replace(/\xC2\xA0|\s/g,
"").length)return d&&setTimeout(function(){d("")},50),!0;var e=this.env.editor_warned||confirm(this.get_label("editorwarning"));this.env.editor_warned=!0;if(!e)return!1;b="?_task=utils&_action="+("html"==b?"html2text":"text2html");var g=this.set_busy(!0,"converting");$.ajax({type:"POST",url:b,data:a,contentType:"application/octet-stream",error:function(a,b,d){f.http_error(a,b,d,g)},success:function(a){f.set_busy(!1,null,g);d&&d(a)}});return!0};this.url=function(a,b){var d="string"===typeof b?b:"";
"string"!==typeof a?b=a:b&&"object"===typeof b||(b={});a?b._action=a:this.env.action&&(b._action=this.env.action);var e=this.env.comm_path,f,h={};a&&a.match(/([a-z0-9_-]+)\/([a-z0-9-_.]+)/)&&(b._action=RegExp.$2,e=e.replace(/\_task=[a-z0-9_-]+/,"_task="+RegExp.$1));for(f in b)void 0!==b[f]&&null!==b[f]&&(h[f]=b[f]);if(h=$.param(h))e+=(-1<e.indexOf("?")?"&":"?")+h;d&&(e+=(-1<e.indexOf("?")?"&":"?")+d);return e};this.redirect=function(a,b){(b||null===b)&&this.set_busy(!0);this.is_framed()?parent.rcmail.redirect(a,
b):(this.env.extwin&&("string"==typeof a?a+=(0>a.indexOf("?")?"?":"&")+"_extwin=1":a._extwin=1),this.location_href(a,window))};this.goto_url=function(a,b,d,e){a=this.url(a,b);e&&(a=this.secure_url(a));this.redirect(a,d)};this.location_href=function(a,b,d){d&&this.lock_frame();"object"==typeof a&&(a=this.env.comm_path+"&"+$.param(a));bw.ie&&b==window?$("<a>").attr("href",a).appendTo(document.body).get(0).click():b.location.href=a;this.start_keepalive()};this.update_state=function(a){window.history.replaceState&&
window.history.replaceState({},document.title,rcmail.url("",a))};this.http_get=this.http_request=function(a,b,d,e){"POST"!=e&&(e="GET");"object"!==typeof b&&(b=rcube_parse_query(b));b._remote=1;b._unlock=d?d:0;var g=this.triggerEvent("request"+a,b);if(!1===g)return b._unlock&&this.set_busy(!1,null,b._unlock),!1;void 0!==g&&(b=g,b._action&&(a=b._action,delete b._action));g=this.url(a);this.start_keepalive();return $.ajax({type:e,url:g,data:b,dataType:"json",success:function(a){f.http_response(a)},
error:function(b,e,g){f.http_error(b,e,g,d,a)}})};this.http_post=function(a,b,d){return this.http_request(a,b,d,"POST")};this.abort_request=function(a){a.request&&a.request.abort();a.lock&&this.set_busy(!1,null,a.lock)};this.http_response=function(a){if(a){a.unlock&&this.set_busy(!1);this.triggerEvent("responsebefore",{response:a});this.triggerEvent("responsebefore"+a.action,{response:a});a.env&&this.set_env(a.env);var b;if("object"===typeof a.texts)for(b in a.texts)"string"===typeof a.texts[b]&&
this.add_label(b,a.texts[b]);a.exec&&eval(a.exec);if(a.callbacks&&a.callbacks.length)for(b=0;b<a.callbacks.length;b++)this.triggerEvent(a.callbacks[b][0],a.callbacks[b][1]);switch(a.action){case "delete":if("addressbook"==this.task){var d;b=this.contact_list.get_selection();d=!1;b&&this.contact_list.rows[b]&&(d=""==this.env.source?(d=String(b).replace(/^[^-]+-/,""))&&this.env.address_sources[d]&&!this.env.address_sources[d].readonly:!this.env.address_sources[this.env.source].readonly);this.enable_command("compose",
b&&this.contact_list.rows[b]);this.enable_command("delete","edit",d);this.enable_command("export",this.contact_list&&0<this.contact_list.rowcount);this.enable_command("export-selected","print",!1)}case "move":"show"==this.env.action?(this.enable_command(this.env.message_commands,!0),this.env.list_post||this.enable_command("reply-list",!1)):"addressbook"==this.task&&this.triggerEvent("listupdate",{folder:this.env.source,rowcount:this.contact_list.rowcount});case "purge":case "expunge":"mail"==this.task&&
(this.env.exists||(this.env.contentframe&&this.show_contentframe(!1),this.enable_command(this.env.message_commands,"purge","expunge","select-all","select-none","expand-all","expand-unread","collapse-all",!1)),this.message_list&&this.triggerEvent("listupdate",{folder:this.env.mailbox,rowcount:this.message_list.rowcount}));break;case "refresh":case "check-recent":$.each(this.env.recent_flags||{},function(a,b){f.set_message(a,"deleted",b.deleted);f.set_message(a,"replied",b.answered);f.set_message(a,
"unread",!b.seen);f.set_message(a,"forwarded",b.forwarded);f.set_message(a,"flagged",b.flagged)}),delete this.env.recent_flags;case "getunread":case "search":this.env.qsearch=null;case "list":if("mail"==this.task){d=this.is_multifolder_listing();var e=this.message_list;b=this.env.list_uid;this.enable_command("show","select-all","select-none",0<this.env.messagecount);this.enable_command("expunge",this.env.exists&&!d);this.enable_command("purge",this.purge_mailbox_test()&&!d);this.enable_command("import-messages",
!d);this.enable_command("expand-all","expand-unread","collapse-all",this.env.threading&&this.env.messagecount&&!d);if(e){if("list"==a.action||"search"==a.action)b&&(e.rows[b]||(b+="-"+this.env.mailbox),e.rows[b]&&e.select(b),delete this.env.list_uid),this.enable_command("set-listmode",this.env.threads&&!d),0<e.rowcount&&!$(document.activeElement).is("input,textarea")&&e.focus(),e.triggerEvent("select");"getunread"!=a.action&&this.triggerEvent("listupdate",{folder:this.env.mailbox,rowcount:e.rowcount})}}else"addressbook"==
this.task&&(this.enable_command("export",this.contact_list&&0<this.contact_list.rowcount),"list"==a.action||"search"==a.action)&&(this.enable_command("search-create",""==this.env.source),this.enable_command("search-delete",this.env.search_id),this.update_group_commands(),0<this.contact_list.rowcount&&!$(document.activeElement).is("input,textarea")&&this.contact_list.focus(),this.triggerEvent("listupdate",{folder:this.env.source,rowcount:this.contact_list.rowcount}));break;case "list-contacts":case "search-contacts":this.contact_list&&
0<this.contact_list.rowcount&&this.contact_list.focus()}a.unlock&&this.hide_message(a.unlock);this.triggerEvent("responseafter",{response:a});this.triggerEvent("responseafter"+a.action,{response:a});this.start_keepalive()}};this.http_error=function(a,b,d,e,g){d=a.statusText;this.set_busy(!1,null,e);a.abort();this.unload||(a.status&&d?this.display_message(this.get_label("servererror")+" ("+d+")","error"):"timeout"==b?this.display_message(this.get_label("requesttimedout"),"error"):0==a.status&&"abort"!=
b&&this.display_message(this.get_label("connerror"),"error"),(b=a.getResponseHeader("Location"))&&"compose"!=this.env.action&&this.redirect(b),403==a.status?(this.is_framed()?parent:window).location.reload():"keep-alive"==g&&setTimeout(function(){f.keep_alive();f.start_keepalive()},3E4))};this.session_error=function(a){this.env.server_error=401;"compose"==this.env.action?(this.save_compose_form_local(),this.compose_skip_unsavedcheck=!0):a&&setTimeout(function(){f.redirect(a,!0)},2E3)};this.iframe_loaded=
function(a){this.set_busy(!1,null,a);this.submit_timer&&clearTimeout(this.submit_timer)};this.multi_thread_http_request=function(a){var b,d,e=(new Date).getTime(),f=a.threads||1;a.reqid=e;a.running=0;a.requests=[];a.result=[];a._items=$.extend([],a.items);a.lock||(a.lock=this.display_message(this.get_label("loading"),"loading"));this.http_request_jobs[e]=a;for(b=0;b<f;b++){d=a._items.shift();if(void 0===d)break;a.running++;a.requests.push(this.multi_thread_send_request(a,d))}return e};this.multi_thread_send_request=
function(a,b){var d,e,f;if(a.postdata){e={};for(d in a.postdata)e[d]=String(a.postdata[d]).replace("%s",b);e._reqid=a.reqid}else if("string"==typeof a.query)f=a.query.replace("%s",b),f+="&_reqid="+a.reqid;else if("object"==typeof a.query&&a.query){f={};for(d in a.query)f[d]=String(a.query[d]).replace("%s",b);f._reqid=a.reqid}return e?this.http_post(a.action,e):this.http_request(a.action,f)};this.multi_thread_http_response=function(a,b){var d=this.http_request_jobs[b];if(d&&!(0>=d.running||d.cancelled)){d.running--;
if(d.onresponse&&"function"==typeof d.onresponse)d.onresponse(a);d.result=$.extend(d.result,a);var e=d._items.shift();void 0!==e?(d.running++,d.requests.push(this.multi_thread_send_request(d,e))):0==d.running&&(d.whendone&&"function"==typeof d.whendone&&d.whendone(d.result),this.set_busy(!1,"",d.lock),delete this.http_request_jobs[b])}};this.multi_thread_request_abort=function(a){if(a=this.http_request_jobs[a]){for(var b=0;0<a.running&&b<a.requests.length;b++)a.requests[b].abort&&a.requests[b].abort();
a.running=0;a.cancelled=!0;this.set_busy(!1,"",a.lock)}};this.async_upload_form=function(a,b,d){var e=(new Date).getTime(),f="rcmupload"+e,h=this.async_upload_form_frame(f);if(this.env.upload_progress_name){var k=this.env.upload_progress_name,l=$("input[name="+k+"]",a);l.length||(l=$("<input>").attr({type:"hidden",name:k}),l.prependTo(a));l.val(e)}h.on("load",{ts:e},d);$(a).attr({target:f,action:this.url(b,{_id:this.env.compose_id||"",_uploadid:e,_from:this.env.action}),method:"POST"}).attr(a.encoding?
"encoding":"enctype","multipart/form-data").submit();return f};this.async_upload_form_frame=function(a){return $("<iframe>").attr({name:a,style:"border: none; width: 0; height: 0; visibility: hidden"}).appendTo(document.body)};this.document_drag_hover=function(a,b){$(this.gui_objects.filedrop)[b?"addClass":"removeClass"]("active")};this.file_drag_hover=function(a,b){a.preventDefault();a.stopPropagation();$(this.gui_objects.filedrop)[b?"addClass":"removeClass"]("hover")};this.file_dropped=function(a){this.file_drag_hover(a,
!1);var b,d=a.target.files||a.dataTransfer.files,e=window.FormData?new FormData:null,g=(this.env.filedrop.fieldname||"_file")+(this.env.filedrop.single?"":"[]"),h="------multipartformboundary"+(new Date).getTime(),k="--"+h+"\r\n",l={_id:this.env.compose_id||this.env.cid||"",_remote:1,_from:this.env.action};if(d&&d.length)for(var m=function(){var a=1<d.length,b=(new Date).getTime(),a=$("<span>").text(a?f.get_label("uploadingmany"):d[0].name).html();f.add2attachment_list(b,{name:"",html:a,classname:"uploading",
complete:!1})||(f.file_upload_id=f.set_busy(!0,"uploading"));k+="--"+h+"--\r\n";l._uploadid=b;$.ajax({type:"POST",dataType:"json",url:f.url(f.env.filedrop.action||"upload",l),contentType:e?!1:"multipart/form-data; boundary="+h,processData:!1,timeout:0,data:e||k,headers:{"X-Roundcube-Request":f.env.request_token},xhr:function(){var a=jQuery.ajaxSettings.xhr();!e&&a.sendAsBinary&&(a.send=a.sendAsBinary);return a},success:function(a){f.http_response(a)},error:function(a,b,d){f.http_error(a,b,d,null,
"attachment")}})},n=this.env.filedrop.single?0:d.length-1,p=b=0,q;b<=n&&(q=d[p]);p++){if(q.name||(q.name=q.fileName),q.size||(q.size=q.fileSize),q.type||(q.type="application/octet-stream"),!e&&/[^\x20-\x7E]/.test(q.name)&&(q.name_bin=unescape(encodeURIComponent(q.name))),!this.env.filedrop.filter||q.type.match(RegExp(this.env.filedrop.filter))){if(e){if(e.append(g,q),b==n)return m()}else if(window.FileReader){var s=new FileReader;s.onload=function(a,b){return function(d){k+='Content-Disposition: form-data; name="'+
g+'"';k+='; filename="'+(q.name_bin||a.name)+'"\r\n';k+="Content-Length: "+a.size+"\r\n";k+="Content-Type: "+a.type+"\r\n\r\n";k+=s.result+"\r\n";k+="--"+h+"\r\n";if(b==n)return m()}}(q,b);s.readAsBinaryString(q)}else if(q.getAsBinary&&(k+='Content-Disposition: form-data; name="'+g+'"',k+='; filename="'+(q.name_bin||q.name)+'"\r\n',k+="Content-Length: "+q.size+"\r\n",k+="Content-Type: "+q.type+"\r\n\r\n",k+=q.getAsBinary()+"\r\n",k+="--"+h+"\r\n",b==n))return m();b++}}else if(b=a.dataTransfer.getData("roundcube-uri"))p=
(new Date).getTime(),a=$("<span>").text(a.dataTransfer.getData("roundcube-name")||this.get_label("attaching")).html(),l._uri=b,l._uploadid=p,this.add2attachment_list(p,{name:"",html:a,classname:"uploading",complete:!1})||(this.file_upload_id=this.set_busy(!0,"attaching")),this.http_post(this.env.filedrop.action||"upload",l)};this.start_keepalive=function(){if(this.env.session_lifetime&&!this.env.framed&&!this.env.extwin&&"login"!=this.task&&"print"!=this.env.action){this._keepalive&&clearInterval(this._keepalive);
var a=500*Math.min(1800,this.env.session_lifetime);this._keepalive=setInterval(function(){f.keep_alive()},3E4>a?3E4:a)}};this.start_refresh=function(){!this.env.refresh_interval||this.env.framed||this.env.extwin||"login"==this.task||"print"==this.env.action||(this._refresh&&clearInterval(this._refresh),this._refresh=setInterval(function(){f.refresh()},1E3*this.env.refresh_interval))};this.keep_alive=function(){this.busy||this.http_request("keep-alive")};this.refresh=function(){if(this.busy)setTimeout(function(){f.refresh();
f.start_refresh()},1E4);else{var a={},b=this.set_busy(!0,"refreshing");"mail"==this.task&&this.gui_objects.mailboxlist&&(a=this.check_recent_params());a._last=Math.floor(this.env.lastrefresh.getTime()/1E3);this.env.lastrefresh=new Date;this.http_post("refresh",a,b)}};this.check_recent_params=function(){var a={_mbox:this.env.mailbox};this.gui_objects.mailboxlist&&(a._folderlist=1);this.gui_objects.quotadisplay&&(a._quota=1);this.env.search_request&&(a._search=this.env.search_request);this.gui_objects.messagelist&&
(a._list=1,a._uids=$.map(this.message_list.rows,function(a,d){return d}).join(","));return a};this.quote_html=function(a){return String(a).replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")};this.opener=function(a,b){var d,e=window.opener;try{if(e&&!e.closed){a&&(!e.rcmail||e.rcmail.env.framed)&&e.parent&&e.parent.rcmail&&(e=e.parent);if(e.rcmail&&b)for(d in b)if(e.rcmail.env[d]!=b[d])return;return e.rcmail}}catch(f){}};this.get_single_uid=function(){var a=this.env.uid||(this.message_list?
this.message_list.get_single_selection():null);return f.triggerEvent("get_single_uid",{uid:a})||a};this.get_single_cid=function(){var a=this.env.cid||(this.contact_list?this.contact_list.get_single_selection():null);return f.triggerEvent("get_single_cid",{cid:a})||a};this.get_message_mailbox=function(a){return((this.env.messages&&a?this.env.messages[a]:null)||{}).mbox||this.env.mailbox};this.params_from_uid=function(a,b){b||(b={});b._uid=String(a).split("-")[0];b._mbox=this.get_message_mailbox(a);
return b};this.get_caret_pos=function(a){return void 0!==a.selectionEnd?a.selectionEnd:a.value.length};this.set_caret_pos=function(a,b){try{a.setSelectionRange&&a.setSelectionRange(b,b)}catch(d){}};this.get_input_selection=function(a){var b=0,d=0,e="";"number"==typeof a.selectionStart&&"number"==typeof a.selectionEnd&&(e=a.value,b=a.selectionStart,d=a.selectionEnd);return{start:b,end:d,text:e.substr(b,d-b)}};this.lock_form=function(a,b){if(a&&a.elements){var d,e,f;b&&(this.disabled_form_elements=
[]);d=0;for(e=a.elements.length;d<e;d++)if(f=a.elements[d],"hidden"!=f.type)if(b&&f.disabled)this.disabled_form_elements.push(f);else if(b||0>$.inArray(f,this.disabled_form_elements))f.disabled=b}};this.mailto_handler_uri=function(){return location.href.split("?")[0]+"?_task=mail&_action=compose&_to=%s"};this.register_protocol_handler=function(a){try{window.navigator.registerProtocolHandler("mailto",this.mailto_handler_uri(),a)}catch(b){this.display_message(String(b),"error")}};this.check_protocol_handler=
function(a,b){var d=window.navigator;d&&"function"==typeof d.registerProtocolHandler?"function"==typeof d.isProtocolHandlerRegistered?(d=d.isProtocolHandlerRegistered("mailto",this.mailto_handler_uri()))&&$(b).parent().find(".mailtoprotohandler-status").html(d):$(b).click(function(){f.register_protocol_handler(a);return!1}):$(b).addClass("disabled").click(function(){return!1})};this.browser_capabilities_check=function(){this.env.browser_capabilities||(this.env.browser_capabilities={});$.each(["pdf",
"flash","tif"],function(){void 0===f.env.browser_capabilities[this]&&(f.env.browser_capabilities[this]=f[this+"_support_check"]())})};this.browser_capabilities=function(){if(!this.env.browser_capabilities)return"";var a,b=[];for(a in this.env.browser_capabilities)b.push(a+"="+this.env.browser_capabilities[a]);return b.join()};this.tif_support_check=function(){window.setTimeout(function(){var a=new Image;a.onload=function(){f.env.browser_capabilities.tif=1};a.onerror=function(){f.env.browser_capabilities.tif=
0};a.src=f.assets_path("program/resources/blank.tif")},10);return 0};this.pdf_support_check=function(){var a=navigator.mimeTypes?navigator.mimeTypes["application/pdf"]:{},b=navigator.plugins,d=b.length,e=/Adobe Reader|PDF|Acrobat/i;if(a&&a.enabledPlugin)return 1;if("ActiveXObject"in window){try{if(a=new ActiveXObject("AcroPDF.PDF"))return 1}catch(g){}try{if(a=new ActiveXObject("PDF.PdfCtrl"))return 1}catch(h){}}for(i=0;i<d;i++)if(a=b[i],"String"===typeof a){if(e.test(a))return 1}else if(a.name&&e.test(a.name))return 1;
window.setTimeout(function(){$("<object>").css({position:"absolute",left:"-10000px"}).attr({data:f.assets_path("program/resources/dummy.pdf"),width:1,height:1,type:"application/pdf"}).load(function(){f.env.browser_capabilities.pdf=1}).error(function(){f.env.browser_capabilities.pdf=0}).appendTo($("body"))},10);return 0};this.flash_support_check=function(){var a=navigator.mimeTypes?navigator.mimeTypes["application/x-shockwave-flash"]:{};if(a&&a.enabledPlugin)return 1;if("ActiveXObject"in window)try{if(new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))return 1}catch(b){}return 0};
this.assets_path=function(a){this.env.assets_path&&!a.startsWith(this.env.assets_path)&&(a=this.env.assets_path+a);return a};this.set_cookie=function(a,b,d){setCookie(a,b,d,this.env.cookie_path,this.env.cookie_domain,this.env.cookie_secure)};this.get_local_storage_prefix=function(){this.local_storage_prefix||(this.local_storage_prefix="roundcube."+(this.env.user_id||"anonymous")+".");return this.local_storage_prefix};this.local_storage_get_item=function(a,b,d){var e,f;try{e=localStorage.getItem(this.get_local_storage_prefix()+
a),f=JSON.parse(e)}catch(h){}return f||b||null};this.local_storage_set_item=function(a,b,d){try{return localStorage.setItem(this.get_local_storage_prefix()+a,JSON.stringify(b)),!0}catch(e){return!1}};this.local_storage_remove_item=function(a){try{return localStorage.removeItem(this.get_local_storage_prefix()+a),!0}catch(b){return!1}};this.print_dialog=function(){bw.safari?setTimeout("window.print()",10):window.print()}}
rcube_webmail.long_subject_title=function(f,u){if(!f.title){var a=$(f);a.width()+15*(u||0)>a.parent().width()&&(f.title=rcube_webmail.subject_text(f))}};rcube_webmail.long_subject_title_ex=function(f){if(!f.title){var u=$(f),a=$.trim(u.text()),a=$("<span>").text(a).css({position:"absolute","float":"left",visibility:"hidden","font-size":u.css("font-size"),"font-weight":u.css("font-weight")}).appendTo($("body")),b=a.width();a.remove();b+15*$("span.branch",u).width()>u.width()&&(f.title=rcube_webmail.subject_text(f))}};
rcube_webmail.subject_text=function(f){f=$(f).clone();f.find(".skip-on-drag").remove();return f.text()};rcube_webmail.set_iframe_events=function(f){$("iframe").each(function(){var u=$(this);$.each(f,function(a,b){u.on("load",function(d){try{$(this).contents().on(a,b)}catch(f){}});try{u.contents().on(a,b)}catch(d){}})})};rcube_webmail.prototype.get_cookie=getCookie;rcube_webmail.prototype.addEventListener=rcube_event_engine.prototype.addEventListener;rcube_webmail.prototype.removeEventListener=rcube_event_engine.prototype.removeEventListener;
rcube_webmail.prototype.triggerEvent=rcube_event_engine.prototype.triggerEvent;
