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=4E3;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:", "};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&&v(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",!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",!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.row_init=function(a){b.init_message_row(a)},this.message_list.addEventListener("dblclick",function(a){b.msglist_dbl_click(a)}),this.message_list.addEventListener("click",function(a){b.msglist_click(a)}), this.message_list.addEventListener("keypress",function(a){b.msglist_keypress(a)}),this.message_list.addEventListener("select",function(a){b.msglist_select(a)}),this.message_list.addEventListener("dragstart",function(a){b.drag_start(a)}),this.message_list.addEventListener("dragmove",function(a){b.drag_move(a)}),this.message_list.addEventListener("dragend",function(a){b.drag_end(a)}),this.message_list.addEventListener("expandcollapse",function(a){b.msglist_expand(a)}),this.message_list.addEventListener("column_replace", function(a){b.msglist_set_coltypes(a)}),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.message_list.init(),this.enable_command("toggle_status","toggle_flag","menu-open","menu-save","sort",!0),this.command("list"));this.gui_objects.qsearchbox&&(null!=this.env.search_text&&(this.gui_objects.qsearchbox.value=this.env.search_text),$(this.gui_objects.qsearchbox).focusin(function(){rcmail.message_list&& rcmail.message_list.blur()}));this.set_button_titles();this.env.message_commands="show reply reply-all reply-list moveto copy delete open mark edit viewsource print load-attachment show-headers hide-headers download forward forward-inline forward-attachment".split(" ");"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))):"compose"==this.env.action?(this.env.compose_commands="send-attachment remove-attachment send cancel toggle-editor list-adresses search reset-search extwin".split(" "), this.env.drafts_mailbox&&this.env.compose_commands.push("savedraft"),this.enable_command(this.env.compose_commands,"identities",!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)),document.onmouseup=function(a){return b.doc_mouse_up(a)},this.init_messageform()):"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("select",function(a){l.compose_recipient_select(a)}),this.contact_list.addEventListener("dblclick", function(a){l.compose_add_recipient("to")}),this.contact_list.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 e={_uid:this.env.uid,_mbox:this.env.mailbox};confirm(this.get_label("mdnrequest"))||(e._flag="mdnsent",a="mark");this.http_post(a,e)}this.is_framed()||this.env.extwin||this.browser_capabilities_check();break;case "addressbook":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","listsearch","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.row_init=function(a){b.triggerEvent("insertrow",{cid:a.uid,row:a})},this.contact_list.addEventListener("keypress", function(a){b.contactlist_keypress(a)}),this.contact_list.addEventListener("select",function(a){b.contactlist_select(a)}),this.contact_list.addEventListener("dragstart",function(a){b.drag_start(a)}),this.contact_list.addEventListener("dragmove",function(a){b.drag_move(a)}),this.contact_list.addEventListener("dragend",function(a){b.drag_end(a)}),this.contact_list.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&&$(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());this.gui_objects.qsearchbox&&this.enable_command("search","reset-search","moveto",!0);break;case "settings":this.enable_command("preferences","identities","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),"add-identity"==this.env.action&&$("input[type='text']").first().select()):"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),$("input[type='text']").first().select());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)}),this.identity_list.init(),this.identity_list.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)}), this.sections_list.init(),this.sections_list.focus()):this.gui_objects.subscriptionlist&&this.init_subscription_list();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.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.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));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(var f in this.onloads)if("string"===typeof this.onloads[f])eval(this.onloads[f]);else if("function"===typeof this.onloads[f])this.onloads[f]();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;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.cmp_hash!=this.compose_field_hash()&&!confirm(this.get_label("notsentwarning")))return!1;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 "mail":case "addressbook":case "settings":case "logout":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":"compose"==this.env.action?($("input[name='_action']",this.gui_objects.messageform).val("compose"), this.gui_objects.messageform.action=this.url("mail/compose",{_id:this.env.compose_id,_extwin:1}),this.gui_objects.messageform.target=this.open_window("",1100),this.gui_objects.messageform.submit()):this.open_window(this.env.permaurl,900);break;case "menu-open":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":k=this.env.sort_order;g=this.env.disabled_sort_col?this.env.sort_col:b;this.env.disabled_sort_order||(k=this.env.sort_col==g&&"ASC"==k?"DESC":"ASC");this.set_list_sorting(g,k);this.list_mailbox("","",g+"_"+k);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":"addressbook"==this.task?this.load_contact(0,"add"):"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())&&(k={_mbox:this.env.mailbox}, k[this.env.mailbox==this.env.drafts_mailbox&&"new"!=b?"_draft_uid":"_uid"]=h,this.open_compose_step(k));break;case "save":var p;if(k=this.gui_objects.editform){if("search"!=this.env.action)if((p=$("input[name='_pagesize']",k))&&p.length&&isNaN(parseInt(p.val()))){alert(this.get_label("nopagesizewarning"));p.focus();break}else{if("reload"==b)k.action+="?_reload=1";else if("settings"==this.task&&0==this.env.identities_level%2&&(p=$("input[name='_email']",k))&&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&&(k.action=this.add_url(k.action,"_orig_source",parent.rcmail.env.source));k.submit()}break;case "delete":"mail"==this.task?this.delete_messages(e):"addressbook"==this.task?this.delete_contacts():"settings"==this.task&&this.delete_identity();break;case "move":case "moveto":"mail"==this.task?this.move_messages(b):"addressbook"==this.task&&this.drag_active&& this.copy_contact(null,b);break;case "copy":"mail"==this.task&&this.copy_messages(b);break;case "mark":b&&this.mark_message(b);break;case "toggle_status":if(b&&!b._row)break;k="read";b._row.uid&&(g=b._row.uid,this.message_list.rows[g].deleted?k="undelete":this.message_list.rows[g].unread||(k="unread"));this.mark_message(k,g);break;case "toggle_flag":if(b&&!b._row)break;k="flagged";b._row.uid&&(g=b._row.uid,this.message_list.rows[g].flagged&&(k="unflagged"));this.mark_message(k,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":k="_mbox="+urlencode(this.env.mailbox)+"&_uid="+this.env.uid+"&_part="+b.part;if(this.env.uid&&b.mimetype&&this.env.mimetypes&&0<=$.inArray(b.mimetype,this.env.mimetypes)){var m=window.open(this.env.comm_path+"&_action=get&"+k+"&_frame=1",this.html_identifier("rcubemailattachment"+ this.env.uid+b.part));if(m){setTimeout(function(){m.focus()},10);break}}this.goto_url("get",k+"&_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":k={};if("mail"==this.task)k._mbox=this.env.mailbox,b&&(k._to=b),this.env.search_request&&(k._search=this.env.search_request);else if("addressbook"==this.task)if(b&&0= f.x2||a.y=f.y2)this.env.last_folder_target&&($(this.get_folder_li(this.env.last_folder_target)).removeClass("droptarget"),this.env.folder_coords[this.env.last_folder_target].on=0,this.env.last_folder_target=null);else for(b in this.env.folder_coords)f=this.env.folder_coords[b],a.x>=f.x1&&a.x=f.y1&&a.y"+this.get_label("loading")+"");window.setTimeout(function(){k.focus()},10);return h};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))a.icon._row=a.obj,a.icon.onmousedown=function(a){d.command("toggle_status",this);rcube_event.cancel(a)};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))&&(a.flagicon._row=a.obj,a.flagicon.onmousedown=function(a){d.command("toggle_flag",this);rcube_event.cancel(a)});!a.depth&&a.has_children&&(b=document.getElementById("rcmexpando"+a.uid))&&(a.expando=b,b.onmousedown=function(a){return d.expand_message_row(a,e)},bw.touch&&b.addEventListener("touchend",function(a){if(1==a.changedTouches.length)return d.expand_message_row(a,e),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":""),s=document.createElement("tr");s.id="rcmrow"+a;f="msgicon";null===this.env.status_col&&(f+=" status",d.deleted?f+=" deleted":d.seen?0  ',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)?(s.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='
  
',q+=" thread"+(n.expanded?" expanded":"")),d.unread_children&&d.seen&&!n.expanded&&(q+=" unroot"));k+=' ';s.className=q;!bw.ie&&b.subject&&(h=d.mbox==this.env.drafts_mailbox?"_draft_uid":"_uid",b.subject=''+b.subject+"");for(g in this.env.coltypes)f=this.env.coltypes[g],h=document.createElement("td"),h.className=String(f).toLowerCase(),"flag"==f?(f=d.flagged?"flagged":"unflagged",f=' '):"attachment"==f?f=/application\/|multipart\/(m|signed)/.test(d.ctype)?' ': /multipart\/report/.test(d.ctype)?' ':" ":"status"==f?(f=d.deleted?"deleted":d.seen?0 '):"threads"==f?f=l:"subject"==f?(bw.ie&&(h.onmouseover=function(){rcube_webmail.long_subject_title_ex(this,n.depth+1)},bw.ie8&&(k=""+k)),f=k+b[f]):f="priority"==f?0d.prio?' ':" ":b[f],f&&(h.innerHTML= f),s.appendChild(h);m.insert_row(s,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;ed.location.href.indexOf(this.env.blankpage)&&(d.location.href=this.env.blankpage);else if(!bw.safari&&!bw.konq)$(b)[a?"show":"hide"]();!a&&this.busy&&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&&1d.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'):f+('
');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$.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;fe?b._count=-1*e:0g?d._count=-1*g:0this.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=$('
').html('
'+ this.get_label("nosubjectwarning")+"
").appendTo(document.body);var m=$("").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.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;!this.env.draft_id&&a&&(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)};this.auto_save_start=function(){this.env.draft_autosave&&(this.save_timer=setTimeout(function(){l.command("savedraft")},1E3*this.env.draft_autosave));this.busy=!1};this.compose_field_hash=function(a){var b,d,e,f="",g=["to","cc","bcc","subject"];for(d=0;dthis.env.max_filesize){this.display_message(this.env.filesizeerror,"error");return}var e=this.async_upload_form(a,"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)}),f=""+this.get_label("uploading"+(1",g=e.replace(/^rcmupload/,"");this.add2attachment_list(g, {name:"",html:f,classname:"uploading",frame:e,complete:!1});this.env.upload_progress_time&&this.upload_progress_start("upload",g)}this.gui_objects.attachmentform=a;return!0};this.add2attachment_list=function(a,b,d){if(!this.gui_objects.attachmentlist)return!1;!b.complete&&l.env.loadingicon&&(b.html=''+b.html);!b.complete&&b.frame&&(b.html=''+(this.env.cancelicon?'':this.get_label("cancel"))+""+b.html);var e,f=$("
  • ");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){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&&e.env.mailbox==d&&e.command("checkmail")); 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())break;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:if(f!=SHIFT_KEY)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.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.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=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"),this.ksearch_pane=$("
    ").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/g,">").replace(/##([^%]+)%%/g, "$1"),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').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=$("").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(this.env.source+this.env.group,"rcmliG");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,d="G"+a.source+ a.id;if(b=this.get_folder_li(d))this.triggerEvent("group_delete",{source:a.source,id:a.id,li:b}),b.parentNode.removeChild(b),delete this.env.contactfolders[d],delete this.env.contactgroups[d];this.list_contacts(a.source,0)};this.add_input_row=function(a){this.gui_objects.folderlist&&(this.name_input||(this.name_input=$("").attr("type","text").data("tt",a),this.name_input.bind("keydown",function(a){return rcmail.add_input_keydown(a)}),this.name_input_li=$("
  • ").addClass(a).append(this.name_input), a="contactsearch"==a?$("li:last",this.gui_objects.folderlist):this.get_folder_li(this.env.source),this.name_input_li.insertAfter(a)),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").attr("href","#").attr("rel",a.source+":"+a.id).click(function(){return rcmail.command("listgroup",a, this)}).html(a.name),d=$("
  • ").attr({id:"rcmli"+this.html_identifier(b),"class":"contactgroup"}).append(d);this.env.contactfolders[b]=this.env.contactgroups[b]=a;this.add_contact_group_row(a,d);this.triggerEvent("group_insert",{id:a.id,source:a.source,name:a.name,li:d[0]})};this.update_contact_group=function(a){this.reset_add_input();var b="G"+a.source+a.id,d=this.get_folder_li(b),e;if(d&&a.newid){e="G"+a.source+a.newid;var f=$.extend({},a);d.id="rcmli"+this.html_identifier(e);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";e=$("").attr("href","#").attr("rel",a.source+":"+a.newid).click(function(){return rcmail.command("listgroup",f,this)}).html(a.name);$(d).children().replaceWith(e)}else d&&(e=d.firstChild)&&"a"==e.tagName.toLowerCase()&&(e.innerHTML=a.name);this.env.contactfolders[b].name=this.env.contactgroups[b].name=a.name;this.add_contact_group_row(a, $(d),!0);this.triggerEvent("group_update",{id:a.id,source:a.source,name:a.name,li:d[0],newid:a.newid})};this.add_contact_group_row=function(a,b,d){var e=a.name.toUpperCase(),f=this.get_folder_li(a.source);a="rcmliG"+this.html_identifier(a.source);d?(d=b.clone(!0),b.remove()):d=b;$('li[id^="'+a+'"]',this.gui_objects.folderlist).each(function(a,b){if(e>=$(this).text().toUpperCase())f=b;else return!1});d.insertAfter(f)};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=$("
    ").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=$("
    ").addClass("row"),h=$("
    ").addClass("contactfieldcontent data"),k=$("
    ").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=$("").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=$("