]> git.donarmstrong.com Git - roundcube.git/blob - program/js/app.js
Imported Upstream version 0.3.1
[roundcube.git] / program / js / app.js
1 function rcube_webmail(){
2 this.env=new Object();
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();
11 this.ref="rcmail";
12 var _1=this;
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);
27 }});
28 this.set_env=function(p,_7){
29 if(p!=null&&typeof (p)=="object"&&!_7){
30 for(var n in p){
31 this.env[n]=p[n];
32 }
33 }else{
34 this.env[p]=_7;
35 }
36 };
37 this.add_label=function(_9,_a){
38 this.labels[_9]=_a;
39 };
40 this.register_button=function(_b,id,_d,_e,_f,_10){
41 if(!this.buttons[_b]){
42 this.buttons[_b]=new Array();
43 }
44 var _11={id:id,type:_d};
45 if(_e){
46 _11.act=_e;
47 }
48 if(_f){
49 _11.sel=_f;
50 }
51 if(_10){
52 _11.over=_10;
53 }
54 this.buttons[_b][this.buttons[_b].length]=_11;
55 };
56 this.gui_object=function(_12,id){
57 this.gui_objects[_12]=id;
58 };
59 this.gui_container=function(_14,id){
60 this.gui_containers[_14]=id;
61 };
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);
65 }
66 };
67 this.register_command=function(_18,_19,_1a){
68 this.command_handlers[_18]=_19;
69 if(_1a){
70 this.enable_command(_18,true);
71 }
72 };
73 this.add_onload=function(f){
74 this.onloads[this.onloads.length]=f;
75 };
76 this.init=function(){
77 var p=this;
78 this.task=this.env.task;
79 if(!bw.dom||!bw.xmlhttp_test()){
80 this.goto_url("error","_code=0x199");
81 return;
82 }
83 for(var n in this.gui_containers){
84 this.gui_containers[n]=$("#"+this.gui_containers[n]);
85 }
86 for(var n in this.gui_objects){
87 this.gui_objects[n]=rcube_find_object(this.gui_objects[n]);
88 }
89 this.init_buttons();
90 if(this.env.framed&&parent.rcmail&&parent.rcmail.set_busy){
91 parent.rcmail.set_busy(false);
92 }
93 this.enable_command("logout","mail","addressbook","settings",true);
94 if(this.env.permaurl){
95 this.enable_command("permaurl",true);
96 }
97 switch(this.task){
98 case "mail":
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);
103 };
104 this.message_list.addEventListener("dblclick",function(o){
105 p.msglist_dbl_click(o);
106 });
107 this.message_list.addEventListener("keypress",function(o){
108 p.msglist_keypress(o);
109 });
110 this.message_list.addEventListener("select",function(o){
111 p.msglist_select(o);
112 });
113 this.message_list.addEventListener("dragstart",function(o){
114 p.drag_start(o);
115 });
116 this.message_list.addEventListener("dragmove",function(e){
117 p.drag_move(e);
118 });
119 this.message_list.addEventListener("dragend",function(e){
120 p.drag_end(e);
121 });
122 document.onmouseup=function(e){
123 return p.doc_mouse_up(e);
124 };
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);
130 };
131 }else{
132 this.message_list.focus();
133 }
134 }
135 if(this.env.coltypes){
136 this.set_message_coltypes(this.env.coltypes);
137 }
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;
141 }
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);
147 }
148 if(this.env.prev_uid){
149 this.enable_command("previousmessage",true);
150 this.enable_command("firstmessage",true);
151 }
152 if(this.env.blockedobjects){
153 if(this.gui_objects.remoteobjectsmsg){
154 this.gui_objects.remoteobjectsmsg.style.display="block";
155 }
156 this.enable_command("load-images","always-load",true);
157 }
158 }
159 if(this.env.trash_mailbox&&this.env.mailbox!=this.env.trash_mailbox){
160 this.set_alttext("delete","movemessagetotrash");
161 }
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);
165 }
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);
171 };
172 this.set_spellcheck_state("ready");
173 if($("input[name='_is_html']").val()=="1"){
174 this.display_spellcheck_controls(false);
175 }
176 }
177 if(this.env.drafts_mailbox){
178 this.enable_command("savedraft",true);
179 }
180 document.onmouseup=function(e){
181 return p.doc_mouse_up(e);
182 };
183 this.init_messageform();
184 }
185 if(this.env.messagecount){
186 this.enable_command("select-all","select-none","expunge",true);
187 }
188 if(this.purge_mailbox_test()){
189 this.enable_command("purge",true);
190 }
191 this.set_page_buttons();
192 if(this.env.action=="print"){
193 window.print();
194 }
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","");
199 }
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);
204 }else{
205 this.http_post("mark",_29+"&_flag=mdnsent");
206 }
207 }
208 break;
209 case "addressbook":
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});
214 };
215 this.contact_list.addEventListener("keypress",function(o){
216 p.contactlist_keypress(o);
217 });
218 this.contact_list.addEventListener("select",function(o){
219 p.contactlist_select(o);
220 });
221 this.contact_list.addEventListener("dragstart",function(o){
222 p.drag_start(o);
223 });
224 this.contact_list.addEventListener("dragmove",function(e){
225 p.drag_move(e);
226 });
227 this.contact_list.addEventListener("dragend",function(e){
228 p.drag_end(e);
229 });
230 this.contact_list.init();
231 if(this.env.cid){
232 this.contact_list.highlight_row(this.env.cid);
233 }
234 if(this.gui_objects.contactslist.parentNode){
235 this.gui_objects.contactslist.parentNode.onmousedown=function(e){
236 return p.click_on_list(e);
237 };
238 document.onmouseup=function(e){
239 return p.doc_mouse_up(e);
240 };
241 }else{
242 this.contact_list.focus();
243 }
244 this.gui_objects.folderlist=this.gui_objects.contactslist;
245 }
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);
249 }
250 if(this.env.cid){
251 this.enable_command("show","edit",true);
252 }
253 if((this.env.action=="add"||this.env.action=="edit")&&this.gui_objects.editform){
254 this.enable_command("save",true);
255 }else{
256 this.enable_command("search","reset-search","moveto","import",true);
257 }
258 if(this.contact_list&&this.contact_list.rowcount>0){
259 this.enable_command("export",true);
260 }
261 this.enable_command("list",true);
262 break;
263 case "settings":
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);
267 }else{
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);
271 }else{
272 if(this.env.action=="folders"){
273 this.enable_command("subscribe","unsubscribe","create-folder","rename-folder","delete-folder",true);
274 }
275 }
276 }
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);
281 });
282 this.identity_list.init();
283 this.identity_list.focus();
284 if(this.env.iid){
285 this.identity_list.highlight_row(this.env.iid);
286 }
287 }else{
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){
291 p.section_select(o);
292 });
293 this.sections_list.init();
294 this.sections_list.focus();
295 this.sections_list.select_first();
296 }else{
297 if(this.gui_objects.subscriptionlist){
298 this.init_subscription_list();
299 }
300 }
301 }
302 break;
303 case "login":
304 var _34=$("#rcmloginuser");
305 _34.bind("keyup",function(e){
306 return rcmail.login_user_keyup(e);
307 });
308 if(_34.val()==""){
309 _34.focus();
310 }else{
311 $("#rcmloginpwd").focus();
312 }
313 $("#rcmlogintz").val(new Date().getTimezoneOffset()/-60);
314 this.enable_command("login",true);
315 break;
316 default:
317 break;
318 }
319 this.loaded=true;
320 if(this.pending_message){
321 this.display_message(this.pending_message[0],this.pending_message[1]);
322 }
323 if(this.gui_objects.folderlist){
324 this.gui_containers.foldertray=$(this.gui_objects.folderlist);
325 }
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]);
330 }else{
331 if(typeof (this.onloads[i])=="function"){
332 this.onloads[i]();
333 }
334 }
335 }
336 this.start_keepalive();
337 };
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);
343 }else{
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);
348 }
349 }
350 };
351 this.init_message_row=function(row){
352 var uid=row.uid;
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;
359 }
360 if(row.icon=row.obj.getElementsByTagName("td")[0].getElementsByTagName("img")[0]){
361 var p=this;
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);
366 };
367 }
368 if(!this.env.flagged_col&&this.env.coltypes){
369 var _3b;
370 if((_3b=find_in_array("flag",this.env.coltypes))>=0){
371 this.set_env("flagged_col",_3b+1);
372 }
373 }
374 if(this.env.flagged_col&&(row.flagged_icon=row.obj.getElementsByTagName("td")[this.env.flagged_col].getElementsByTagName("img")[0])){
375 var p=this;
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);
380 };
381 }
382 this.triggerEvent("insertrow",{uid:uid,row:row});
383 };
384 this.init_messageform=function(){
385 if(!this.gui_objects.messageform){
386 return false;
387 }
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]);
398 }
399 if(_3e.val()==""){
400 _3e.focus();
401 }else{
402 if(_3f.val()==""){
403 _3f.focus();
404 }else{
405 if(_40&&!_41){
406 _40.focus();
407 }
408 }
409 }
410 this.compose_field_hash(true);
411 this.auto_save_start();
412 };
413 this.init_address_input_events=function(obj){
414 var _43=function(e){
415 return _1.ksearch_keypress(e,this);
416 };
417 obj.bind((bw.safari||bw.ie?"keydown":"keypress"),_43);
418 obj.attr("autocomplete","off");
419 };
420 this.command=function(_45,_46,obj){
421 if(obj&&obj.blur){
422 obj.blur();
423 }
424 if(this.busy){
425 return false;
426 }
427 if(!this.commands[_45]){
428 if(this.env.framed&&parent.rcmail&&parent.rcmail.command){
429 parent.rcmail.command(_45,_46);
430 }
431 return false;
432 }
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"))){
435 return false;
436 }
437 }
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);
441 }else{
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);
445 }
446 }
447 var _49=this.triggerEvent("before"+_45,_46);
448 if(typeof _49!="undefined"){
449 if(_49===false){
450 return false;
451 }else{
452 _46=_49;
453 }
454 }
455 switch(_45){
456 case "login":
457 if(this.gui_objects.loginform){
458 this.gui_objects.loginform.submit();
459 }
460 break;
461 case "mail":
462 case "addressbook":
463 case "settings":
464 case "logout":
465 this.switch_task(_45);
466 break;
467 case "permaurl":
468 if(obj&&obj.href&&obj.target){
469 return true;
470 }else{
471 if(this.env.permaurl){
472 parent.location.href=this.env.permaurl;
473 }
474 }
475 break;
476 case "open":
477 var uid;
478 if(uid=this.get_single_uid()){
479 obj.href="?_task="+this.env.task+"&_action=show&_mbox="+urlencode(this.env.mailbox)+"&_uid="+uid;
480 return true;
481 }
482 break;
483 case "list":
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();
487 }
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");
491 }
492 }else{
493 if(this.task=="addressbook"){
494 if(this.env.search_request<0||(this.env.search_request&&_46!=this.env.source)){
495 this.reset_qsearch();
496 }
497 this.list_contacts(_46);
498 this.enable_command("add",(this.env.address_sources&&!this.env.address_sources[_46].readonly));
499 }
500 }
501 break;
502 case "load-headers":
503 this.load_headers(obj);
504 break;
505 case "sort":
506 var _4b,_4c=_46;
507 if(this.env.sort_col==_4c){
508 _4b=this.env.sort_order=="ASC"?"DESC":"ASC";
509 }else{
510 _4b="ASC";
511 }
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);
517 break;
518 case "nextpage":
519 this.list_page("next");
520 break;
521 case "lastpage":
522 this.list_page("last");
523 break;
524 case "previouspage":
525 this.list_page("prev");
526 break;
527 case "firstpage":
528 this.list_page("first");
529 break;
530 case "expunge":
531 if(this.env.messagecount){
532 this.expunge_mailbox(this.env.mailbox);
533 }
534 break;
535 case "purge":
536 case "empty-mailbox":
537 if(this.env.messagecount){
538 this.purge_mailbox(this.env.mailbox);
539 }
540 break;
541 case "show":
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);
547 }else{
548 this.show_message(uid);
549 }
550 }
551 }else{
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");
556 }
557 }
558 }
559 break;
560 case "add":
561 if(this.task=="addressbook"){
562 this.load_contact(0,"add");
563 }else{
564 if(this.task=="settings"){
565 this.identity_list.clear_selection();
566 this.load_identity(0,"add-identity");
567 }
568 }
569 break;
570 case "edit":
571 var cid;
572 if(this.task=="addressbook"&&(cid=this.get_single_cid())){
573 this.load_contact(cid,"edit");
574 }else{
575 if(this.task=="settings"&&_46){
576 this.load_identity(_46,"edit-identity");
577 }else{
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);
581 }
582 }
583 }
584 break;
585 case "save-identity":
586 case "save":
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"));
593 _4f.focus();
594 break;
595 }else{
596 if(_50.length&&_50.val()==""){
597 alert(this.get_label("nonamewarning"));
598 _50.focus();
599 break;
600 }else{
601 if(_51.length&&!rcube_check_email(_51.val())){
602 alert(this.get_label("noemailwarning"));
603 _51.focus();
604 break;
605 }
606 }
607 }
608 this.gui_objects.editform.submit();
609 }
610 break;
611 case "delete":
612 if(this.task=="mail"){
613 this.delete_messages();
614 }else{
615 if(this.task=="addressbook"){
616 this.delete_contacts();
617 }else{
618 if(this.task=="settings"){
619 this.delete_identity();
620 }
621 }
622 }
623 break;
624 case "move":
625 case "moveto":
626 if(this.task=="mail"){
627 this.move_messages(_46);
628 }else{
629 if(this.task=="addressbook"&&this.drag_active){
630 this.copy_contact(null,_46);
631 }
632 }
633 break;
634 case "mark":
635 if(_46){
636 this.mark_message(_46);
637 }
638 break;
639 case "toggle_status":
640 if(_46&&!_46._row){
641 break;
642 }
643 var uid;
644 var _52="read";
645 if(_46._row.uid){
646 uid=_46._row.uid;
647 if(this.message_list.rows[uid].deleted){
648 _52="undelete";
649 }else{
650 if(!this.message_list.rows[uid].unread){
651 _52="unread";
652 }
653 }
654 }
655 this.mark_message(_52,uid);
656 break;
657 case "toggle_flag":
658 if(_46&&!_46._row){
659 break;
660 }
661 var uid;
662 var _52="flagged";
663 if(_46._row.uid){
664 uid=_46._row.uid;
665 if(this.message_list.rows[uid].flagged){
666 _52="unflagged";
667 }
668 }
669 this.mark_message(_52,uid);
670 break;
671 case "always-load":
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");
676 },300);
677 break;
678 }
679 case "load-images":
680 if(this.env.uid){
681 this.show_message(this.env.uid,true,this.env.action=="preview");
682 }
683 break;
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"){
688 _53+="&_safe=1";
689 }
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();
694 },10);
695 break;
696 }
697 }
698 this.goto_url("get",_53+"&_download=1",false);
699 break;
700 case "select-all":
701 if(_46=="invert"){
702 this.message_list.invert_selection();
703 }else{
704 this.message_list.select_all(_46);
705 }
706 break;
707 case "select-none":
708 this.message_list.clear_selection();
709 break;
710 case "nextmessage":
711 if(this.env.next_uid){
712 this.show_message(this.env.next_uid,false,this.env.action=="preview");
713 }
714 break;
715 case "lastmessage":
716 if(this.env.last_uid){
717 this.show_message(this.env.last_uid);
718 }
719 break;
720 case "previousmessage":
721 if(this.env.prev_uid){
722 this.show_message(this.env.prev_uid,false,this.env.action=="preview");
723 }
724 break;
725 case "firstmessage":
726 if(this.env.first_uid){
727 this.show_message(this.env.first_uid);
728 }
729 break;
730 case "checkmail":
731 this.check_for_recent(true);
732 break;
733 case "compose":
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){
738 var uid;
739 if(uid=this.get_single_uid()){
740 url+="&_draft_uid="+uid;
741 }
742 }else{
743 if(_46){
744 url+="&_to="+urlencode(_46);
745 }
746 }
747 }else{
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));
752 break;
753 }
754 var _54=new Array();
755 if(_46){
756 _54[_54.length]=_46;
757 }else{
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];
762 }
763 }
764 }
765 if(_54.length){
766 this.http_request("mailto","_cid="+urlencode(_54.join(","))+"&_source="+urlencode(this.env.source),true);
767 }
768 break;
769 }
770 }
771 url=url.replace(/&_framed=1/,"");
772 this.redirect(url);
773 break;
774 case "spellcheck":
775 if(window.tinyMCE&&tinyMCE.get(this.env.composebody)){
776 tinyMCE.execCommand("mceSpellCheck",true);
777 }else{
778 if(this.env.spellcheck&&this.env.spellcheck.spellCheck&&this.spellcheck_ready){
779 this.env.spellcheck.spellCheck();
780 this.set_spellcheck_state("checking");
781 }
782 }
783 break;
784 case "savedraft":
785 self.clearTimeout(this.save_timer);
786 if(!this.gui_objects.messageform){
787 break;
788 }
789 if(!this.env.drafts_mailbox||this.cmp_hash==this.compose_field_hash()){
790 break;
791 }
792 this.set_busy(true,"savingmessage");
793 var _57=this.gui_objects.messageform;
794 _57.target="savetarget";
795 _57._draft.value="1";
796 _57.submit();
797 break;
798 case "send":
799 if(!this.gui_objects.messageform){
800 break;
801 }
802 if(!this.check_compose_input()){
803 break;
804 }
805 self.clearTimeout(this.save_timer);
806 this.set_busy(true,"sendingmessage");
807 var _57=this.gui_objects.messageform;
808 _57.target="savetarget";
809 _57._draft.value="";
810 _57.submit();
811 clearTimeout(this.request_timer);
812 break;
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);
818 break;
819 case "remove-attachment":
820 this.remove_attachment(_46);
821 break;
822 case "reply-all":
823 case "reply":
824 var uid;
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);
827 }
828 break;
829 case "forward":
830 var uid;
831 if(uid=this.get_single_uid()){
832 this.goto_url("compose","_forward_uid="+uid+"&_mbox="+urlencode(this.env.mailbox),true);
833 }
834 break;
835 case "print":
836 var uid;
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":""));
839 if(this.printwin){
840 window.setTimeout(function(){
841 _1.printwin.focus();
842 },20);
843 if(this.env.action!="show"){
844 this.mark_message("read",uid);
845 }
846 }
847 }
848 break;
849 case "viewsource":
850 var 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));
853 if(this.sourcewin){
854 window.setTimeout(function(){
855 _1.sourcewin.focus();
856 },20);
857 }
858 }
859 break;
860 case "download":
861 var uid;
862 if(uid=this.get_single_uid()){
863 this.goto_url("viewsource","&_uid="+uid+"&_mbox="+urlencode(this.env.mailbox)+"&_save=1");
864 }
865 break;
866 case "add-contact":
867 this.add_contact(_46);
868 break;
869 case "search":
870 if(!_46&&this.gui_objects.qsearchbox){
871 _46=this.gui_objects.qsearchbox.value;
872 }
873 if(_46){
874 this.qsearch(_46);
875 break;
876 }
877 case "reset-search":
878 var s=this.env.search_request;
879 this.reset_qsearch();
880 if(s&&this.env.mailbox){
881 this.list_mailbox(this.env.mailbox);
882 }else{
883 if(s&&this.task=="addressbook"){
884 this.list_contacts(this.env.source);
885 }
886 }
887 break;
888 case "import":
889 if(this.env.action=="import"&&this.gui_objects.importform){
890 var _59=document.getElementById("rcmimportfile");
891 if(_59&&!_59.value){
892 alert(this.get_label("selectimportfile"));
893 break;
894 }
895 this.gui_objects.importform.submit();
896 this.set_busy(true,"importwait");
897 this.lock_form(this.gui_objects.importform,true);
898 }else{
899 this.goto_url("import");
900 }
901 break;
902 case "export":
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;
907 }
908 this.goto_url("export",_5a);
909 }
910 break;
911 case "collapse-folder":
912 if(_46){
913 this.collapse_folder(_46);
914 }
915 break;
916 case "preferences":
917 this.goto_url("");
918 break;
919 case "identities":
920 this.goto_url("identities");
921 break;
922 case "delete-identity":
923 this.delete_identity();
924 case "folders":
925 this.goto_url("folders");
926 break;
927 case "subscribe":
928 this.subscribe_folder(_46);
929 break;
930 case "unsubscribe":
931 this.unsubscribe_folder(_46);
932 break;
933 case "create-folder":
934 this.create_folder(_46);
935 break;
936 case "rename-folder":
937 this.rename_folder(_46);
938 break;
939 case "delete-folder":
940 this.delete_folder(_46);
941 break;
942 }
943 this.triggerEvent("after"+_45,_46);
944 return obj?false:true;
945 };
946 this.enable_command=function(){
947 var _5b=arguments;
948 if(!_5b.length){
949 return -1;
950 }
951 var _5c;
952 var _5d=_5b[_5b.length-1];
953 for(var n=0;n<_5b.length-1;n++){
954 _5c=_5b[n];
955 this.commands[_5c]=_5d;
956 this.set_button(_5c,(_5d?"act":"pas"));
957 }
958 return true;
959 };
960 this.set_busy=function(a,_60){
961 if(a&&_60){
962 var msg=this.get_label(_60);
963 if(msg==_60){
964 msg="Loading...";
965 }
966 this.display_message(msg,"loading",true);
967 }else{
968 if(!a){
969 this.hide_message();
970 }
971 }
972 this.busy=a;
973 if(this.gui_objects.editform){
974 this.lock_form(this.gui_objects.editform,a);
975 }
976 if(this.request_timer){
977 clearTimeout(this.request_timer);
978 }
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);
983 }
984 };
985 this.get_label=function(_62,_63){
986 if(_63&&this.labels[_63+"."+_62]){
987 return this.labels[_63+"."+_62];
988 }else{
989 if(this.labels[_62]){
990 return this.labels[_62];
991 }else{
992 return _62;
993 }
994 }
995 };
996 this.gettext=this.get_label;
997 this.switch_task=function(_64){
998 if(this.task===_64&&_64!="mail"){
999 return;
1000 }
1001 var url=this.get_task_url(_64);
1002 if(_64=="mail"){
1003 url+="&_mbox=INBOX";
1004 }
1005 this.redirect(url);
1006 };
1007 this.get_task_url=function(_66,url){
1008 if(!url){
1009 url=this.env.comm_path;
1010 }
1011 return url.replace(/_task=[a-z]+/,"_task="+_66);
1012 };
1013 this.request_timed_out=function(){
1014 this.set_busy(false);
1015 this.display_message("Request timed out!","error");
1016 };
1017 this.reload=function(_68){
1018 if(this.env.framed&&parent.rcmail){
1019 parent.rcmail.reload(_68);
1020 }else{
1021 if(_68){
1022 window.setTimeout(function(){
1023 rcmail.reload();
1024 },_68);
1025 }else{
1026 if(window.location){
1027 location.href=this.env.comm_path;
1028 }
1029 }
1030 }
1031 };
1032 this.doc_mouse_up=function(e){
1033 var _6a,_6b,li;
1034 if(this.message_list){
1035 if(!rcube_mouse_is_over(e,this.message_list.list)){
1036 this.message_list.blur();
1037 }
1038 _6b=this.message_list;
1039 _6a=this.env.mailboxes;
1040 }else{
1041 if(this.contact_list){
1042 if(!rcube_mouse_is_over(e,this.contact_list.list)){
1043 this.contact_list.blur();
1044 }
1045 _6b=this.contact_list;
1046 _6a=this.env.address_sources;
1047 }else{
1048 if(this.ksearch_value){
1049 this.ksearch_blur();
1050 }
1051 }
1052 }
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();
1058 }
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);
1063 }
1064 }
1065 this.buttons_sel={};
1066 }
1067 };
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);
1073 }
1074 if(this.gui_objects.folderlist&&_6f){
1075 this.initialBodyScrollTop=bw.ie?0:window.pageYOffset;
1076 this.initialListScrollTop=this.gui_objects.folderlist.parentNode.scrollTop;
1077 var li,pos,_6e,_72;
1078 _6e=$(this.gui_objects.folderlist);
1079 pos=_6e.offset();
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();
1082 for(var k in _6f){
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};
1087 }
1088 }
1089 }
1090 }
1091 };
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;
1099 }
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");
1104 }
1105 }
1106 }
1107 };
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;
1112 var _79=-_78-_77;
1113 var li,div,pos,_7d;
1114 _7d=rcube_event.get_mouse_pos(e);
1115 pos=this.env.folderlist_coords;
1116 _7d.y+=_79;
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;
1122 }
1123 return;
1124 }
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);
1133 }
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);
1138 },1000);
1139 }else{
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;
1144 }
1145 }
1146 $(li).addClass("droptarget");
1147 this.env.last_folder_target=k;
1148 this.env.folder_coords[k].on=1;
1149 }else{
1150 if(pos.on){
1151 $(this.get_folder_li(k)).removeClass("droptarget");
1152 this.env.folder_coords[k].on=0;
1153 }
1154 }
1155 }
1156 }
1157 };
1158 this.collapse_folder=function(id){
1159 var div;
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")){
1163 ul.show();
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,""));
1167 }else{
1168 ul.hide();
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);
1173 }
1174 }
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="";
1178 }
1179 this.http_post("save-pref","_name=collapsed_folders&_value="+urlencode(this.env.collapsed_folders));
1180 this.set_unread_count_display(id,false);
1181 }
1182 };
1183 this.click_on_list=function(e){
1184 if(this.gui_objects.qsearchbox){
1185 this.gui_objects.qsearchbox.blur();
1186 }
1187 if(this.message_list){
1188 this.message_list.focus();
1189 }else{
1190 if(this.contact_list){
1191 this.contact_list.focus();
1192 }
1193 }
1194 return rcube_event.get_button(e)==2?true:rcube_event.cancel(e);
1195 };
1196 this.msglist_select=function(_84){
1197 if(this.preview_timer){
1198 clearTimeout(this.preview_timer);
1199 }
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));
1205 }else{
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));
1208 }
1209 if(_85&&this.env.contentframe&&!_84.multi_selecting){
1210 this.preview_timer=window.setTimeout(function(){
1211 _1.msglist_get_preview();
1212 },200);
1213 }else{
1214 if(this.env.contentframe){
1215 this.show_contentframe(false);
1216 }
1217 }
1218 };
1219 this.msglist_dbl_click=function(_86){
1220 if(this.preview_timer){
1221 clearTimeout(this.preview_timer);
1222 }
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);
1226 }else{
1227 if(uid){
1228 this.show_message(uid,false,false);
1229 }
1230 }
1231 };
1232 this.msglist_keypress=function(_88){
1233 if(_88.key_pressed==_88.ENTER_KEY){
1234 this.command("show");
1235 }else{
1236 if(_88.key_pressed==_88.DELETE_KEY){
1237 this.command("delete");
1238 }else{
1239 if(_88.key_pressed==_88.BACKSPACE_KEY){
1240 this.command("delete");
1241 }else{
1242 _88.shiftkey=false;
1243 }
1244 }
1245 }
1246 };
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);
1251 }else{
1252 if(this.env.contentframe){
1253 this.show_contentframe(false);
1254 }
1255 }
1256 };
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);
1260 }else{
1261 if(this.task=="addressbook"){
1262 return (id!=this.env.source&&this.env.address_sources[id]&&!this.env.address_sources[id].readonly);
1263 }else{
1264 if(this.task=="settings"){
1265 return (id!=this.env.folder);
1266 }
1267 }
1268 }
1269 };
1270 this.show_message=function(id,_8c,_8d){
1271 if(!id){
1272 return;
1273 }
1274 var _8e="";
1275 var _8f=_8d?"preview":"show";
1276 var _90=window;
1277 if(_8d&&this.env.contentframe&&window.frames&&window.frames[this.env.contentframe]){
1278 _90=window.frames[this.env.contentframe];
1279 _8e="&_framed=1";
1280 }
1281 if(_8c){
1282 _8e="&_safe=1";
1283 }
1284 if(this.env.search_request){
1285 _8e+="&_search="+this.env.search_request;
1286 }
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);
1290 }else{
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");
1298 }
1299 }
1300 }
1301 };
1302 this.show_contentframe=function(_92){
1303 var frm;
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;
1308 }
1309 }else{
1310 if(!bw.safari&&!bw.konq){
1311 frm[_92?"show":"hide"]();
1312 }
1313 }
1314 }
1315 if(!_92&&this.busy){
1316 this.set_busy(false);
1317 }
1318 };
1319 this.list_page=function(_94){
1320 if(_94=="next"){
1321 _94=this.env.current_page+1;
1322 }
1323 if(_94=="last"){
1324 _94=this.env.pagecount;
1325 }
1326 if(_94=="prev"&&this.env.current_page>1){
1327 _94=this.env.current_page-1;
1328 }
1329 if(_94=="first"&&this.env.current_page>1){
1330 _94=1;
1331 }
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);
1336 }else{
1337 if(this.task=="addressbook"){
1338 this.list_contacts(this.env.source,_94);
1339 }
1340 }
1341 }
1342 };
1343 this.filter_mailbox=function(_95){
1344 var _96;
1345 if(this.gui_objects.qsearchbox){
1346 _96=this.gui_objects.qsearchbox.value;
1347 }
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);
1352 };
1353 this.list_mailbox=function(_97,_98,_99){
1354 var _9a="";
1355 var _9b=window;
1356 if(!_97){
1357 _97=this.env.mailbox;
1358 }
1359 if(_99){
1360 _9a+="&_sort="+_99;
1361 }
1362 if(this.env.search_request){
1363 _9a+="&_search="+this.env.search_request;
1364 }
1365 if(!_98&&this.env.mailbox!=_97){
1366 _98=1;
1367 this.env.current_page=_98;
1368 this.show_contentframe(false);
1369 }
1370 if(_97!=this.env.mailbox||(_97==this.env.mailbox&&!_98&&!_99)){
1371 _9a+="&_refresh=1";
1372 }
1373 this.last_selected=0;
1374 if(this.message_list){
1375 this.message_list.clear_selection();
1376 }
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);
1381 return;
1382 }
1383 if(this.env.contentframe&&window.frames&&window.frames[this.env.contentframe]){
1384 _9b=window.frames[this.env.contentframe];
1385 _9a+="&_framed=1";
1386 }
1387 if(_97){
1388 this.set_busy(true,"loading");
1389 _9b.location.href=this.env.comm_path+"&_mbox="+urlencode(_97)+(_98?"&_page="+_98:"")+_9a;
1390 }
1391 };
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);
1397 };
1398 this.expunge_mailbox=function(_a0){
1399 var _a1=false;
1400 var _a2="";
1401 if(_a0==this.env.mailbox){
1402 _a1=true;
1403 this.set_busy(true,"loading");
1404 _a2="&_reload=1";
1405 }
1406 var url="_mbox="+urlencode(_a0);
1407 this.http_post("expunge",url+_a2,_a1);
1408 };
1409 this.purge_mailbox=function(_a4){
1410 var _a5=false;
1411 var _a6="";
1412 if(!confirm(this.get_label("purgefolderconfirm"))){
1413 return false;
1414 }
1415 if(_a4==this.env.mailbox){
1416 _a5=true;
1417 this.set_busy(true,"loading");
1418 _a6="&_reload=1";
1419 }
1420 var url="_mbox="+urlencode(_a4);
1421 this.http_post("purge",url+_a6,_a5);
1422 return true;
1423 };
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))));
1426 };
1427 this.set_message_icon=function(uid){
1428 var _a9;
1429 var _aa=this.message_list.rows;
1430 if(!_aa[uid]){
1431 return false;
1432 }
1433 if(_aa[uid].deleted&&this.env.deletedicon){
1434 _a9=this.env.deletedicon;
1435 }else{
1436 if(_aa[uid].replied&&this.env.repliedicon){
1437 if(_aa[uid].forwarded&&this.env.forwardedrepliedicon){
1438 _a9=this.env.forwardedrepliedicon;
1439 }else{
1440 _a9=this.env.repliedicon;
1441 }
1442 }else{
1443 if(_aa[uid].forwarded&&this.env.forwardedicon){
1444 _a9=this.env.forwardedicon;
1445 }else{
1446 if(_aa[uid].unread&&this.env.unreadicon){
1447 _a9=this.env.unreadicon;
1448 }else{
1449 if(this.env.messageicon){
1450 _a9=this.env.messageicon;
1451 }
1452 }
1453 }
1454 }
1455 }
1456 if(_a9&&_aa[uid].icon){
1457 _aa[uid].icon.src=_a9;
1458 }
1459 _a9="";
1460 if(_aa[uid].flagged&&this.env.flaggedicon){
1461 _a9=this.env.flaggedicon;
1462 }else{
1463 if(!_aa[uid].flagged&&this.env.unflaggedicon){
1464 _a9=this.env.unflaggedicon;
1465 }
1466 }
1467 if(_aa[uid].flagged_icon&&_a9){
1468 _aa[uid].flagged_icon.src=_a9;
1469 }
1470 };
1471 this.set_message_status=function(uid,_ac,_ad){
1472 var _ae=this.message_list.rows;
1473 if(!_ae[uid]){
1474 return false;
1475 }
1476 if(_ac=="unread"){
1477 _ae[uid].unread=_ad;
1478 }else{
1479 if(_ac=="deleted"){
1480 _ae[uid].deleted=_ad;
1481 }else{
1482 if(_ac=="replied"){
1483 _ae[uid].replied=_ad;
1484 }else{
1485 if(_ac=="forwarded"){
1486 _ae[uid].forwarded=_ad;
1487 }else{
1488 if(_ac=="flagged"){
1489 _ae[uid].flagged=_ad;
1490 }
1491 }
1492 }
1493 }
1494 }
1495 this.env.messages[uid]=_ae[uid];
1496 };
1497 this.set_message=function(uid,_b0,_b1){
1498 var _b2=this.message_list.rows;
1499 if(!_b2[uid]){
1500 return false;
1501 }
1502 if(_b0){
1503 this.set_message_status(uid,_b0,_b1);
1504 }
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");
1509 }else{
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");
1513 }
1514 }
1515 if(_b2[uid].deleted&&_b2[uid].classname.indexOf("deleted")<0){
1516 _b2[uid].classname+=" deleted";
1517 _b3.addClass("deleted");
1518 }else{
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");
1522 }
1523 }
1524 if(_b2[uid].flagged&&_b2[uid].classname.indexOf("flagged")<0){
1525 _b2[uid].classname+=" flagged";
1526 _b3.addClass("flagged");
1527 }else{
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");
1531 }
1532 }
1533 this.set_message_icon(uid);
1534 };
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))){
1537 return;
1538 }
1539 var _b5=false;
1540 var _b6="&_target_mbox="+urlencode(_b4)+"&_from="+(this.env.action?this.env.action:"");
1541 if(this.env.action=="show"){
1542 _b5=true;
1543 this.set_busy(true,"movingmessage");
1544 }else{
1545 this.show_contentframe(false);
1546 }
1547 this.enable_command("reply","reply-all","forward","delete","mark","print","open","edit","viewsource","download",false);
1548 this._with_selected_messages("moveto",_b5,_b6);
1549 };
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){
1553 return;
1554 }
1555 if(this.env.flag_for_deletion){
1556 this.mark_message("delete");
1557 }else{
1558 if(!this.env.trash_mailbox||String(this.env.mailbox).toLowerCase()==String(this.env.trash_mailbox).toLowerCase()){
1559 this.permanently_remove_messages();
1560 }else{
1561 if(this.message_list&&this.message_list.shiftkey){
1562 if(confirm(this.get_label("deletemessagesconfirm"))){
1563 this.permanently_remove_messages();
1564 }
1565 }else{
1566 this.move_messages(this.env.trash_mailbox);
1567 }
1568 }
1569 }
1570 };
1571 this.permanently_remove_messages=function(){
1572 if(!this.env.uid&&(!this.message_list||!this.message_list.get_selection().length)){
1573 return;
1574 }
1575 this.show_contentframe(false);
1576 this._with_selected_messages("delete",false,"&_from="+(this.env.action?this.env.action:""));
1577 };
1578 this._with_selected_messages=function(_b8,_b9,_ba,_bb){
1579 var _bc=new Array();
1580 if(this.env.uid){
1581 _bc[0]=this.env.uid;
1582 }else{
1583 var _bd=this.message_list.get_selection();
1584 var _be=this.message_list.rows;
1585 var id;
1586 for(var n=0;n<_bd.length;n++){
1587 id=_bd[n];
1588 _bc[_bc.length]=id;
1589 this.message_list.remove_row(id,(this.env.display_next&&n==_bd.length-1));
1590 }
1591 if(!this.env.display_next){
1592 this.message_list.clear_selection();
1593 }
1594 }
1595 if(this.env.search_request){
1596 _ba+="&_search="+this.env.search_request;
1597 }
1598 if(this.env.display_next&&this.env.next_uid){
1599 _ba+="&_next_uid="+this.env.next_uid;
1600 }
1601 this.http_post(_b8,"_uid="+_bc.join(",")+"&_mbox="+urlencode(this.env.mailbox)+_ba,_b9);
1602 };
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();
1607 if(uid){
1608 _c3[0]=uid;
1609 }else{
1610 if(this.env.uid){
1611 _c3[0]=this.env.uid;
1612 }else{
1613 if(this.message_list){
1614 for(var n=0;n<_c5.length;n++){
1615 _c3[_c3.length]=_c5[n];
1616 }
1617 }
1618 }
1619 }
1620 if(!this.message_list){
1621 _c4=_c3;
1622 }else{
1623 for(var id,n=0;n<_c3.length;n++){
1624 id=_c3[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)){
1626 _c4[_c4.length]=id;
1627 }
1628 }
1629 }
1630 if(!_c4.length){
1631 return;
1632 }
1633 switch(_c1){
1634 case "read":
1635 case "unread":
1636 this.toggle_read_status(_c1,_c4);
1637 break;
1638 case "delete":
1639 case "undelete":
1640 this.toggle_delete_status(_c4);
1641 break;
1642 case "flagged":
1643 case "unflagged":
1644 this.toggle_flagged_status(_c1,_c3);
1645 break;
1646 }
1647 };
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));
1651 }
1652 this.http_post("mark","_uid="+_c9.join(",")+"&_flag="+_c8);
1653 };
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));
1657 }
1658 this.http_post("mark","_uid="+_cc.join(",")+"&_flag="+_cb);
1659 };
1660 this.toggle_delete_status=function(_ce){
1661 var _cf=this.message_list?this.message_list.rows:new Array();
1662 if(_ce.length==1){
1663 if(!_cf.length||(_cf[_ce[0]]&&!_cf[_ce[0]].deleted)){
1664 this.flag_as_deleted(_ce);
1665 }else{
1666 this.flag_as_undeleted(_ce);
1667 }
1668 return true;
1669 }
1670 var _d0=true;
1671 for(var i=0;i<_ce.length;i++){
1672 uid=_ce[i];
1673 if(_cf[uid]){
1674 if(!_cf[uid].deleted){
1675 _d0=false;
1676 break;
1677 }
1678 }
1679 }
1680 if(_d0){
1681 this.flag_as_undeleted(_ce);
1682 }else{
1683 this.flag_as_deleted(_ce);
1684 }
1685 return true;
1686 };
1687 this.flag_as_undeleted=function(_d2){
1688 for(var i=0;i<_d2.length;i++){
1689 this.set_message(_d2[i],"deleted",false);
1690 }
1691 this.http_post("mark","_uid="+_d2.join(",")+"&_flag=undelete");
1692 return true;
1693 };
1694 this.flag_as_deleted=function(_d4){
1695 var _d5="";
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++){
1699 uid=_d4[i];
1700 if(_d7[uid]){
1701 if(_d7[uid].unread){
1702 _d6[_d6.length]=uid;
1703 }
1704 if(this.env.skip_deleted){
1705 this.message_list.remove_row(uid,(this.env.display_next&&i==this.message_list.selection.length-1));
1706 }else{
1707 this.set_message(uid,"deleted",true);
1708 }
1709 }
1710 }
1711 if(this.env.skip_deleted&&!this.env.display_next&&this.message_list){
1712 this.message_list.clear_selection();
1713 }
1714 _d5="&_from="+(this.env.action?this.env.action:"");
1715 if(_d6.length){
1716 _d5+="&_ruid="+_d6.join(",");
1717 }
1718 if(this.env.skip_deleted){
1719 if(this.env.search_request){
1720 _d5+="&_search="+this.env.search_request;
1721 }
1722 if(this.env.display_next&&this.env.next_uid){
1723 _d5+="&_next_uid="+this.env.next_uid;
1724 }
1725 }
1726 this.http_post("mark","_uid="+_d4.join(",")+"&_flag=delete"+_d5);
1727 return true;
1728 };
1729 this.flag_deleted_as_read=function(_d9){
1730 var _da;
1731 var _db=this.message_list?this.message_list.rows:new Array();
1732 var str=String(_d9);
1733 var _dd=new Array();
1734 _dd=str.split(",");
1735 for(var uid,i=0;i<_dd.length;i++){
1736 uid=_dd[i];
1737 if(_db[uid]){
1738 this.set_message(uid,"unread",false);
1739 }
1740 }
1741 };
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()){
1746 _e2.focus();
1747 return rcube_event.cancel(e);
1748 }
1749 return true;
1750 };
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"));
1760 _e6.focus();
1761 return false;
1762 }
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"));
1766 _e3.focus();
1767 return false;
1768 }
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"));
1772 return false;
1773 }
1774 }
1775 if(_e7.val()==""){
1776 var _eb=prompt(this.get_label("nosubjectwarning"),this.get_label("nosubject"));
1777 if(!_eb&&_eb!==""){
1778 _e7.focus();
1779 return false;
1780 }else{
1781 _e7.val((_eb?_eb:this.get_label("nosubject")));
1782 }
1783 }
1784 if((!window.tinyMCE||!tinyMCE.get(this.env.composebody))&&_e8.val()==""&&!confirm(this.get_label("nobodywarning"))){
1785 _e8.focus();
1786 return false;
1787 }else{
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();
1790 return false;
1791 }
1792 }
1793 this.stop_spellchecking();
1794 if(window.tinyMCE&&tinyMCE.get(this.env.composebody)){
1795 tinyMCE.triggerSave();
1796 }
1797 return true;
1798 };
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");
1803 }
1804 };
1805 this.display_spellcheck_controls=function(vis){
1806 if(this.env.spellcheck){
1807 if(!vis){
1808 this.stop_spellchecking();
1809 }
1810 $(this.env.spellcheck.spell_container).css("visibility",vis?"visible":"hidden");
1811 }
1812 };
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);
1816 };
1817 this.set_draft_id=function(id){
1818 $("input[name='_draft_saveid']").val(id);
1819 };
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);
1825 }
1826 this.busy=false;
1827 };
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();
1833 var str="";
1834 if(_f0){
1835 str+=_f0+":";
1836 }
1837 if(_f1){
1838 str+=_f1+":";
1839 }
1840 if(_f2){
1841 str+=_f2+":";
1842 }
1843 if(_f3){
1844 str+=_f3+":";
1845 }
1846 var _f5=tinyMCE.get(this.env.composebody);
1847 if(_f5){
1848 str+=_f5.getContent();
1849 }else{
1850 str+=$("[name='_message']").val();
1851 }
1852 if(this.env.attachments){
1853 for(var _f6 in this.env.attachments){
1854 str+=_f6;
1855 }
1856 }
1857 if(_ef){
1858 this.cmp_hash=str;
1859 }
1860 return str;
1861 };
1862 this.change_identity=function(obj){
1863 if(!obj||!obj.options){
1864 return false;
1865 }
1866 var id=obj.options[obj.selectedIndex].value;
1867 var _f9=$("[name='_message']");
1868 var _fa=_f9.val();
1869 var _fb=($("input[name='_is_html']").val()=="1");
1870 var sig,p,len;
1871 if(!this.env.identity){
1872 this.env.identity=id;
1873 }
1874 if(!_fb){
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"];
1878 }else{
1879 sig=this.env.signatures[this.env.identity]["text"];
1880 }
1881 if(sig.indexOf("-- ")!=0){
1882 sig="-- \n"+sig;
1883 }
1884 p=_fa.lastIndexOf(sig);
1885 if(p>=0){
1886 _fa=_fa.substring(0,p-1)+_fa.substring(p+sig.length,_fa.length);
1887 }
1888 }
1889 _fa=_fa.replace(/[\r\n]+$/,"");
1890 len=_fa.length;
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"];
1895 }
1896 if(sig.indexOf("-- ")!=0){
1897 sig="-- \n"+sig;
1898 }
1899 _fa+="\n\n"+sig;
1900 if(len){
1901 len+=1;
1902 }
1903 }
1904 }else{
1905 var _ff=tinyMCE.get(this.env.composebody);
1906 if(this.env.signatures){
1907 var _100=_ff.dom.get("_rc_sig");
1908 var _101="";
1909 var _102=true;
1910 if(!_100){
1911 if(bw.ie){
1912 _ff.getBody().appendChild(_ff.getDoc().createElement("br"));
1913 }
1914 _100=_ff.getDoc().createElement("div");
1915 _100.setAttribute("id","_rc_sig");
1916 _ff.getBody().appendChild(_100);
1917 }
1918 if(this.env.signatures[id]){
1919 _101=this.env.signatures[id]["text"];
1920 _102=this.env.signatures[id]["is_html"];
1921 if(_101){
1922 if(_102&&this.env.signatures[id]["plain_text"].indexOf("-- ")!=0){
1923 _101="<p>-- </p>"+_101;
1924 }else{
1925 if(!_102&&_101.indexOf("-- ")!=0){
1926 _101="-- \n"+_101;
1927 }
1928 }
1929 }
1930 }
1931 if(_102){
1932 _100.innerHTML=_101;
1933 }else{
1934 _100.innerHTML="<pre>"+_101+"</pre>";
1935 }
1936 }
1937 }
1938 _f9.val(_fa);
1939 if(!_fb){
1940 this.set_caret_pos(_f9.get(0),len);
1941 }
1942 this.env.identity=id;
1943 return true;
1944 };
1945 this.show_attachment_form=function(a){
1946 if(!this.gui_objects.uploadbox){
1947 return false;
1948 }
1949 var elm,list;
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";
1955 }
1956 elm.style.visibility=a?"visible":"hidden";
1957 }
1958 try{
1959 if(!a&&this.gui_objects.attachmentform!=this.gui_objects.messageform){
1960 this.gui_objects.attachmentform.reset();
1961 }
1962 }
1963 catch(e){
1964 }
1965 return true;
1966 };
1967 this.upload_file=function(form){
1968 if(!form){
1969 return false;
1970 }
1971 var send=false;
1972 for(var n=0;n<form.elements.length;n++){
1973 if(form.elements[n].type=="file"&&form.elements[n].value){
1974 send=true;
1975 break;
1976 }
1977 }
1978 if(send){
1979 var ts=new Date().getTime();
1980 var _10b="rcmupload"+ts;
1981 if(document.all){
1982 var html="<iframe name=\""+_10b+"\" src=\"program/blank.gif\" style=\"width:0;height:0;visibility:hidden;\"></iframe>";
1983 document.body.insertAdjacentHTML("BeforeEnd",html);
1984 }else{
1985 var _10d=document.createElement("iframe");
1986 _10d.name=_10b;
1987 _10d.style.border="none";
1988 _10d.style.width=0;
1989 _10d.style.height=0;
1990 _10d.style.visibility="hidden";
1991 document.body.appendChild(_10d);
1992 }
1993 var fr=document.getElementsByName(_10b)[0];
1994 $(fr).bind("load",{ts:ts},function(e){
1995 var _110="";
1996 try{
1997 if(this.contentDocument){
1998 var d=this.contentDocument;
1999 }else{
2000 if(this.contentWindow){
2001 var d=this.contentWindow.document;
2002 }
2003 }
2004 _110=d.childNodes[0].innerHTML;
2005 }
2006 catch(e){
2007 }
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);
2011 }
2012 if(bw.opera){
2013 rcmail.env.uploadframe=e.data.ts;
2014 }
2015 });
2016 form.target=_10b;
2017 form.action=this.env.comm_path+"&_action=upload&_uploadid="+ts;
2018 form.setAttribute("enctype","multipart/form-data");
2019 form.submit();
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;
2024 }
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;
2027 }
2028 this.add2attachment_list(ts,{name:"",html:_112,complete:false});
2029 }
2030 this.gui_objects.attachmentform=form;
2031 return true;
2032 };
2033 this.add2attachment_list=function(name,att,_115){
2034 if(!this.gui_objects.attachmentlist){
2035 return false;
2036 }
2037 var li=$("<li>").attr("id",name).html(att.html);
2038 var _117;
2039 if(_115&&(_117=document.getElementById(_115))){
2040 li.replaceAll(_117);
2041 }else{
2042 li.appendTo(this.gui_objects.attachmentlist);
2043 }
2044 if(_115&&this.env.attachments[_115]){
2045 delete this.env.attachments[_115];
2046 }
2047 this.env.attachments[name]=att;
2048 return true;
2049 };
2050 this.remove_from_attachment_list=function(name){
2051 if(this.env.attachments[name]){
2052 delete this.env.attachments[name];
2053 }
2054 if(!this.gui_objects.attachmentlist){
2055 return false;
2056 }
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]);
2061 }
2062 }
2063 };
2064 this.remove_attachment=function(name){
2065 if(name&&this.env.attachments[name]){
2066 this.http_post("remove-attachment","_file="+urlencode(name));
2067 }
2068 return true;
2069 };
2070 this.cancel_attachment_upload=function(name,_11c){
2071 if(!name||!_11c){
2072 return false;
2073 }
2074 this.remove_from_attachment_list(name);
2075 $("iframe[name='"+_11c+"']").remove();
2076 return false;
2077 };
2078 this.add_contact=function(_11d){
2079 if(_11d){
2080 this.http_post("addcontact","_address="+_11d);
2081 }
2082 return true;
2083 };
2084 this.qsearch=function(_11e){
2085 if(_11e!=""){
2086 var _11f="";
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){
2092 _120.push(n);
2093 }
2094 _11f+="&_headers="+_120.join(",");
2095 }
2096 }else{
2097 if(this.contact_list){
2098 this.contact_list.clear(true);
2099 this.show_contentframe(false);
2100 }
2101 }
2102 if(this.gui_objects.search_filter){
2103 _11f+="&_filter="+this.gui_objects.search_filter.value;
2104 }
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);
2108 }
2109 return true;
2110 };
2111 this.reset_qsearch=function(){
2112 if(this.gui_objects.qsearchbox){
2113 this.gui_objects.qsearchbox.value="";
2114 }
2115 this.env.search_request=null;
2116 return true;
2117 };
2118 this.sent_successfully=function(type,msg){
2119 this.list_mailbox();
2120 this.display_message(msg,type,true);
2121 };
2122 this.ksearch_keypress=function(e,obj){
2123 if(this.ksearch_timer){
2124 clearTimeout(this.ksearch_timer);
2125 }
2126 var _126;
2127 var key=rcube_event.get_keycode(e);
2128 var mod=rcube_event.get_modifier(e);
2129 switch(key){
2130 case 38:
2131 case 40:
2132 if(!this.ksearch_pane){
2133 break;
2134 }
2135 var dir=key==38?1:0;
2136 _126=document.getElementById("rcmksearchSelected");
2137 if(!_126){
2138 _126=this.ksearch_pane.__ul.firstChild;
2139 }
2140 if(_126){
2141 this.ksearch_select(dir?_126.previousSibling:_126.nextSibling);
2142 }
2143 return rcube_event.cancel(e);
2144 case 9:
2145 if(mod==SHIFT_KEY){
2146 break;
2147 }
2148 case 13:
2149 if(this.ksearch_selected===null||!this.ksearch_input||!this.ksearch_value){
2150 break;
2151 }
2152 this.insert_recipient(this.ksearch_selected);
2153 this.ksearch_hide();
2154 return rcube_event.cancel(e);
2155 case 27:
2156 this.ksearch_hide();
2157 break;
2158 case 37:
2159 case 39:
2160 if(mod!=SHIFT_KEY){
2161 return;
2162 }
2163 }
2164 this.ksearch_timer=window.setTimeout(function(){
2165 _1.ksearch_get_results();
2166 },200);
2167 this.ksearch_input=obj;
2168 return true;
2169 };
2170 this.ksearch_select=function(node){
2171 var _12b=$("#rcmksearchSelected");
2172 if(_12b[0]&&node){
2173 _12b.removeAttr("id").removeClass("selected");
2174 }
2175 if(node){
2176 $(node).attr("id","rcmksearchSelected").addClass("selected");
2177 this.ksearch_selected=node._rcm_id;
2178 }
2179 };
2180 this.insert_recipient=function(id){
2181 if(!this.env.contacts[id]||!this.ksearch_input){
2182 return;
2183 }
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;
2191 cpos=p+_132.length;
2192 if(this.ksearch_input.setSelectionRange){
2193 this.ksearch_input.setSelectionRange(cpos,cpos);
2194 }
2195 };
2196 this.ksearch_get_results=function(){
2197 var _133=this.ksearch_input?this.ksearch_input.value:null;
2198 if(_133===null){
2199 return;
2200 }
2201 if(this.ksearch_pane&&this.ksearch_pane.is(":visible")){
2202 this.ksearch_pane.hide();
2203 }
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){
2209 return;
2210 }
2211 var _137=this.ksearch_value;
2212 this.ksearch_value=q;
2213 if(!q.length){
2214 return;
2215 }
2216 if(_137&&_137.length&&this.env.contacts&&!this.env.contacts.length&&q.indexOf(_137)==0){
2217 return;
2218 }
2219 this.display_message(this.get_label("searching"),"loading",true);
2220 this.http_post("autocomplete","_search="+urlencode(q));
2221 };
2222 this.ksearch_query_results=function(_138,_139){
2223 if(this.ksearch_value&&_139!=this.ksearch_value){
2224 return;
2225 }
2226 this.hide_message();
2227 this.env.contacts=_138?_138:[];
2228 this.ksearch_display_results(this.env.contacts);
2229 };
2230 this.ksearch_display_results=function(_13a){
2231 if(_13a.length&&this.ksearch_input){
2232 var p,ul,li;
2233 if(!this.ksearch_pane){
2234 ul=$("<ul>");
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];
2237 }
2238 ul=this.ksearch_pane.__ul;
2239 ul.innerHTML="";
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,"&lt;").replace(/>/g,"&gt;").replace(/##([^%]+)%%/g,"<b>$1</b>");
2243 li.onmouseover=function(){
2244 _1.ksearch_select(this);
2245 };
2246 li.onmouseup=function(){
2247 _1.ksearch_click(this);
2248 };
2249 li._rcm_id=i;
2250 ul.appendChild(li);
2251 }
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();
2256 }else{
2257 this.ksearch_hide();
2258 }
2259 };
2260 this.ksearch_click=function(node){
2261 if(this.ksearch_input){
2262 this.ksearch_input.focus();
2263 }
2264 this.insert_recipient(node._rcm_id);
2265 this.ksearch_hide();
2266 };
2267 this.ksearch_blur=function(){
2268 if(this.ksearch_timer){
2269 clearTimeout(this.ksearch_timer);
2270 }
2271 this.ksearch_value="";
2272 this.ksearch_input=null;
2273 this.ksearch_hide();
2274 };
2275 this.ksearch_hide=function(){
2276 this.ksearch_selected=null;
2277 if(this.ksearch_pane){
2278 this.ksearch_pane.hide();
2279 }
2280 };
2281 this.contactlist_keypress=function(list){
2282 if(list.key_pressed==list.DELETE_KEY){
2283 this.command("delete");
2284 }
2285 };
2286 this.contactlist_select=function(list){
2287 if(this.preview_timer){
2288 clearTimeout(this.preview_timer);
2289 }
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");
2294 },200);
2295 }else{
2296 if(this.env.contentframe){
2297 this.show_contentframe(false);
2298 }
2299 }
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);
2303 return false;
2304 };
2305 this.list_contacts=function(src,page){
2306 var _146="";
2307 var _147=window;
2308 if(!src){
2309 src=this.env.source;
2310 }
2311 if(page&&this.current_page==page&&src==this.env.source){
2312 return false;
2313 }
2314 if(src!=this.env.source){
2315 page=1;
2316 this.env.current_page=page;
2317 this.reset_qsearch();
2318 }
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);
2323 return;
2324 }
2325 if(this.env.contentframe&&window.frames&&window.frames[this.env.contentframe]){
2326 _147=window.frames[this.env.contentframe];
2327 _146="&_framed=1";
2328 }
2329 if(this.env.search_request){
2330 _146+="&_search="+this.env.search_request;
2331 }
2332 this.set_busy(true,"loading");
2333 _147.location.href=this.env.comm_path+(src?"&_source="+urlencode(src):"")+(page?"&_page="+page:"")+_146;
2334 };
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;
2343 }
2344 this.set_busy(true,"loading");
2345 this.http_request("list",url,true);
2346 };
2347 this.load_contact=function(cid,_14c,_14d){
2348 var _14e="";
2349 var _14f=window;
2350 if(this.env.contentframe&&window.frames&&window.frames[this.env.contentframe]){
2351 _14e="&_framed=1";
2352 _14f=window.frames[this.env.contentframe];
2353 this.show_contentframe(true);
2354 }else{
2355 if(_14d){
2356 return false;
2357 }
2358 }
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;
2362 }
2363 return true;
2364 };
2365 this.copy_contact=function(cid,to){
2366 if(!cid){
2367 cid=this.contact_list.get_selection().join(",");
2368 }
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));
2371 }
2372 };
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"))){
2376 return;
2377 }
2378 var _153=new Array();
2379 var qs="";
2380 if(this.env.cid){
2381 _153[_153.length]=this.env.cid;
2382 }else{
2383 var id;
2384 for(var n=0;n<_152.length;n++){
2385 id=_152[n];
2386 _153[_153.length]=id;
2387 this.contact_list.remove_row(id,(n==_152.length-1));
2388 }
2389 if(_152.length==1){
2390 this.show_contentframe(false);
2391 }
2392 }
2393 if(this.env.search_request){
2394 qs+="&_search="+this.env.search_request;
2395 }
2396 this.http_post("delete","_cid="+urlencode(_153.join(","))+"&_source="+urlencode(this.env.source)+"&_from="+(this.env.action?this.env.action:"")+qs);
2397 return true;
2398 };
2399 this.update_contact_row=function(cid,_158,_159){
2400 var row;
2401 if(this.contact_list.rows[cid]&&(row=this.contact_list.rows[cid].obj)){
2402 for(var c=0;c<_158.length;c++){
2403 if(row.cells[c]){
2404 $(row.cells[c]).html(_158[c]);
2405 }
2406 }
2407 if(_159){
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="";
2413 }
2414 return true;
2415 }
2416 return false;
2417 };
2418 this.add_contact_row=function(cid,cols,_15e){
2419 if(!this.gui_objects.contactslist||!this.gui_objects.contactslist.tBodies[0]){
2420 return false;
2421 }
2422 var _15f=this.gui_objects.contactslist.tBodies[0];
2423 var _160=_15f.rows.length;
2424 var even=_160%2;
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";
2430 }
2431 for(var c in cols){
2432 col=document.createElement("td");
2433 col.className=String(c).toLowerCase();
2434 col.innerHTML=cols[c];
2435 row.appendChild(col);
2436 }
2437 this.contact_list.insert_row(row);
2438 this.enable_command("export",(this.contact_list.rowcount>0));
2439 };
2440 this.init_subscription_list=function(){
2441 var p=this;
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);
2445 });
2446 this.subscription_list.addEventListener("dragstart",function(o){
2447 p.drag_active=true;
2448 });
2449 this.subscription_list.addEventListener("dragend",function(o){
2450 p.subscription_move_folder(o);
2451 });
2452 this.subscription_list.row_init=function(row){
2453 var _169=row.obj.getElementsByTagName("a");
2454 if(_169[0]){
2455 _169[0].onclick=function(){
2456 p.rename_folder(row.id);
2457 return false;
2458 };
2459 }
2460 if(_169[1]){
2461 _169[1].onclick=function(){
2462 p.delete_folder(row.id);
2463 return false;
2464 };
2465 }
2466 row.obj.onmouseover=function(){
2467 p.focus_subscription(row.id);
2468 };
2469 row.obj.onmouseout=function(){
2470 p.unfocus_subscription(row.id);
2471 };
2472 };
2473 this.subscription_list.init();
2474 };
2475 this.section_select=function(list){
2476 var id=list.get_single_selection();
2477 if(id){
2478 var _16c="";
2479 var _16d=window;
2480 this.set_busy(true);
2481 if(this.env.contentframe&&window.frames&&window.frames[this.env.contentframe]){
2482 _16c="&_framed=1";
2483 _16d=window.frames[this.env.contentframe];
2484 }
2485 _16d.location.href=this.env.comm_path+"&_action=edit-prefs&_section="+id+_16c;
2486 }
2487 return true;
2488 };
2489 this.identity_select=function(list){
2490 var id;
2491 if(id=list.get_single_selection()){
2492 this.load_identity(id,"edit-identity");
2493 }
2494 };
2495 this.load_identity=function(id,_171){
2496 if(_171=="edit-identity"&&(!id||id==this.env.iid)){
2497 return false;
2498 }
2499 var _172="";
2500 var _173=window;
2501 if(this.env.contentframe&&window.frames&&window.frames[this.env.contentframe]){
2502 _172="&_framed=1";
2503 _173=window.frames[this.env.contentframe];
2504 document.getElementById(this.env.contentframe).style.visibility="inherit";
2505 }
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;
2509 }
2510 return true;
2511 };
2512 this.delete_identity=function(id){
2513 var _175=this.identity_list.get_selection();
2514 if(!(_175.length||this.env.iid)){
2515 return;
2516 }
2517 if(!id){
2518 id=this.env.iid?this.env.iid:_175[0];
2519 }
2520 this.goto_url("delete-identity","_iid="+id+"&_token="+this.env.request_token,true);
2521 return true;
2522 };
2523 this.focus_subscription=function(id){
2524 var row,_178;
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");
2531 }
2532 }else{
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");
2536 }
2537 }
2538 }
2539 };
2540 this.unfocus_subscription=function(id){
2541 var row=$("#"+id);
2542 this.set_env("dstfolder",null);
2543 if(this.env.subscriptionrows[id]&&row[0]){
2544 row.removeClass("droptarget");
2545 }else{
2546 $(this.subscription_list.frame).removeClass("droptarget");
2547 }
2548 };
2549 this.subscription_select=function(list){
2550 var id,_17e;
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);
2553 }else{
2554 this.set_env("folder",null);
2555 }
2556 if(this.gui_objects.createfolderhint){
2557 $(this.gui_objects.createfolderhint).html(this.env.folder?this.get_label("addsubfolderhint"):"");
2558 }
2559 };
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);
2568 }
2569 this.drag_active=false;
2570 this.unfocus_subscription(this.get_folder_row_id(this.env.dstfolder));
2571 };
2572 this.create_folder=function(name){
2573 if(this.edit_folder){
2574 this.reset_folder_rename();
2575 }
2576 var form;
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+")");
2581 return false;
2582 }
2583 if(this.env.folder&&name!=""){
2584 name=this.env.folder+this.env.delimiter+name;
2585 }
2586 this.set_busy(true,"foldercreating");
2587 this.http_post("create-folder","_name="+urlencode(name),true);
2588 }else{
2589 if(form.elements["_folder_name"]){
2590 form.elements["_folder_name"].focus();
2591 }
2592 }
2593 };
2594 this.rename_folder=function(id){
2595 var temp,row,form;
2596 if(temp=this.edit_folder){
2597 this.reset_folder_rename();
2598 if(temp==id){
2599 return;
2600 }
2601 }
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);
2611 };
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(){
2617 return false;
2618 };
2619 }
2620 }
2621 };
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]);
2626 }
2627 this.edit_folder=null;
2628 };
2629 this.name_input_keypress=function(e){
2630 var key=rcube_event.get_keycode(e);
2631 if(key==13){
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+")");
2636 return false;
2637 }
2638 if(this.name_input.__parent){
2639 _18e=this.name_input.__parent+this.env.delimiter+_18e;
2640 }
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);
2643 }
2644 }else{
2645 if(key==27){
2646 this.reset_folder_rename();
2647 }
2648 }
2649 };
2650 this.delete_folder=function(id){
2651 var _190=this.env.subscriptionrows[id][0];
2652 if(this.edit_folder){
2653 this.reset_folder_rename();
2654 }
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("");
2660 }
2661 };
2662 this.add_folder_row=function(name,_192,_193,_194){
2663 if(!this.gui_objects.subscriptionlist){
2664 return false;
2665 }
2666 for(var _195 in this.env.subscriptionrows){
2667 if(this.env.subscriptionrows[_195]!=null&&!this.env.subscriptionrows[_195][2]){
2668 break;
2669 }
2670 }
2671 var _196,form;
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();
2675 if(_193&&_193.id){
2676 id=_193.id;
2677 _195=_193.id;
2678 }
2679 if(!id||!(_196=document.getElementById(_195))){
2680 this.goto_url("folders");
2681 }else{
2682 var row=this.clone_table_row(_196);
2683 row.id=id;
2684 if(_194&&(_194=this.get_folder_row_id(_194))){
2685 _198.insertBefore(row,document.getElementById(_194));
2686 }else{
2687 _198.appendChild(row);
2688 }
2689 if(_193){
2690 _198.removeChild(_193);
2691 }
2692 }
2693 this.env.subscriptionrows[row.id]=[name,_192,0];
2694 row.cells[0].innerHTML=_192;
2695 if(!_193){
2696 row.cells[1].innerHTML="*";
2697 }
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;
2701 }
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);
2705 }
2706 if(form.elements["_folder_name"]){
2707 form.elements["_folder_name"].value="";
2708 }
2709 }
2710 this.init_subscription_list();
2711 if(_19a&&document.getElementById("rcmrow"+_19a)){
2712 this.subscription_list.select_row(_19a);
2713 }
2714 if(document.getElementById(id).scrollIntoView){
2715 document.getElementById(id).scrollIntoView();
2716 }
2717 };
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);
2722 var form,elm;
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;
2728 break;
2729 }
2730 }
2731 form.elements["_folder_newname"].value="";
2732 }
2733 };
2734 this.remove_folder_row=function(_1a5){
2735 var row;
2736 var id=this.get_folder_row_id(_1a5);
2737 if(id&&(row=document.getElementById(id))){
2738 row.style.display="none";
2739 }
2740 var form;
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;
2745 break;
2746 }
2747 }
2748 }
2749 if(form&&form.elements["_folder_newname"]){
2750 form.elements["_folder_newname"].value="";
2751 }
2752 };
2753 this.subscribe_folder=function(_1aa){
2754 if(_1aa){
2755 this.http_post("subscribe","_mbox="+urlencode(_1aa));
2756 }
2757 };
2758 this.unsubscribe_folder=function(_1ab){
2759 if(_1ab){
2760 this.http_post("unsubscribe","_mbox="+urlencode(_1ab));
2761 }
2762 };
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){
2766 break;
2767 }
2768 }
2769 return id;
2770 };
2771 this.clone_table_row=function(row){
2772 var cell,td;
2773 var _1b1=document.createElement("tr");
2774 for(var n=0;n<row.cells.length;n++){
2775 cell=row.cells[n];
2776 td=document.createElement("td");
2777 if(cell.className){
2778 td.className=cell.className;
2779 }
2780 if(cell.align){
2781 td.setAttribute("align",cell.align);
2782 }
2783 td.innerHTML=cell.innerHTML;
2784 _1b1.appendChild(td);
2785 }
2786 return _1b1;
2787 };
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));
2793 };
2794 this.init_buttons=function(){
2795 for(var cmd in this.buttons){
2796 if(typeof cmd!="string"){
2797 continue;
2798 }
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);
2802 if(!elm){
2803 continue;
2804 }
2805 var _1b7=false;
2806 if(prop.type=="image"){
2807 elm=elm.parentNode;
2808 _1b7=true;
2809 }
2810 elm._command=cmd;
2811 elm._id=prop.id;
2812 if(prop.sel){
2813 elm.onmousedown=function(e){
2814 return rcmail.button_sel(this._command,this._id);
2815 };
2816 elm.onmouseup=function(e){
2817 return rcmail.button_out(this._command,this._id);
2818 };
2819 if(_1b7){
2820 new Image().src=prop.sel;
2821 }
2822 }
2823 if(prop.over){
2824 elm.onmouseover=function(e){
2825 return rcmail.button_over(this._command,this._id);
2826 };
2827 elm.onmouseout=function(e){
2828 return rcmail.button_out(this._command,this._id);
2829 };
2830 if(_1b7){
2831 new Image().src=prop.over;
2832 }
2833 }
2834 }
2835 }
2836 };
2837 this.set_button=function(_1bc,_1bd){
2838 var _1be=this.buttons[_1bc];
2839 var _1bf,obj;
2840 if(!_1be||!_1be.length){
2841 return false;
2842 }
2843 for(var n=0;n<_1be.length;n++){
2844 _1bf=_1be[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=['"]([^'"]+)['"]/)){
2849 _1bf.pas=RegExp.$1;
2850 }
2851 }else{
2852 if(obj&&!_1bf.status){
2853 _1bf.pas=String(obj.className);
2854 }
2855 }
2856 if(obj&&_1bf.type=="image"&&_1bf[_1bd]){
2857 _1bf.status=_1bd;
2858 obj.src=_1bf[_1bd];
2859 }else{
2860 if(obj&&typeof (_1bf[_1bd])!="undefined"){
2861 _1bf.status=_1bd;
2862 obj.className=_1bf[_1bd];
2863 }
2864 }
2865 if(obj&&_1bf.type=="input"){
2866 _1bf.status=_1bd;
2867 obj.disabled=!_1bd;
2868 }
2869 }
2870 };
2871 this.set_alttext=function(_1c2,_1c3){
2872 if(!this.buttons[_1c2]||!this.buttons[_1c2].length){
2873 return;
2874 }
2875 var _1c4,obj,link;
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));
2883 }
2884 }else{
2885 if(obj){
2886 obj.setAttribute("title",this.get_label(_1c3));
2887 }
2888 }
2889 }
2890 };
2891 this.button_over=function(_1c8,id){
2892 var _1ca=this.buttons[_1c8];
2893 var _1cb,elm;
2894 if(!_1ca||!_1ca.length){
2895 return false;
2896 }
2897 for(var n=0;n<_1ca.length;n++){
2898 _1cb=_1ca[n];
2899 if(_1cb.id==id&&_1cb.status=="act"){
2900 elm=document.getElementById(_1cb.id);
2901 if(elm&&_1cb.over){
2902 if(_1cb.type=="image"){
2903 elm.src=_1cb.over;
2904 }else{
2905 elm.className=_1cb.over;
2906 }
2907 }
2908 }
2909 }
2910 };
2911 this.button_sel=function(_1ce,id){
2912 var _1d0=this.buttons[_1ce];
2913 var _1d1,elm;
2914 if(!_1d0||!_1d0.length){
2915 return;
2916 }
2917 for(var n=0;n<_1d0.length;n++){
2918 _1d1=_1d0[n];
2919 if(_1d1.id==id&&_1d1.status=="act"){
2920 elm=document.getElementById(_1d1.id);
2921 if(elm&&_1d1.sel){
2922 if(_1d1.type=="image"){
2923 elm.src=_1d1.sel;
2924 }else{
2925 elm.className=_1d1.sel;
2926 }
2927 }
2928 this.buttons_sel[id]=_1ce;
2929 }
2930 }
2931 };
2932 this.button_out=function(_1d4,id){
2933 var _1d6=this.buttons[_1d4];
2934 var _1d7,elm;
2935 if(!_1d6||!_1d6.length){
2936 return;
2937 }
2938 for(var n=0;n<_1d6.length;n++){
2939 _1d7=_1d6[n];
2940 if(_1d7.id==id&&_1d7.status=="act"){
2941 elm=document.getElementById(_1d7.id);
2942 if(elm&&_1d7.act){
2943 if(_1d7.type=="image"){
2944 elm.src=_1d7.act;
2945 }else{
2946 elm.className=_1d7.act;
2947 }
2948 }
2949 }
2950 }
2951 };
2952 this.set_pagetitle=function(_1da){
2953 if(_1da&&document.title){
2954 document.title=_1da;
2955 }
2956 };
2957 this.display_message=function(msg,type,hold){
2958 if(!this.loaded){
2959 this.pending_message=new Array(msg,type);
2960 return true;
2961 }
2962 if(this.env.framed&&parent.rcmail){
2963 return parent.rcmail.display_message(msg,type,hold);
2964 }
2965 if(!this.gui_objects.message){
2966 return false;
2967 }
2968 if(this.message_timer){
2969 clearTimeout(this.message_timer);
2970 }
2971 var cont=msg;
2972 if(type){
2973 cont="<div class=\""+type+"\">"+cont+"</div>";
2974 }
2975 var obj=$(this.gui_objects.message).html(cont).show();
2976 if(type!="loading"){
2977 obj.bind("mousedown",function(){
2978 _1.hide_message();
2979 return true;
2980 });
2981 }
2982 if(!hold){
2983 this.message_timer=window.setTimeout(function(){
2984 _1.hide_message(true);
2985 },this.message_time);
2986 }
2987 };
2988 this.hide_message=function(fade){
2989 if(this.gui_objects.message){
2990 $(this.gui_objects.message).unbind()[(fade?"fadeOut":"hide")]();
2991 }
2992 };
2993 this.select_folder=function(name,old){
2994 if(this.gui_objects.folderlist){
2995 var _1e3,_1e4;
2996 if((_1e3=this.get_folder_li(old))){
2997 $(_1e3).removeClass("selected").removeClass("unfocused");
2998 }
2999 if((_1e4=this.get_folder_li(name))){
3000 $(_1e4).removeClass("unfocused").addClass("selected");
3001 }
3002 this.triggerEvent("selectfolder",{folder:name,old:old});
3003 }
3004 };
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);
3009 }
3010 return null;
3011 };
3012 this.set_message_coltypes=function(_1e6){
3013 this.coltypes=_1e6;
3014 var cell,col;
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);
3023 };
3024 cell.firstChild.__col=col;
3025 }else{
3026 cell.innerHTML=this.get_label(this.coltypes[n]);
3027 }
3028 cell.id="rcm"+col;
3029 }else{
3030 if(col=="subject"&&this.message_list){
3031 this.message_list.subject_col=n+1;
3032 }
3033 }
3034 }
3035 };
3036 this.add_message_row=function(uid,cols,_1ed,_1ee,_1ef){
3037 if(!this.gui_objects.messagelist||!this.message_list){
3038 return false;
3039 }
3040 if(this.message_list.background){
3041 var _1f0=this.message_list.background;
3042 }else{
3043 var _1f0=this.gui_objects.messagelist.tBodies[0];
3044 }
3045 var _1f1=_1f0.rows.length;
3046 var even=_1f1%2;
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;
3051 row.className=_1f3;
3052 var icon=this.env.messageicon;
3053 if(_1ed.deleted&&this.env.deletedicon){
3054 icon=this.env.deletedicon;
3055 }else{
3056 if(_1ed.replied&&this.env.repliedicon){
3057 if(_1ed.forwarded&&this.env.forwardedrepliedicon){
3058 icon=this.env.forwardedrepliedicon;
3059 }else{
3060 icon=this.env.repliedicon;
3061 }
3062 }else{
3063 if(_1ed.forwarded&&this.env.forwardedicon){
3064 icon=this.env.forwardedicon;
3065 }else{
3066 if(_1ed.unread&&this.env.unreadicon){
3067 icon=this.env.unreadicon;
3068 }
3069 }
3070 }
3071 }
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();
3080 if(c=="flag"){
3081 if(_1ed.flagged&&this.env.flaggedicon){
3082 col.innerHTML="<img src=\""+this.env.flaggedicon+"\" alt=\"\" />";
3083 }else{
3084 if(!_1ed.flagged&&this.env.unflaggedicon){
3085 col.innerHTML="<img src=\""+this.env.unflaggedicon+"\" alt=\"\" />";
3086 }
3087 }
3088 }else{
3089 if(c=="attachment"){
3090 col.innerHTML=(_1ee&&this.env.attachmenticon?"<img src=\""+this.env.attachmenticon+"\" alt=\"\" />":"&nbsp;");
3091 }else{
3092 col.innerHTML=cols[c];
3093 }
3094 }
3095 row.appendChild(col);
3096 }
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);
3102 }
3103 };
3104 this.offline_message_list=function(flag){
3105 if(this.message_list){
3106 this.message_list.set_background_mode(flag);
3107 }
3108 };
3109 this.set_rowcount=function(text){
3110 $(this.gui_objects.countdisplay).html(text);
3111 this.set_page_buttons();
3112 };
3113 this.set_mailboxname=function(_1fb){
3114 if(this.gui_objects.mailboxname&&_1fb){
3115 this.gui_objects.mailboxname.innerHTML=_1fb;
3116 }
3117 };
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);
3122 }else{
3123 $(this.gui_objects.quotadisplay).html(_1fc);
3124 }
3125 }
3126 };
3127 this.set_unread_count=function(mbox,_1fe,_1ff){
3128 if(!this.gui_objects.mailboxlist){
3129 return false;
3130 }
3131 this.env.unread_counts[mbox]=_1fe;
3132 this.set_unread_count_display(mbox,_1ff);
3133 };
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;
3140 _206=0;
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];
3145 }
3146 }
3147 }
3148 if(_205&&_203.innerHTML.match(reg)){
3149 _203.innerHTML=_203.innerHTML.replace(reg," ("+_205+")");
3150 }else{
3151 if(_205){
3152 _203.innerHTML+=" ("+_205+")";
3153 }else{
3154 _203.innerHTML=_203.innerHTML.replace(reg,"");
3155 }
3156 }
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);
3160 }
3161 if((_205+_206)>0){
3162 $(item).addClass("unread");
3163 }else{
3164 $(item).removeClass("unread");
3165 }
3166 }
3167 reg=/^\([0-9]+\)\s+/i;
3168 if(_201&&document.title){
3169 var _209=String(document.title);
3170 var _20a="";
3171 if(_205&&_209.match(reg)){
3172 _20a=_209.replace(reg,"("+_205+") ");
3173 }else{
3174 if(_205){
3175 _20a="("+_205+") "+_209;
3176 }else{
3177 _20a=_209.replace(reg,"");
3178 }
3179 }
3180 this.set_pagetitle(_20a);
3181 }
3182 };
3183 this.new_message_focus=function(){
3184 if(this.env.framed&&window.parent){
3185 window.parent.focus();
3186 }else{
3187 window.focus();
3188 }
3189 };
3190 this.toggle_prefer_html=function(_20b){
3191 var _20c;
3192 if(_20c=document.getElementById("rcmfd_addrbook_show_images")){
3193 _20c.disabled=!_20b.checked;
3194 }
3195 };
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);
3201 }else{
3202 this.set_busy(false);
3203 }
3204 }
3205 };
3206 this.load_headers=function(elem){
3207 if(!this.gui_objects.all_headers_row||!this.gui_objects.all_headers_box||!this.env.uid){
3208 return;
3209 }
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);
3214 };
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);
3218 }
3219 };
3220 this.hide_headers=function(elem){
3221 if(!this.gui_objects.all_headers_row||!this.gui_objects.all_headers_box){
3222 return;
3223 }
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);
3228 };
3229 };
3230 this.percent_indicator=function(obj,data){
3231 if(!data||!obj){
3232 return false;
3233 }
3234 var _212=80;
3235 var _213=55;
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;
3243 if(_217>_214){
3244 _217=_214;
3245 _216=100;
3246 }
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");
3253 if(_216>=_212){
3254 main.addClass(" quota_text_high");
3255 bar1.addClass("quota_high");
3256 }else{
3257 if(_216>=_213){
3258 main.addClass(" quota_text_mid");
3259 bar1.addClass("quota_mid");
3260 }else{
3261 main.addClass(" quota_text_normal");
3262 bar1.addClass("quota_low");
3263 }
3264 }
3265 obj.innerHTML="";
3266 $(obj).append(bar1).append(bar2).append(main);
3267 };
3268 this.html2plain=function(_21c,id){
3269 var url=this.env.bin_path+"html2text.php";
3270 var _21f=this;
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){
3274 _21f.http_error(o);
3275 },success:function(data){
3276 _21f.set_busy(false);
3277 $(document.getElementById(id)).val(data);
3278 console.log(data);
3279 }});
3280 };
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);
3285 };
3286 this.redirect=function(url,lock){
3287 if(lock||lock===null){
3288 this.set_busy(true);
3289 }
3290 if(this.env.framed&&window.parent){
3291 parent.location.href=url;
3292 }else{
3293 location.href=url;
3294 }
3295 };
3296 this.goto_url=function(_226,_227,lock){
3297 var _229=_227?"&"+_227:"";
3298 this.redirect(this.env.comm_path+"&_action="+_226+_229,lock);
3299 };
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);
3306 },"json");
3307 };
3308 this.http_post=function(_22f,_230,lock){
3309 var url=this.env.comm_path+"&_action="+_22f;
3310 if(_230&&typeof (_230)=="object"){
3311 _230._remote=1;
3312 _230._unlock=(lock?1:0);
3313 }else{
3314 _230+=(_230?"&":"")+"_remote=1"+(lock?"&_unlock=1":"");
3315 }
3316 console.log("HTTP POST: "+url);
3317 jQuery.post(url,_230,function(data){
3318 _1.http_response(data);
3319 },"json");
3320 };
3321 this.http_response=function(_234){
3322 var _235="";
3323 if(_234.unlock){
3324 this.set_busy(false);
3325 }
3326 if(_234.env){
3327 this.set_env(_234.env);
3328 }
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]);
3333 }
3334 }
3335 }
3336 if(_234.exec){
3337 console.log(_234.exec);
3338 eval(_234.exec);
3339 }
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]);
3343 }
3344 }
3345 switch(_234.action){
3346 case "delete":
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));
3352 }
3353 case "moveto":
3354 if(this.env.action=="show"){
3355 this.enable_command("reply","reply-all","forward","delete","mark","print","open","edit","viewsource","download",true);
3356 }else{
3357 if(this.message_list){
3358 this.message_list.init();
3359 }
3360 }
3361 break;
3362 case "purge":
3363 case "expunge":
3364 if(!this.env.messagecount&&this.task=="mail"){
3365 if(this.env.contentframe){
3366 this.show_contentframe(false);
3367 }
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);
3369 }
3370 break;
3371 case "check-recent":
3372 case "getunread":
3373 case "list":
3374 if(this.task=="mail"){
3375 if(this.message_list&&_234.action=="list"){
3376 this.msglist_select(this.message_list);
3377 }
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});
3382 }
3383 }else{
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});
3388 }
3389 }
3390 }
3391 break;
3392 }
3393 };
3394 this.http_error=function(_239,_23a,err){
3395 var _23c=_239.statusText;
3396 this.set_busy(false);
3397 _239.abort();
3398 if(_23c){
3399 this.display_message(this.get_label("servererror")+" ("+_23c+")","error");
3400 }
3401 };
3402 this.send_keep_alive=function(){
3403 var d=new Date();
3404 this.http_request("keep-alive","_t="+d.getTime());
3405 };
3406 this.check_for_recent=function(_23e){
3407 if(this.busy){
3408 return;
3409 }
3410 if(_23e){
3411 this.set_busy(true,"checkingmail");
3412 }
3413 var _23f="_t="+(new Date().getTime());
3414 if(this.gui_objects.messagelist){
3415 _23f+="&_list=1";
3416 }
3417 if(this.gui_objects.quotadisplay){
3418 _23f+="&_quota=1";
3419 }
3420 if(this.env.search_request){
3421 _23f+="&_search="+this.env.search_request;
3422 }
3423 this.http_request("check-recent",_23f,true);
3424 };
3425 this.get_single_uid=function(){
3426 return this.env.uid?this.env.uid:(this.message_list?this.message_list.get_single_selection():null);
3427 };
3428 this.get_single_cid=function(){
3429 return this.env.cid?this.env.cid:(this.contact_list?this.contact_list.get_single_selection():null);
3430 };
3431 this.get_caret_pos=function(obj){
3432 if(typeof (obj.selectionEnd)!="undefined"){
3433 return obj.selectionEnd;
3434 }else{
3435 if(document.selection&&document.selection.createRange){
3436 var _241=document.selection.createRange();
3437 if(_241.parentElement()!=obj){
3438 return 0;
3439 }
3440 var gm=_241.duplicate();
3441 if(obj.tagName=="TEXTAREA"){
3442 gm.moveToElementText(obj);
3443 }else{
3444 gm.expand("textedit");
3445 }
3446 gm.setEndPoint("EndToStart",_241);
3447 var p=gm.text.length;
3448 return p<=obj.value.length?p:-1;
3449 }else{
3450 return obj.value.length;
3451 }
3452 }
3453 };
3454 this.set_caret_pos=function(obj,pos){
3455 if(obj.setSelectionRange){
3456 obj.setSelectionRange(pos,pos);
3457 }else{
3458 if(obj.createTextRange){
3459 var _246=obj.createTextRange();
3460 _246.collapse(true);
3461 _246.moveEnd("character",pos);
3462 _246.moveStart("character",pos);
3463 _246.select();
3464 }
3465 }
3466 };
3467 this.lock_form=function(form,lock){
3468 if(!form||!form.elements){
3469 return;
3470 }
3471 var type;
3472 for(var n=0;n<form.elements.length;n++){
3473 type=form.elements[n];
3474 if(type=="hidden"){
3475 continue;
3476 }
3477 form.elements[n].disabled=lock;
3478 }
3479 };
3480 };
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;
3484