1 function rcube_webmail(){
3 this.labels=new Object();
4 this.buttons=new Object();
5 this.buttons_sel=new Object();
6 this.gui_objects=new Object();
7 this.gui_containers=new Object();
8 this.commands=new Object();
9 this.command_handlers=new Object();
10 this.onloads=new Array();
13 this.dblclick_time=500;
14 this.message_time=3000;
15 this.identifier_expr=new RegExp("[^0-9a-z-_]","gi");
16 this.mimetypes=new Array("text/plain","text/html","text/xml","image/jpeg","image/gif","image/png","application/x-javascript","application/pdf","application/x-shockwave-flash");
17 this.env.keep_alive=60;
18 this.env.request_timeout=180;
19 this.env.draft_autosave=0;
20 this.env.comm_path="./";
21 this.env.bin_path="./bin/";
22 this.env.blankpage="program/blank.gif";
23 jQuery.ajaxSetup({cache:false,error:function(_2,_3,_4){
24 _1.http_error(_2,_3,_4);
25 },beforeSend:function(_5){
26 _5.setRequestHeader("X-RoundCube-Request",_1.env.request_token);
28 this.set_env=function(p,_7){
29 if(p!=null&&typeof (p)=="object"&&!_7){
37 this.add_label=function(_9,_a){
40 this.register_button=function(_b,id,_d,_e,_f,_10){
41 if(!this.buttons[_b]){
42 this.buttons[_b]=new Array();
44 var _11={id:id,type:_d};
54 this.buttons[_b][this.buttons[_b].length]=_11;
56 this.gui_object=function(_12,id){
57 this.gui_objects[_12]=id;
59 this.gui_container=function(_14,id){
60 this.gui_containers[_14]=id;
62 this.add_element=function(elm,_17){
63 if(this.gui_containers[_17]&&this.gui_containers[_17].jquery){
64 this.gui_containers[_17].append(elm);
67 this.register_command=function(_18,_19,_1a){
68 this.command_handlers[_18]=_19;
70 this.enable_command(_18,true);
73 this.add_onload=function(f){
74 this.onloads[this.onloads.length]=f;
78 this.task=this.env.task;
79 if(!bw.dom||!bw.xmlhttp_test()){
80 this.goto_url("error","_code=0x199");
83 for(var n in this.gui_containers){
84 this.gui_containers[n]=$("#"+this.gui_containers[n]);
86 for(var n in this.gui_objects){
87 this.gui_objects[n]=rcube_find_object(this.gui_objects[n]);
90 if(this.env.framed&&parent.rcmail&&parent.rcmail.set_busy){
91 parent.rcmail.set_busy(false);
93 this.enable_command("logout","mail","addressbook","settings",true);
94 if(this.env.permaurl){
95 this.enable_command("permaurl",true);
99 if(this.gui_objects.messagelist){
100 this.message_list=new rcube_list_widget(this.gui_objects.messagelist,{multiselect:true,draggable:true,keyboard:true,dblclick_time:this.dblclick_time});
101 this.message_list.row_init=function(o){
102 p.init_message_row(o);
104 this.message_list.addEventListener("dblclick",function(o){
105 p.msglist_dbl_click(o);
107 this.message_list.addEventListener("keypress",function(o){
108 p.msglist_keypress(o);
110 this.message_list.addEventListener("select",function(o){
113 this.message_list.addEventListener("dragstart",function(o){
116 this.message_list.addEventListener("dragmove",function(e){
119 this.message_list.addEventListener("dragend",function(e){
122 document.onmouseup=function(e){
123 return p.doc_mouse_up(e);
125 this.message_list.init();
126 this.enable_command("toggle_status","toggle_flag",true);
127 if(this.gui_objects.mailcontframe){
128 this.gui_objects.mailcontframe.onmousedown=function(e){
129 return p.click_on_list(e);
132 this.message_list.focus();
135 if(this.env.coltypes){
136 this.set_message_coltypes(this.env.coltypes);
138 this.enable_command("list","checkmail","compose","add-contact","search","reset-search","collapse-folder",true);
139 if(this.env.search_text!=null&&document.getElementById("quicksearchbox")!=null){
140 document.getElementById("quicksearchbox").value=this.env.search_text;
142 if(this.env.action=="show"||this.env.action=="preview"){
143 this.enable_command("show","reply","reply-all","forward","moveto","delete","open","mark","edit","viewsource","download","print","load-attachment","load-headers",true);
144 if(this.env.next_uid){
145 this.enable_command("nextmessage",true);
146 this.enable_command("lastmessage",true);
148 if(this.env.prev_uid){
149 this.enable_command("previousmessage",true);
150 this.enable_command("firstmessage",true);
152 if(this.env.blockedobjects){
153 if(this.gui_objects.remoteobjectsmsg){
154 this.gui_objects.remoteobjectsmsg.style.display="block";
156 this.enable_command("load-images","always-load",true);
159 if(this.env.trash_mailbox&&this.env.mailbox!=this.env.trash_mailbox){
160 this.set_alttext("delete","movemessagetotrash");
162 if(this.env.action=="preview"&&this.env.framed&&parent.rcmail){
163 this.enable_command("compose","add-contact",false);
164 parent.rcmail.show_contentframe(true);
166 if(this.env.action=="compose"){
167 this.enable_command("add-attachment","send-attachment","remove-attachment","send",true);
168 if(this.env.spellcheck){
169 this.env.spellcheck.spelling_state_observer=function(s){
170 _1.set_spellcheck_state(s);
172 this.set_spellcheck_state("ready");
173 if($("input[name='_is_html']").val()=="1"){
174 this.display_spellcheck_controls(false);
177 if(this.env.drafts_mailbox){
178 this.enable_command("savedraft",true);
180 document.onmouseup=function(e){
181 return p.doc_mouse_up(e);
183 this.init_messageform();
185 if(this.env.messagecount){
186 this.enable_command("select-all","select-none","expunge",true);
188 if(this.purge_mailbox_test()){
189 this.enable_command("purge",true);
191 this.set_page_buttons();
192 if(this.env.action=="print"){
195 if(this.gui_objects.mailboxlist){
196 this.env.unread_counts={};
197 this.gui_objects.folderlist=this.gui_objects.mailboxlist;
198 this.http_request("getunread","");
200 if(this.env.mdn_request&&this.env.uid){
201 var _29="_uid="+this.env.uid+"&_mbox="+urlencode(this.env.mailbox);
202 if(confirm(this.get_label("mdnrequest"))){
203 this.http_post("sendmdn",_29);
205 this.http_post("mark",_29+"&_flag=mdnsent");
210 if(this.gui_objects.contactslist){
211 this.contact_list=new rcube_list_widget(this.gui_objects.contactslist,{multiselect:true,draggable:true,keyboard:true});
212 this.contact_list.row_init=function(row){
213 p.triggerEvent("insertrow",{cid:row.uid,row:row});
215 this.contact_list.addEventListener("keypress",function(o){
216 p.contactlist_keypress(o);
218 this.contact_list.addEventListener("select",function(o){
219 p.contactlist_select(o);
221 this.contact_list.addEventListener("dragstart",function(o){
224 this.contact_list.addEventListener("dragmove",function(e){
227 this.contact_list.addEventListener("dragend",function(e){
230 this.contact_list.init();
232 this.contact_list.highlight_row(this.env.cid);
234 if(this.gui_objects.contactslist.parentNode){
235 this.gui_objects.contactslist.parentNode.onmousedown=function(e){
236 return p.click_on_list(e);
238 document.onmouseup=function(e){
239 return p.doc_mouse_up(e);
242 this.contact_list.focus();
244 this.gui_objects.folderlist=this.gui_objects.contactslist;
246 this.set_page_buttons();
247 if(this.env.address_sources&&this.env.address_sources[this.env.source]&&!this.env.address_sources[this.env.source].readonly){
248 this.enable_command("add",true);
251 this.enable_command("show","edit",true);
253 if((this.env.action=="add"||this.env.action=="edit")&&this.gui_objects.editform){
254 this.enable_command("save",true);
256 this.enable_command("search","reset-search","moveto","import",true);
258 if(this.contact_list&&this.contact_list.rowcount>0){
259 this.enable_command("export",true);
261 this.enable_command("list",true);
264 this.enable_command("preferences","identities","save","folders",true);
265 if(this.env.action=="identities"){
266 this.enable_command("add",this.env.identities_level<2);
268 if(this.env.action=="edit-identity"||this.env.action=="add-identity"){
269 this.enable_command("add",this.env.identities_level<2);
270 this.enable_command("save","delete","edit",true);
272 if(this.env.action=="folders"){
273 this.enable_command("subscribe","unsubscribe","create-folder","rename-folder","delete-folder",true);
277 if(this.gui_objects.identitieslist){
278 this.identity_list=new rcube_list_widget(this.gui_objects.identitieslist,{multiselect:false,draggable:false,keyboard:false});
279 this.identity_list.addEventListener("select",function(o){
280 p.identity_select(o);
282 this.identity_list.init();
283 this.identity_list.focus();
285 this.identity_list.highlight_row(this.env.iid);
288 if(this.gui_objects.sectionslist){
289 this.sections_list=new rcube_list_widget(this.gui_objects.sectionslist,{multiselect:false,draggable:false,keyboard:false});
290 this.sections_list.addEventListener("select",function(o){
293 this.sections_list.init();
294 this.sections_list.focus();
295 this.sections_list.select_first();
297 if(this.gui_objects.subscriptionlist){
298 this.init_subscription_list();
304 var _34=$("#rcmloginuser");
305 _34.bind("keyup",function(e){
306 return rcmail.login_user_keyup(e);
311 $("#rcmloginpwd").focus();
313 $("#rcmlogintz").val(new Date().getTimezoneOffset()/-60);
314 this.enable_command("login",true);
320 if(this.pending_message){
321 this.display_message(this.pending_message[0],this.pending_message[1]);
323 if(this.gui_objects.folderlist){
324 this.gui_containers.foldertray=$(this.gui_objects.folderlist);
326 this.triggerEvent("init",{task:this.task,action:this.env.action});
327 for(var i=0;i<this.onloads.length;i++){
328 if(typeof (this.onloads[i])=="string"){
329 eval(this.onloads[i]);
331 if(typeof (this.onloads[i])=="function"){
336 this.start_keepalive();
338 this.start_keepalive=function(){
339 if(this.env.keep_alive&&!this.env.framed&&this.task=="mail"&&this.gui_objects.mailboxlist){
340 this._int=setInterval(function(){
341 _1.check_for_recent(false);
342 },this.env.keep_alive*1000);
344 if(this.env.keep_alive&&!this.env.framed&&this.task!="login"){
345 this._int=setInterval(function(){
346 _1.send_keep_alive();
347 },this.env.keep_alive*1000);
351 this.init_message_row=function(row){
353 if(uid&&this.env.messages[uid]){
354 row.deleted=this.env.messages[uid].deleted?true:false;
355 row.unread=this.env.messages[uid].unread?true:false;
356 row.replied=this.env.messages[uid].replied?true:false;
357 row.flagged=this.env.messages[uid].flagged?true:false;
358 row.forwarded=this.env.messages[uid].forwarded?true:false;
360 if(row.icon=row.obj.getElementsByTagName("td")[0].getElementsByTagName("img")[0]){
362 row.icon.id="msgicn_"+row.uid;
363 row.icon._row=row.obj;
364 row.icon.onmousedown=function(e){
365 p.command("toggle_status",this);
368 if(!this.env.flagged_col&&this.env.coltypes){
370 if((_3b=find_in_array("flag",this.env.coltypes))>=0){
371 this.set_env("flagged_col",_3b+1);
374 if(this.env.flagged_col&&(row.flagged_icon=row.obj.getElementsByTagName("td")[this.env.flagged_col].getElementsByTagName("img")[0])){
376 row.flagged_icon.id="flaggedicn_"+row.uid;
377 row.flagged_icon._row=row.obj;
378 row.flagged_icon.onmousedown=function(e){
379 p.command("toggle_flag",this);
382 this.triggerEvent("insertrow",{uid:uid,row:row});
384 this.init_messageform=function(){
385 if(!this.gui_objects.messageform){
388 var _3d=$("[name='_from']");
389 var _3e=$("[name='_to']");
390 var _3f=$("input[name='_subject']");
391 var _40=$("[name='_message']").get(0);
392 var _41=$("input[name='_is_html']").val()=="1";
393 this.init_address_input_events(_3e);
394 this.init_address_input_events($("[name='_cc']"));
395 this.init_address_input_events($("[name='_bcc']"));
396 if(_3d.attr("type")=="select-one"&&$("input[name='_draft_saveid']").val()==""&&!_41){
397 this.change_identity(_3d[0]);
410 this.compose_field_hash(true);
411 this.auto_save_start();
413 this.init_address_input_events=function(obj){
415 return _1.ksearch_keypress(e,this);
417 obj.bind((bw.safari||bw.ie?"keydown":"keypress"),_43);
418 obj.attr("autocomplete","off");
420 this.command=function(_45,_46,obj){
427 if(!this.commands[_45]){
428 if(this.env.framed&&parent.rcmail&&parent.rcmail.command){
429 parent.rcmail.command(_45,_46);
433 if(this.task=="mail"&&this.env.action=="compose"&&(_45=="list"||_45=="mail"||_45=="addressbook"||_45=="settings")){
434 if(this.cmp_hash!=this.compose_field_hash()&&!confirm(this.get_label("notsentwarning"))){
438 if(typeof this.command_handlers[_45]=="function"){
439 var ret=this.command_handlers[_45](_46,obj);
440 return ret!==null?ret:(obj?false:true);
442 if(typeof this.command_handlers[_45]=="string"){
443 var ret=window[this.command_handlers[_45]](_46,obj);
444 return ret!==null?ret:(obj?false:true);
447 var _49=this.triggerEvent("before"+_45,_46);
448 if(typeof _49!="undefined"){
457 if(this.gui_objects.loginform){
458 this.gui_objects.loginform.submit();
465 this.switch_task(_45);
468 if(obj&&obj.href&&obj.target){
471 if(this.env.permaurl){
472 parent.location.href=this.env.permaurl;
478 if(uid=this.get_single_uid()){
479 obj.href="?_task="+this.env.task+"&_action=show&_mbox="+urlencode(this.env.mailbox)+"&_uid="+uid;
484 if(this.task=="mail"){
485 if(this.env.search_request<0||(_46!=""&&(this.env.search_request&&_46!=this.env.mailbox))){
486 this.reset_qsearch();
488 this.list_mailbox(_46);
489 if(this.env.trash_mailbox){
490 this.set_alttext("delete",this.env.mailbox!=this.env.trash_mailbox?"movemessagetotrash":"deletemessage");
493 if(this.task=="addressbook"){
494 if(this.env.search_request<0||(this.env.search_request&&_46!=this.env.source)){
495 this.reset_qsearch();
497 this.list_contacts(_46);
498 this.enable_command("add",(this.env.address_sources&&!this.env.address_sources[_46].readonly));
503 this.load_headers(obj);
507 if(this.env.sort_col==_4c){
508 _4b=this.env.sort_order=="ASC"?"DESC":"ASC";
512 $("#rcm"+this.env.sort_col).removeClass("sorted"+(this.env.sort_order.toUpperCase()));
513 $("#rcm"+_4c).addClass("sorted"+_4b);
514 this.env.sort_col=_4c;
515 this.env.sort_order=_4b;
516 this.list_mailbox("","",_4c+"_"+_4b);
519 this.list_page("next");
522 this.list_page("last");
525 this.list_page("prev");
528 this.list_page("first");
531 if(this.env.messagecount){
532 this.expunge_mailbox(this.env.mailbox);
536 case "empty-mailbox":
537 if(this.env.messagecount){
538 this.purge_mailbox(this.env.mailbox);
542 if(this.task=="mail"){
543 var uid=this.get_single_uid();
544 if(uid&&(!this.env.uid||uid!=this.env.uid)){
545 if(this.env.mailbox==this.env.drafts_mailbox){
546 this.goto_url("compose","_draft_uid="+uid+"&_mbox="+urlencode(this.env.mailbox),true);
548 this.show_message(uid);
552 if(this.task=="addressbook"){
553 var cid=_46?_46:this.get_single_cid();
554 if(cid&&!(this.env.action=="show"&&cid==this.env.cid)){
555 this.load_contact(cid,"show");
561 if(this.task=="addressbook"){
562 this.load_contact(0,"add");
564 if(this.task=="settings"){
565 this.identity_list.clear_selection();
566 this.load_identity(0,"add-identity");
572 if(this.task=="addressbook"&&(cid=this.get_single_cid())){
573 this.load_contact(cid,"edit");
575 if(this.task=="settings"&&_46){
576 this.load_identity(_46,"edit-identity");
578 if(this.task=="mail"&&(cid=this.get_single_uid())){
579 var url=(this.env.mailbox==this.env.drafts_mailbox)?"_draft_uid=":"_uid=";
580 this.goto_url("compose",url+cid+"&_mbox="+urlencode(this.env.mailbox),true);
585 case "save-identity":
587 if(this.gui_objects.editform){
588 var _4f=$("input[name='_pagesize']");
589 var _50=$("input[name='_name']");
590 var _51=$("input[name='_email']");
591 if(_4f.length&&isNaN(parseInt(_4f.val()))){
592 alert(this.get_label("nopagesizewarning"));
596 if(_50.length&&_50.val()==""){
597 alert(this.get_label("nonamewarning"));
601 if(_51.length&&!rcube_check_email(_51.val())){
602 alert(this.get_label("noemailwarning"));
608 this.gui_objects.editform.submit();
612 if(this.task=="mail"){
613 this.delete_messages();
615 if(this.task=="addressbook"){
616 this.delete_contacts();
618 if(this.task=="settings"){
619 this.delete_identity();
626 if(this.task=="mail"){
627 this.move_messages(_46);
629 if(this.task=="addressbook"&&this.drag_active){
630 this.copy_contact(null,_46);
636 this.mark_message(_46);
639 case "toggle_status":
647 if(this.message_list.rows[uid].deleted){
650 if(!this.message_list.rows[uid].unread){
655 this.mark_message(_52,uid);
665 if(this.message_list.rows[uid].flagged){
669 this.mark_message(_52,uid);
672 if(this.env.uid&&this.env.sender){
673 this.add_contact(urlencode(this.env.sender));
674 window.setTimeout(function(){
675 _1.command("load-images");
681 this.show_message(this.env.uid,true,this.env.action=="preview");
684 case "load-attachment":
685 var _53="_mbox="+urlencode(this.env.mailbox)+"&_uid="+this.env.uid+"&_part="+_46.part;
686 if(this.env.uid&&_46.mimetype&&find_in_array(_46.mimetype,this.mimetypes)>=0){
687 if(_46.mimetype=="text/html"){
690 this.attachment_win=window.open(this.env.comm_path+"&_action=get&"+_53+"&_frame=1","rcubemailattachment");
691 if(this.attachment_win){
692 window.setTimeout(function(){
693 _1.attachment_win.focus();
698 this.goto_url("get",_53+"&_download=1",false);
702 this.message_list.invert_selection();
704 this.message_list.select_all(_46);
708 this.message_list.clear_selection();
711 if(this.env.next_uid){
712 this.show_message(this.env.next_uid,false,this.env.action=="preview");
716 if(this.env.last_uid){
717 this.show_message(this.env.last_uid);
720 case "previousmessage":
721 if(this.env.prev_uid){
722 this.show_message(this.env.prev_uid,false,this.env.action=="preview");
726 if(this.env.first_uid){
727 this.show_message(this.env.first_uid);
731 this.check_for_recent(true);
734 var url=this.env.comm_path+"&_action=compose";
735 if(this.task=="mail"){
736 url+="&_mbox="+urlencode(this.env.mailbox);
737 if(this.env.mailbox==this.env.drafts_mailbox){
739 if(uid=this.get_single_uid()){
740 url+="&_draft_uid="+uid;
744 url+="&_to="+urlencode(_46);
748 if(this.task=="addressbook"){
749 if(_46&&_46.indexOf("@")>0){
750 url=this.get_task_url("mail",url);
751 this.redirect(url+"&_to="+urlencode(_46));
758 if(this.contact_list){
759 var _55=this.contact_list.get_selection();
760 for(var n=0;n<_55.length;n++){
761 _54[_54.length]=_55[n];
766 this.http_request("mailto","_cid="+urlencode(_54.join(","))+"&_source="+urlencode(this.env.source),true);
771 url=url.replace(/&_framed=1/,"");
775 if(window.tinyMCE&&tinyMCE.get(this.env.composebody)){
776 tinyMCE.execCommand("mceSpellCheck",true);
778 if(this.env.spellcheck&&this.env.spellcheck.spellCheck&&this.spellcheck_ready){
779 this.env.spellcheck.spellCheck();
780 this.set_spellcheck_state("checking");
785 self.clearTimeout(this.save_timer);
786 if(!this.gui_objects.messageform){
789 if(!this.env.drafts_mailbox||this.cmp_hash==this.compose_field_hash()){
792 this.set_busy(true,"savingmessage");
793 var _57=this.gui_objects.messageform;
794 _57.target="savetarget";
795 _57._draft.value="1";
799 if(!this.gui_objects.messageform){
802 if(!this.check_compose_input()){
805 self.clearTimeout(this.save_timer);
806 this.set_busy(true,"sendingmessage");
807 var _57=this.gui_objects.messageform;
808 _57.target="savetarget";
811 clearTimeout(this.request_timer);
813 case "add-attachment":
814 this.show_attachment_form(true);
815 case "send-attachment":
816 self.clearTimeout(this.save_timer);
817 this.upload_file(_46);
819 case "remove-attachment":
820 this.remove_attachment(_46);
825 if(uid=this.get_single_uid()){
826 this.goto_url("compose","_reply_uid="+uid+"&_mbox="+urlencode(this.env.mailbox)+(_45=="reply-all"?"&_all=1":""),true);
831 if(uid=this.get_single_uid()){
832 this.goto_url("compose","_forward_uid="+uid+"&_mbox="+urlencode(this.env.mailbox),true);
837 if(uid=this.get_single_uid()){
838 _1.printwin=window.open(this.env.comm_path+"&_action=print&_uid="+uid+"&_mbox="+urlencode(this.env.mailbox)+(this.env.safemode?"&_safe=1":""));
840 window.setTimeout(function(){
843 if(this.env.action!="show"){
844 this.mark_message("read",uid);
851 if(uid=this.get_single_uid()){
852 _1.sourcewin=window.open(this.env.comm_path+"&_action=viewsource&_uid="+uid+"&_mbox="+urlencode(this.env.mailbox));
854 window.setTimeout(function(){
855 _1.sourcewin.focus();
862 if(uid=this.get_single_uid()){
863 this.goto_url("viewsource","&_uid="+uid+"&_mbox="+urlencode(this.env.mailbox)+"&_save=1");
867 this.add_contact(_46);
870 if(!_46&&this.gui_objects.qsearchbox){
871 _46=this.gui_objects.qsearchbox.value;
878 var s=this.env.search_request;
879 this.reset_qsearch();
880 if(s&&this.env.mailbox){
881 this.list_mailbox(this.env.mailbox);
883 if(s&&this.task=="addressbook"){
884 this.list_contacts(this.env.source);
889 if(this.env.action=="import"&&this.gui_objects.importform){
890 var _59=document.getElementById("rcmimportfile");
892 alert(this.get_label("selectimportfile"));
895 this.gui_objects.importform.submit();
896 this.set_busy(true,"importwait");
897 this.lock_form(this.gui_objects.importform,true);
899 this.goto_url("import");
903 if(this.contact_list.rowcount>0){
904 var _5a=(this.env.source?"_source="+urlencode(this.env.source)+"&":"");
905 if(this.env.search_request){
906 _5a+="_search="+this.env.search_request;
908 this.goto_url("export",_5a);
911 case "collapse-folder":
913 this.collapse_folder(_46);
920 this.goto_url("identities");
922 case "delete-identity":
923 this.delete_identity();
925 this.goto_url("folders");
928 this.subscribe_folder(_46);
931 this.unsubscribe_folder(_46);
933 case "create-folder":
934 this.create_folder(_46);
936 case "rename-folder":
937 this.rename_folder(_46);
939 case "delete-folder":
940 this.delete_folder(_46);
943 this.triggerEvent("after"+_45,_46);
944 return obj?false:true;
946 this.enable_command=function(){
952 var _5d=_5b[_5b.length-1];
953 for(var n=0;n<_5b.length-1;n++){
955 this.commands[_5c]=_5d;
956 this.set_button(_5c,(_5d?"act":"pas"));
960 this.set_busy=function(a,_60){
962 var msg=this.get_label(_60);
966 this.display_message(msg,"loading",true);
973 if(this.gui_objects.editform){
974 this.lock_form(this.gui_objects.editform,a);
976 if(this.request_timer){
977 clearTimeout(this.request_timer);
979 if(a&&this.env.request_timeout){
980 this.request_timer=window.setTimeout(function(){
981 _1.request_timed_out();
982 },this.env.request_timeout*1000);
985 this.get_label=function(_62,_63){
986 if(_63&&this.labels[_63+"."+_62]){
987 return this.labels[_63+"."+_62];
989 if(this.labels[_62]){
990 return this.labels[_62];
996 this.gettext=this.get_label;
997 this.switch_task=function(_64){
998 if(this.task===_64&&_64!="mail"){
1001 var url=this.get_task_url(_64);
1003 url+="&_mbox=INBOX";
1007 this.get_task_url=function(_66,url){
1009 url=this.env.comm_path;
1011 return url.replace(/_task=[a-z]+/,"_task="+_66);
1013 this.request_timed_out=function(){
1014 this.set_busy(false);
1015 this.display_message("Request timed out!","error");
1017 this.reload=function(_68){
1018 if(this.env.framed&&parent.rcmail){
1019 parent.rcmail.reload(_68);
1022 window.setTimeout(function(){
1026 if(window.location){
1027 location.href=this.env.comm_path;
1032 this.doc_mouse_up=function(e){
1034 if(this.message_list){
1035 if(!rcube_mouse_is_over(e,this.message_list.list)){
1036 this.message_list.blur();
1038 _6b=this.message_list;
1039 _6a=this.env.mailboxes;
1041 if(this.contact_list){
1042 if(!rcube_mouse_is_over(e,this.contact_list.list)){
1043 this.contact_list.blur();
1045 _6b=this.contact_list;
1046 _6a=this.env.address_sources;
1048 if(this.ksearch_value){
1049 this.ksearch_blur();
1053 if(this.drag_active&&_6a&&this.env.last_folder_target){
1054 $(this.get_folder_li(this.env.last_folder_target)).removeClass("droptarget");
1055 this.command("moveto",_6a[this.env.last_folder_target].id);
1056 this.env.last_folder_target=null;
1057 _6b.draglayer.hide();
1059 if(this.buttons_sel){
1060 for(var id in this.buttons_sel){
1061 if(typeof id!="function"){
1062 this.button_out(this.buttons_sel[id],id);
1065 this.buttons_sel={};
1068 this.drag_start=function(_6e){
1069 var _6f=this.task=="mail"?this.env.mailboxes:this.env.address_sources;
1070 this.drag_active=true;
1071 if(this.preview_timer){
1072 clearTimeout(this.preview_timer);
1074 if(this.gui_objects.folderlist&&_6f){
1075 this.initialBodyScrollTop=bw.ie?0:window.pageYOffset;
1076 this.initialListScrollTop=this.gui_objects.folderlist.parentNode.scrollTop;
1078 _6e=$(this.gui_objects.folderlist);
1080 this.env.folderlist_coords={x1:pos.left,y1:pos.top,x2:pos.left+_6e.width(),y2:pos.top+_6e.height()};
1081 this.env.folder_coords=new Array();
1083 if(li=this.get_folder_li(k)){
1084 if(_72=li.firstChild.offsetHeight){
1085 pos=$(li.firstChild).offset();
1086 this.env.folder_coords[k]={x1:pos.left,y1:pos.top,x2:pos.left+li.firstChild.offsetWidth,y2:pos.top+_72,on:0};
1092 this.drag_end=function(e){
1093 this.drag_active=false;
1094 this.env.last_folder_target=null;
1095 if(this.folder_auto_timer){
1096 window.clearTimeout(this.folder_auto_timer);
1097 this.folder_auto_timer=null;
1098 this.folder_auto_expand=null;
1100 if(this.gui_objects.folderlist&&this.env.folder_coords){
1101 for(var k in this.env.folder_coords){
1102 if(this.env.folder_coords[k].on){
1103 $(this.get_folder_li(k)).removeClass("droptarget");
1108 this.drag_move=function(e){
1109 if(this.gui_objects.folderlist&&this.env.folder_coords){
1110 var _77=bw.ie?-document.documentElement.scrollTop:this.initialBodyScrollTop;
1111 var _78=this.initialListScrollTop-this.gui_objects.folderlist.parentNode.scrollTop;
1114 _7d=rcube_event.get_mouse_pos(e);
1115 pos=this.env.folderlist_coords;
1117 if(_7d.x<pos.x1||_7d.x>=pos.x2||_7d.y<pos.y1||_7d.y>=pos.y2){
1118 if(this.env.last_folder_target){
1119 $(this.get_folder_li(this.env.last_folder_target)).removeClass("droptarget");
1120 this.env.folder_coords[this.env.last_folder_target].on=0;
1121 this.env.last_folder_target=null;
1125 for(var k in this.env.folder_coords){
1126 pos=this.env.folder_coords[k];
1127 if(_7d.x>=pos.x1&&_7d.x<pos.x2&&_7d.y>=pos.y1&&_7d.y<pos.y2&&this.check_droptarget(k)){
1128 li=this.get_folder_li(k);
1129 div=$(li.getElementsByTagName("div")[0]);
1130 if(div.hasClass("collapsed")){
1131 if(this.folder_auto_timer){
1132 window.clearTimeout(this.folder_auto_timer);
1134 this.folder_auto_expand=k;
1135 this.folder_auto_timer=window.setTimeout(function(){
1136 rcmail.command("collapse-folder",rcmail.folder_auto_expand);
1137 rcmail.drag_start(null);
1140 if(this.folder_auto_timer){
1141 window.clearTimeout(this.folder_auto_timer);
1142 this.folder_auto_timer=null;
1143 this.folder_auto_expand=null;
1146 $(li).addClass("droptarget");
1147 this.env.last_folder_target=k;
1148 this.env.folder_coords[k].on=1;
1151 $(this.get_folder_li(k)).removeClass("droptarget");
1152 this.env.folder_coords[k].on=0;
1158 this.collapse_folder=function(id){
1160 if((li=this.get_folder_li(id))&&(div=$(li.getElementsByTagName("div")[0]))&&(div.hasClass("collapsed")||div.hasClass("expanded"))){
1161 var ul=$(li.getElementsByTagName("ul")[0]);
1162 if(div.hasClass("collapsed")){
1164 div.removeClass("collapsed").addClass("expanded");
1165 var reg=new RegExp("&"+urlencode(id)+"&");
1166 this.set_env("collapsed_folders",this.env.collapsed_folders.replace(reg,""));
1169 div.removeClass("expanded").addClass("collapsed");
1170 this.set_env("collapsed_folders",this.env.collapsed_folders+"&"+urlencode(id)+"&");
1171 if(this.env.mailbox.indexOf(id+this.env.delimiter)==0){
1172 this.command("list",id);
1175 if((bw.ie6||bw.ie7)&&li.nextSibling&&(li.nextSibling.getElementsByTagName("ul").length>0)&&li.nextSibling.getElementsByTagName("ul")[0].style&&(li.nextSibling.getElementsByTagName("ul")[0].style.display!="none")){
1176 li.nextSibling.getElementsByTagName("ul")[0].style.display="none";
1177 li.nextSibling.getElementsByTagName("ul")[0].style.display="";
1179 this.http_post("save-pref","_name=collapsed_folders&_value="+urlencode(this.env.collapsed_folders));
1180 this.set_unread_count_display(id,false);
1183 this.click_on_list=function(e){
1184 if(this.gui_objects.qsearchbox){
1185 this.gui_objects.qsearchbox.blur();
1187 if(this.message_list){
1188 this.message_list.focus();
1190 if(this.contact_list){
1191 this.contact_list.focus();
1194 return rcube_event.get_button(e)==2?true:rcube_event.cancel(e);
1196 this.msglist_select=function(_84){
1197 if(this.preview_timer){
1198 clearTimeout(this.preview_timer);
1200 var _85=_84.selection.length==1;
1201 if(this.env.mailbox==this.env.drafts_mailbox){
1202 this.enable_command("reply","reply-all","forward",false);
1203 this.enable_command("show","print","open","edit","download","viewsource",_85);
1204 this.enable_command("delete","moveto","mark",(_84.selection.length>0?true:false));
1206 this.enable_command("show","reply","reply-all","forward","print","edit","open","download","viewsource",_85);
1207 this.enable_command("delete","moveto","mark",(_84.selection.length>0?true:false));
1209 if(_85&&this.env.contentframe&&!_84.multi_selecting){
1210 this.preview_timer=window.setTimeout(function(){
1211 _1.msglist_get_preview();
1214 if(this.env.contentframe){
1215 this.show_contentframe(false);
1219 this.msglist_dbl_click=function(_86){
1220 if(this.preview_timer){
1221 clearTimeout(this.preview_timer);
1223 var uid=_86.get_single_selection();
1224 if(uid&&this.env.mailbox==this.env.drafts_mailbox){
1225 this.goto_url("compose","_draft_uid="+uid+"&_mbox="+urlencode(this.env.mailbox),true);
1228 this.show_message(uid,false,false);
1232 this.msglist_keypress=function(_88){
1233 if(_88.key_pressed==_88.ENTER_KEY){
1234 this.command("show");
1236 if(_88.key_pressed==_88.DELETE_KEY){
1237 this.command("delete");
1239 if(_88.key_pressed==_88.BACKSPACE_KEY){
1240 this.command("delete");
1247 this.msglist_get_preview=function(){
1248 var uid=this.get_single_uid();
1249 if(uid&&this.env.contentframe&&!this.drag_active){
1250 this.show_message(uid,false,true);
1252 if(this.env.contentframe){
1253 this.show_contentframe(false);
1257 this.check_droptarget=function(id){
1258 if(this.task=="mail"){
1259 return (this.env.mailboxes[id]&&this.env.mailboxes[id].id!=this.env.mailbox&&!this.env.mailboxes[id].virtual);
1261 if(this.task=="addressbook"){
1262 return (id!=this.env.source&&this.env.address_sources[id]&&!this.env.address_sources[id].readonly);
1264 if(this.task=="settings"){
1265 return (id!=this.env.folder);
1270 this.show_message=function(id,_8c,_8d){
1275 var _8f=_8d?"preview":"show";
1277 if(_8d&&this.env.contentframe&&window.frames&&window.frames[this.env.contentframe]){
1278 _90=window.frames[this.env.contentframe];
1284 if(this.env.search_request){
1285 _8e+="&_search="+this.env.search_request;
1287 var url="&_action="+_8f+"&_uid="+id+"&_mbox="+urlencode(this.env.mailbox)+_8e;
1288 if(_8f=="preview"&&String(_90.location.href).indexOf(url)>=0){
1289 this.show_contentframe(true);
1291 this.set_busy(true,"loading");
1292 _90.location.href=this.env.comm_path+url;
1293 if(_8f=="preview"&&this.message_list&&this.message_list.rows[id]&&this.message_list.rows[id].unread){
1294 this.set_message(id,"unread",false);
1295 if(this.env.unread_counts[this.env.mailbox]){
1296 this.env.unread_counts[this.env.mailbox]-=1;
1297 this.set_unread_count(this.env.mailbox,this.env.unread_counts[this.env.mailbox],this.env.mailbox=="INBOX");
1302 this.show_contentframe=function(_92){
1304 if(this.env.contentframe&&(frm=$("#"+this.env.contentframe))&&frm.length){
1305 if(!_92&&window.frames[this.env.contentframe]){
1306 if(window.frames[this.env.contentframe].location.href.indexOf(this.env.blankpage)<0){
1307 window.frames[this.env.contentframe].location.href=this.env.blankpage;
1310 if(!bw.safari&&!bw.konq){
1311 frm[_92?"show":"hide"]();
1315 if(!_92&&this.busy){
1316 this.set_busy(false);
1319 this.list_page=function(_94){
1321 _94=this.env.current_page+1;
1324 _94=this.env.pagecount;
1326 if(_94=="prev"&&this.env.current_page>1){
1327 _94=this.env.current_page-1;
1329 if(_94=="first"&&this.env.current_page>1){
1332 if(_94>0&&_94<=this.env.pagecount){
1333 this.env.current_page=_94;
1334 if(this.task=="mail"){
1335 this.list_mailbox(this.env.mailbox,_94);
1337 if(this.task=="addressbook"){
1338 this.list_contacts(this.env.source,_94);
1343 this.filter_mailbox=function(_95){
1345 if(this.gui_objects.qsearchbox){
1346 _96=this.gui_objects.qsearchbox.value;
1348 this.message_list.clear();
1349 this.env.current_page=1;
1350 this.set_busy(true,"searching");
1351 this.http_request("search","_filter="+_95+(_96?"&_q="+urlencode(_96):"")+(this.env.mailbox?"&_mbox="+urlencode(this.env.mailbox):""),true);
1353 this.list_mailbox=function(_97,_98,_99){
1357 _97=this.env.mailbox;
1362 if(this.env.search_request){
1363 _9a+="&_search="+this.env.search_request;
1365 if(!_98&&this.env.mailbox!=_97){
1367 this.env.current_page=_98;
1368 this.show_contentframe(false);
1370 if(_97!=this.env.mailbox||(_97==this.env.mailbox&&!_98&&!_99)){
1373 this.last_selected=0;
1374 if(this.message_list){
1375 this.message_list.clear_selection();
1377 this.select_folder(_97,this.env.mailbox);
1378 this.env.mailbox=_97;
1379 if(this.gui_objects.messagelist){
1380 this.list_mailbox_remote(_97,_98,_9a);
1383 if(this.env.contentframe&&window.frames&&window.frames[this.env.contentframe]){
1384 _9b=window.frames[this.env.contentframe];
1388 this.set_busy(true,"loading");
1389 _9b.location.href=this.env.comm_path+"&_mbox="+urlencode(_97)+(_98?"&_page="+_98:"")+_9a;
1392 this.list_mailbox_remote=function(_9c,_9d,_9e){
1393 this.message_list.clear();
1394 var url="_mbox="+urlencode(_9c)+(_9d?"&_page="+_9d:"");
1395 this.set_busy(true,"loading");
1396 this.http_request("list",url+_9e,true);
1398 this.expunge_mailbox=function(_a0){
1401 if(_a0==this.env.mailbox){
1403 this.set_busy(true,"loading");
1406 var url="_mbox="+urlencode(_a0);
1407 this.http_post("expunge",url+_a2,_a1);
1409 this.purge_mailbox=function(_a4){
1412 if(!confirm(this.get_label("purgefolderconfirm"))){
1415 if(_a4==this.env.mailbox){
1417 this.set_busy(true,"loading");
1420 var url="_mbox="+urlencode(_a4);
1421 this.http_post("purge",url+_a6,_a5);
1424 this.purge_mailbox_test=function(){
1425 return (this.env.messagecount&&(this.env.mailbox==this.env.trash_mailbox||this.env.mailbox==this.env.junk_mailbox||this.env.mailbox.match("^"+RegExp.escape(this.env.trash_mailbox)+RegExp.escape(this.env.delimiter))||this.env.mailbox.match("^"+RegExp.escape(this.env.junk_mailbox)+RegExp.escape(this.env.delimiter))));
1427 this.set_message_icon=function(uid){
1429 var _aa=this.message_list.rows;
1433 if(_aa[uid].deleted&&this.env.deletedicon){
1434 _a9=this.env.deletedicon;
1436 if(_aa[uid].replied&&this.env.repliedicon){
1437 if(_aa[uid].forwarded&&this.env.forwardedrepliedicon){
1438 _a9=this.env.forwardedrepliedicon;
1440 _a9=this.env.repliedicon;
1443 if(_aa[uid].forwarded&&this.env.forwardedicon){
1444 _a9=this.env.forwardedicon;
1446 if(_aa[uid].unread&&this.env.unreadicon){
1447 _a9=this.env.unreadicon;
1449 if(this.env.messageicon){
1450 _a9=this.env.messageicon;
1456 if(_a9&&_aa[uid].icon){
1457 _aa[uid].icon.src=_a9;
1460 if(_aa[uid].flagged&&this.env.flaggedicon){
1461 _a9=this.env.flaggedicon;
1463 if(!_aa[uid].flagged&&this.env.unflaggedicon){
1464 _a9=this.env.unflaggedicon;
1467 if(_aa[uid].flagged_icon&&_a9){
1468 _aa[uid].flagged_icon.src=_a9;
1471 this.set_message_status=function(uid,_ac,_ad){
1472 var _ae=this.message_list.rows;
1477 _ae[uid].unread=_ad;
1480 _ae[uid].deleted=_ad;
1483 _ae[uid].replied=_ad;
1485 if(_ac=="forwarded"){
1486 _ae[uid].forwarded=_ad;
1489 _ae[uid].flagged=_ad;
1495 this.env.messages[uid]=_ae[uid];
1497 this.set_message=function(uid,_b0,_b1){
1498 var _b2=this.message_list.rows;
1503 this.set_message_status(uid,_b0,_b1);
1505 var _b3=$(_b2[uid].obj);
1506 if(_b2[uid].unread&&_b2[uid].classname.indexOf("unread")<0){
1507 _b2[uid].classname+=" unread";
1508 _b3.addClass("unread");
1510 if(!_b2[uid].unread&&_b2[uid].classname.indexOf("unread")>=0){
1511 _b2[uid].classname=_b2[uid].classname.replace(/\s*unread/,"");
1512 _b3.removeClass("unread");
1515 if(_b2[uid].deleted&&_b2[uid].classname.indexOf("deleted")<0){
1516 _b2[uid].classname+=" deleted";
1517 _b3.addClass("deleted");
1519 if(!_b2[uid].deleted&&_b2[uid].classname.indexOf("deleted")>=0){
1520 _b2[uid].classname=_b2[uid].classname.replace(/\s*deleted/,"");
1521 _b3.removeClass("deleted");
1524 if(_b2[uid].flagged&&_b2[uid].classname.indexOf("flagged")<0){
1525 _b2[uid].classname+=" flagged";
1526 _b3.addClass("flagged");
1528 if(!_b2[uid].flagged&&_b2[uid].classname.indexOf("flagged")>=0){
1529 _b2[uid].classname=_b2[uid].classname.replace(/\s*flagged/,"");
1530 _b3.removeClass("flagged");
1533 this.set_message_icon(uid);
1535 this.move_messages=function(_b4){
1536 if(!_b4||_b4==this.env.mailbox||(!this.env.uid&&(!this.message_list||!this.message_list.get_selection().length))){
1540 var _b6="&_target_mbox="+urlencode(_b4)+"&_from="+(this.env.action?this.env.action:"");
1541 if(this.env.action=="show"){
1543 this.set_busy(true,"movingmessage");
1545 this.show_contentframe(false);
1547 this.enable_command("reply","reply-all","forward","delete","mark","print","open","edit","viewsource","download",false);
1548 this._with_selected_messages("moveto",_b5,_b6);
1550 this.delete_messages=function(){
1551 var _b7=this.message_list?this.message_list.get_selection():new Array();
1552 if(!this.env.uid&&!_b7.length){
1555 if(this.env.flag_for_deletion){
1556 this.mark_message("delete");
1558 if(!this.env.trash_mailbox||String(this.env.mailbox).toLowerCase()==String(this.env.trash_mailbox).toLowerCase()){
1559 this.permanently_remove_messages();
1561 if(this.message_list&&this.message_list.shiftkey){
1562 if(confirm(this.get_label("deletemessagesconfirm"))){
1563 this.permanently_remove_messages();
1566 this.move_messages(this.env.trash_mailbox);
1571 this.permanently_remove_messages=function(){
1572 if(!this.env.uid&&(!this.message_list||!this.message_list.get_selection().length)){
1575 this.show_contentframe(false);
1576 this._with_selected_messages("delete",false,"&_from="+(this.env.action?this.env.action:""));
1578 this._with_selected_messages=function(_b8,_b9,_ba,_bb){
1579 var _bc=new Array();
1581 _bc[0]=this.env.uid;
1583 var _bd=this.message_list.get_selection();
1584 var _be=this.message_list.rows;
1586 for(var n=0;n<_bd.length;n++){
1589 this.message_list.remove_row(id,(this.env.display_next&&n==_bd.length-1));
1591 if(!this.env.display_next){
1592 this.message_list.clear_selection();
1595 if(this.env.search_request){
1596 _ba+="&_search="+this.env.search_request;
1598 if(this.env.display_next&&this.env.next_uid){
1599 _ba+="&_next_uid="+this.env.next_uid;
1601 this.http_post(_b8,"_uid="+_bc.join(",")+"&_mbox="+urlencode(this.env.mailbox)+_ba,_b9);
1603 this.mark_message=function(_c1,uid){
1604 var _c3=new Array();
1605 var _c4=new Array();
1606 var _c5=this.message_list?this.message_list.get_selection():new Array();
1611 _c3[0]=this.env.uid;
1613 if(this.message_list){
1614 for(var n=0;n<_c5.length;n++){
1615 _c3[_c3.length]=_c5[n];
1620 if(!this.message_list){
1623 for(var id,n=0;n<_c3.length;n++){
1625 if((_c1=="read"&&this.message_list.rows[id].unread)||(_c1=="unread"&&!this.message_list.rows[id].unread)||(_c1=="delete"&&!this.message_list.rows[id].deleted)||(_c1=="undelete"&&this.message_list.rows[id].deleted)||(_c1=="flagged"&&!this.message_list.rows[id].flagged)||(_c1=="unflagged"&&this.message_list.rows[id].flagged)){
1636 this.toggle_read_status(_c1,_c4);
1640 this.toggle_delete_status(_c4);
1644 this.toggle_flagged_status(_c1,_c3);
1648 this.toggle_read_status=function(_c8,_c9){
1649 for(var i=0;i<_c9.length;i++){
1650 this.set_message(_c9[i],"unread",(_c8=="unread"?true:false));
1652 this.http_post("mark","_uid="+_c9.join(",")+"&_flag="+_c8);
1654 this.toggle_flagged_status=function(_cb,_cc){
1655 for(var i=0;i<_cc.length;i++){
1656 this.set_message(_cc[i],"flagged",(_cb=="flagged"?true:false));
1658 this.http_post("mark","_uid="+_cc.join(",")+"&_flag="+_cb);
1660 this.toggle_delete_status=function(_ce){
1661 var _cf=this.message_list?this.message_list.rows:new Array();
1663 if(!_cf.length||(_cf[_ce[0]]&&!_cf[_ce[0]].deleted)){
1664 this.flag_as_deleted(_ce);
1666 this.flag_as_undeleted(_ce);
1671 for(var i=0;i<_ce.length;i++){
1674 if(!_cf[uid].deleted){
1681 this.flag_as_undeleted(_ce);
1683 this.flag_as_deleted(_ce);
1687 this.flag_as_undeleted=function(_d2){
1688 for(var i=0;i<_d2.length;i++){
1689 this.set_message(_d2[i],"deleted",false);
1691 this.http_post("mark","_uid="+_d2.join(",")+"&_flag=undelete");
1694 this.flag_as_deleted=function(_d4){
1696 var _d6=new Array();
1697 var _d7=this.message_list?this.message_list.rows:new Array();
1698 for(var i=0;i<_d4.length;i++){
1701 if(_d7[uid].unread){
1702 _d6[_d6.length]=uid;
1704 if(this.env.skip_deleted){
1705 this.message_list.remove_row(uid,(this.env.display_next&&i==this.message_list.selection.length-1));
1707 this.set_message(uid,"deleted",true);
1711 if(this.env.skip_deleted&&!this.env.display_next&&this.message_list){
1712 this.message_list.clear_selection();
1714 _d5="&_from="+(this.env.action?this.env.action:"");
1716 _d5+="&_ruid="+_d6.join(",");
1718 if(this.env.skip_deleted){
1719 if(this.env.search_request){
1720 _d5+="&_search="+this.env.search_request;
1722 if(this.env.display_next&&this.env.next_uid){
1723 _d5+="&_next_uid="+this.env.next_uid;
1726 this.http_post("mark","_uid="+_d4.join(",")+"&_flag=delete"+_d5);
1729 this.flag_deleted_as_read=function(_d9){
1731 var _db=this.message_list?this.message_list.rows:new Array();
1732 var str=String(_d9);
1733 var _dd=new Array();
1735 for(var uid,i=0;i<_dd.length;i++){
1738 this.set_message(uid,"unread",false);
1742 this.login_user_keyup=function(e){
1743 var key=rcube_event.get_keycode(e);
1744 var _e2=$("#rcmloginpwd");
1745 if(key==13&&_e2.length&&!_e2.val()){
1747 return rcube_event.cancel(e);
1751 this.check_compose_input=function(){
1752 var _e3=$("[name='_to']");
1753 var _e4=$("[name='_cc']");
1754 var _e5=$("[name='_bcc']");
1755 var _e6=$("[name='_from']");
1756 var _e7=$("[name='_subject']");
1757 var _e8=$("[name='_message']");
1758 if(_e6.attr("type")=="text"&&!rcube_check_email(_e6.val(),true)){
1759 alert(this.get_label("nosenderwarning"));
1763 var _e9=_e3.val()?_e3.val():(_e4.val()?_e4.val():_e5.val());
1764 if(!rcube_check_email(_e9.replace(/^\s+/,"").replace(/[\s,;]+$/,""),true)){
1765 alert(this.get_label("norecipientwarning"));
1769 for(var key in this.env.attachments){
1770 if(typeof this.env.attachments[key]=="object"&&!this.env.attachments[key].complete){
1771 alert(this.get_label("notuploadedwarning"));
1776 var _eb=prompt(this.get_label("nosubjectwarning"),this.get_label("nosubject"));
1781 _e7.val((_eb?_eb:this.get_label("nosubject")));
1784 if((!window.tinyMCE||!tinyMCE.get(this.env.composebody))&&_e8.val()==""&&!confirm(this.get_label("nobodywarning"))){
1788 if(window.tinyMCE&&tinyMCE.get(this.env.composebody)&&!tinyMCE.get(this.env.composebody).getContent()&&!confirm(this.get_label("nobodywarning"))){
1789 tinyMCE.get(this.env.composebody).focus();
1793 this.stop_spellchecking();
1794 if(window.tinyMCE&&tinyMCE.get(this.env.composebody)){
1795 tinyMCE.triggerSave();
1799 this.stop_spellchecking=function(){
1800 if(this.env.spellcheck&&!this.spellcheck_ready){
1801 $(this.env.spellcheck.spell_span).trigger("click");
1802 this.set_spellcheck_state("ready");
1805 this.display_spellcheck_controls=function(vis){
1806 if(this.env.spellcheck){
1808 this.stop_spellchecking();
1810 $(this.env.spellcheck.spell_container).css("visibility",vis?"visible":"hidden");
1813 this.set_spellcheck_state=function(s){
1814 this.spellcheck_ready=(s=="ready"||s=="no_error_found");
1815 this.enable_command("spellcheck",this.spellcheck_ready);
1817 this.set_draft_id=function(id){
1818 $("input[name='_draft_saveid']").val(id);
1820 this.auto_save_start=function(){
1821 if(this.env.draft_autosave){
1822 this.save_timer=self.setTimeout(function(){
1823 _1.command("savedraft");
1824 },this.env.draft_autosave*1000);
1828 this.compose_field_hash=function(_ef){
1829 var _f0=$("[name='_to']").val();
1830 var _f1=$("[name='_cc']").val();
1831 var _f2=$("[name='_bcc']").val();
1832 var _f3=$("[name='_subject']").val();
1846 var _f5=tinyMCE.get(this.env.composebody);
1848 str+=_f5.getContent();
1850 str+=$("[name='_message']").val();
1852 if(this.env.attachments){
1853 for(var _f6 in this.env.attachments){
1862 this.change_identity=function(obj){
1863 if(!obj||!obj.options){
1866 var id=obj.options[obj.selectedIndex].value;
1867 var _f9=$("[name='_message']");
1869 var _fb=($("input[name='_is_html']").val()=="1");
1871 if(!this.env.identity){
1872 this.env.identity=id;
1875 if(this.env.identity&&this.env.signatures&&this.env.signatures[this.env.identity]){
1876 if(this.env.signatures[this.env.identity]["is_html"]){
1877 sig=this.env.signatures[this.env.identity]["plain_text"];
1879 sig=this.env.signatures[this.env.identity]["text"];
1881 if(sig.indexOf("-- ")!=0){
1884 p=_fa.lastIndexOf(sig);
1886 _fa=_fa.substring(0,p-1)+_fa.substring(p+sig.length,_fa.length);
1889 _fa=_fa.replace(/[\r\n]+$/,"");
1891 if(this.env.signatures&&this.env.signatures[id]){
1892 sig=this.env.signatures[id]["text"];
1893 if(this.env.signatures[id]["is_html"]){
1894 sig=this.env.signatures[id]["plain_text"];
1896 if(sig.indexOf("-- ")!=0){
1905 var _ff=tinyMCE.get(this.env.composebody);
1906 if(this.env.signatures){
1907 var _100=_ff.dom.get("_rc_sig");
1912 _ff.getBody().appendChild(_ff.getDoc().createElement("br"));
1914 _100=_ff.getDoc().createElement("div");
1915 _100.setAttribute("id","_rc_sig");
1916 _ff.getBody().appendChild(_100);
1918 if(this.env.signatures[id]){
1919 _101=this.env.signatures[id]["text"];
1920 _102=this.env.signatures[id]["is_html"];
1922 if(_102&&this.env.signatures[id]["plain_text"].indexOf("-- ")!=0){
1923 _101="<p>-- </p>"+_101;
1925 if(!_102&&_101.indexOf("-- ")!=0){
1932 _100.innerHTML=_101;
1934 _100.innerHTML="<pre>"+_101+"</pre>";
1940 this.set_caret_pos(_f9.get(0),len);
1942 this.env.identity=id;
1945 this.show_attachment_form=function(a){
1946 if(!this.gui_objects.uploadbox){
1950 if(elm=this.gui_objects.uploadbox){
1951 if(a&&(list=this.gui_objects.attachmentlist)){
1952 var pos=$(list).offset();
1953 elm.style.top=(pos.top+list.offsetHeight+10)+"px";
1954 elm.style.left=pos.left+"px";
1956 elm.style.visibility=a?"visible":"hidden";
1959 if(!a&&this.gui_objects.attachmentform!=this.gui_objects.messageform){
1960 this.gui_objects.attachmentform.reset();
1967 this.upload_file=function(form){
1972 for(var n=0;n<form.elements.length;n++){
1973 if(form.elements[n].type=="file"&&form.elements[n].value){
1979 var ts=new Date().getTime();
1980 var _10b="rcmupload"+ts;
1982 var html="<iframe name=\""+_10b+"\" src=\"program/blank.gif\" style=\"width:0;height:0;visibility:hidden;\"></iframe>";
1983 document.body.insertAdjacentHTML("BeforeEnd",html);
1985 var _10d=document.createElement("iframe");
1987 _10d.style.border="none";
1989 _10d.style.height=0;
1990 _10d.style.visibility="hidden";
1991 document.body.appendChild(_10d);
1993 var fr=document.getElementsByName(_10b)[0];
1994 $(fr).bind("load",{ts:ts},function(e){
1997 if(this.contentDocument){
1998 var d=this.contentDocument;
2000 if(this.contentWindow){
2001 var d=this.contentWindow.document;
2004 _110=d.childNodes[0].innerHTML;
2008 if(!String(_110).match(/add2attachment/)&&(!bw.opera||(rcmail.env.uploadframe&&rcmail.env.uploadframe==e.data.ts))){
2009 rcmail.display_message(rcmail.get_label("fileuploaderror"),"error");
2010 rcmail.remove_from_attachment_list(e.data.ts);
2013 rcmail.env.uploadframe=e.data.ts;
2017 form.action=this.env.comm_path+"&_action=upload&_uploadid="+ts;
2018 form.setAttribute("enctype","multipart/form-data");
2020 this.show_attachment_form(false);
2021 var _112=this.get_label("uploading");
2022 if(this.env.loadingicon){
2023 _112="<img src=\""+this.env.loadingicon+"\" alt=\"\" />"+_112;
2025 if(this.env.cancelicon){
2026 _112="<a title=\""+this.get_label("cancel")+"\" onclick=\"return rcmail.cancel_attachment_upload('"+ts+"', '"+_10b+"');\" href=\"#cancelupload\"><img src=\""+this.env.cancelicon+"\" alt=\"\" /></a>"+_112;
2028 this.add2attachment_list(ts,{name:"",html:_112,complete:false});
2030 this.gui_objects.attachmentform=form;
2033 this.add2attachment_list=function(name,att,_115){
2034 if(!this.gui_objects.attachmentlist){
2037 var li=$("<li>").attr("id",name).html(att.html);
2039 if(_115&&(_117=document.getElementById(_115))){
2040 li.replaceAll(_117);
2042 li.appendTo(this.gui_objects.attachmentlist);
2044 if(_115&&this.env.attachments[_115]){
2045 delete this.env.attachments[_115];
2047 this.env.attachments[name]=att;
2050 this.remove_from_attachment_list=function(name){
2051 if(this.env.attachments[name]){
2052 delete this.env.attachments[name];
2054 if(!this.gui_objects.attachmentlist){
2057 var list=this.gui_objects.attachmentlist.getElementsByTagName("li");
2058 for(i=0;i<list.length;i++){
2059 if(list[i].id==name){
2060 this.gui_objects.attachmentlist.removeChild(list[i]);
2064 this.remove_attachment=function(name){
2065 if(name&&this.env.attachments[name]){
2066 this.http_post("remove-attachment","_file="+urlencode(name));
2070 this.cancel_attachment_upload=function(name,_11c){
2074 this.remove_from_attachment_list(name);
2075 $("iframe[name='"+_11c+"']").remove();
2078 this.add_contact=function(_11d){
2080 this.http_post("addcontact","_address="+_11d);
2084 this.qsearch=function(_11e){
2087 if(this.message_list){
2088 this.message_list.clear();
2089 if(this.env.search_mods){
2090 var _120=new Array();
2091 for(var n in this.env.search_mods){
2094 _11f+="&_headers="+_120.join(",");
2097 if(this.contact_list){
2098 this.contact_list.clear(true);
2099 this.show_contentframe(false);
2102 if(this.gui_objects.search_filter){
2103 _11f+="&_filter="+this.gui_objects.search_filter.value;
2105 this.env.current_page=1;
2106 this.set_busy(true,"searching");
2107 this.http_request("search","_q="+urlencode(_11e)+(this.env.mailbox?"&_mbox="+urlencode(this.env.mailbox):"")+(this.env.source?"&_source="+urlencode(this.env.source):"")+(_11f?_11f:""),true);
2111 this.reset_qsearch=function(){
2112 if(this.gui_objects.qsearchbox){
2113 this.gui_objects.qsearchbox.value="";
2115 this.env.search_request=null;
2118 this.sent_successfully=function(type,msg){
2119 this.list_mailbox();
2120 this.display_message(msg,type,true);
2122 this.ksearch_keypress=function(e,obj){
2123 if(this.ksearch_timer){
2124 clearTimeout(this.ksearch_timer);
2127 var key=rcube_event.get_keycode(e);
2128 var mod=rcube_event.get_modifier(e);
2132 if(!this.ksearch_pane){
2135 var dir=key==38?1:0;
2136 _126=document.getElementById("rcmksearchSelected");
2138 _126=this.ksearch_pane.__ul.firstChild;
2141 this.ksearch_select(dir?_126.previousSibling:_126.nextSibling);
2143 return rcube_event.cancel(e);
2149 if(this.ksearch_selected===null||!this.ksearch_input||!this.ksearch_value){
2152 this.insert_recipient(this.ksearch_selected);
2153 this.ksearch_hide();
2154 return rcube_event.cancel(e);
2156 this.ksearch_hide();
2164 this.ksearch_timer=window.setTimeout(function(){
2165 _1.ksearch_get_results();
2167 this.ksearch_input=obj;
2170 this.ksearch_select=function(node){
2171 var _12b=$("#rcmksearchSelected");
2173 _12b.removeAttr("id").removeClass("selected");
2176 $(node).attr("id","rcmksearchSelected").addClass("selected");
2177 this.ksearch_selected=node._rcm_id;
2180 this.insert_recipient=function(id){
2181 if(!this.env.contacts[id]||!this.ksearch_input){
2184 var _12d=this.ksearch_input.value;
2185 var cpos=this.get_caret_pos(this.ksearch_input);
2186 var p=_12d.lastIndexOf(this.ksearch_value,cpos);
2187 var pre=this.ksearch_input.value.substring(0,p);
2188 var end=this.ksearch_input.value.substring(p+this.ksearch_value.length,this.ksearch_input.value.length);
2189 var _132=this.env.contacts[id]+", ";
2190 this.ksearch_input.value=pre+_132+end;
2192 if(this.ksearch_input.setSelectionRange){
2193 this.ksearch_input.setSelectionRange(cpos,cpos);
2196 this.ksearch_get_results=function(){
2197 var _133=this.ksearch_input?this.ksearch_input.value:null;
2201 if(this.ksearch_pane&&this.ksearch_pane.is(":visible")){
2202 this.ksearch_pane.hide();
2204 var cpos=this.get_caret_pos(this.ksearch_input);
2205 var p=_133.lastIndexOf(",",cpos-1);
2206 var q=_133.substring(p+1,cpos);
2207 q=q.replace(/(^\s+|\s+$)/g,"");
2208 if(q==this.ksearch_value){
2211 var _137=this.ksearch_value;
2212 this.ksearch_value=q;
2216 if(_137&&_137.length&&this.env.contacts&&!this.env.contacts.length&&q.indexOf(_137)==0){
2219 this.display_message(this.get_label("searching"),"loading",true);
2220 this.http_post("autocomplete","_search="+urlencode(q));
2222 this.ksearch_query_results=function(_138,_139){
2223 if(this.ksearch_value&&_139!=this.ksearch_value){
2226 this.hide_message();
2227 this.env.contacts=_138?_138:[];
2228 this.ksearch_display_results(this.env.contacts);
2230 this.ksearch_display_results=function(_13a){
2231 if(_13a.length&&this.ksearch_input){
2233 if(!this.ksearch_pane){
2235 this.ksearch_pane=$("<div>").attr("id","rcmKSearchpane").css({position:"absolute","z-index":30000}).append(ul).appendTo(document.body);
2236 this.ksearch_pane.__ul=ul[0];
2238 ul=this.ksearch_pane.__ul;
2240 for(i=0;i<_13a.length;i++){
2241 li=document.createElement("LI");
2242 li.innerHTML=_13a[i].replace(new RegExp("("+this.ksearch_value+")","ig"),"##$1%%").replace(/</g,"<").replace(/>/g,">").replace(/##([^%]+)%%/g,"<b>$1</b>");
2243 li.onmouseover=function(){
2244 _1.ksearch_select(this);
2246 li.onmouseup=function(){
2247 _1.ksearch_click(this);
2252 $(ul.firstChild).attr("id","rcmksearchSelected").addClass("selected");
2253 this.ksearch_selected=0;
2254 var pos=$(this.ksearch_input).offset();
2255 this.ksearch_pane.css({left:pos.left+"px",top:(pos.top+this.ksearch_input.offsetHeight)+"px"}).show();
2257 this.ksearch_hide();
2260 this.ksearch_click=function(node){
2261 if(this.ksearch_input){
2262 this.ksearch_input.focus();
2264 this.insert_recipient(node._rcm_id);
2265 this.ksearch_hide();
2267 this.ksearch_blur=function(){
2268 if(this.ksearch_timer){
2269 clearTimeout(this.ksearch_timer);
2271 this.ksearch_value="";
2272 this.ksearch_input=null;
2273 this.ksearch_hide();
2275 this.ksearch_hide=function(){
2276 this.ksearch_selected=null;
2277 if(this.ksearch_pane){
2278 this.ksearch_pane.hide();
2281 this.contactlist_keypress=function(list){
2282 if(list.key_pressed==list.DELETE_KEY){
2283 this.command("delete");
2286 this.contactlist_select=function(list){
2287 if(this.preview_timer){
2288 clearTimeout(this.preview_timer);
2290 var id,_143,_1=this;
2291 if(id=list.get_single_selection()){
2292 this.preview_timer=window.setTimeout(function(){
2293 _1.load_contact(id,"show");
2296 if(this.env.contentframe){
2297 this.show_contentframe(false);
2300 this.enable_command("compose",list.selection.length>0);
2301 this.enable_command("edit",(id&&this.env.address_sources&&!this.env.address_sources[this.env.source].readonly)?true:false);
2302 this.enable_command("delete",list.selection.length&&this.env.address_sources&&!this.env.address_sources[this.env.source].readonly);
2305 this.list_contacts=function(src,page){
2309 src=this.env.source;
2311 if(page&&this.current_page==page&&src==this.env.source){
2314 if(src!=this.env.source){
2316 this.env.current_page=page;
2317 this.reset_qsearch();
2319 this.select_folder(src,this.env.source);
2320 this.env.source=src;
2321 if(this.gui_objects.contactslist){
2322 this.list_contacts_remote(src,page);
2325 if(this.env.contentframe&&window.frames&&window.frames[this.env.contentframe]){
2326 _147=window.frames[this.env.contentframe];
2329 if(this.env.search_request){
2330 _146+="&_search="+this.env.search_request;
2332 this.set_busy(true,"loading");
2333 _147.location.href=this.env.comm_path+(src?"&_source="+urlencode(src):"")+(page?"&_page="+page:"")+_146;
2335 this.list_contacts_remote=function(src,page){
2336 this.contact_list.clear(true);
2337 this.show_contentframe(false);
2338 this.enable_command("delete","compose",false);
2339 var url=(src?"_source="+urlencode(src):"")+(page?(src?"&":"")+"_page="+page:"");
2340 this.env.source=src;
2341 if(this.env.search_request){
2342 url+="&_search="+this.env.search_request;
2344 this.set_busy(true,"loading");
2345 this.http_request("list",url,true);
2347 this.load_contact=function(cid,_14c,_14d){
2350 if(this.env.contentframe&&window.frames&&window.frames[this.env.contentframe]){
2352 _14f=window.frames[this.env.contentframe];
2353 this.show_contentframe(true);
2359 if(_14c&&(cid||_14c=="add")&&!this.drag_active){
2360 this.set_busy(true);
2361 _14f.location.href=this.env.comm_path+"&_action="+_14c+"&_source="+urlencode(this.env.source)+"&_cid="+urlencode(cid)+_14e;
2365 this.copy_contact=function(cid,to){
2367 cid=this.contact_list.get_selection().join(",");
2369 if(to!=this.env.source&&cid&&this.env.address_sources[to]&&!this.env.address_sources[to].readonly){
2370 this.http_post("copy","_cid="+urlencode(cid)+"&_source="+urlencode(this.env.source)+"&_to="+urlencode(to));
2373 this.delete_contacts=function(){
2374 var _152=this.contact_list.get_selection();
2375 if(!(_152.length||this.env.cid)||!confirm(this.get_label("deletecontactconfirm"))){
2378 var _153=new Array();
2381 _153[_153.length]=this.env.cid;
2384 for(var n=0;n<_152.length;n++){
2386 _153[_153.length]=id;
2387 this.contact_list.remove_row(id,(n==_152.length-1));
2390 this.show_contentframe(false);
2393 if(this.env.search_request){
2394 qs+="&_search="+this.env.search_request;
2396 this.http_post("delete","_cid="+urlencode(_153.join(","))+"&_source="+urlencode(this.env.source)+"&_from="+(this.env.action?this.env.action:"")+qs);
2399 this.update_contact_row=function(cid,_158,_159){
2401 if(this.contact_list.rows[cid]&&(row=this.contact_list.rows[cid].obj)){
2402 for(var c=0;c<_158.length;c++){
2404 $(row.cells[c]).html(_158[c]);
2408 row.id="rcmrow"+_159;
2409 this.contact_list.remove_row(cid);
2410 this.contact_list.init_row(row);
2411 this.contact_list.selection[0]=_159;
2412 row.style.display="";
2418 this.add_contact_row=function(cid,cols,_15e){
2419 if(!this.gui_objects.contactslist||!this.gui_objects.contactslist.tBodies[0]){
2422 var _15f=this.gui_objects.contactslist.tBodies[0];
2423 var _160=_15f.rows.length;
2425 var row=document.createElement("tr");
2426 row.id="rcmrow"+cid;
2427 row.className="contact "+(even?"even":"odd");
2428 if(this.contact_list.in_selection(cid)){
2429 row.className+=" selected";
2432 col=document.createElement("td");
2433 col.className=String(c).toLowerCase();
2434 col.innerHTML=cols[c];
2435 row.appendChild(col);
2437 this.contact_list.insert_row(row);
2438 this.enable_command("export",(this.contact_list.rowcount>0));
2440 this.init_subscription_list=function(){
2442 this.subscription_list=new rcube_list_widget(this.gui_objects.subscriptionlist,{multiselect:false,draggable:true,keyboard:false,toggleselect:true});
2443 this.subscription_list.addEventListener("select",function(o){
2444 p.subscription_select(o);
2446 this.subscription_list.addEventListener("dragstart",function(o){
2449 this.subscription_list.addEventListener("dragend",function(o){
2450 p.subscription_move_folder(o);
2452 this.subscription_list.row_init=function(row){
2453 var _169=row.obj.getElementsByTagName("a");
2455 _169[0].onclick=function(){
2456 p.rename_folder(row.id);
2461 _169[1].onclick=function(){
2462 p.delete_folder(row.id);
2466 row.obj.onmouseover=function(){
2467 p.focus_subscription(row.id);
2469 row.obj.onmouseout=function(){
2470 p.unfocus_subscription(row.id);
2473 this.subscription_list.init();
2475 this.section_select=function(list){
2476 var id=list.get_single_selection();
2480 this.set_busy(true);
2481 if(this.env.contentframe&&window.frames&&window.frames[this.env.contentframe]){
2483 _16d=window.frames[this.env.contentframe];
2485 _16d.location.href=this.env.comm_path+"&_action=edit-prefs&_section="+id+_16c;
2489 this.identity_select=function(list){
2491 if(id=list.get_single_selection()){
2492 this.load_identity(id,"edit-identity");
2495 this.load_identity=function(id,_171){
2496 if(_171=="edit-identity"&&(!id||id==this.env.iid)){
2501 if(this.env.contentframe&&window.frames&&window.frames[this.env.contentframe]){
2503 _173=window.frames[this.env.contentframe];
2504 document.getElementById(this.env.contentframe).style.visibility="inherit";
2506 if(_171&&(id||_171=="add-identity")){
2507 this.set_busy(true);
2508 _173.location.href=this.env.comm_path+"&_action="+_171+"&_iid="+id+_172;
2512 this.delete_identity=function(id){
2513 var _175=this.identity_list.get_selection();
2514 if(!(_175.length||this.env.iid)){
2518 id=this.env.iid?this.env.iid:_175[0];
2520 this.goto_url("delete-identity","_iid="+id+"&_token="+this.env.request_token,true);
2523 this.focus_subscription=function(id){
2525 var reg=RegExp("["+RegExp.escape(this.env.delimiter)+"]?[^"+RegExp.escape(this.env.delimiter)+"]+$");
2526 if(this.drag_active&&this.env.folder&&(row=document.getElementById(id))){
2527 if(this.env.subscriptionrows[id]&&(_178=this.env.subscriptionrows[id][0])){
2528 if(this.check_droptarget(_178)&&!this.env.subscriptionrows[this.get_folder_row_id(this.env.folder)][2]&&(_178!=this.env.folder.replace(reg,""))&&(!_178.match(new RegExp("^"+RegExp.escape(this.env.folder+this.env.delimiter))))){
2529 this.set_env("dstfolder",_178);
2530 $(row).addClass("droptarget");
2533 if(this.env.folder.match(new RegExp(RegExp.escape(this.env.delimiter)))){
2534 this.set_env("dstfolder",this.env.delimiter);
2535 $(this.subscription_list.frame).addClass("droptarget");
2540 this.unfocus_subscription=function(id){
2542 this.set_env("dstfolder",null);
2543 if(this.env.subscriptionrows[id]&&row[0]){
2544 row.removeClass("droptarget");
2546 $(this.subscription_list.frame).removeClass("droptarget");
2549 this.subscription_select=function(list){
2551 if((id=list.get_single_selection())&&this.env.subscriptionrows["rcmrow"+id]&&(_17e=this.env.subscriptionrows["rcmrow"+id][0])){
2552 this.set_env("folder",_17e);
2554 this.set_env("folder",null);
2556 if(this.gui_objects.createfolderhint){
2557 $(this.gui_objects.createfolderhint).html(this.env.folder?this.get_label("addsubfolderhint"):"");
2560 this.subscription_move_folder=function(list){
2561 var reg=RegExp("["+RegExp.escape(this.env.delimiter)+"]?[^"+RegExp.escape(this.env.delimiter)+"]+$");
2562 if(this.env.folder&&this.env.dstfolder&&(this.env.dstfolder!=this.env.folder)&&(this.env.dstfolder!=this.env.folder.replace(reg,""))){
2563 var reg=new RegExp("[^"+RegExp.escape(this.env.delimiter)+"]*["+RegExp.escape(this.env.delimiter)+"]","g");
2564 var _181=this.env.folder.replace(reg,"");
2565 var _182=this.env.dstfolder==this.env.delimiter?_181:this.env.dstfolder+this.env.delimiter+_181;
2566 this.set_busy(true,"foldermoving");
2567 this.http_post("rename-folder","_folder_oldname="+urlencode(this.env.folder)+"&_folder_newname="+urlencode(_182),true);
2569 this.drag_active=false;
2570 this.unfocus_subscription(this.get_folder_row_id(this.env.dstfolder));
2572 this.create_folder=function(name){
2573 if(this.edit_folder){
2574 this.reset_folder_rename();
2577 if((form=this.gui_objects.editform)&&form.elements["_folder_name"]){
2578 name=form.elements["_folder_name"].value;
2579 if(name.indexOf(this.env.delimiter)>=0){
2580 alert(this.get_label("forbiddencharacter")+" ("+this.env.delimiter+")");
2583 if(this.env.folder&&name!=""){
2584 name=this.env.folder+this.env.delimiter+name;
2586 this.set_busy(true,"foldercreating");
2587 this.http_post("create-folder","_name="+urlencode(name),true);
2589 if(form.elements["_folder_name"]){
2590 form.elements["_folder_name"].focus();
2594 this.rename_folder=function(id){
2596 if(temp=this.edit_folder){
2597 this.reset_folder_rename();
2602 if(id&&this.env.subscriptionrows[id]&&(row=document.getElementById(id))){
2603 var reg=new RegExp(".*["+RegExp.escape(this.env.delimiter)+"]");
2604 this.name_input=document.createElement("input");
2605 this.name_input.type="text";
2606 this.name_input.value=this.env.subscriptionrows[id][0].replace(reg,"");
2607 reg=new RegExp("["+RegExp.escape(this.env.delimiter)+"]?[^"+RegExp.escape(this.env.delimiter)+"]+$");
2608 this.name_input.__parent=this.env.subscriptionrows[id][0].replace(reg,"");
2609 this.name_input.onkeypress=function(e){
2610 rcmail.name_input_keypress(e);
2612 row.cells[0].replaceChild(this.name_input,row.cells[0].firstChild);
2613 this.edit_folder=id;
2614 this.name_input.select();
2615 if(form=this.gui_objects.editform){
2616 form.onsubmit=function(){
2622 this.reset_folder_rename=function(){
2623 var cell=this.name_input?this.name_input.parentNode:null;
2624 if(cell&&this.edit_folder&&this.env.subscriptionrows[this.edit_folder]){
2625 $(cell).html(this.env.subscriptionrows[this.edit_folder][1]);
2627 this.edit_folder=null;
2629 this.name_input_keypress=function(e){
2630 var key=rcube_event.get_keycode(e);
2632 var _18e=this.name_input?this.name_input.value:null;
2633 if(this.edit_folder&&_18e){
2634 if(_18e.indexOf(this.env.delimiter)>=0){
2635 alert(this.get_label("forbiddencharacter")+" ("+this.env.delimiter+")");
2638 if(this.name_input.__parent){
2639 _18e=this.name_input.__parent+this.env.delimiter+_18e;
2641 this.set_busy(true,"folderrenaming");
2642 this.http_post("rename-folder","_folder_oldname="+urlencode(this.env.subscriptionrows[this.edit_folder][0])+"&_folder_newname="+urlencode(_18e),true);
2646 this.reset_folder_rename();
2650 this.delete_folder=function(id){
2651 var _190=this.env.subscriptionrows[id][0];
2652 if(this.edit_folder){
2653 this.reset_folder_rename();
2655 if(_190&&confirm(this.get_label("deletefolderconfirm"))){
2656 this.set_busy(true,"folderdeleting");
2657 this.http_post("delete-folder","_mboxes="+urlencode(_190),true);
2658 this.set_env("folder",null);
2659 $(this.gui_objects.createfolderhint).html("");
2662 this.add_folder_row=function(name,_192,_193,_194){
2663 if(!this.gui_objects.subscriptionlist){
2666 for(var _195 in this.env.subscriptionrows){
2667 if(this.env.subscriptionrows[_195]!=null&&!this.env.subscriptionrows[_195][2]){
2672 var _198=this.gui_objects.subscriptionlist.tBodies[0];
2673 var id="rcmrow"+(_198.childNodes.length+1);
2674 var _19a=this.subscription_list.get_single_selection();
2679 if(!id||!(_196=document.getElementById(_195))){
2680 this.goto_url("folders");
2682 var row=this.clone_table_row(_196);
2684 if(_194&&(_194=this.get_folder_row_id(_194))){
2685 _198.insertBefore(row,document.getElementById(_194));
2687 _198.appendChild(row);
2690 _198.removeChild(_193);
2693 this.env.subscriptionrows[row.id]=[name,_192,0];
2694 row.cells[0].innerHTML=_192;
2696 row.cells[1].innerHTML="*";
2698 if(!_193&&row.cells[2]&&row.cells[2].firstChild.tagName.toLowerCase()=="input"){
2699 row.cells[2].firstChild.value=name;
2700 row.cells[2].firstChild.checked=true;
2702 if(!_193&&(form=this.gui_objects.editform)){
2703 if(form.elements["_folder_oldname"]){
2704 form.elements["_folder_oldname"].options[form.elements["_folder_oldname"].options.length]=new Option(name,name);
2706 if(form.elements["_folder_name"]){
2707 form.elements["_folder_name"].value="";
2710 this.init_subscription_list();
2711 if(_19a&&document.getElementById("rcmrow"+_19a)){
2712 this.subscription_list.select_row(_19a);
2714 if(document.getElementById(id).scrollIntoView){
2715 document.getElementById(id).scrollIntoView();
2718 this.replace_folder_row=function(_19c,_19d,_19e,_19f){
2719 var id=this.get_folder_row_id(_19c);
2720 var row=document.getElementById(id);
2721 this.add_folder_row(_19d,_19e,row,_19f);
2723 if((form=this.gui_objects.editform)&&(elm=form.elements["_folder_oldname"])){
2724 for(var i=0;i<elm.options.length;i++){
2725 if(elm.options[i].value==_19c){
2726 elm.options[i].text=_19e;
2727 elm.options[i].value=_19d;
2731 form.elements["_folder_newname"].value="";
2734 this.remove_folder_row=function(_1a5){
2736 var id=this.get_folder_row_id(_1a5);
2737 if(id&&(row=document.getElementById(id))){
2738 row.style.display="none";
2741 if((form=this.gui_objects.editform)&&form.elements["_folder_oldname"]){
2742 for(var i=0;i<form.elements["_folder_oldname"].options.length;i++){
2743 if(form.elements["_folder_oldname"].options[i].value==_1a5){
2744 form.elements["_folder_oldname"].options[i]=null;
2749 if(form&&form.elements["_folder_newname"]){
2750 form.elements["_folder_newname"].value="";
2753 this.subscribe_folder=function(_1aa){
2755 this.http_post("subscribe","_mbox="+urlencode(_1aa));
2758 this.unsubscribe_folder=function(_1ab){
2760 this.http_post("unsubscribe","_mbox="+urlencode(_1ab));
2763 this.get_folder_row_id=function(_1ac){
2764 for(var id in this.env.subscriptionrows){
2765 if(this.env.subscriptionrows[id]&&this.env.subscriptionrows[id][0]==_1ac){
2771 this.clone_table_row=function(row){
2773 var _1b1=document.createElement("tr");
2774 for(var n=0;n<row.cells.length;n++){
2776 td=document.createElement("td");
2778 td.className=cell.className;
2781 td.setAttribute("align",cell.align);
2783 td.innerHTML=cell.innerHTML;
2784 _1b1.appendChild(td);
2788 this.set_page_buttons=function(){
2789 this.enable_command("nextpage",(this.env.pagecount>this.env.current_page));
2790 this.enable_command("lastpage",(this.env.pagecount>this.env.current_page));
2791 this.enable_command("previouspage",(this.env.current_page>1));
2792 this.enable_command("firstpage",(this.env.current_page>1));
2794 this.init_buttons=function(){
2795 for(var cmd in this.buttons){
2796 if(typeof cmd!="string"){
2799 for(var i=0;i<this.buttons[cmd].length;i++){
2800 var prop=this.buttons[cmd][i];
2801 var elm=document.getElementById(prop.id);
2806 if(prop.type=="image"){
2813 elm.onmousedown=function(e){
2814 return rcmail.button_sel(this._command,this._id);
2816 elm.onmouseup=function(e){
2817 return rcmail.button_out(this._command,this._id);
2820 new Image().src=prop.sel;
2824 elm.onmouseover=function(e){
2825 return rcmail.button_over(this._command,this._id);
2827 elm.onmouseout=function(e){
2828 return rcmail.button_out(this._command,this._id);
2831 new Image().src=prop.over;
2837 this.set_button=function(_1bc,_1bd){
2838 var _1be=this.buttons[_1bc];
2840 if(!_1be||!_1be.length){
2843 for(var n=0;n<_1be.length;n++){
2845 obj=document.getElementById(_1bf.id);
2846 if(obj&&_1bf.type=="image"&&!_1bf.status){
2847 _1bf.pas=obj._original_src?obj._original_src:obj.src;
2848 if(obj.runtimeStyle&&obj.runtimeStyle.filter&&obj.runtimeStyle.filter.match(/src=['"]([^'"]+)['"]/)){
2852 if(obj&&!_1bf.status){
2853 _1bf.pas=String(obj.className);
2856 if(obj&&_1bf.type=="image"&&_1bf[_1bd]){
2860 if(obj&&typeof (_1bf[_1bd])!="undefined"){
2862 obj.className=_1bf[_1bd];
2865 if(obj&&_1bf.type=="input"){
2871 this.set_alttext=function(_1c2,_1c3){
2872 if(!this.buttons[_1c2]||!this.buttons[_1c2].length){
2876 for(var n=0;n<this.buttons[_1c2].length;n++){
2877 _1c4=this.buttons[_1c2][n];
2878 obj=document.getElementById(_1c4.id);
2879 if(_1c4.type=="image"&&obj){
2880 obj.setAttribute("alt",this.get_label(_1c3));
2881 if((link=obj.parentNode)&&link.tagName.toLowerCase()=="a"){
2882 link.setAttribute("title",this.get_label(_1c3));
2886 obj.setAttribute("title",this.get_label(_1c3));
2891 this.button_over=function(_1c8,id){
2892 var _1ca=this.buttons[_1c8];
2894 if(!_1ca||!_1ca.length){
2897 for(var n=0;n<_1ca.length;n++){
2899 if(_1cb.id==id&&_1cb.status=="act"){
2900 elm=document.getElementById(_1cb.id);
2902 if(_1cb.type=="image"){
2905 elm.className=_1cb.over;
2911 this.button_sel=function(_1ce,id){
2912 var _1d0=this.buttons[_1ce];
2914 if(!_1d0||!_1d0.length){
2917 for(var n=0;n<_1d0.length;n++){
2919 if(_1d1.id==id&&_1d1.status=="act"){
2920 elm=document.getElementById(_1d1.id);
2922 if(_1d1.type=="image"){
2925 elm.className=_1d1.sel;
2928 this.buttons_sel[id]=_1ce;
2932 this.button_out=function(_1d4,id){
2933 var _1d6=this.buttons[_1d4];
2935 if(!_1d6||!_1d6.length){
2938 for(var n=0;n<_1d6.length;n++){
2940 if(_1d7.id==id&&_1d7.status=="act"){
2941 elm=document.getElementById(_1d7.id);
2943 if(_1d7.type=="image"){
2946 elm.className=_1d7.act;
2952 this.set_pagetitle=function(_1da){
2953 if(_1da&&document.title){
2954 document.title=_1da;
2957 this.display_message=function(msg,type,hold){
2959 this.pending_message=new Array(msg,type);
2962 if(this.env.framed&&parent.rcmail){
2963 return parent.rcmail.display_message(msg,type,hold);
2965 if(!this.gui_objects.message){
2968 if(this.message_timer){
2969 clearTimeout(this.message_timer);
2973 cont="<div class=\""+type+"\">"+cont+"</div>";
2975 var obj=$(this.gui_objects.message).html(cont).show();
2976 if(type!="loading"){
2977 obj.bind("mousedown",function(){
2983 this.message_timer=window.setTimeout(function(){
2984 _1.hide_message(true);
2985 },this.message_time);
2988 this.hide_message=function(fade){
2989 if(this.gui_objects.message){
2990 $(this.gui_objects.message).unbind()[(fade?"fadeOut":"hide")]();
2993 this.select_folder=function(name,old){
2994 if(this.gui_objects.folderlist){
2996 if((_1e3=this.get_folder_li(old))){
2997 $(_1e3).removeClass("selected").removeClass("unfocused");
2999 if((_1e4=this.get_folder_li(name))){
3000 $(_1e4).removeClass("unfocused").addClass("selected");
3002 this.triggerEvent("selectfolder",{folder:name,old:old});
3005 this.get_folder_li=function(name){
3006 if(this.gui_objects.folderlist){
3007 name=String(name).replace(this.identifier_expr,"_");
3008 return document.getElementById("rcmli"+name);
3012 this.set_message_coltypes=function(_1e6){
3015 var _1e9=this.gui_objects.messagelist?this.gui_objects.messagelist.tHead:null;
3016 for(var n=0;_1e9&&n<this.coltypes.length;n++){
3017 col=this.coltypes[n];
3018 if((cell=_1e9.rows[0].cells[n+1])&&(col=="from"||col=="to")){
3019 if(cell.firstChild&&cell.firstChild.tagName.toLowerCase()=="a"){
3020 cell.firstChild.innerHTML=this.get_label(this.coltypes[n]);
3021 cell.firstChild.onclick=function(){
3022 return rcmail.command("sort",this.__col,this);
3024 cell.firstChild.__col=col;
3026 cell.innerHTML=this.get_label(this.coltypes[n]);
3030 if(col=="subject"&&this.message_list){
3031 this.message_list.subject_col=n+1;
3036 this.add_message_row=function(uid,cols,_1ed,_1ee,_1ef){
3037 if(!this.gui_objects.messagelist||!this.message_list){
3040 if(this.message_list.background){
3041 var _1f0=this.message_list.background;
3043 var _1f0=this.gui_objects.messagelist.tBodies[0];
3045 var _1f1=_1f0.rows.length;
3047 this.env.messages[uid]={deleted:_1ed.deleted?1:0,replied:_1ed.replied?1:0,unread:_1ed.unread?1:0,forwarded:_1ed.forwarded?1:0,flagged:_1ed.flagged?1:0};
3048 var _1f3="message"+(even?" even":" odd")+(_1ed.unread?" unread":"")+(_1ed.deleted?" deleted":"")+(_1ed.flagged?" flagged":"")+(this.message_list.in_selection(uid)?" selected":"");
3049 var row=document.createElement("tr");
3050 row.id="rcmrow"+uid;
3052 var icon=this.env.messageicon;
3053 if(_1ed.deleted&&this.env.deletedicon){
3054 icon=this.env.deletedicon;
3056 if(_1ed.replied&&this.env.repliedicon){
3057 if(_1ed.forwarded&&this.env.forwardedrepliedicon){
3058 icon=this.env.forwardedrepliedicon;
3060 icon=this.env.repliedicon;
3063 if(_1ed.forwarded&&this.env.forwardedicon){
3064 icon=this.env.forwardedicon;
3066 if(_1ed.unread&&this.env.unreadicon){
3067 icon=this.env.unreadicon;
3072 var col=document.createElement("td");
3073 col.className="icon";
3074 col.innerHTML=icon?"<img src=\""+icon+"\" alt=\"\" />":"";
3075 row.appendChild(col);
3076 for(var n=0;n<this.coltypes.length;n++){
3077 var c=this.coltypes[n];
3078 col=document.createElement("td");
3079 col.className=String(c).toLowerCase();
3081 if(_1ed.flagged&&this.env.flaggedicon){
3082 col.innerHTML="<img src=\""+this.env.flaggedicon+"\" alt=\"\" />";
3084 if(!_1ed.flagged&&this.env.unflaggedicon){
3085 col.innerHTML="<img src=\""+this.env.unflaggedicon+"\" alt=\"\" />";
3089 if(c=="attachment"){
3090 col.innerHTML=(_1ee&&this.env.attachmenticon?"<img src=\""+this.env.attachmenticon+"\" alt=\"\" />":" ");
3092 col.innerHTML=cols[c];
3095 row.appendChild(col);
3097 this.message_list.insert_row(row,_1ef);
3098 if(_1ef&&this.env.pagesize&&this.message_list.rowcount>this.env.pagesize){
3099 var uid=this.message_list.get_last_row();
3100 this.message_list.remove_row(uid);
3101 this.message_list.clear_selection(uid);
3104 this.offline_message_list=function(flag){
3105 if(this.message_list){
3106 this.message_list.set_background_mode(flag);
3109 this.set_rowcount=function(text){
3110 $(this.gui_objects.countdisplay).html(text);
3111 this.set_page_buttons();
3113 this.set_mailboxname=function(_1fb){
3114 if(this.gui_objects.mailboxname&&_1fb){
3115 this.gui_objects.mailboxname.innerHTML=_1fb;
3118 this.set_quota=function(_1fc){
3119 if(_1fc&&this.gui_objects.quotadisplay){
3120 if(typeof (_1fc)=="object"){
3121 this.percent_indicator(this.gui_objects.quotadisplay,_1fc);
3123 $(this.gui_objects.quotadisplay).html(_1fc);
3127 this.set_unread_count=function(mbox,_1fe,_1ff){
3128 if(!this.gui_objects.mailboxlist){
3131 this.env.unread_counts[mbox]=_1fe;
3132 this.set_unread_count_display(mbox,_1ff);
3134 this.set_unread_count_display=function(mbox,_201){
3135 var reg,_203,item,_205,_206,div;
3136 if(item=this.get_folder_li(mbox)){
3137 _205=this.env.unread_counts[mbox]?this.env.unread_counts[mbox]:0;
3138 _203=item.getElementsByTagName("a")[0];
3139 reg=/\s+\([0-9]+\)$/i;
3141 if((div=item.getElementsByTagName("div")[0])&&div.className.match(/collapsed/)){
3142 for(var k in this.env.unread_counts){
3143 if(k.indexOf(mbox+this.env.delimiter)==0){
3144 _206+=this.env.unread_counts[k];
3148 if(_205&&_203.innerHTML.match(reg)){
3149 _203.innerHTML=_203.innerHTML.replace(reg," ("+_205+")");
3152 _203.innerHTML+=" ("+_205+")";
3154 _203.innerHTML=_203.innerHTML.replace(reg,"");
3157 reg=new RegExp(RegExp.escape(this.env.delimiter)+"[^"+RegExp.escape(this.env.delimiter)+"]+$");
3158 if(mbox.match(reg)){
3159 this.set_unread_count_display(mbox.replace(reg,""),false);
3162 $(item).addClass("unread");
3164 $(item).removeClass("unread");
3167 reg=/^\([0-9]+\)\s+/i;
3168 if(_201&&document.title){
3169 var _209=String(document.title);
3171 if(_205&&_209.match(reg)){
3172 _20a=_209.replace(reg,"("+_205+") ");
3175 _20a="("+_205+") "+_209;
3177 _20a=_209.replace(reg,"");
3180 this.set_pagetitle(_20a);
3183 this.new_message_focus=function(){
3184 if(this.env.framed&&window.parent){
3185 window.parent.focus();
3190 this.toggle_prefer_html=function(_20b){
3192 if(_20c=document.getElementById("rcmfd_addrbook_show_images")){
3193 _20c.disabled=!_20b.checked;
3196 this.set_headers=function(_20d){
3197 if(this.gui_objects.all_headers_row&&this.gui_objects.all_headers_box&&_20d){
3198 $(this.gui_objects.all_headers_box).html(_20d).show();
3199 if(this.env.framed&&parent.rcmail){
3200 parent.rcmail.set_busy(false);
3202 this.set_busy(false);
3206 this.load_headers=function(elem){
3207 if(!this.gui_objects.all_headers_row||!this.gui_objects.all_headers_box||!this.env.uid){
3210 $(elem).removeClass("show-headers").addClass("hide-headers");
3211 $(this.gui_objects.all_headers_row).show();
3212 elem.onclick=function(){
3213 rcmail.hide_headers(elem);
3215 if(!this.gui_objects.all_headers_box.innerHTML){
3216 this.display_message(this.get_label("loading"),"loading",true);
3217 this.http_post("headers","_uid="+this.env.uid);
3220 this.hide_headers=function(elem){
3221 if(!this.gui_objects.all_headers_row||!this.gui_objects.all_headers_box){
3224 $(elem).removeClass("hide-headers").addClass("show-headers");
3225 $(this.gui_objects.all_headers_row).hide();
3226 elem.onclick=function(){
3227 rcmail.load_headers(elem);
3230 this.percent_indicator=function(obj,data){
3236 var _214=data.width?data.width:this.env.indicator_width?this.env.indicator_width:100;
3237 var _215=data.height?data.height:this.env.indicator_height?this.env.indicator_height:14;
3238 var _216=data.percent?Math.abs(parseInt(data.percent)):0;
3239 var _217=parseInt(_216/100*_214);
3240 var pos=$(obj).position();
3241 this.env.indicator_width=_214;
3242 this.env.indicator_height=_215;
3247 var main=$("<div>");
3248 main.css({position:"absolute",top:pos.top,left:pos.left,width:_214+"px",height:_215+"px",zIndex:100,lineHeight:_215+"px"}).attr("title",data.title).addClass("quota_text").html(_216+"%");
3249 var bar1=$("<div>");
3250 bar1.css({position:"absolute",top:pos.top+1,left:pos.left+1,width:_217+"px",height:_215+"px",zIndex:99});
3251 var bar2=$("<div>");
3252 bar2.css({position:"absolute",top:pos.top+1,left:pos.left+1,width:_214+"px",height:_215+"px",zIndex:98}).addClass("quota_bg");
3254 main.addClass(" quota_text_high");
3255 bar1.addClass("quota_high");
3258 main.addClass(" quota_text_mid");
3259 bar1.addClass("quota_mid");
3261 main.addClass(" quota_text_normal");
3262 bar1.addClass("quota_low");
3266 $(obj).append(bar1).append(bar2).append(main);
3268 this.html2plain=function(_21c,id){
3269 var url=this.env.bin_path+"html2text.php";
3271 this.set_busy(true,"converting");
3272 console.log("HTTP POST: "+url);
3273 $.ajax({type:"POST",url:url,data:_21c,contentType:"application/octet-stream",error:function(o){
3275 },success:function(data){
3276 _21f.set_busy(false);
3277 $(document.getElementById(id)).val(data);
3281 this.plain2html=function(_222,id){
3282 this.set_busy(true,"converting");
3283 $(document.getElementById(id)).val("<pre>"+_222+"</pre>");
3284 this.set_busy(false);
3286 this.redirect=function(url,lock){
3287 if(lock||lock===null){
3288 this.set_busy(true);
3290 if(this.env.framed&&window.parent){
3291 parent.location.href=url;
3296 this.goto_url=function(_226,_227,lock){
3297 var _229=_227?"&"+_227:"";
3298 this.redirect(this.env.comm_path+"&_action="+_226+_229,lock);
3300 this.http_request=function(_22a,_22b,lock){
3301 _22b+=(_22b?"&":"")+"_remote=1";
3302 var url=this.env.comm_path+"&_action="+_22a+"&"+_22b;
3303 console.log("HTTP POST: "+url);
3304 jQuery.get(url,{_unlock:(lock?1:0)},function(data){
3305 _1.http_response(data);
3308 this.http_post=function(_22f,_230,lock){
3309 var url=this.env.comm_path+"&_action="+_22f;
3310 if(_230&&typeof (_230)=="object"){
3312 _230._unlock=(lock?1:0);
3314 _230+=(_230?"&":"")+"_remote=1"+(lock?"&_unlock=1":"");
3316 console.log("HTTP POST: "+url);
3317 jQuery.post(url,_230,function(data){
3318 _1.http_response(data);
3321 this.http_response=function(_234){
3324 this.set_busy(false);
3327 this.set_env(_234.env);
3329 if(typeof _234.texts=="object"){
3330 for(var name in _234.texts){
3331 if(typeof _234.texts[name]=="string"){
3332 this.add_label(name,_234.texts[name]);
3337 console.log(_234.exec);
3340 if(_234.callbacks&&_234.callbacks.length){
3341 for(var i=0;i<_234.callbacks.length;i++){
3342 this.triggerEvent(_234.callbacks[i][0],_234.callbacks[i][1]);
3345 switch(_234.action){
3347 if(this.task=="addressbook"){
3348 var uid=this.contact_list.get_selection();
3349 this.enable_command("compose",(uid&&this.contact_list.rows[uid]));
3350 this.enable_command("delete","edit",(uid&&this.contact_list.rows[uid]&&this.env.address_sources&&!this.env.address_sources[this.env.source].readonly));
3351 this.enable_command("export",(this.contact_list&&this.contact_list.rowcount>0));
3354 if(this.env.action=="show"){
3355 this.enable_command("reply","reply-all","forward","delete","mark","print","open","edit","viewsource","download",true);
3357 if(this.message_list){
3358 this.message_list.init();
3364 if(!this.env.messagecount&&this.task=="mail"){
3365 if(this.env.contentframe){
3366 this.show_contentframe(false);
3368 this.enable_command("show","reply","reply-all","forward","moveto","delete","mark","viewsource","open","edit","download","print","load-attachment","purge","expunge","select-all","select-none","sort",false);
3371 case "check-recent":
3374 if(this.task=="mail"){
3375 if(this.message_list&&_234.action=="list"){
3376 this.msglist_select(this.message_list);
3378 this.enable_command("show","expunge","select-all","select-none","sort",(this.env.messagecount>0));
3379 this.enable_command("purge",this.purge_mailbox_test());
3380 if(_234.action=="list"){
3381 this.triggerEvent("listupdate",{folder:this.env.mailbox,rowcount:this.message_list.rowcount});
3384 if(this.task=="addressbook"){
3385 this.enable_command("export",(this.contact_list&&this.contact_list.rowcount>0));
3386 if(_234.action=="list"){
3387 this.triggerEvent("listupdate",{folder:this.env.source,rowcount:this.contact_list.rowcount});
3394 this.http_error=function(_239,_23a,err){
3395 var _23c=_239.statusText;
3396 this.set_busy(false);
3399 this.display_message(this.get_label("servererror")+" ("+_23c+")","error");
3402 this.send_keep_alive=function(){
3404 this.http_request("keep-alive","_t="+d.getTime());
3406 this.check_for_recent=function(_23e){
3411 this.set_busy(true,"checkingmail");
3413 var _23f="_t="+(new Date().getTime());
3414 if(this.gui_objects.messagelist){
3417 if(this.gui_objects.quotadisplay){
3420 if(this.env.search_request){
3421 _23f+="&_search="+this.env.search_request;
3423 this.http_request("check-recent",_23f,true);
3425 this.get_single_uid=function(){
3426 return this.env.uid?this.env.uid:(this.message_list?this.message_list.get_single_selection():null);
3428 this.get_single_cid=function(){
3429 return this.env.cid?this.env.cid:(this.contact_list?this.contact_list.get_single_selection():null);
3431 this.get_caret_pos=function(obj){
3432 if(typeof (obj.selectionEnd)!="undefined"){
3433 return obj.selectionEnd;
3435 if(document.selection&&document.selection.createRange){
3436 var _241=document.selection.createRange();
3437 if(_241.parentElement()!=obj){
3440 var gm=_241.duplicate();
3441 if(obj.tagName=="TEXTAREA"){
3442 gm.moveToElementText(obj);
3444 gm.expand("textedit");
3446 gm.setEndPoint("EndToStart",_241);
3447 var p=gm.text.length;
3448 return p<=obj.value.length?p:-1;
3450 return obj.value.length;
3454 this.set_caret_pos=function(obj,pos){
3455 if(obj.setSelectionRange){
3456 obj.setSelectionRange(pos,pos);
3458 if(obj.createTextRange){
3459 var _246=obj.createTextRange();
3460 _246.collapse(true);
3461 _246.moveEnd("character",pos);
3462 _246.moveStart("character",pos);
3467 this.lock_form=function(form,lock){
3468 if(!form||!form.elements){
3472 for(var n=0;n<form.elements.length;n++){
3473 type=form.elements[n];
3477 form.elements[n].disabled=lock;
3481 rcube_webmail.prototype.addEventListener=rcube_event_engine.prototype.addEventListener;
3482 rcube_webmail.prototype.removeEventListener=rcube_event_engine.prototype.removeEventListener;
3483 rcube_webmail.prototype.triggerEvent=rcube_event_engine.prototype.triggerEvent;