text: 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.dblclick_time=500;this.message_time=5E3;this.identifier_expr=RegExp("[^0-9a-z-_]","gi");this.env={request_timeout:180,draft_autosave:0,comm_path:"./",blankpage:"program/resources/blank.gif",recipients_separator:",",recipients_delimiter:", ",popup_width:1150,popup_width_small:900};
  this.ref="rcmail";var l=this;$.ajaxSetup({cache:!1,timeout:1E3*this.env.request_timeout,error:function(a,b,d){l.http_error(a,b,d)},beforeSend:function(a){a.setRequestHeader("X-Roundcube-Request",l.env.request_token)}});$(window).bind("beforeunload",function(){rcmail.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,f,g){b={id:b,type:d};e&&(b.act=e);f&&(b.sel=f);g&&(b.over=g);this.buttons[a]||(this.buttons[a]=[]);this.buttons[a].push(b);this.loaded&&x(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,b=this;this.task=this.env.task;if(!bw.dom||!bw.xmlhttp_test()||bw.mz&&1.9>bw.vendver)this.goto_url("error","_code=0x199");else{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(d){$("form").each(function(){l.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-save",!0);
  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){b.init_message_row(a)}).addEventListener("dblclick",
  function(a){b.msglist_dbl_click(a)}).addEventListener("click",function(a){b.msglist_click(a)}).addEventListener("keypress",function(a){b.msglist_keypress(a)}).addEventListener("select",function(a){b.msglist_select(a)}).addEventListener("dragstart",function(a){b.drag_start(a)}).addEventListener("dragmove",function(a){b.drag_move(a)}).addEventListener("dragend",function(a){b.drag_end(a)}).addEventListener("expandcollapse",function(a){b.msglist_expand(a)}).addEventListener("column_replace",function(a){b.msglist_set_coltypes(a)}).addEventListener("listupdate",
  function(a){b.triggerEvent("listupdate",a)}).init(),document.onmouseup=function(a){return b.doc_mouse_up(a)},this.gui_objects.messagelist.parentNode.onmousedown=function(a){return b.click_on_list(a)},this.enable_command("toggle_status","toggle_flag","sort",!0),this.command("list"),$(this.gui_objects.qsearchbox).val(this.env.search_text).focusin(function(){rcmail.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)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));else if("compose"==this.env.action){this.env.address_group_stack=[];this.env.compose_commands="send-attachment remove-attachment send cancel toggle-editor list-adresses pushgroup search reset-search extwin insert-response save-response".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"]);this.env.spellcheck&&(this.env.spellcheck.spelling_state_observer=function(a){l.spellcheck_state()},this.env.compose_commands.push("spellcheck"),this.enable_command("spellcheck",!0));if(this.gui_objects.responseslist){$("a.insertresponse",this.gui_objects.responseslist).attr("unselectable","on").mousedown(function(a){return rcube_event.cancel(a)}).mouseup(function(a){l.command("insert-response",
  $(this).attr("rel"));$(document.body).trigger("mouseup");return rcube_event.cancel(a)});for(var e=0;this.buttons["save-response"]&&e<this.buttons["save-response"].length;e++)$("#"+this.buttons["save-response"][e].id).mousedown(function(a){return rcube_event.cancel(a)})}document.onmouseup=function(a){return b.doc_mouse_up(a)};this.init_messageform()}else"get"==this.env.action?this.enable_command("download","print",!0):"print"==this.env.action&&this.env.uid&&(bw.safari?setTimeout("window.print()",10):
  window.print());this.gui_objects.mailboxlist&&(this.env.unread_counts={},this.gui_objects.folderlist=this.gui_objects.mailboxlist,this.http_request("getunread"));this.gui_objects.contactslist&&(this.contact_list=new rcube_list_widget(this.gui_objects.contactslist,{multiselect:!0,draggable:!1,keyboard:!1}),this.contact_list.addEventListener("initrow",function(a){b.triggerEvent("insertrow",{cid:a.uid,row:a})}).addEventListener("select",function(a){l.compose_recipient_select(a)}).addEventListener("dblclick",
  function(a){l.compose_add_recipient("to")}).init());this.gui_objects.addressbookslist&&(this.gui_objects.folderlist=this.gui_objects.addressbookslist,this.enable_command("list-adresses",!0));if(this.env.mdn_request&&this.env.uid){a="sendmdn";var f={_uid:this.env.uid,_mbox:this.env.mailbox};confirm(this.get_label("mdnrequest"))||(f._flag="mdnsent",a="mark");this.http_post(a,f)}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){b.triggerEvent("insertrow",{cid:a.uid,row:a})}).addEventListener("keypress",function(a){b.contactlist_keypress(a)}).addEventListener("select",function(a){b.contactlist_select(a)}).addEventListener("dragstart",function(a){b.drag_start(a)}).addEventListener("dragmove",function(a){b.drag_move(a)}).addEventListener("dragend",function(a){b.drag_end(a)}).init(),this.env.cid&&this.contact_list.highlight_row(this.env.cid),this.gui_objects.contactslist.parentNode.onmousedown=function(a){return b.click_on_list(a)},
  document.onmouseup=function(a){return b.doc_mouse_up(a)},$(this.gui_objects.qsearchbox).focusin(function(){rcmail.contact_list.blur()}),this.update_group_commands(),this.command("list"));this.set_page_buttons();this.env.cid&&(this.enable_command("show","edit",!0),this.gui_objects.editform&&$("input.groupmember").change(function(){l.group_member_change(this.checked?"add":"del",l.env.cid,l.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());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)):"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:!1}),this.identity_list.addEventListener("select",
  function(a){b.identity_select(a)}).init().focus(),this.env.iid&&this.identity_list.highlight_row(this.env.iid)):this.gui_objects.sectionslist?(this.sections_list=new rcube_list_widget(this.gui_objects.sectionslist,{multiselect:!1,draggable:!1,keyboard:!1}),this.sections_list.addEventListener("select",function(a){b.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:!1}),this.responses_list.addEventListener("select",function(a){var d;a=a.get_single_selection();b.enable_command("delete",!!a&&0>$.inArray(a,b.env.readonly_responses));a&&(d=b.get_frame_window(b.env.contentframe))&&(b.set_busy(!0),b.location_href({_action:"edit-response",_key:a,_framed:1},d))}).init().focus());break;case "login":a=$("#rcmloginuser"),a.bind("keyup",function(a){return rcmail.login_user_keyup(a)}),""==a.val()?a.focus():$("#rcmloginpwd").focus(),
  window.jstz&&!bw.ie6?(a=jstz.determine(),a.name()&&$("#rcmlogintz").val(a.name())):$("#rcmlogintz").val((new Date).getStdTimezoneOffset()/-60),$("form").submit(function(){$("input[type=submit]",this).prop("disabled",!0);rcmail.clear_messages();rcmail.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();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(this.pending_message[0],this.pending_message[1],this.pending_message[2]);this.gui_objects.folderlist&&(this.gui_containers.foldertray=$(this.gui_objects.folderlist),window.rcube_treelist_widget&&(this.treelist=new rcube_treelist_widget(this.gui_objects.folderlist,{id_prefix:"rcmli",id_encode:this.html_identifier_encode,
  id_decode:this.html_identifier_decode,check_droptarget:function(a){return!a.virtual&&l.check_droptarget(a.id)}}),this.treelist.addEventListener("collapse",function(a){l.folder_collapsed(a)}).addEventListener("expand",function(a){l.folder_collapsed(a)}).addEventListener("select",function(a){l.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).bind("dragover dragleave drop",function(a){return l.document_drag_hover(a,"dragover"==a.type)}),$(this.gui_objects.filedrop).addClass("droptarget").bind("dragover dragleave",function(a){return l.file_drag_hover(a,"dragover"==a.type)}).get(0).addEventListener("drop",function(a){return l.file_dropped(a)},!1));this.triggerEvent("init",{task:this.task,action:this.env.action});for(e in this.onloads)if("string"===typeof this.onloads[e])eval(this.onloads[e]);else if("function"===typeof this.onloads[e])this.onloads[e]();
  this.start_refresh();this.start_keepalive()}};this.log=function(a){window.console&&console.log&&console.log(a)};this.command=function(a,b,d,e){var f,g,h,k=!1;d&&d.blur&&d.blur();if(this.busy)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&&0>$.inArray(a,this.env.compose_commands)&&!this.env.server_error){if(this.cmp_hash!=this.compose_field_hash()&&
  !confirm(this.get_label("notsentwarning")))return!1;this.remove_compose_data(this.env.compose_id)}if("function"===typeof this.command_handlers[a])return f=this.command_handlers[a](b,d),void 0!==f?f:d?!1:!0;if("string"===typeof this.command_handlers[a])return f=window[this.command_handlers[a]](b,d),void 0!==f?f:d?!1:!0;this.triggerEvent("actionbefore",{props:b,action:a});f=this.triggerEvent("before"+a,b);if(void 0!==f){if(!1===f)return!1;b=f}f=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(g=this.gui_objects.messageform,h=this.open_window(""))this.save_compose_form_local(),$("input[name='_action']",g).val("compose"),g.action=this.url("mail/compose",
  {_id:this.env.compose_id,_extwin:1}),g.target=h.name,g.submit()}else this.open_window(this.env.permaurl,!0);break;case "change-format":g=this.env.permaurl+"&_format="+b;"preview"==this.env.action&&(g=g.replace(/_action=show/,"_action=preview")+"&_framed=1");this.env.extwin&&(g+="&_extwin=1");location.href=g;break;case "menu-open":b&&"attachmentmenu"==b.menu&&(g=this.env.attachments[b.id],this.enable_command("open-attachment",g&&this.env.mimetypes&&0<=$.inArray(g,this.env.mimetypes)));case "menu-save":return this.triggerEvent(a,
  {props:b}),!1;case "open":if(g=this.get_single_uid())return d.href=this.url("show",{_mbox:this.env.mailbox,_uid:g}),!0;break;case "close":this.env.extwin&&window.close();break;case "list":b&&""!=b&&this.reset_qsearch();"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 "sort":g=this.env.sort_order;h=this.env.disabled_sort_col?this.env.sort_col:b;this.env.disabled_sort_order||
  (g=this.env.sort_col==h&&"ASC"==g?"DESC":"ASC");this.set_list_sorting(h,g);this.list_mailbox("","",h+"_"+g);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?
  (g=this.get_single_uid(),!g||this.env.uid&&g==this.env.uid||(this.env.mailbox==this.env.drafts_mailbox?this.open_compose_step({_draft_uid:g,_mbox:this.env.mailbox}):this.show_message(g))):"addressbook"==this.task&&(h=b?b:this.get_single_cid(),!h||"show"==this.env.action&&h==this.env.cid||this.load_contact(h,"show"));break;case "add":if("addressbook"==this.task)this.load_contact(0,"add");else if("settings"==this.task&&"responses"==this.env.action){if(g=this.get_frame_window(this.env.contentframe))this.set_busy(!0),
  this.location_href({_action:"add-response",_framed:1},g)}else"settings"==this.task&&(this.identity_list.clear_selection(),this.load_identity(0,"add-identity"));break;case "edit":"addressbook"==this.task&&(h=this.get_single_cid())?this.load_contact(h,"edit"):"settings"==this.task&&b?this.load_identity(b,"edit-identity"):"mail"==this.task&&(h=this.get_single_uid())&&(g={_mbox:this.env.mailbox},g[this.env.mailbox==this.env.drafts_mailbox&&"new"!=b?"_draft_uid":"_uid"]=h,this.open_compose_step(g));break;
  case "save":var p;if(g=this.gui_objects.editform){if("search"!=this.env.action)if((p=$("input[name='_pagesize']",g))&&p.length&&isNaN(parseInt(p.val()))){alert(this.get_label("nopagesizewarning"));p.focus();break}else{if("reload"==b)g.action+="?_reload=1";else if("settings"==this.task&&0==this.env.identities_level%2&&(p=$("input[name='_email']",g))&&p.length&&!rcube_check_email(p.val())){alert(this.get_label("noemailwarning"));p.focus();break}$("input.placeholder").each(function(){this.value==this._placeholder&&
  (this.value="")})}parent.rcmail&&parent.rcmail.env.source&&(g.action=this.add_url(g.action,"_orig_source",parent.rcmail.env.source));g.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,d):"addressbook"==this.task&&this.move_contacts(b);break;
  case "copy":"mail"==this.task?this.copy_messages(b,d):"addressbook"==this.task&&this.copy_contacts(b);break;case "mark":b&&this.mark_message(b);break;case "toggle_status":case "toggle_flag":h="toggle_flag"==a?"flagged":"read";if(g=b)"flagged"==h?this.message_list.rows[g].flagged&&(h="unflagged"):this.message_list.rows[g].deleted?h="undelete":this.message_list.rows[g].unread||(h="unread"),this.mark_message(h,g);break;case "always-load":if(this.env.uid&&this.env.sender){this.add_contact(this.env.sender);
  setTimeout(function(){l.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":h="_mbox="+urlencode(this.env.mailbox)+"&_uid="+this.env.uid+"&_part="+b;g=this.env.attachments[b];if("download-attachment"!=a&&g&&this.env.mimetypes&&0<=$.inArray(g,this.env.mimetypes)&&this.open_window(this.env.comm_path+"&_action=get&"+h+"&_frame=1"))break;this.goto_url("get",
  h+"&_download=1",!1);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":g={};if("mail"==this.task)g._mbox=this.env.mailbox,b&&
  (g._to=b),this.env.search_request&&(g._search=this.env.search_request);else if("addressbook"==this.task)if(b&&0<b.indexOf("@"))g._to=b;else{g=[];b?g.push(b):this.contact_list&&(g=this.contact_list.get_selection());g.length?this.http_post("mailto",{_cid:g.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&&(g._to=b);this.open_compose_step(g);break;case "spellcheck":this.spellcheck_state()?this.stop_spellchecking():
  window.tinyMCE&&tinyMCE.get(this.env.composebody)?tinyMCE.execCommand("mceSpellCheck",!0):this.env.spellcheck&&this.env.spellcheck.spellCheck&&this.env.spellcheck.spellCheck();this.spellcheck_state();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.check_compose_input(a))break;clearTimeout(this.save_timer);this.submit_messageform();break;
  case "send-attachment":clearTimeout(this.save_timer);this.upload_file(b||this.gui_objects.uploadform,"upload")||(alert(this.get_label("selectimportfile")),k=!0);break;case "insert-sig":this.change_identity($("[name='_from']")[0],!0);break;case "list-adresses":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(g=this.get_single_uid())g={_reply_uid:g,_mbox:this.env.mailbox},"reply-all"==
  a?g._all=!b&&1==this.env.reply_all_mode&&this.commands["reply-list"]?"list":"all":"reply-list"==a&&(g._all="list"),this.open_compose_step(g);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){g={_forward_uid:this.uids_to_list(h),_mbox:this.env.mailbox};if("forward-attachment"==a||!b&&this.env.forward_attachment||1<h.length)g._attachment=1;this.open_compose_step(g)}break;case "print":if("get"==
  this.env.action)this.gui_objects.messagepartframe.contentWindow.print();else if(g=this.get_single_uid())l.printwin=this.open_window(this.env.comm_path+"&_action=print&_uid="+g+"&_mbox="+urlencode(this.env.mailbox)+(this.env.safemode?"&_safe=1":""),!0,!0),this.printwin&&"show"!=this.env.action&&this.mark_message("read",g);break;case "viewsource":(g=this.get_single_uid())&&this.open_window(this.env.comm_path+"&_action=viewsource&_uid="+g+"&_mbox="+urlencode(this.env.mailbox),!0,!0);break;case "download":"get"==
  this.env.action?location.href=location.href.replace(/_frame=/,"_download="):(g=this.get_single_uid())&&this.goto_url("viewsource",{_uid:g,_mbox:this.env.mailbox,_save:1});break;case "search":if(!b&&this.gui_objects.qsearchbox&&(b=this.gui_objects.qsearchbox.value),b){this.qsearch(b);break}case "reset-search":var m;g=this.env.search_request||this.env.qsearch;this.reset_qsearch();this.select_all_mode=!1;if(g&&"compose"==this.env.action)this.contact_list&&this.list_contacts_clear();else if(g&&this.env.mailbox)this.list_mailbox(this.env.mailbox,
  1);else if(g&&"addressbook"==this.task){if(""==this.env.source){for(m in this.env.address_sources)break;this.env.source=m;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":g=b||this.gui_objects.importform;h=this.set_busy(!0,"importwait");$('input[name="_unlock"]',g).val(h);this.upload_file(g,"import")||(this.set_busy(!1,null,h),alert(this.get_label("selectimportfile")),k=!0);break;case "import":if("import"==this.env.action&&this.gui_objects.importform){if((g=document.getElementById("rcmimportfile"))&&!g.value){alert(this.get_label("selectimportfile"));k=!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});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(",")});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:g=a.replace(/-/g,"_"),this[g]&&"function"===typeof this[g]&&(f=this[g](b,d))}k||!1!==this.triggerEvent("after"+a,b)||(f=!1);this.triggerEvent("actionafter",{props:b,
  action:a,aborted:k});return!1===f?!1:d?!1:!0};this.enable_command=function(){var a,b,d=Array.prototype.slice.call(arguments),e=d.pop(),f;for(b=0;b<d.length;b++)if(f=d[b],"string"===typeof f)this.commands[f]=e,this.set_button(f,e?"act":"pas"),this.triggerEvent("enable-command",{command:f,status:e});else for(a in f)d.push(f[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.clear_compose_data();this.redirect(b)}};this.get_task_url=function(a,b){b||(b=this.env.comm_path);return b.replace(/_task=[a-z0-9_-]+/i,"_task="+a)};this.reload=function(a){this.is_framed()?
  parent.rcmail.reload(a):a?setTimeout(function(){rcmail.reload()},a):window.location&&(location.href=this.env.comm_path+(this.env.action?"&_action="+this.env.action:""))};this.add_url=function(a,b,d){d=urlencode(d);if(/(\?.*)$/.test(a)){var e=RegExp.$1,f=RegExp("((\\?|&)"+RegExp.escape(b)+"=[^&]*)"),e=f.test(e)?e.replace(f,RegExp.$2+b+"="+d):e+("&"+b+"="+d);return a.replace(/(\?.*)$/,e)}return a+"?"+b+"="+d};this.is_framed=function(){return this.env.framed&&parent.rcmail&&parent.rcmail!=this&&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,$(e).css({top:d.y-10+"px",left:d.x-10+"px"}).show(),!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";if(a.collapsed)this.env[b]=this.env[b]+"&"+urlencode(a.id)+"&",this.env.mailbox&&this.env.mailbox.startsWith(name+this.env.delimiter)&&!a.virtual&&this.command("list",name);else{var d=RegExp("&"+urlencode(a.id)+"&");this.env[b]=this.env[b].replace(d,"")}this.drag_active||(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;if(!$(rcube_event.get_target(a)).closest(".ui-dialog, .ui-widget-overlay").length&&((b=this.message_list||this.contact_list)&&!rcube_mouse_is_over(a,b.list.parentNode)&&b.blur(),this.buttons_sel)){for(d in this.buttons_sel)"function"!==typeof d&&this.button_out(this.buttons_sel[d],d);this.buttons_sel={}}};this.click_on_list=function(a){this.gui_objects.qsearchbox&&this.gui_objects.qsearchbox.blur();
  this.message_list?this.message_list.focus():this.contact_list&&this.contact_list.focus();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(){l.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(){l.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.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.coltypes=[];for(a=0;a<d.length;a++)d[a].id&&d[a].id.startsWith("rcm")&&(b=d[a].id.slice(3),this.env.coltypes.push(b));0<=(a=$.inArray("flag",this.env.coltypes))&&(this.env.flagged_col=
  a);0<=(a=$.inArray("subject",this.env.coltypes))&&(this.env.subject_col=a);this.command("save-pref",{name:"list_cols",value:this.env.coltypes,session:"list_attrib/columns"})};this.check_droptarget=function(a){switch(this.task){case "mail":return this.env.mailboxes[a]&&this.env.mailboxes[a].id!=this.env.mailbox&&!this.env.mailboxes[a].virtual?1:0;case "settings":return a!=this.env.mailbox?1:0;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 f=window.open(a,e);else{var g=this.is_framed()?
  parent.window:window,h=$(g),k=h.width(),h=bw.mz?$("body",g).height():h.height();b=Math.min(b?this.env.popup_width_small:this.env.popup_width,k);f=window.open(a,e,"width="+b+",height="+h+",top="+((g.screenTop||g.screenY)+20)+",left="+((g.screenLeft||g.screenX)+20)+",resizable=yes,location=no,scrollbars=yes"+(d?",toolbar=yes,menubar=yes,status=yes":",toolbar=no,menubar=no,status=no"))}!a&&f.document&&f.document.write("<html><body>"+this.get_label("loading")+"</body></html>");this.triggerEvent("openwindow",
  {url:a,handle:f});window.setTimeout(function(){f&&f.focus()},10);return f};this.init_message_row=function(a){var b={},d=this,e=a.uid,f=(null!=this.env.status_col?"status":"msg")+"icn"+a.uid;e&&this.env.messages[e]&&$.extend(a,this.env.messages[e]);if(a.icon=document.getElementById(f))b.icon=function(a){d.command("toggle_status",e)};a.msgicon=null!=this.env.status_col?document.getElementById("msgicn"+a.uid):a.icon;null!=this.env.flagged_col&&(a.flagicon=document.getElementById("flagicn"+a.uid))&&(b.flagicon=
  function(a){d.command("toggle_flag",e)});!a.depth&&a.has_children&&(a.expando=document.getElementById("rcmexpando"+a.uid))&&(b.expando=function(a){d.expand_message_row(a,e)});$.each(b,function(b,d){a[b].onclick=function(a){d(a);return rcube_event.cancel(a)};bw.touch&&a[b].addEventListener("touchend",function(a){if(1==a.changedTouches.length)return d(a),rcube_event.cancel(a)},!1)});this.triggerEvent("insertrow",{uid:e,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,
  flags:d.extra_flags});var f,g,h,k="",l="",m=this.message_list;h=m.rows;var n=this.env.messages[a],q="message"+(d.seen?"":" unread")+(d.deleted?" deleted":"")+(d.flagged?" flagged":"")+(n.selected?" selected":""),u={cols:[],style:{},id:"rcmrow"+a};f="msgicon";null===this.env.status_col&&(f+=" status",d.deleted?f+=" deleted":d.seen?0<d.unread_children&&(f+=" unreadchildren"):f+=" unread");d.answered&&(f+=" replied");d.forwarded&&(f+=" forwarded");n.selected&&!m.in_selection(a)&&m.selection.push(a);
  this.env.threading&&(n.depth?(k+='<span id="rcmtab'+a+'" class="branch" style="width:'+15*n.depth+'px;">&nbsp;&nbsp;</span>',h[n.parent_uid]&&!1===h[n.parent_uid].expanded||!(0!=this.env.autoexpand_threads&&2!=this.env.autoexpand_threads||h[n.parent_uid]&&h[n.parent_uid].expanded)?(u.style.display="none",n.expanded=!1):n.expanded=!0,q+=" thread expanded"):n.has_children&&(void 0===n.expanded&&(1==this.env.autoexpand_threads||2==this.env.autoexpand_threads&&n.unread_children)&&(n.expanded=!0),l='<div id="rcmexpando'+
  a+'" class="'+(n.expanded?"expanded":"collapsed")+'">&nbsp;&nbsp;</div>',q+=" thread"+(n.expanded?" expanded":"")),d.unread_children&&d.seen&&!n.expanded&&(q+=" unroot"));k+='<span id="msgicn'+a+'" class="'+f+'">&nbsp;</span>';u.className=q;b.subject&&(h=d.mbox==this.env.drafts_mailbox?"_draft_uid":"_uid",b.subject='<a href="./?_task=mail&_action='+(d.mbox==this.env.drafts_mailbox?"compose":"show")+"&_mbox="+urlencode(d.mbox)+"&"+h+"="+a+'" onclick="return rcube_event.cancel(event)" onmouseover="rcube_webmail.long_subject_title(this,'+
  (n.depth+1)+')"><span>'+b.subject+"</span></a>");for(g in this.env.coltypes)f=this.env.coltypes[g],h={className:String(f).toLowerCase()},"flag"==f?(f=d.flagged?"flagged":"unflagged",f='<span id="flagicn'+a+'" class="'+f+'">&nbsp;</span>'):"attachment"==f?f=/application\/|multipart\/(m|signed)/.test(d.ctype)?'<span class="attachment">&nbsp;</span>':/multipart\/report/.test(d.ctype)?'<span class="report">&nbsp;</span>':"&nbsp;":"status"==f?(f=d.deleted?"deleted":d.seen?0<d.unread_children?"unreadchildren":
  "msgicon":"unread",f='<span id="statusicn'+a+'" class="'+f+'">&nbsp;</span>'):"threads"==f?f=l:"subject"==f?(bw.ie&&(h.onmouseover=function(){rcube_webmail.long_subject_title_ex(this,n.depth+1)},bw.ie8&&(k="<span></span>"+k)),f=k+b[f]):f="priority"==f?0<d.prio&&6>d.prio?'<span class="prio'+d.prio+'">&nbsp;</span>':"&nbsp;":b[f],h.innerHTML=f,u.cols.push(h);m.insert_row(u,e);e&&this.env.pagesize&&m.rowcount>this.env.pagesize&&(a=m.get_last_row(),m.remove_row(a),m.clear_selection(a))};this.set_list_sorting=
  function(a,b){$("#rcm"+this.env.sort_col).removeClass("sorted"+this.env.sort_order.toUpperCase());a&&$("#rcm"+a).addClass("sorted"+b);this.env.sort_col=a;this.env.sort_order=b};this.set_list_options=function(a,b,d,e){var f,g={};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)f=1,this.set_list_sorting(b,d);this.env.threading!=e&&(f=1,g._threads=e);if(a&&a.length){var h,k,l=[],m=this.env.coltypes;for(e=0;e<m.length;e++)k=m[e],h=$.inArray(k,
  a),-1!=h&&(l.push(k),delete a[h]);for(e=0;e<a.length;e++)a[e]&&l.push(a[e]);l.join()!=m.join()&&(f=1,g._cols=l.join(","))}f&&this.list_mailbox("","",b+"_"+d,g)};this.show_message=function(a,b,d){if(a){var e,f=window,g="&_action="+(d?"preview":"show")+"&_uid="+a+"&_mbox="+urlencode(this.env.mailbox);d&&(e=this.get_frame_window(this.env.contentframe))&&(f=e,g+="&_framed=1");b&&(g+="&_safe=1");this.env.search_request&&(g+="&_search="+this.env.search_request);g+="&_caps="+urlencode(this.browser_capabilities());
  this.env.extwin&&(g+="&_extwin=1");d&&0<=String(f.location.href).indexOf(g)?this.show_contentframe(!0):(d||!this.env.message_extwin||this.env.extwin?this.location_href(this.env.comm_path+g,f,!0):this.open_window(this.env.comm_path+g,!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(){l.set_message(a,"unread",!1);l.env.unread_counts[l.env.mailbox]&&(l.env.unread_counts[l.env.mailbox]-=
  1,l.set_unread_count(l.env.mailbox,l.env.unread_counts[l.env.mailbox],"INBOX"==l.env.mailbox));0<l.env.preview_pane_mark_read&&l.http_post("mark",{_uid:a,_flag:"read",_quiet:1})},1E3*this.env.preview_pane_mark_read)))}};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_request("check-recent",b,a)};this.filter_mailbox=function(a){var b=
  this.set_busy(!0,"searching");this.clear_message_list();this.env.current_page=1;this.http_request("search",this.search_params(!1,a),b)};this.list_mailbox=function(a,b,d,e){var f=window;"object"!=typeof e&&(e={});a||(a=this.env.mailbox?this.env.mailbox:"INBOX");d&&(e._sort=d);this.env.search_request&&(e._search=this.env.search_request);this.env.mailbox!=a&&(b=1,this.env.current_page=b,this.select_all_mode=!1);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))f=d,e._framed=1;a&&(this.set_busy(!0,"loading"),e._mbox=a,b&&(e._page=b),this.location_href(e,f))}};this.clear_message_list=function(){this.env.messages={};this.last_selected=0;this.show_contentframe(!1);this.message_list&&this.message_list.clear(!0)};this.list_mailbox_remote=function(a,b,d){this.message_list.clear();
  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_selection=function(){var a=this.message_list.selection,b=this.message_list.rows,d,e=[];for(d in a)b[a[d]]&&e.push(a[d]);this.message_list.selection=e};this.expand_unread=function(){for(var a,b=this.gui_objects.messagelist.tBodies[0].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,f,g=[],h=[],k,l=this.message_list.rows;for(k=a?l[a]?l[a].obj:null:this.message_list.tbody.firstChild;k;){if(1==k.nodeType&&(d=l[k.uid]))if(d.depth){for(b=g.length-1;0<=b&&!(e=g[b].length,e>d.depth?(f=e-d.depth,g[b][f]&2||(g[b][f]=g[b][f]?g[b][f]+2:2)):e==d.depth&&(g[b][0]&2||(g[b][0]+=2)),d.depth>e);b--);g.push(Array(d.depth));g[g.length-1][0]=1;h.push(d.uid)}else{if(g.length){for(b in g)this.set_tree_icons(h[b],
  g[b]);g=[];h=[]}if(a&&k!=l[a].obj)break}k=k.nextSibling}if(g.length)for(b in g)this.set_tree_icons(h[b],g[b])};this.set_tree_icons=function(a,b){var d,e=[],f="",g=b.length;for(d=0;d<g;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--)f=e[d]["class"]?f+('<div class="tree '+e[d]["class"]+'" />'):f+('<div style="width:'+
  e[d].width+'px" />');f&&$("#rcmtab"+a).html(f)};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,f=
  e[a],g=e[a].depth,h=[];f.depth?f.unread&&(a=this.message_list.find_root(a),e[a].unread_children--,this.set_unread_children(a)):d--;a=f.parent_uid;for(f=f.obj.nextSibling;f;){if(1==f.nodeType&&(b=e[f.uid])){if(!b.depth||b.depth<=g)break;b.depth--;$("#rcmtab"+b.uid).width(15*b.depth).html("");b.depth?(b.depth==g&&(b.parent_uid=a),b.unread&&h.length&&h[h.length-1].unread_children++):(d++,b.parent_uid=0,b.has_children&&($("#rcmrow"+b.uid+" .leaf:first").attr("id","rcmexpando"+b.uid).attr("class","none"!=
  b.obj.style.display?"expanded":"collapsed").bind("mousedown",{uid:b.uid,p:this},function(a){return a.data.p.expand_message_row(a,a.data.uid)}),b.unread_children=0,h.push(b)),"none"==b.obj.style.display&&$(b.obj).show())}f=f.nextSibling}for(b=0;b<h.length;b++)this.set_unread_children(h[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=this.message_list.rows[a];if(!b)return!1;b.icon&&(a="msgicon",b.deleted?a+=" deleted":b.unread?a+=" unread":b.unread_children&&(a+=" unreadchildren"),b.msgicon==b.icon&&(b.replied&&(a+=" replied"),b.forwarded&&(a+=" forwarded"),a+=" status"),b.icon.className=a);b.msgicon&&b.msgicon!=b.icon&&(a="msgicon",!b.unread&&b.unread_children&&(a+=" unreadchildren"),b.replied&&(a+=" replied"),b.forwarded&&(a+=" forwarded"),b.msgicon.className=a);b.flagicon&&
  (a=b.flagged?"flagged":"unflagged",b.flagicon.className=a)};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"),e.unread=d):"deleted"==b?e.deleted=d:"replied"==b?e.replied=d:"forwarded"==b?e.forwarded=d:"flagged"==b&&(e.flagged=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);b=$(e.obj);e.unread&&!b.hasClass("unread")?
  b.addClass("unread"):!e.unread&&b.hasClass("unread")&&b.removeClass("unread");e.deleted&&!b.hasClass("deleted")?b.addClass("deleted"):!e.deleted&&b.hasClass("deleted")&&b.removeClass("deleted");e.flagged&&!b.hasClass("flagged")?b.addClass("flagged"):!e.flagged&&b.hasClass("flagged")&&b.removeClass("flagged");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){l.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){l.command("move",a)});if(a&&a!=this.env.mailbox){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;if(this.message_list){var f,g,h,k=[],l=this.message_list.get_selection();f=
  0;for(len=l.length;f<len;f++)g=l[f],this.env.threading&&(e+=this.update_thread(g),h=this.message_list.find_root(g),h!=g&&0>$.inArray(h,k)&&k.push(h)),this.message_list.remove_row(g,this.env.display_next&&f==l.length-1);this.env.display_next||this.message_list.clear_selection();f=0;for(len=k.length;f<len;f++)this.add_tree_icons(k[f])}0>e?b._count=-1*e:0<e&&this.delete_excessive_thread_rows();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=[],f,g,h,k=this.message_list;b?d[0]=b:this.env.uid?d[0]=this.env.uid:
  k&&(d=k.get_selection());if(k)for(k.focus(),g=0,f=d.length;g<f;g++)h=d[g],("read"==a&&k.rows[h].unread||"unread"==a&&!k.rows[h].unread||"delete"==a&&!k.rows[h].deleted||"undelete"==a&&k.rows[h].deleted||"flagged"==a&&!k.rows[h].flagged||"unflagged"==a&&k.rows[h].flagged)&&e.push(h);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,f=this.selection_post_data({_uid:this.uids_to_list(b),_flag:a}),g=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",f,g)};this.toggle_flagged_status=function(a,b){var d,e=b.length,f=this.selection_post_data({_uid:this.uids_to_list(b),_flag:a}),g=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",f,g)};this.toggle_delete_status=function(a){var b=a.length,d,e,f=!0,g=this.message_list?this.message_list.rows:{};if(1==b)return!this.message_list||g[a[0]]&&!g[a[0]].deleted?this.flag_as_deleted(a):this.flag_as_undeleted(a),!0;for(d=0;d<b;d++)if(e=a[d],g[e]&&!g[e].deleted){f=!1;break}f?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"}),f=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,f)};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"),f=this.message_list?this.message_list.rows:{},g=0,h=0,k=a.length;h<k;h++)uid=a[h],f[uid]&&(f[uid].unread&&(b[b.length]=uid),this.env.skip_deleted?(g+=this.update_thread(uid),
  this.message_list.remove_row(uid,this.env.display_next&&h==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>g?d._count=-1*g:0<g&&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,f=this.message_list?this.message_list.rows:{};a=String(a).split(",");d=0;for(e=a.length;d<e;d++)b=a[d],f[b]&&this.set_message(b,"unread",!1)};this.uids_to_list=function(a){return this.select_all_mode?"*":a.join(",")};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.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=$("[name='_from']"),b=$("[name='_to']"),d=$("input[name='_subject']"),e=$("[name='_message']").get(0),f="1"==$("input[name='_is_html']").val(),g=["cc","bcc","replyto","followupto"],h,k=this.opener();k&&"compose"==k.env.action&&(setTimeout(function(){1<opener.history.length?opener.history.back():k.redirect(k.get_task_url("mail"))},
  100),this.env.opened_extwin=!0);0<this.env.autocomplete_threads&&(h={threads:this.env.autocomplete_threads,sources:this.env.autocomplete_sources});this.init_address_input_events(b,h);for(var p in g)this.init_address_input_events($("[name='_"+g[p]+"']"),h);f||(this.set_caret_pos(e,this.env.top_posting?0:$(e).val().length),"select-one"==a.prop("type")&&this.change_identity(a[0]));if(window.localStorage){var a=this.local_storage_get_item("compose.index",[]),m;for(p=0;p<a.length;p++)if(m=a[p],formdata=
  this.local_storage_get_item("compose."+m,null,!0)){if(formdata.changed&&m==this.env.compose_id){this.restore_compose_form(m,f);break}if(!(this.env.draft_id&&formdata.draft_id&&formdata.draft_id!=this.env.draft_id||this.env.reply_msgid&&formdata.reply_msgid!=this.env.reply_msgid)&&formdata.changed&&formdata.session!=this.env.session_id){this.show_popup_dialog(this.get_label("restoresavedcomposedata").replace("$date",(new Date(formdata.changed)).toLocaleString()).replace("$subject",formdata._subject).replace(/\n/g,
  "<br/>"),this.get_label("restoremessage"),[{text:this.get_label("restore"),click:function(){l.restore_compose_form(m,f);l.remove_compose_data(m);l.save_compose_form_local();$(this).dialog("close")}},{text:this.get_label("delete"),click:function(){l.remove_compose_data(m);$(this).dialog("close")}},{text:this.get_label("ignore"),click:function(){$(this).dialog("close")}}]);break}}}""==b.val()?b.focus():""==d.val()?d.focus():e&&e.focus();this.env.compose_focus_elem=document.activeElement;this.compose_field_hash(!0);
  this.auto_save_start()};this.init_address_input_events=function(a,b){this.env.recipients_delimiter=this.env.recipients_separator+" ";a.keydown(function(a){return l.ksearch_keydown(a,this,b)}).attr("autocomplete","off")};this.submit_messageform=function(a){var b=this.gui_objects.messageform;if(b){var d=this.set_busy(!0,a?"savingmessage":"sendingmessage"),e=this.spellcheck_lang(),f=[];$("li",this.gui_objects.attachmentlist).each(function(){f.push(this.id.replace(/^rcmfile/,""))});$('input[name="_attachments"]',
  b).val(f.join());b.target="savetarget";b._draft.value=a?"1":"";b.action=this.add_url(b.action,"_unlock",d);b.action=this.add_url(b.action,"_lang",e);this.submit_timer=setTimeout(function(){l.set_busy(!1,null,d);l.display_message(l.get_label("requesttimedout"),"error")},1E3*this.env.request_timeout);b.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){var b=[],d=$("#_"+a),e=this.env.recipients_delimiter;if(this.contact_list&&this.contact_list.selection.length)for(var f,g=0;g<this.contact_list.selection.length;g++)if((f=this.contact_list.selection[g])&&this.env.contactdata[f]&&(b.push(this.env.contactdata[f]),"E"==f.charAt(0)&&0>this.env.contactdata[f].indexOf("@")&&d.length)){var h=f.substr(1);this.group2expand[h]={name:this.env.contactdata[f],input:d.get(0)};this.http_request("group-expand",{_source:this.env.source,_gid:h},!1)}b.length&&
  d.length&&(f=d.val(),g=RegExp(RegExp.escape(e)+"\\s*$"),f&&!g.test(f)&&(f+=e+" "),d.val(f+b.join(e+" ")+e+" "),this.triggerEvent("add-recipient",{field:a,recipients:b}))};this.check_compose_input=function(a){var b,d=$("[name='_to']"),e=$("[name='_cc']"),f=$("[name='_bcc']"),g=$("[name='_from']"),h=$("[name='_subject']"),k=$("[name='_message']");if("text"==g.prop("type")&&!rcube_check_email(g.val(),!0))return alert(this.get_label("nosenderwarning")),g.focus(),!1;e=d.val()?d.val():e.val()?e.val():f.val();
  if(!rcube_check_email(e.replace(/^\s+/,"").replace(/[\s,;]+$/,""),!0))return alert(this.get_label("norecipientwarning")),d.focus(),!1;for(var p in this.env.attachments)if("object"===typeof this.env.attachments[p]&&!this.env.attachments[p].complete)return alert(this.get_label("notuploadedwarning")),!1;if(""==h.val()){b=$('<div class="prompt">').html('<div class="message">'+this.get_label("nosubjectwarning")+"</div>").appendTo(document.body);var m=$("<input>").attr("type","text").attr("size",30).appendTo(b).val(this.get_label("nosubject")),
  d={};d[this.get_label("cancel")]=function(){h.focus();$(this).dialog("close")};d[this.get_label("sendmessage")]=function(){h.val(m.val());$(this).dialog("close");l.command(a,{nocheck:!0})};b.dialog({modal:!0,resizable:!1,buttons:d,close:function(a,b){$(this).remove()}});m.select();return!1}this.stop_spellchecking();window.tinyMCE&&(b=tinyMCE.get(this.env.composebody));if(!b&&""==k.val()&&!confirm(this.get_label("nobodywarning")))return k.focus(),!1;if(b){if(!b.getContent()&&!confirm(this.get_label("nobodywarning")))return b.focus(),
  !1;tinyMCE.triggerSave()}return!0};this.toggle_editor=function(a){this.stop_spellchecking();if("html"==a.mode)this.plain2html($("#"+a.id).val(),a.id),tinyMCE.execCommand("mceAddControl",!1,a.id),this.env.default_font&&setTimeout(function(){$(tinyMCE.get(a.id).getBody()).css("font-family",rcmail.env.default_font)},500);else{var b;if(b=tinyMCE.get(a.id).getContent()){if(!confirm(this.get_label("editorwarning")))return!1;this.html2plain(b,a.id)}tinyMCE.execCommand("mceRemoveControl",!1,a.id)}return!0};
  this.insert_response=function(a){a=this.env.textresponses[a]?this.env.textresponses[a].text:null;if(!a)return!1;if("1"==$("input[name='_is_html']").val()){var b=tinyMCE.get(this.env.composebody);b.getWin().focus();b.selection.setContent(this.quote_html(a).replace(/\r?\n/g,"<br/>"),{format:"text"})}else{var b=rcube_find_object(this.env.composebody),d=$(b).is(":focus")?this.get_input_selection(b):{start:0,end:0},e=b.value;pre=e.substring(0,d.start);end=e.substring(d.end,e.length);b.value=pre+a+end;
  this.set_caret_pos(b,d.start+a.length);b.focus()}};this.save_response=function(){var a,b="";a=!1;if("1"==$("input[name='_is_html']").val()){var d=tinyMCE.get(this.env.composebody);d.getWin().focus();b=d.selection.getContent({format:"text"});b||(b=d.getContent({format:"text"}),a=!0)}else(d=rcube_find_object(this.env.composebody))&&$(d).is(":focus")&&(b=this.get_input_selection(d).text),!b&&d&&(b=d.value,a=!0);a&&(a=b.indexOf("-- \n"),0<a&&(b=b.substring(0,a)));a={};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.gettext("save")]=function(a){a=$("#ffresponsename").val();var b=$("#ffresponsetext").val();if(!b)return $("#ffresponsetext").select(),!1;a||(a=b.substring(0,40));var d=l.display_message(l.get_label("savingresponse"),"loading");
  l.http_post("settings/responses",{_insert:1,_name:a,_text:b},d);$(this).dialog("close")};a[this.gettext("cancel")]=function(){$(this).dialog("close")};this.show_popup_dialog(d,this.gettext("savenewresponse"),a);$("#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).html(this.quote_html(a.name)).appendTo(d).mousedown(function(a){return rcube_event.cancel(a)}).mouseup(function(a){l.command("insert-response",b);$(document.body).trigger("mouseup");return rcube_event.cancel(a)})}};this.edit_responses=function(){};this.delete_response=function(a){!a&&this.responses_list&&(a=this.responses_list.get_selection()[0]);return a&&confirm(this.get_label("deleteresponseconfirm"))?(this.http_post("settings/delete-response",{_key:a},!1),!0):!1};this.stop_spellchecking=function(){var a;
  window.tinyMCE&&(a=tinyMCE.get(this.env.composebody))?a.plugins&&a.plugins.spellchecker&&a.plugins.spellchecker.active&&a.execCommand("mceSpellCheck"):(a=this.env.spellcheck)&&a.state&&"ready"!=a.state&&"no_error_found"!=a.state&&$(a.spell_span).trigger("click");this.spellcheck_state()};this.spellcheck_state=function(){var a,b;window.tinyMCE&&(a=tinyMCE.get(this.env.composebody))&&a.plugins&&a.plugins.spellchecker?b=a.plugins.spellchecker.active:(a=this.env.spellcheck)&&a.state&&(b="ready"!=a.state&&
  "no_error_found"!=a.state);if(rcmail.buttons.spellcheck)$("#"+rcmail.buttons.spellcheck[0].id)[b?"addClass":"removeClass"]("selected");return b};this.spellcheck_lang=function(){var a;if(window.tinyMCE&&(a=tinyMCE.get(this.env.composebody))&&a.plugins&&a.plugins.spellchecker)return a.plugins.spellchecker.selectedLang;if(this.env.spellcheck)return GOOGIE_CUR_LANG};this.spellcheck_lang_set=function(a){var b;window.tinyMCE&&(b=tinyMCE.get(this.env.composebody))&&b.plugins?b.plugins.spellchecker.selectedLang=
  a:this.env.spellcheck&&this.env.spellcheck.setCurrentLanguage(a)};this.spellcheck_resume=function(a,b){if(a){var d=tinyMCE.get(this.env.composebody),e=d.plugins.spellchecker;e.active=1;e._markWords(b);d.nodeChanged()}else{var e=this.env.spellcheck;e.prepare(!1,!0);e.processData(b)}this.spellcheck_state()};this.set_draft_id=function(a){var b;a&&a!=this.env.draft_id&&((b=this.opener())&&"mail"==b.env.task&&""==b.env.action&&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&&window.frames.savetarget.history.back());this.remove_compose_data(this.env.compose_id)};this.auto_save_start=function(){this.env.draft_autosave&&(this.save_timer=setTimeout(function(){l.command("savedraft")},1E3*this.env.draft_autosave));!this.local_save_timer&&window.localStorage&&(this.compose_type_activity=this.compose_type_activity_last=0,$(document).bind("keypress",function(a){l.compose_type_activity++}),
  this.local_save_timer=setInterval(function(){l.compose_type_activity>l.compose_type_activity_last&&(l.save_compose_form_local(),l.compose_type_activity_last=l.compose_type_activity)},5E3));this.busy=!1};this.compose_field_hash=function(a){var b,d,e,f="",g=["to","cc","bcc","subject"];for(d=0;d<g.length;d++)if(e=$('[name="_'+g[d]+'"]').val())f+=e+":";f=window.tinyMCE&&(b=tinyMCE.get(this.env.composebody))?f+b.getContent():f+$("[name='_message']").val();if(this.env.attachments)for(var h in this.env.attachments)f+=
  h;a&&(this.cmp_hash=f);return f};this.save_compose_form_local=function(){var a={session:this.env.session_id,changed:(new Date).getTime()},b=!0;window.tinyMCE&&tinyMCE.get(this.env.composebody)&&tinyMCE.triggerSave();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(window.localStorage&&!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||(tinyMCE.execCommand("mceAddControl",!1,this.env.composebody),this.triggerEvent("aftertoggle-editor",{mode:"html"})):b&&(tinyMCE.execCommand("mceRemoveControl",!1,this.env.composebody),this.triggerEvent("aftertoggle-editor",{mode:"plain"})))};this.remove_compose_data=function(a){if(window.localStorage){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(){if(window.localStorage){for(var a=this.local_storage_get_item("compose.index",[]),b=0;b<a.length;b++)this.local_storage_remove_item("compose."+a[b]);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);
  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;var d,e,f=-1,g=a.options[a.selectedIndex].value,h=$("[name='_message']"),k=h.val(),l="1"==$("input[name='_is_html']").val(),m=this.env.identity,n=this.env.recipients_separator,q=RegExp.escape(n),u=["replyto","bcc"];for(d in u){e=u[d];var v=m&&this.env.identities[m]?this.env.identities[m][e]:"",s=g&&this.env.identities[g]?this.env.identities[g][e]:
  "",w=$('[name="_'+e+'"]'),t=w.val();v&&t&&(e=RegExp("\\s*"+RegExp.escape(v)+"\\s*"),t=t.replace(e,""));e=RegExp(q+"\\s*"+q,"g");t=t.replace(e,n);e=RegExp("^[\\s"+q+"]+");t=t.replace(e,"");s&&-1==t.indexOf(s)&&-1==t.indexOf(s.replace(/"/g,""))&&(t&&(e=RegExp("["+q+"\\s]+$"),t=t.replace(e,"")+n+" "),t+=s+n+" ");(v||s)&&w.val(t).change()}this.env.signatures&&this.env.signatures[g]?(this.enable_command("insert-sig",!0),this.env.compose_commands.push("insert-sig")):this.enable_command("insert-sig",!1);
  l?b&&this.env.signatures&&(d=tinyMCE.get(this.env.composebody),h=d.dom.get("_rc_sig"),h||(k=d.getBody(),m=d.getDoc(),h=m.createElement("div"),h.setAttribute("id","_rc_sig"),this.env.top_posting?(d.getWin().focus(),d=d.selection.getNode(),"BODY"==d.nodeName?(k.insertBefore(h,k.firstChild),k.insertBefore(m.createElement("br"),k.firstChild)):(k.insertBefore(h,d.nextSibling),k.insertBefore(m.createElement("br"),d.nextSibling))):(bw.ie&&k.appendChild(m.createElement("br")),k.appendChild(h))),this.env.signatures[g]&&
  (h.innerHTML=this.env.signatures[g].html)):(b&&m&&this.env.signatures&&this.env.signatures[m]&&(m=this.env.signatures[m].text,m=m.replace(/\r\n/g,"\n"),f=this.env.top_posting?k.indexOf(m):k.lastIndexOf(m),0<=f&&(k=k.substring(0,f)+k.substring(f+m.length,k.length))),b&&this.env.signatures&&this.env.signatures[g]?(m=this.env.signatures[g].text,m=m.replace(/\r\n/g,"\n"),this.env.top_posting?0<=f?(k=k.substring(0,f)+m+k.substring(f,k.length),d=f-1):k?(pos=this.get_caret_pos(h.get(0)))?(k=k.substring(0,
  pos)+"\n"+m+"\n\n"+k.substring(pos,k.length),d=pos):(d=0,k="\n\n"+m+"\n\n"+k.replace(/^[\r\n]+/,"")):(d=0,k="\n\n"+m):(k=k.replace(/[\r\n]+$/,""),d=!this.env.top_posting&&k.length?k.length+1:0,k+="\n\n"+m)):d=this.env.top_posting?0:k.length,h.val(k),this.set_caret_pos(h.get(0),d));this.env.identity=g;this.triggerEvent("change_identity");return!0};this.upload_file=function(a,b){if(!a)return!1;var d=0,e=0;$("input[type=file]",a).each(function(a,b){var f=b.files?b.files.length:b.value?1:0;if(b.files)for(a=
  0;a<f;a++)d+=b.files[a].size;e+=f});if(e){if(this.env.max_filesize&&this.env.filesizeerror&&d>this.env.max_filesize)return this.display_message(this.env.filesizeerror,"error"),!1;var f=this.async_upload_form(a,b||"upload",function(a){var b,d="";try{this.contentDocument?b=this.contentDocument:this.contentWindow&&(b=this.contentWindow.document),d=b.childNodes[0].innerHTML}catch(e){}d.match(/add2attachment/)||bw.opera&&(!rcmail.env.uploadframe||rcmail.env.uploadframe!=a.data.ts)||(d.match(/display_message/)||
  rcmail.display_message(rcmail.get_label("fileuploaderror"),"error"),rcmail.remove_from_attachment_list(a.data.ts));bw.opera&&(rcmail.env.uploadframe=a.data.ts)}),g="<span>"+this.get_label("uploading"+(1<e?"many":""))+"</span>",h=f.replace(/^rcmupload/,"");this.add2attachment_list(h,{name:"",html:g,classname:"uploading",frame:f,complete:!1});this.env.upload_progress_time&&this.upload_progress_start("upload",h);this.gui_objects.attachmentform=a;return!0}return!1};this.add2attachment_list=function(a,
  b,d){if(!this.gui_objects.attachmentlist)return!1;!b.complete&&l.env.loadingicon&&(b.html='<img src="'+l.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"))+"</a>"+b.html);var e,f=$("<li>");f.attr("id",a).addClass(b.classname).html(b.html).on("mouseover",
  function(){rcube_webmail.long_subject_title_ex(this,0)});d&&(e=document.getElementById(d))?f.replaceAll(e):f.appendTo(this.gui_objects.attachmentlist);d&&this.env.attachments[d]&&delete this.env.attachments[d];this.env.attachments[a]=b;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(){rcmail.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);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("compose"==this.env.action&&this.contact_list?"search-contacts":"search",a,b);this.env.qsearch={lock:b,request:a}}};this.search_params=function(a,b){var d,e={},f=[],g=this.env.search_mods,
  h=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);if(a&&(e._q=a,g&&this.message_list&&(g=g[h]?g[h]:g["*"]),g)){for(d in g)f.push(d);e._headers=f.join(",")}h&&(e._mbox=h);return e};this.reset_qsearch=function(){this.gui_objects.qsearchbox&&(this.gui_objects.qsearchbox.value="");this.env.qsearch&&this.abort_request(this.env.qsearch);this.env.qsearch=null;this.env.search_request=
  null;this.env.search_id=null};this.sent_successfully=function(a,b,d){this.display_message(b,a);if(this.env.extwin){var e=this.opener();this.lock_form(this.gui_objects.messageform);e&&(e.display_message(b,a),d&&"mail"==e.env.task&&""==e.env.action&&0<=$.inArray(e.env.mailbox,d)&&e.command("list"));setTimeout(function(){window.close()},1E3)}else setTimeout(function(){l.list_mailbox()},500)};this.ksearch_keydown=function(a,b,d){this.ksearch_timer&&clearTimeout(this.ksearch_timer);var e=rcube_event.get_keycode(a),
  f=rcube_event.get_modifier(a);switch(e){case 38:case 40:if(!this.ksearch_visible())return;e=38==e?1:0;b=document.getElementById("rcmksearchSelected");b||(b=this.ksearch_pane.__ul.firstChild);b&&this.ksearch_select(e?b.previousSibling:b.nextSibling);return rcube_event.cancel(a);case 9:if(f==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(){l.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){var b=$("#rcmksearchSelected");b[0]&&a&&b.removeAttr("id").removeClass("selected");a&&($(a).attr("id","rcmksearchSelected").addClass("selected"),this.ksearch_selected=a._rcm_id)};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,f="",g=b.substring(0,d),b=b.substring(d+this.ksearch_value.length,b.length);this.ksearch_destroy();"object"===typeof this.env.contacts[a]&&this.env.contacts[a].id?(f+=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)):"string"===typeof this.env.contacts[a]&&(f=this.env.contacts[a]+this.env.recipients_delimiter,e=!0);this.ksearch_input.value=g+f+b;d+=f.length;this.ksearch_input.setSelectionRange&&this.ksearch_input.setSelectionRange(d,d);e&&(this.triggerEvent("autocomplete_insert",{field:this.ksearch_input,insert:f}),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);if(b!=this.ksearch_value)if(this.ksearch_destroy(),b.length&&b.length<e)this.ksearch_info||(this.ksearch_info=this.display_message(this.get_label("autocompletechars").replace("$min",e)));else if(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)){var f,g,e=(new Date).getTime(),b={_search:b,_id:e},d=a&&a.threads?a.threads:1;f=a&&a.sources?
  a.sources:[];a=a&&a.action?a.action:"mail/autocomplete";this.ksearch_data={id:e,sources:f.slice(),action:a,locks:[],requests:[],num:f.length};for(e=0;e<d;e++){f=this.ksearch_data.sources.shift();if(1<d&&void 0===f)break;b._source=f?f:"";f=this.display_message(this.get_label("searching"),"loading");g=this.http_post(a,b,f);this.ksearch_data.locks.push(f);this.ksearch_data.requests.push(g)}}}};this.ksearch_query_results=function(a,b,d){if(this.ksearch_value&&(!this.ksearch_input||b==this.ksearch_value)){var e,
  f,g,h,k,p=this.ksearch_value;b=this.ksearch_data;var m=this.env.autocomplete_max?this.env.autocomplete_max:15;this.ksearch_pane||(g=$("<ul>"),this.ksearch_pane=$("<div>").attr("id","rcmKSearchpane").css({position:"absolute","z-index":3E4}).append(g).appendTo(document.body),this.ksearch_pane.__ul=g[0]);g=this.ksearch_pane.__ul;d&&this.ksearch_pane.data("reqid")==d?m-=g.childNodes.length:(this.ksearch_pane.data("reqid",d),g.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&&(f=a.length))for(e=0;e<f&&0<m;e++)k="object"===typeof a[e]?a[e].name:a[e],h=document.createElement("LI"),h.innerHTML=k.replace(RegExp("("+RegExp.escape(p)+")","ig"),"##$1%%").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/##([^%]+)%%/g,"<b>$1</b>"),h.onmouseover=function(){l.ksearch_select(this)},h.onmouseup=function(){l.ksearch_click(this)},h._rcm_id=this.env.contacts.length+e,g.appendChild(h),m-=1;g.childNodes.length&&
  (this.ksearch_pane.show(),this.env.contacts.length||($("li:first",g).attr("id","rcmksearchSelected").addClass("selected"),this.ksearch_selected=0));f&&(this.env.contacts=this.env.contacts.concat(a));if(b.id==d)if(b.num--,0<m&&b.sources.length){if(a=b.sources.shift())a={_search:p,_id:d,_source:a},d=this.display_message(this.get_label("searching"),"loading"),b=this.http_post(b.action,a,d),this.ksearch_data.locks.push(d),this.ksearch_data.requests.push(b)}else m||(this.ksearch_msg||(this.ksearch_msg=
  this.display_message(this.get_label("autocompletemore"))),this.ksearch_abort())}};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_destroy()};this.ksearch_destroy=
  function(){this.ksearch_abort();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.ksearch_abort=function(){var a,b,d=this.ksearch_data;if(d)for(a=0,b=d.locks.length;a<b;a++)this.abort_request({request:d.requests[a],lock:d.locks[a]})};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,f,g=this,h=!1,k=this.env.source?this.env.address_sources[this.env.source]:null;(d=a.get_single_selection())?this.preview_timer=setTimeout(function(){g.load_contact(d,"show")},200):this.env.contentframe&&this.show_contentframe(!1);if(a.selection.length){a.draggable=!1;this.env.selection_sources=[];k&&this.env.selection_sources.push(this.env.source);for(b in a.selection)f=a.data[a.selection[b]],k?h=h||!k.readonly&&!f.readonly:(e=String(a.selection[b]).replace(/^[^-]+-/,
  ""))&&this.env.address_sources[e]&&(h=h||!this.env.address_sources[e].readonly&&!f.readonly,this.env.selection_sources.push(e)),"group"!=f._type&&(a.draggable=!0);this.env.selection_sources=$.unique(this.env.selection_sources)}this.enable_command("group-remove-selected",this.env.group&&0<a.selection.length&&h);this.enable_command("compose",this.env.group||0<a.selection.length);this.enable_command("export-selected","copy",0<a.selection.length);this.enable_command("edit",d&&h);this.enable_command("delete",
  "move",0<a.selection.length&&h);return!1};this.list_contacts=function(a,b,d){var e,f={},g=window;a||(a=this.env.source);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()):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;var h=$.inArray(this.env.group,this.env.address_group_stack);this.env.address_group_stack=
  0>h?[]:this.env.address_group_stack.slice(0,h);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.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))g=e,f._framed=1;b&&(f._gid=b);d&&(f._page=d);a&&(f._source=a);this.env.search_request&&(f._search=
  this.env.search_request);this.set_busy(!0,"loading");this.location_href(f,g)}};this.list_contacts_remote=function(a,b,d){this.list_contacts_clear();var e={},f=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,f)};this.list_contacts_clear=function(){this.contact_list.data={};this.contact_list.clear(!0);this.show_contentframe(!1);
  this.enable_command("delete","move","copy",!1);this.enable_command("compose",this.env.group?!0:!1)};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>').addClass("poplink").appendTo(b).click(function(a){return l.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,f={},g=window,h=this.contact_list?this.contact_list.data[a]:null;if(e=this.get_frame_window(this.env.contentframe))f._framed=1,g=e,this.show_contentframe(!0),a||this.contact_list.clear_selection(),this.enable_command("compose",h&&h.email),this.enable_command("export-selected",h&&"group"!=h._type);else if(d)return!1;!b||!a&&"add"!=b||this.drag_active||(this.env.group&&(f._gid=this.env.group),f._action=b,f._source=this.env.source,f._cid=a,this.location_href(f,g,!0));return!0};
  this.group_member_change=function(a,b,d,e){a="add"==a?"add":"del";var f=this.get_label("add"==a?"addingmember":"removingmember"),f=this.display_message(f,"loading");this.http_post("group-"+a+"members",{_cid:b,_source:d,_gid:e},f)};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:"",f=this.contact_list.get_selection().join(",");f&&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:f,_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:f,_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,
  f=[],g=this.display_message(this.get_label("delete"==a?"contactdeleting":"movingcontact"),"loading");if(this.env.cid)f.push(this.env.cid);else{for(e=0;e<d.length;e++)id=d[e],f.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=f.join(",");this.env.group&&(b._gid=this.env.group);this.env.search_request&&(b._search=this.env.search_request);this.http_post(a,b,g);return!0}};this.update_contact_row=
  function(a,b,d,e,f){var g=this.contact_list;a=this.html_identifier(a);g.rows[a]||(a=a+"-"+e,d&&(d=d+"-"+e));g.update_row(a,b,d,!0);g.data[a]=f};this.add_contact_row=function(a,b,d,e){if(!this.gui_objects.contactslist)return!1;var f,g=this.contact_list,h={cols:[]};h.id="rcmrow"+this.html_identifier(a);h.className="contact "+(d||"");g.in_selection(a)&&(h.className+=" selected");for(f in b)d={},d.className=String(f).toLowerCase(),d.innerHTML=b[f],h.cols.push(d);g.data[a]=e;g.insert_row(h);this.enable_command("export",
  0<g.rowcount)};this.init_contact_form=function(){var a=this,b;if(this.env.coltypes)for(b in this.set_photo_actions($("#ff_photo").val()),this.env.coltypes)this.init_edit_field(b,null);$(".contactfieldgroup .row a.deletebutton").click(function(){a.delete_edit_field(this);return!1});$("select.addfieldmenu").change(function(b){a.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:"-100:+10",showOtherMonths:!0,selectOtherMonths:!0,onSelect:function(a){$(this).focus().val(a)}}),$("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(){this.add_input_row("contactgroup")};this.group_rename=function(){if(this.env.group&&this.gui_objects.folderlist){if(!this.name_input){this.enable_command("list",
  "listgroup",!1);this.name_input=$("<input>").attr("type","text").val(this.env.contactgroups["G"+this.env.source+this.env.group].name);this.name_input.bind("keydown",function(a){return rcmail.add_input_keydown(a)});this.env.group_renaming=!0;var a,b=this.get_folder_li("G"+this.env.source+this.env.group,"",!0);b&&(a=b.firstChild)&&$(a).hide().before(this.name_input)}this.name_input.select().focus()}};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.add_input_row=function(a){if(this.gui_objects.folderlist){if(!this.name_input){this.name_input=$("<input>").attr("type","text").data("tt",
  a);this.name_input.bind("keydown",function(a){return rcmail.add_input_keydown(a)});this.name_input_li=$("<li>").addClass(a).append(this.name_input);var b;a="contactsearch"==a?this.gui_objects.folderlist:$("ul.groups",this.get_folder_li(this.env.source,"",!0));b=$("li:last",a);b.length?this.name_input_li.insertAfter(b):(this.name_input_li.appendTo(a),a.show())}this.name_input.select().focus()}};this.group_remove_selected=function(){l.http_post("group-delmembers",{_cid:this.contact_list.selection,_source:this.env.source,
  _gid:this.env.group})};this.remove_group_contacts=function(a){if("undefined"!=typeof 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.add_input_keydown=function(a){var b=rcube_event.get_keycode(a),d=$(a.target);a=d.data("tt");if(13==b){if(b=d.val())d=this.set_busy(!0,"loading"),"contactsearch"==a?this.http_post("search-create",{_search:this.env.search_request,_name:b},d):this.env.group_renaming?
  this.http_post("group-rename",{_source:this.env.source,_gid:this.env.group,_name:b},d):this.http_post("group-create",{_source:this.env.source,_name:b},d);return!1}27==b&&this.reset_add_input();return!0};this.reset_add_input=function(){if(this.name_input){var a=this.name_input.parent();this.env.group_renaming?(a.children().last().show(),this.env.group_renaming=!1):1==$("li",a.parent()).length&&a.parent().hide();this.name_input.remove();this.name_input_li&&this.name_input_li.remove();this.name_input=
  this.name_input_li=null}this.enable_command("list","listgroup",!0)};this.insert_contact_group=function(a){this.reset_add_input();a.type="group";var b="G"+a.source+a.id,d=$("<a>").attr("href","#").attr("rel",a.source+":"+a.id).click(function(){return rcmail.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,!0);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){this.reset_add_input();var b="G"+a.source+a.id,d={};if(a.newid){var e="G"+a.source+a.newid,f=$.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];f.id=a.newid;f.type="group";d.id=e;d.html=$("<a>").attr("href","#").attr("rel",a.source+":"+a.newid).click(function(){return rcmail.command("listgroup",f,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;this.enable_command("group-create",a&&a.groups&&!a.readonly);this.enable_command("group-rename","group-delete",a&&a.groups&&this.env.group&&!a.readonly)};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 f=$(".contactfieldgroup",b).last(),e=$("<fieldset>").addClass("contactfieldgroup contactcontroller"+a);f.length?e.insertAfter(f):b.prepend(e)}if(e.length&&"FIELDSET"==
  e.get(0).nodeName){var g;b=this.env.coltypes[a];var f=$("<div>").addClass("row"),h=$("<div>").addClass("contactfieldcontent data"),k=$("<div>").addClass("contactfieldlabel label");b.subtypes_select?k.html(b.subtypes_select):k.html(b.label);var p=1!=b.limit?"[]":"";if("text"==b.type||"date"==b.type)g=$("<input>").addClass("ff_"+a).attr({type:"text",name:"_"+a+p,size:b.size}).appendTo(h),this.init_edit_field(a,g),"date"==b.type&&$.datepicker&&g.datepicker();else if("textarea"==b.type)g=$("<textarea>").addClass("ff_"+
  a).attr({name:"_"+a+p,cols:b.size,rows:b.rows}).appendTo(h),this.init_edit_field(a,g);else if("composite"==b.type){var m,n,q=[],u=[];if(g=this.env[a+"_template"])for(m=0;m<g.length;m++)q.push(g[m][1]),u.push(g[m][2]);else for(m in b.childs)q.push(m);for(var v=0;v<q.length;v++)m=q[v],g=b.childs[m],g=$("<input>").addClass("ff_"+m).attr({type:"text",name:"_"+m+p,size:g.size}).appendTo(h),h.append(u[v]||" "),this.init_edit_field(m,g),n||(n=g);g=n}else if("select"==b.type){g=$("<select>").addClass("ff_"+
  a).attr("name","_"+a+p).appendTo(h);var s=g.attr("options");s[s.length]=new Option("---","");b.options&&$.each(b.options,function(a,b){s[s.length]=new Option(b,a)})}g&&($('<a href="#del"></a>').addClass("contactfieldbutton deletebutton").attr({title:this.get_label("delete"),rel:a}).html(this.env.delbutton).click(function(){l.delete_edit_field(this);return!1}).appendTo(h),f.append(k).append(h).appendTo(e.show()),g.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"),f=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());f.length&&(a=f.children('option[value="'+b+'"]'),a.length?a.prop("disabled",!1):$("<option>").attr("value",b).html(d.label).appendTo(f),f.show())};this.upload_contact_photo=
  function(a){a&&a.elements._photo.value&&(this.async_upload_form(a,"upload-photo",function(a){rcmail.set_busy(!1,null,rcmail.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){this.reset_add_input();var d="S"+b,e=$("<a>").attr("href","#").attr("rel",b).click(function(){return rcmail.command("listsearch",b,this)}).html(a),f={name:a,id:b};this.treelist.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",f)};this.search_create=function(){this.add_input_row("contactsearch")};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.treelist.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.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,f={_action:b,_iid:a};if(d=this.get_frame_window(this.env.contentframe))f._framed=1,e=d;(a||"add-identity"==b)&&this.location_href(f,e,!0);return!0};this.delete_identity=function(a){var b=this.identity_list.get_selection();
  if(b.length||this.env.iid)return a||(a=this.env.iid?this.env.iid:b[0]),confirm(this.get_label("deleteidentityconfirm"))&&this.goto_url("delete-identity",{_iid:a,_token:this.env.request_token},!0),!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.init_subscription_list=function(){var a=this,b=RegExp.escape(this.env.delimiter);this.last_sub_rx=RegExp("["+b+"]?[^"+b+"]+$");this.subscription_list=
  new rcube_list_widget(this.gui_objects.subscriptionlist,{multiselect:!1,draggable:!0,keyboard:!1,toggleselect:!0});this.subscription_list.addEventListener("select",function(b){a.subscription_select(b)}).addEventListener("dragstart",function(b){a.drag_active=!0}).addEventListener("dragend",function(b){a.subscription_move_folder(b)}).addEventListener("initrow",function(b){b.obj.onmouseover=function(){a.focus_subscription(b.id)};b.obj.onmouseout=function(){a.unfocus_subscription(b.id)}}).init();$("#mailboxroot").mouseover(function(){a.focus_subscription(this.id)}).mouseout(function(){a.unfocus_subscription(this.id)})};
  this.focus_subscription=function(a){var b,d;this.drag_active&&this.env.mailbox&&(b=document.getElementById(a))&&this.env.subscriptionrows[a]&&null!==(d=this.env.subscriptionrows[a][0])&&this.check_droptarget(d)&&!this.env.subscriptionrows[this.get_folder_row_id(this.env.mailbox)][2]&&d!=this.env.mailbox.replace(this.last_sub_rx,"")&&!d.startsWith(this.env.mailbox+this.env.delimiter)&&(this.env.dstfolder=d,$(b).addClass("droptarget"))};this.unfocus_subscription=function(a){var b=$("#"+a);this.env.dstfolder=
  null;this.env.subscriptionrows[a]&&b.length?b.removeClass("droptarget"):$(this.subscription_list.frame).removeClass("droptarget")};this.subscription_select=function(a){var b,d;a&&(b=a.get_single_selection())&&(d=this.env.subscriptionrows["rcmrow"+b])?(this.env.mailbox=d[0],this.show_folder(d[0]),this.enable_command("delete-folder",!d[2])):(this.env.mailbox=null,this.show_contentframe(!1),this.enable_command("delete-folder","purge",!1))};this.subscription_move_folder=function(a){this.env.mailbox&&
  null!==this.env.dstfolder&&this.env.dstfolder!=this.env.mailbox&&this.env.dstfolder!=this.env.mailbox.replace(this.last_sub_rx,"")&&(a=this.env.mailbox.split(this.env.delimiter).pop(),a=""===this.env.dstfolder?a:this.env.dstfolder+this.env.delimiter+a,a!=this.env.mailbox&&(this.http_post("rename-folder",{_folder_oldname:this.env.mailbox,_folder_newname:a},this.set_busy(!0,"foldermoving")),this.subscription_list.draglayer.hide()));this.drag_active=!1;this.unfocus_subscription(this.get_folder_row_id(this.env.dstfolder))};
  this.create_folder=function(){this.show_folder("",this.env.mailbox)};this.delete_folder=function(a){a=this.get_folder_row_id(a?a:this.env.mailbox);if((a=this.env.subscriptionrows[a][0])&&confirm(this.get_label("deletefolderconfirm"))){var b=this.set_busy(!0,"folderdeleting");this.http_post("delete-folder",{_mbox:a},b)}};this.add_folder_row=function(a,b,d,e,f,g){if(!this.gui_objects.subscriptionlist)return!1;var h,k,l,m,n=[],q=[],u=[],v=this.gui_objects.subscriptionlist.tBodies[0];h=$("tr",v).get(1);
  var s="rcmrow"+(new Date).getTime();if(!h)return this.goto_url("folders"),!1;h=$(h).clone(!0);h.attr({id:s,"class":g});h.find("td:first").html(b);$('input[name="_subscribed[]"]',h).val(a).prop({checked:e?!0:!1,disabled:d?!0:!1});this.env.subscriptionrows[s]=[a,b,!1];var w=RegExp(RegExp.escape(this.env.delimiter),"g"),t=String.fromCharCode(0);$.each(this.env.subscriptionrows,function(a,b){if(4>b.length){var d=b[0],d=d.replace(w,t);b.push(d)}n.push(b)});n.sort(function(a,b){var d=a.length-1;n1=a[d];
  n2=b[d];return n1<n2?-1:1});for(k in n)n[k][2]?(b=n[k][0]+this.env.delimiter,b!=this.env.prefix_ns&&(u.push(n[k][0]),l=b)):l&&n[k][0].startsWith(l)?u.push(n[k][0]):(q.push(n[k][0]),l=null);for(k=0;k<u.length;k++)a.startsWith(u[k]+this.env.delimiter)&&(m=this.get_folder_row_id(u[k]));for(k=0;!m&&k<q.length;k++)k&&q[k]==a&&(m=this.get_folder_row_id(q[k-1]));m?$("#"+m).after(h):h.appendTo(v);this.subscription_list.clear_selection();f||this.init_subscription_list();h=h.get(0);h.scrollIntoView&&h.scrollIntoView();
  return h};this.replace_folder_row=function(a,b,d,e,f){if(!this.gui_objects.subscriptionlist)return this.is_framed?parent.rcmail.replace_folder_row(a,b,d,e,f):!1;var g,h,k,l,m=this.get_folder_row_id(a),n=a.length;g=$('input[name="_subscribed[]"]',$("#"+m)).prop("checked");var q=this.get_subfolders(a);if(a==b)$("#"+m).attr("class",f||""),this.subscription_list.focus();else{this._remove_folder_row(m);e=$(this.add_folder_row(b,d,e,g,!0,f));if(d=q.length)l=a.split(this.env.delimiter).length-b.split(this.env.delimiter).length;
  for(a=0;a<d;a++)if(m=q[a],g=this.env.subscriptionrows[m][0],f=this.env.subscriptionrows[m][1],h=$("#"+m),k=h.clone(!0),h.remove(),e.after(k),e=k,g=b+g.slice(n),$('input[name="_subscribed[]"]',e).val(g),this.env.subscriptionrows[m][0]=g,0!=l){if(0<l)for(g=l;0<g;g--)f=f.replace(/^&nbsp;&nbsp;&nbsp;&nbsp;/,"");else for(g=l;0>g;g++)f="&nbsp;&nbsp;&nbsp;&nbsp;"+f;e.find("td:first").html(f);this.env.subscriptionrows[m][1]=f}this.init_subscription_list()}};this.remove_folder_row=function(a,b){var d,e,f=
  [];d=this.get_folder_row_id(a);b&&(f=this.get_subfolders(a));this._remove_folder_row(d);d=0;for(e=f.length;d<e;d++)this._remove_folder_row(f[d])};this._remove_folder_row=function(a){this.subscription_list.remove_row(a.replace(/^rcmrow/,""));$("#"+a).remove();delete this.env.subscriptionrows[a]};this.get_subfolders=function(a){for(var b=[],d=a+this.env.delimiter,e=$("#"+this.get_folder_row_id(a)).get(0);e=e.nextSibling;)if(e.id)if((a=this.env.subscriptionrows[e.id][0])&&a.startsWith(d))b.push(e.id);
  else break;return 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.get_folder_row_id=function(a){var b,d=this.env.subscriptionrows;for(b in d)if(d[b]&&d[b][0]==a)break;return 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.get_folder_row_id(a))&&$('input[name="_subscribed[]"]',$("#"+a)).prop("disabled",!0)};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)};
  var x=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 rcmail.button_sel(this._command,this._id)},d.onmouseup=function(a){return rcmail.button_out(this._command,this._id)},e&&((new Image).src=b.sel));b.over&&(d.onmouseover=function(a){return rcmail.button_over(this._command,this._id)},d.onmouseout=function(a){return rcmail.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++)x(a,this.buttons[a][b]);this.set_button(this.task,"sel")};this.set_button=function(a,b){var d,e,f,g=this.buttons[a],h=g?g.length:0;for(d=0;d<h;d++)if(e=g[d],f=document.getElementById(e.id))"image"!=e.type||e.status?e.status||(e.pas=String(f.className)):(e.pas=f._original_src?f._original_src:f.src,f.runtimeStyle&&f.runtimeStyle.filter&&f.runtimeStyle.filter.match(/src=['"]([^'"]+)['"]/)&&
  (e.pas=RegExp.$1)),"image"==e.type&&e[b]?(e.status=b,f.src=e[b]):void 0!==e[b]&&(e.status=b,f.className=e[b]),"input"==e.type?(e.status=b,f.disabled="pas"==b):"uibutton"==e.type&&$(f).button("option","disabled","pas"==b)};this.set_alttext=function(a,b){var d,e,f,g,h=this.buttons[a],k=h?h.length:0;for(d=0;d<k;d++)e=h[d],f=document.getElementById(e.id),"image"==e.type&&f?(f.setAttribute("alt",this.get_label(b)),(g=f.parentNode)&&"a"==g.tagName.toLowerCase()&&g.setAttribute("title",this.get_label(b))):
  f&&f.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,f,g,h=this.buttons[a],k=h?h.length:0;for(e=0;e<k;e++)f=h[e],f.id==b&&"act"==f.status&&(f[d]&&(g=document.getElementById(f.id))&&(g["image"==f.type?"src":"className"]=f[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){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]),1;b=b?b:"notice";var e=this,f=this.html_identifier(a),g=b+(new Date).getTime();d||(d=this.message_time*("error"==b||"warning"==b?2:1));"loading"==b&&(f="loading",d=1E3*this.env.request_timeout,a||(a=this.get_label("loading")));if(this.messages[f])return this.messages[f].obj&&this.messages[f].obj.html(a),
  "loading"==b&&this.messages[f].labels.push({id:g,msg:a}),this.messages[f].elements.push(g),setTimeout(function(){e.hide_message(g,"loading"==b)},d),g;var h=$("<div>").addClass(b).html(a).data("key",f);$(this.gui_objects.message).append(h).show();this.messages[f]={obj:h,elements:[g]};"loading"==b?this.messages[f].labels=[{id:g,msg:a}]:h.click(function(){return e.hide_message(h)});this.triggerEvent("message",{message:a,type:b,timeout:d,object:h});0<d&&setTimeout(function(){e.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,f,g,h=this.messages;if("object"===typeof a)g=$(a),d=g.data("key"),this.hide_message_object(g,b),h[d]&&delete h[d];else for(d in h)for(e in h[d].elements)if(h[d]&&h[d].elements[e]==a)if(h[d].elements.splice(e,1),!h[d].elements.length)this.hide_message_object(h[d].obj,b),delete h[d];else if("loading"==d)for(f in h[d].labels)h[d].labels[f].id==a?delete h[d].labels[f]:
  (g=h[d].labels[f].msg,h[d].obj.html(g))}};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.show_popup_dialog=function(a,b,d,e){if(this.is_framed())return parent.rcmail.show_popup_dialog(a,b,d,e);a=$('<div class="popup">').html(a).dialog($.extend({title:b,
  buttons:d,modal:!0,resizable:!0,width:500,close:function(a,b){$(this).remove()}},e||{}));e=$(window);b=e.width();e=e.height();var f=a.width(),g=a.height();a.dialog("option",{height:Math.min(e-40,g+75+(d?50:0)),width:Math.min(b-20,f+36)});return a};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.select_folder=function(a,b,d){this.treelist?this.treelist.select(a):
  this.gui_objects.folderlist&&($("li.selected",this.gui_objects.folderlist).removeClass("selected").addClass("unfocused"),$(this.get_folder_li(a,b,d)).removeClass("unfocused").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,f=e?e.thead:null,g,h,k;this.env.coltypes=a;if(f){if(b){g=document.createElement("thead");k=document.createElement("tr");c=0;for(h=b.length;c<h;c++)a=document.createElement("td"),a.innerHTML=b[c].html||"",b[c].id&&(a.id=b[c].id),b[c].className&&(a.className=b[c].className),
  k.appendChild(a);g.appendChild(k);f.parentNode.replaceChild(g,f);e.thead=f=g}g=0;for(h=this.env.coltypes.length;g<h;g++)b=this.env.coltypes[g],!(a=f.rows[0].cells[g])||"from"!=b&&"to"!=b&&"fromto"!=b||(a.id="rcm"+b,$("span,a",a).text(this.get_label("fromto"==b?d:b)),$("a",a).click(function(){return rcmail.command("sort",this.id.replace(/^rcm/,""),this)}))}this.env.subject_col=null;this.env.flagged_col=null;this.env.status_col=null;0<=(g=$.inArray("subject",this.env.coltypes))&&(this.env.subject_col=
  g,e&&(e.subject_col=g));0<=(g=$.inArray("flag",this.env.coltypes))&&(this.env.flagged_col=g);0<=(g=$.inArray("status",this.env.coltypes))&&(this.env.status_col=g);e&&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).html(a.percent+"%").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,f,g,h;if(f=this.get_folder_li(a,"",!0)){g=this.env.unread_counts[a]?this.env.unread_counts[a]:0;e=$(f).children("a").eq(0);d=e.children("span.unreadcount");!d.length&&g&&(d=$("<span>").addClass("unreadcount").appendTo(e));e=0;if((h=f.getElementsByTagName("div")[0])&&h.className.match(/collapsed/))for(var k in this.env.unread_counts)k.startsWith(a+this.env.delimiter)&&(e+=this.env.unread_counts[k]);g&&d.length?d.html(this.env.unreadwrap.replace(/%[sd]/,g)):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<g+e?$(f).addClass("unread"):$(f).removeClass("unread")}d=/^\([0-9]+\)\s+/i;b&&document.title&&(f="",f=String(document.title),f=g&&f.match(d)?f.replace(d,"("+g+") "):g?"("+g+") "+f:f.replace(d,""),this.set_pagetitle(f))};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){if(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(){rcmail.command("hide-headers","",b)},!this.gui_objects.all_headers_box.innerHTML)){var d=this.display_message(this.get_label("loading"),"loading");this.http_post("headers",{_uid:this.env.uid},d)}};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(){rcmail.command("show-headers","",b)})};this.folder_selector=function(a,b){var d=this.folder_selector_element;if(!d){var e=[],f=this.env.delimiter,g=$('<ul class="toolbarmenu iconized">'),h=document.createElement("li"),k=document.createElement("a"),p=document.createElement("span"),d=$('<div id="folder-selector" class="popupmenu"></div>');k.href="#";k.className="icon";$.each(this.env.mailboxes_list,
  function(){var a,b=a=0,g=l.env.mailboxes[this],m=g.id,s=k.cloneNode(!1),w=h.cloneNode(!1);g.virtual?s.className+=" virtual":(s.className+=" active",s.onclick=function(){d.hide().data("callback")(g.id)});g["class"]&&(s.className+=" "+g["class"]);for(;0<=(b=m.indexOf(f,b));)a++,b++;s.style.paddingLeft=a?16*a+"px":0;a=p.cloneNode(!1);$(a).text(g.name);s.appendChild(a);w.appendChild(s);e.push(w)});g.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);var m=function(a){a.target!=d.get(0)&&d.hide()};$(document.body).on("mouseup",m);$("iframe").contents().on("mouseup",m).load(function(a){try{$(this).contents().on("mouseup",m)}catch(b){}});this.folder_selector_element=d}this.element_position(d,a);d.show().data("callback",b)};this.element_position=function(a,b){b=$(b);var d=$(window),e=b.outerWidth(),f=b.outerHeight(),g=b.data("menu-pos"),h=d.height(),k=$(a).height(),l=$(a).width(),m=b.offset(),n=m.top,m=m.left+e;"bottom"==
  g?(n+=f,m-=e):m-=5;n+k>h&&(n-=k-f,0>n&&(n=Math.max(0,(h-k)/2)));m+l>d.width()&&(m-=l+e);a.css({left:m+"px",top:n+"px"})};this.html2plain=function(a,b){var d=this,e=this.set_busy(!0,"converting");this.log("HTTP POST: ?_task=utils&_action=html2text");$.ajax({type:"POST",url:"?_task=utils&_action=html2text",data:a,contentType:"application/octet-stream",error:function(a,b,h){d.http_error(a,b,h,e)},success:function(a){d.set_busy(!1,null,e);$("#"+b).val(a);d.log(a)}})};this.plain2html=function(a,b){var d=
  this.set_busy(!0,"converting");a=a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");$("#"+b).val(a?"<pre>"+a+"</pre>":"");this.set_busy(!1,null,d)};this.url=function(a,b){var d="string"===typeof b?"&"+b:"";"string"!==typeof a?b=a:b&&"object"===typeof b||(b={});b._action=a?a:this.env.action;var e=this.env.comm_path,f,g={};b._action.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]&&
  (g[f]=b[f]);return e+"&"+$.param(g)+d};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){this.redirect(this.url(a,b))};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.http_request=function(a,b,d){var e=this.url(a,b);b=this.triggerEvent("request"+a,b);if(void 0!==b){if(!1===b)return!1;e=this.url(a,b)}e+="&_remote=1";this.log("HTTP GET: "+e);this.start_keepalive();return $.ajax({type:"GET",url:e,data:{_unlock:d?d:0},dataType:"json",success:function(a){l.http_response(a)},error:function(b,e,h){l.http_error(b,e,h,d,a)}})};this.http_post=function(a,b,d){var e=this.url(a);b&&"object"===typeof b?(b._remote=1,b._unlock=d?
  d:0):b+=(b?"&":"")+"_remote=1"+(d?"&_unlock="+d:"");var f=this.triggerEvent("request"+a,b);if(void 0!==f){if(!1===f)return!1;b=f}this.log("HTTP POST: "+e);this.start_keepalive();return $.ajax({type:"POST",url:e,data:b,dataType:"json",success:function(a){l.http_response(a)},error:function(b,e,f){l.http_error(b,e,f,d,a)}})};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);if("object"===typeof a.texts)for(var b in a.texts)"string"===typeof a.texts[b]&&this.add_label(b,a.texts[b]);a.exec&&(this.log(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",!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){l.set_message(a,"deleted",b.deleted);l.set_message(a,"replied",b.answered);l.set_message(a,"unread",!b.seen);l.set_message(a,"forwarded",b.forwarded);l.set_message(a,"flagged",b.flagged)}),delete this.env.recent_flags;case "getunread":case "search":this.env.qsearch=null;case "list":"mail"==this.task?(this.enable_command("show","select-all","select-none",0<this.env.messagecount),this.enable_command("expunge",this.env.exists),
  this.enable_command("purge",this.purge_mailbox_test()),this.enable_command("expand-all","expand-unread","collapse-all",this.env.threading&&this.env.messagecount),"list"!=a.action&&"search"!=a.action||!this.message_list||(this.msglist_select(this.message_list),this.triggerEvent("listupdate",{folder:this.env.mailbox,rowcount:this.message_list.rowcount}))):"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(),this.triggerEvent("listupdate",{folder:this.env.source,rowcount:this.contact_list.rowcount}))}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,f){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"==f&&setTimeout(function(){l.keep_alive();l.start_keepalive()},3E4))};this.session_error=function(a){this.env.server_error=401;"compose"==this.env.action?this.save_compose_form_local():
  a&&window.setTimeout(function(){l.redirect(a,!0)},2E3)};this.iframe_loaded=function(a){this.set_busy(!1,null,a);this.submit_timer&&clearTimeout(this.submit_timer)};this.async_upload_form=function(a,b,d){var e,f=(new Date).getTime(),g="rcmupload"+f;if(this.env.upload_progress_name){e=this.env.upload_progress_name;var h=$("input[name="+e+"]",a);h.length||(h=$("<input>").attr({type:"hidden",name:e}),h.prependTo(a));h.val(f)}document.all?(document.body.insertAdjacentHTML("BeforeEnd",'<iframe name="'+
  g+'" src="program/resources/blank.gif" style="width:0;height:0;visibility:hidden;"></iframe>'),e=$('iframe[name="'+g+'"]')):e=$("<iframe>").attr("name",g).css({border:"none",width:0,height:0,visibility:"hidden"}).appendTo(document.body);e.bind("load",{ts:f},d);$(a).attr({target:g,action:this.url(b,{_id:this.env.compose_id||"",_uploadid:f}),method:"POST"}).attr(a.encoding?"encoding":"enctype","multipart/form-data").submit();return g};this.document_drag_hover=function(a,b){a.preventDefault();$(l.gui_objects.filedrop)[b?
  "addClass":"removeClass"]("active")};this.file_drag_hover=function(a,b){a.preventDefault();a.stopPropagation();$(l.gui_objects.filedrop)[b?"addClass":"removeClass"]("hover")};this.file_dropped=function(a){this.file_drag_hover(a,!1);var b=a.target.files||a.dataTransfer.files,d=window.FormData?new FormData:null,e=(this.env.filedrop.fieldname||"_file")+(this.env.filedrop.single?"":"[]"),f="------multipartformboundary"+(new Date).getTime(),g="--"+f+"\r\n";if(b&&b.length)for(var h=function(){var a=1<b.length,
  e=(new Date).getTime(),a="<span>"+(a?l.get_label("uploadingmany"):b[0].name)+"</span>";l.add2attachment_list(e,{name:"",html:a,classname:"uploading",complete:!1})||(l.file_upload_id=l.set_busy(!0,"uploading"));g+="--"+f+"--\r\n";$.ajax({type:"POST",dataType:"json",url:l.url(l.env.filedrop.action||"upload",{_id:l.env.compose_id||l.env.cid||"",_uploadid:e,_remote:1}),contentType:d?!1:"multipart/form-data; boundary="+f,processData:!1,timeout:0,data:d||g,headers:{"X-Roundcube-Request":l.env.request_token},
  xhr:function(){var a=jQuery.ajaxSettings.xhr();!d&&a.sendAsBinary&&(a.send=a.sendAsBinary);return a},success:function(a){l.http_response(a)},error:function(a,b,d){l.http_error(a,b,d,null,"attachment")}})},k=this.env.filedrop.single?0:b.length-1,p=a=0,m;a<=k&&(m=b[p]);p++)if(m.name||(m.name=m.fileName),m.size||(m.size=m.fileSize),m.type||(m.type="application/octet-stream"),!d&&/[^\x20-\x7E]/.test(m.name)&&(m.name_bin=unescape(encodeURIComponent(m.name))),!this.env.filedrop.filter||m.type.match(RegExp(this.env.filedrop.filter))){if(d){if(d.append(e,
  m),a==k)return h()}else if(window.FileReader){var n=new FileReader;n.onload=function(a,b){return function(d){g+='Content-Disposition: form-data; name="'+e+'"';g+='; filename="'+(m.name_bin||a.name)+'"\r\n';g+="Content-Length: "+a.size+"\r\n";g+="Content-Type: "+a.type+"\r\n\r\n";g+=n.result+"\r\n";g+="--"+f+"\r\n";if(b==k)return h()}}(m,a);n.readAsBinaryString(m)}else if(m.getAsBinary&&(g+='Content-Disposition: form-data; name="'+e+'"',g+='; filename="'+(m.name_bin||m.name)+'"\r\n',g+="Content-Length: "+
  m.size+"\r\n",g+="Content-Type: "+m.type+"\r\n\r\n",g+=m.getAsBinary()+"\r\n",g+="--"+f+"\r\n",a==k))return h();a++}};this.start_keepalive=function(){!this.env.session_lifetime||this.env.framed||this.env.extwin||"login"==this.task||"print"==this.env.action||(this._keepalive&&clearInterval(this._keepalive),this._keepalive=setInterval(function(){l.keep_alive()},500*this.env.session_lifetime))};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(){l.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(){l.refresh();l.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_request("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(){try{if(window.opener&&!opener.closed&&opener.rcmail)return opener.rcmail}catch(a){}};this.get_single_uid=function(){return this.env.uid?this.env.uid:this.message_list?this.message_list.get_single_selection():null};this.get_single_cid=function(){return this.env.cid?this.env.cid:this.contact_list?this.contact_list.get_single_selection():null};this.get_caret_pos=function(a){if(void 0!==a.selectionEnd)return a.selectionEnd;if(document.selection&&document.selection.createRange){var b=
  document.selection.createRange();if(b.parentElement()!=a)return 0;var d=b.duplicate();"TEXTAREA"==a.tagName?d.moveToElementText(a):d.expand("textedit");d.setEndPoint("EndToStart",b);b=d.text.length;return b<=a.value.length?b:-1}return a.value.length};this.set_caret_pos=function(a,b){if(a.setSelectionRange)a.setSelectionRange(b,b);else if(a.createTextRange){var d=a.createTextRange();d.collapse(!0);d.moveEnd("character",b);d.moveStart("character",b);d.select()}};this.get_input_selection=function(a){var b=
  0,d=0,e,f,g;"number"==typeof a.selectionStart&&"number"==typeof a.selectionEnd?(e=a.value,b=a.selectionStart,d=a.selectionEnd):(f=document.selection.createRange())&&f.parentElement()==a&&(g=a.value.length,e=a.value,d=a.createTextRange(),d.moveToBookmark(f.getBookmark()),a=a.createTextRange(),a.collapse(!1),-1<d.compareEndPoints("StartToEnd",a)?b=d=g:(b=-d.moveStart("character",-g),b+=e.slice(0,b).split("\n").length-1,-1<d.compareEndPoints("EndToEnd",a)?d=g:(d=-d.moveEnd("character",-g),d+=e.slice(0,
  d).split("\n").length-1)));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||this.disabled_form_elements&&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;if(d&&"function"==typeof d.registerProtocolHandler){var e=null;"function"==typeof d.isProtocolHandlerRegistered?(e=d.isProtocolHandlerRegistered("mailto",this.mailto_handler_uri()))&&$(b).parent().find(".mailtoprotohandler-status").html(e):$(b).click(function(){rcmail.register_protocol_handler(a);
  return!1})}else $(b).addClass("disabled").click(function(){return!1})};this.browser_capabilities_check=function(){this.env.browser_capabilities||(this.env.browser_capabilities={});void 0===this.env.browser_capabilities.pdf&&(this.env.browser_capabilities.pdf=this.pdf_support_check());void 0===this.env.browser_capabilities.flash&&(this.env.browser_capabilities.flash=this.flash_support_check());void 0===this.env.browser_capabilities.tif&&this.tif_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(){var a=new Image;a.onload=function(){rcmail.env.browser_capabilities.tif=1};a.onerror=function(){rcmail.env.browser_capabilities.tif=0};a.src="program/resources/blank.tif"};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(window.ActiveXObject){try{if(axObj=new ActiveXObject("AcroPDF.PDF"))return 1}catch(f){}try{if(axObj=new ActiveXObject("PDF.PdfCtrl"))return 1}catch(g){}}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;return 0};this.flash_support_check=function(){var a=navigator.mimeTypes?navigator.mimeTypes["application/x-shockwave-flash"]:{};if(a&&a.enabledPlugin)return 1;if(window.ActiveXObject)try{if(axObj=new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))return 1}catch(b){}return 0};
  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){a=localStorage.getItem(this.get_local_storage_prefix()+a);return null!==a?JSON.parse(a):b||null};this.local_storage_set_item=function(a,b,d){return localStorage.setItem(this.get_local_storage_prefix()+
  a,JSON.stringify(b))};this.local_storage_remove_item=function(a){return localStorage.removeItem(this.get_local_storage_prefix()+a)}}rcube_webmail.long_subject_title=function(l,x){if(!l.title){var a=$(l);a.width()+15*x>a.parent().width()&&(l.title=a.text())}};
  rcube_webmail.long_subject_title_ex=function(l,x){if(!l.title){var a=$(l),b=$.trim(a.text()),d=$("<span>").text(b).css({position:"absolute","float":"left",visibility:"hidden","font-size":a.css("font-size"),"font-weight":a.css("font-weight")}).appendTo($("body")),e=d.width();d.remove();e+15*x>a.width()&&(l.title=b)}};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;
  