source: trunk/expressoMail1_2/js/main.js @ 829

Revision 829, 69.4 KB checked in by niltonneto, 15 years ago (diff)

Ticket #497 - Implementar verificação de pastas iguais (origem/destino) na aba de busca.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1// Tempo do auto refresh (em milisegundos)
2var time_refresh = 300000;
3// tempo do auto save (em milisegundos)
4// 20000 = 20 segundos
5var autosave_time = 20000;
6
7function init(){
8        if (!is_ie)
9                Element('tableDivAppbox').width = '100%';
10       
11        var save_contacts = function(data){
12                contacts = data;
13        }
14        var save_preferences = function(data){
15                preferences = data;
16                if(preferences.hide_folders == "1")
17                        Element('divAppboxHeader').innerHTML =  title_app_menu;
18
19                if (preferences.delete_trash_messages_after_n_days != 0)
20                        cExecute ("$this.imap_functions.automatic_trash_cleanness&before_date="+preferences.delete_trash_messages_after_n_days+"&cyrus_delimiter="+cyrus_delimiter, handler_automatic_trash_cleanness);
21
22                if(preferences.outoffice == "1")
23                        write_msg(get_lang("Attention, you are in out of office mode."), true);
24                ConstructMenuTools();
25                cExecute ("$this.imap_functions.get_folders_list", update_menu);
26        }
27        var handler_automatic_trash_cleanness = function(data){
28                if (data != false){
29                        write_msg(data.length +' '+ Element('txt_clear_trash').value);
30                }
31        }
32       
33        // Versão
34        Element('divAppboxHeader').innerHTML = title_app;
35       
36        // Get cyrus delimiter
37        cyrus_delimiter = Element('cyrus_delimiter').value;
38       
39        cExecute ("$this.db_functions.get_dropdown_contacts", save_contacts);
40        cExecute ("$this.functions.get_preferences", save_preferences);
41        setTimeout('auto_refresh()', time_refresh);
42}
43function disable_field(field,condition) {
44        var comando = "if ("+condition+") { document.getElementById('"+field.id+"').disabled=true;} else { document.getElementById('"+field.id+"').disabled=false; }";
45        eval(comando);
46}
47/*
48        função que remove todos os anexos...
49*/
50function remove_all_attachments(folder,msg_num) {
51
52        var call_back = function(data) {
53                                        if(!data.status) { //Em caso de erros, o status vem como false e o texto do erro vem em msg.
54                                                alert(data.msg);
55                                        }
56                                        else {
57                                                mail_msg = Element("tbody_box");
58                                                msg_to_delete = Element(data.msg_num);
59                                                if (msg_to_delete) {
60                                                        if ( (msg_to_delete.style.backgroundColor != '') && (preferences.use_shortcuts == '1') )
61                                                                select_msg('null', 'down');
62                                                        mail_msg.removeChild(msg_to_delete);                                                                                           
63                                                }//Remove o email com anexos da lista de emails.
64                                                write_msg(get_lang("Attachments removed"));//indica que os anexos foram removidos
65                                                refresh(); //dá um refresh na lista de emails, para que apareça o novo email sem anexos
66                                                delete_border(data.msg_num+'_r','false');//fecha a tela do email já removido.
67                                        }
68                                };
69        if (confirm(get_lang("delete all attachments confirmation")))
70                cExecute ("$this.imap_functions.remove_attachments&folder="+folder+"&msg_num="+msg_num, call_back); //chamada em ajax para a função de remover anexos.
71}
72function watch_changes_in_msg(border_id)
73{
74        if (document.getElementById('border_id_'+border_id))
75        {       
76                function keypress_handler ()
77                {
78                        away=false;
79                        var save_link = Element("save_message_options_"+border_id);
80                        save_link.onclick = function onclick(event) { openTab.toPreserve[border_id] = true; save_msg(border_id); } ;
81                        save_link.style.color = '#0000ff';
82                };
83               
84                var obj = document.getElementById('body_'+border_id).contentWindow.document;
85                if ( obj.addEventListener )
86                                obj.addEventListener('keypress', keypress_handler, false);
87                else if ( obj.attachEvent )
88                        obj.attachEvent('onkeypress', keypress_handler);
89                       
90                var subject_obj = document.getElementById('subject_'+border_id);
91                if ( subject_obj.addEventListener )
92                                subject_obj.addEventListener('keypress', keypress_handler, false);
93                else if ( subject_obj.attachEvent )
94                        subject_obj.attachEvent('onkeypress', keypress_handler);
95                       
96                var to_obj = document.getElementById('to_'+border_id);
97                if ( to_obj.addEventListener )
98                                to_obj.addEventListener('keypress', keypress_handler, false);
99                else if ( to_obj.attachEvent )
100                        to_obj.attachEvent('onkeypress', keypress_handler);
101               
102        }
103}
104
105function show_msg_img(msg_info){
106       delete_border(msg_info.msg_number+"_r");
107       msg_info.showImg = true;
108       show_msg(msg_info);
109}
110
111function show_msg(msg_info){
112        if(!verify_session(msg_info))
113                return;
114        if (typeof(msg_info) != 'object')
115                alert(get_lang("Error in show_msg param is not object"));
116       
117        if (msg_info.status_get_msg_info == 'false')
118        {
119                write_msg(get_lang("Problems reading your message")+ ".");
120                return;
121        }
122       
123        var handler_sendNotification = function(data){
124                if (data)
125                        write_msg(get_lang("A read confirmation was sent."));
126                else
127                        write_msg(get_lang("Error in SMTP sending read confirmation."));
128        }
129       
130        if (msg_info.status == 'false'){
131                eval(msg_info.command_to_exec);
132        }
133        else{
134                if (preferences.use_shortcuts == '1')
135                        select_msg(msg_info.msg_number, 'null');
136                // Call function to draw message
137                var id_msg_read = msg_info.msg_number +"_r";
138                // If needed, delete old border
139                if (openTab.type[currentTab] == 2 || openTab.type[currentTab] == 3)
140                        delete_border(currentTab,'false');
141
142               
143                if(Element("border_id_" + id_msg_read))
144                        alternate_border(id_msg_read);         
145                else {
146                        var border_id = create_border(msg_info.subject, id_msg_read);
147                        if(border_id)
148                        {
149                                openTab.type[border_id] = 2;
150                                draw_message(msg_info,border_id);
151                                var unseen_sort = document.getElementById('span_flag_UNSEEN').getAttribute('onclick');
152                                unseen_sort = unseen_sort.toString();
153                                if ( !(unseen_sort.indexOf("'UNSEEN' == 'UNSEEN'") < 0) )
154                                {
155                                        var sort_type = sort_box_type;
156                                        sort_box_type = null;
157                                        sort_box('UNSEEN', sort_type);
158                                }
159                        }
160                        else
161                                return;
162                }
163
164                var domains = "";
165                if ((msg_info.DispositionNotificationTo) && (!msg_is_read(msg_info.msg_number) || (msg_info.Recent == 'N')))
166                {                       
167                        if (preferences.notification_domains != undefined && preferences.notification_domains != "")
168                                domains = preferences.notification_domains.split(',');
169                        else
170                        {                               
171                                var confNotification = true;
172                         }
173                        for (var i = 0; i < domains.length; i++)
174                                if (msg_info.DispositionNotificationTo.match(domains[i]+">"))
175                                {
176                                        var confNotification = true;
177                                        break;
178                                }
179                                if (confNotification == undefined)
180                                        var confNotification = confirm(get_lang("The sender:\n%1\nwaits your notification of reading. Do you want to confirm this?",msg_info.DispositionNotificationTo), "");
181
182                        if (confNotification)
183                                cExecute ("$this.imap_functions.send_notification&notificationto="+msg_info.DispositionNotificationTo+"&subject="+url_encode(msg_info.subject), handler_sendNotification);
184                }
185                //Change msg class to read.
186                if (!msg_is_read(msg_info.msg_number))
187                {
188                        set_msg_as_read(msg_info['msg_number'], true);
189                        if (msg_info.cacheHit)
190                                set_message_flag(msg_info.msg_number, "seen"); // avoid caducous (lazy) data
191                }
192
193        }
194}
195
196function auto_refresh(){
197        refresh(preferences.alert_new_msg);
198        setTimeout('auto_refresh()', time_refresh);
199}
200
201function refresh(alert_new_msg){
202        var handler_refresh = function(data){
203                if(!verify_session(data))
204                        return;
205                if (data.length > 0){
206                        var msg_info = document.getElementById('msg_info')
207                        if (msg_info != null)
208                                main.removeChild(msg_info);
209
210                        table_element = Element("table_box");
211                        var box = Element("tbody_box");
212                        table_element.appendChild(box);
213                        for (var i=0; i<data.length; i++){
214                                var new_msg = this.make_tr_message(data[i], current_folder);
215                                _dragArea.makeDragged(new_msg, data[i].msg_number, data[i].subject, true);
216                                eval(data[i].command);
217                        }
218                        if (! typeof(data.msgs_to_delete) == 'undefined')
219                                for (var i=0; i<data.msgs_to_delete.length; i++){
220                                        var remove_msg = document.getElementById(data.msgs_to_delete[i]);
221                                        if (remove_msg)
222                                                remove_msg.parentNode.removeChild(remove_msg);
223                                }
224
225                        if(parseInt(alert_new_msg) && data.new_msgs > 0)
226                                alert(get_lang("You have %1 new", data['new_msgs'])+" "+(data['new_msgs'] > 1 ? get_lang("messages") : get_lang("message")) +"!");
227                        if(data.new_msgs > 0){
228                        Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) + parseInt(data.new_msgs); //refresh tab title
229                        update_quota(get_current_folder());
230                        }
231                         //if(data.new_msgs > 0 || data.msgs_to_delete.length > 0)
232                        //      purgeCache();
233                }
234                purgeCache();
235                update_menu();
236        }
237
238        msg_range_end = (current_page*preferences.max_email_per_page);
239        msg_range_begin = (msg_range_end-(preferences.max_email_per_page)+1);
240       
241       
242        //Get element tBody.
243        main = Element("tbody_box");
244        if(!main)
245                return;
246
247        // Get all TR (messages) in tBody.
248        main_list = main.childNodes;
249        var tmp = '';
250        var string_msgs_in_main = '';
251
252        var len = main_list.length;
253        for (var j=0; j < len; j++)
254                tmp += main_list[j].id + ',';
255               
256        string_msgs_in_main = tmp.substring(0,(tmp.length-1));
257        cExecute ("$this.imap_functions.refresh&folder="+current_folder+"&msgs_existent="+string_msgs_in_main+"&msg_range_begin="+msg_range_begin+"&msg_range_end="+msg_range_end+"&sort_box_type="+sort_box_type+"&search_box_type="+search_box_type+"&sort_box_reverse="+sort_box_reverse, handler_refresh);
258}
259
260function delete_msgs(folder, msgs_number, border_ID, show_success_msg)
261{
262        if (arguments.length < 4){
263                show_success_msg = true;
264        }
265
266        if (folder == 'null')
267                folder = current_folder;
268
269        if(openTab.type[currentTab] == 1)
270                return move_search_msgs('content_id_'+currentTab);
271
272        if(currentTab.toString().indexOf("_r") != -1){
273                        msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r"));
274        }
275
276        if ((parseInt(preferences.save_deleted_msg)) && (folder!='INBOX'+cyrus_delimiter+trashfolder)){
277                move_msgs2(folder, msgs_number, border_ID, 'INBOX'+cyrus_delimiter+trashfolder,trashfolder,show_success_msg );
278                return;
279        }
280       
281        var handler_delete_msgs = function(data){
282                Element('chk_box_select_all_messages').checked = false;
283                if (currentTab)
284                        mail_msg = Element("tbody_box_"+currentTab);
285                else
286                        mail_msg = Element("tbody_box");
287               
288                if ( preferences.use_shortcuts == '1') {
289                        var all_messages = mail_msg.childNodes;
290
291                        //Last msg is selected
292                        if ( exist_className(all_messages[all_messages.length-1], 'selected_shortcut_msg') ) {
293                                select_msg('null', 'up', true);
294                        }
295                        else {
296                                if (!select_msg('null', 'down', true)) {
297                                        select_msg('null', 'up', true);
298                                }
299                        }
300                }
301               
302                var msg_to_delete;
303                for (var i=0; i<data.msgs_number.length; i++){
304                        msg_to_delete = Element(data.msgs_number[i]);
305                        if (msg_to_delete){
306                                mail_msg.removeChild(msg_to_delete);
307                        }
308                }
309                if (show_success_msg) {
310                        if (data.msgs_number.length == 1)
311                                write_msg(get_lang("The message was deleted."));
312                        else
313                                write_msg(get_lang("The messages were deleted."));
314                }
315
316                if (openTab.type[currentTab] > 1){
317                        if (parseInt(preferences.delete_and_show_previous_message))
318                        {
319                                delete_border(currentTab,'false');
320                                show_msg(data.previous_msg);
321                        }
322                        else
323                                delete_border(currentTab,'false');
324                }
325                Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) - data.msgs_number.length;
326                refresh();
327        }
328
329        if (msgs_number == 'selected')
330                msgs_number = get_selected_messages();
331        if (msgs_number.length > 0 || parseInt(msgs_number) > 0)
332                cExecute ("$this.imap_functions.delete_msgs&folder="+folder+"&msgs_number="+msgs_number+"&border_ID="+border_ID+"&sort_box_type="+sort_box_type+"&search_box_type="+search_box_type+"&sort_box_reverse="+sort_box_reverse+"&reuse_border="+border_ID+"&get_previous_msg="+preferences.delete_and_show_previous_message, handler_delete_msgs);
333        else
334                write_msg(get_lang('No selected message.'));           
335}
336
337
338function move_search_msgs(border_id, new_folder, new_folder_name){
339        var selected_messages = '';
340        var temp_msg;
341        var main_list = Element("tbody_box_"+currentTab.substr(7)).childNodes;
342        for (j = 0; j < main_list.length; j++)  {
343                var check_box = main_list[j].firstChild.firstChild;
344                if(check_box && check_box.checked) {
345                        if (proxy_mensagens.is_local_folder(main_list[j].name)) {
346                                alert(get_lang("You cant manipulate local messages on search"));
347                                return;
348                        }
349                        selected_messages += main_list[j].id + ',';
350                }
351        }
352        selected_messages = selected_messages.substring(0,(selected_messages.length-1));
353        var handler_move_search_msgs = function(data){
354                if(!data || !data.msgs_number)
355                        return;
356                else if(data.deleted) {                 
357                        if (data.msgs_number.length == 1)
358                                write_msg(get_lang("The message was deleted."));
359                        else
360                                write_msg(get_lang("The messages were deleted."));                     
361                }
362                else{
363                        if (data.msgs_number.length == 1)
364                                write_msg(get_lang("The message was moved to folder ") + lang_folder(data.new_folder_name));
365                        else
366                                write_msg(get_lang("The messages were moved to folder ") + lang_folder(data.new_folder_name));
367                }
368
369                selected_messages = selected_messages.split(",");
370                for (i = 0; i < selected_messages.length; i++){
371                        var tr = Element(selected_messages[i]);
372                        tr.parentNode.removeChild(tr);
373                }
374        }
375
376        if (selected_messages){
377                var selected_param = "";
378                if (selected_messages.indexOf(',') != -1)
379                {
380                        selected_msg_array = selected_messages.split(",");
381                        for (i = 0; i < selected_msg_array.length; i++){
382                                var tr = Element(selected_msg_array[i]);
383                                if (tr.name == new_folder)
384                                {
385                                        write_msg(get_lang('At least one message have the same origin'));
386                                        return false;
387                                }
388                                selected_param += ','+tr.name+';'+tr.id;
389                        }
390                }
391                else
392                {
393                        var tr=Element(selected_messages);
394                        if (tr.name == new_folder)
395                        {
396                                write_msg(get_lang('The origin folder and the destination folder are the same.'));
397                                return false;
398                        }
399                        selected_param=tr.name+';'+tr.id;
400                }
401                var params = "";
402                if (!new_folder && parseInt(preferences.save_deleted_msg)){
403                        new_folder = 'INBOX'+cyrus_delimiter+trashfolder;
404                        new_folder_name = trashfolder;
405                        params = "&delete=true";
406                }
407
408                params += "&selected_messages="+url_encode(selected_param);
409                if(new_folder) {
410                        params += "&new_folder="+url_encode(new_folder);
411                        params += "&new_folder_name="+url_encode(new_folder_name);
412                }
413                cExecute ("$this.imap_functions.move_search_messages", handler_move_search_msgs, params);
414        }
415        else
416                write_msg(get_lang('No selected message.'));           
417}
418
419function move_msgs2(folder, msgs_number, border_ID, new_folder, new_folder_name,show_success_msg){
420        if (! folder || folder == 'null')
421                folder = Element("input_folder_"+msgs_number+"_r") ? Element("input_folder_"+msgs_number+"_r").value : get_current_folder();
422       
423        var handler_move_msgs = function(data){
424                if(typeof(data) == 'string')
425                        if (data.match(/^(.*)TRYCREATE(.*)$/)){
426                                connector.loadScript('TreeS');
427                                var move_to_folder = data.match(/^(.*)Spam(.*)$/) ? "Spam" : trashfolder;
428                                alert(get_lang('There is not %1 folder, Expresso is creating it for you... Please, repeat your request later.', move_to_folder));
429                                connector.loadScript('TreeShow');
430                                ttree.FOLDER = 'root';
431                                ttreeBox.new_past(move_to_folder);
432                                return false;
433                        }else{
434                                alert(get_lang('Error moving message.')+":\n"+data);
435                                return false;
436                        }
437                //Este bloco verifica as permissoes ACL sobre pastas compartilhadas
438                if(data.status == false){
439                        alert(get_lang("You don't have permission for this operation in this shared folder!"));
440                        return false;
441                }
442                mail_msg = ( Element("divScrollMain_"+numBox) ) ? Element("divScrollMain_"+numBox).firstChild.firstChild : Element("divScrollMain_0").firstChild.firstChild;
443                if (data.msgs_number.length == 1)
444                        write_msg(get_lang("The message was moved to folder ") + lang_folder(data.new_folder_name));
445                else
446                        write_msg(get_lang("The messages were moved to folder ") + lang_folder(data.new_folder_name));
447
448                if (openTab.type[currentTab] > 1){
449                        msg_to_delete = Element(msgs_number);
450                        if (parseInt(preferences.delete_and_show_previous_message) && msg_to_delete)
451                        {
452                                if (msg_to_delete.previousSibling){
453                                        var previous_msg = msg_to_delete.previousSibling.id;
454                                        cExecute("$this.imap_functions.get_info_msg&msg_number="+previous_msg+"&msg_folder=" + current_folder, show_msg);
455                                }
456                                else
457                                        delete_border(currentTab,'false');
458                        }
459                        else
460                                delete_border(currentTab,'false');
461                        if(msg_to_delete)
462                                mail_msg.removeChild(msg_to_delete);
463                        return;
464                }
465
466                Element('chk_box_select_all_messages').checked = false;
467                if (! mail_msg)
468                                mail_msg = Element("tbody_box");
469                data.msgs_number = data.msgs_number.split(",");
470
471                var msg_to_delete;
472                if( typeof(msgs_number) == 'string' )
473                        all_search_msg = msgs_number.split(',');
474                else if( typeof(msgs_number) == 'number')
475                        all_search_msg = msgs_number;
476
477                for (var i=0; i <= all_search_msg.length; i++)
478                {
479                        msg_to_delete = Element(folder+';'+all_search_msg[i]);
480                        if (msg_to_delete)
481                                msg_to_delete.parentNode.removeChild(msg_to_delete);
482                }
483
484                if ( preferences.use_shortcuts == '1') {
485                        var all_messages = Element('tbody_box').childNodes;
486
487                        //Last msg is selected
488                        if ( exist_className(all_messages[all_messages.length-1], 'selected_shortcut_msg') ) {
489                                select_msg('null', 'up', true);
490                        }
491                        else {
492                                if (!select_msg('null', 'down', true)) {
493                                        select_msg('null', 'up', true);
494                                }
495                        }
496                }
497
498                for (var i=0; i<data.msgs_number.length; i++)
499                {
500                        msg_to_delete = Element(data.msgs_number[i]);
501                        if (msg_to_delete)
502                                mail_msg.removeChild(msg_to_delete);
503                }       
504
505                if (data.msgs_number.length == 1)
506                        write_msg(get_lang("The message was moved to folder ") + lang_folder(data.new_folder_name));
507                else
508                        write_msg(get_lang("The messages were moved to folder ") + lang_folder(data.new_folder_name));
509                if (data.border_ID.indexOf('r') != -1){
510                        if (parseInt(preferences.delete_and_show_previous_message) && folder == get_current_folder()){
511                                delete_border(data.border_ID,'false');
512                                show_msg(data.previous_msg);
513                                }
514                        else
515                                delete_border(data.border_ID,'false');
516                }
517                if(folder == get_current_folder())
518                        Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) - data.msgs_number.length;                   
519                refresh();
520        }
521
522        if (folder == new_folder){
523                write_msg(get_lang('The origin folder and the destination folder are the same.'));
524                return;
525        }
526
527        if (msgs_number == 'selected'){
528                msgs_number = get_selected_messages();
529                }
530
531        if(openTab.type[currentTab] == 1){
532                return move_search_msgs('content_id_'+currentTab,new_folder,new_folder_name);
533                }
534
535        if(currentTab.toString().indexOf("_r") != -1){
536                msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r"));
537        }
538
539        if (parseInt(msgs_number) > 0 || msgs_number.length > 0)
540                cExecute ("$this.imap_functions.move_messages&folder="+folder+"&msgs_number="+msgs_number+"&border_ID="+border_ID+"&sort_box_type="+sort_box_type+"&search_box_type="+search_box_type+"&sort_box_reverse="+sort_box_reverse+"&reuse_border="+border_ID+"&new_folder="+new_folder+"&new_folder_name="+new_folder_name+"&get_previous_msg="+preferences.delete_and_show_previous_message, handler_move_msgs);
541        else
542                write_msg(get_lang('No selected message.'));           
543               
544}
545
546function move_msgs(folder, msgs_number, border_ID, new_folder, new_folder_name) {
547        move_msgs2(folder, msgs_number, border_ID, new_folder, new_folder_name,true);
548}
549
550function archive_msgs(folder,folder_dest,id_msgs) {
551        if(proxy_mensagens.is_local_folder(folder)) {
552                write_msg(get_lang("You cant archive local mails"));
553                return;
554        }
555        var has_local_messages_before = expresso_local_messages.has_local_mails(); //vejo se já tinha mensagens locais
556        var handler_arquivar_mensagens = function(data) {
557                var sucess = true;
558                var temp;
559                var msgs_to_remove = new Array();
560                var update_tree;
561
562                for (var i = 0; i < data.length; i++) {
563                        msg_info = connector.unserialize(data[i]);
564                        temp = expresso_local_messages.insert_mail(msg_info, msg_info['header'],msg_info['array_attach'],folder_dest );
565                        if ( Element("check_box_message_" + msg_info.msg_number) )
566                                Element("check_box_message_" + msg_info.msg_number).checked = false;
567
568                        if(!temp)
569                                sucess = false;
570                        else
571                                msgs_to_remove.push(msg_info.msg_number);//As mensagens arquivadas devem ser removidas, caso o usuario tenha isso configurado.
572
573                        if ( Element(msg_info.msg_number) )
574                                remove_className(Element(msg_info.msg_number), 'selected_msg');
575
576                }
577               
578                if (preferences.keep_archived_messages == 0) { //Remove as mensagens
579                                delete_msgs(folder,msgs_to_remove,'null',false);
580                }
581                update_tree=(!has_local_messages_before) && expresso_local_messages.has_local_mails();
582               
583                Element('chk_box_select_all_messages').checked = false;
584                if(update_tree)
585                        ttreeBox.update_folder();
586                else
587                        update_menu();
588                if(sucess)
589                        write_msg(get_lang("selected messages have been archived"));
590                else
591                        write_msg(get_lang("at least, one of selected mails is already archived, expresso tried to archive the others, check them later"));
592
593        }       
594        if(!id_msgs)
595                id_msgs = get_selected_messages();
596        if (parseInt(id_msgs) > 0 || id_msgs.length > 0)
597                cExecute("$this.imap_functions.get_info_msgs&folder=" + folder + "&msgs_number=" + id_msgs , handler_arquivar_mensagens);
598        else
599                write_msg(get_lang('No selected message.'));
600       
601}
602
603function get_selected_messages(){
604        main = document.getElementById("divScrollMain_"+numBox).firstChild.firstChild;
605        if (! main)
606                main = Element("tbody_box");
607
608        // Get all TR (messages) in tBody.
609        main_list = main.childNodes;
610
611        var selected_messages = '';
612        var selected_messages_by_shortcuts = '';
613        var j = 0;
614        for (j; j<(main_list.length); j++)
615        {
616        check_box = Element("check_box_message_"+main_list[j].id);
617        if ( (check_box) && (check_box.checked) )
618                selected_messages += main_list[j].id + ',';
619               
620                if (preferences.use_shortcuts == '1')
621                {
622                        if ( exist_className(Element(main_list[j].id), 'selected_shortcut_msg') )
623                        {
624                                selected_messages_by_shortcuts += main_list[j].id + ',';
625                        }
626                }
627        }
628        selected_messages = selected_messages.substring(0,(selected_messages.length-1));
629       
630        if (preferences.use_shortcuts == '1')
631        {
632                selected_messages_by_shortcuts = selected_messages_by_shortcuts.substring(0,(selected_messages_by_shortcuts.length-1));
633               
634                var array_selected_messages_by_shortcuts = selected_messages_by_shortcuts.split(",");
635                var array_selected_messages = selected_messages.split(",");
636               
637                if ((array_selected_messages.length <= 1) && (array_selected_messages_by_shortcuts.length > 1))
638                {
639                        return selected_messages_by_shortcuts;
640                }
641        }
642       
643        if (selected_messages == '')
644                return false;
645        else
646                return selected_messages;
647}
648
649function replaceAll(string, token, newtoken) {
650        while (string.indexOf(token) != -1) {
651                string = string.replace(token, newtoken);
652        }
653        return string;
654}
655
656function new_message_to(email) {
657        var new_border_ID = new_message('new','null');
658        document.getElementById("to_" + new_border_ID).value=email;
659}
660
661function new_message(type, border_ID){
662        var new_border_ID = draw_new_message(parseInt(border_ID));
663        if (new_border_ID == false)
664                return false;   
665        openTab.type[new_border_ID] = tabTypes[type];
666
667        // Salva a pasta da mensagem respondida ou encaminhada:
668        var folder_message = Element("input_folder_"+border_ID);
669        if(folder_message) {
670                var input_current_folder = document.createElement('input');     
671                input_current_folder.id = "new_input_folder_"+border_ID;
672                input_current_folder.name = "input_folder";
673                input_current_folder.type = "hidden";
674                input_current_folder.value = folder_message.value;
675                Element("content_id_" + new_border_ID).appendChild(input_current_folder);
676        }//Fim.
677        var title = '';
678        data = [];
679        if (Element("from_" + border_ID)){
680                        if (document.getElementById("reply_to_" + border_ID)){
681                                data.to = document.getElementById("reply_to_values_" + border_ID).value;
682                                data.to = data.to.replace(/&lt;/gi,"<");
683                                data.to = data.to.replace(/&gt;/gi,">");
684                }
685                else {
686                        if (document.getElementById("from_values_" + border_ID))
687                        {
688                                data.to = document.getElementById("from_values_" + border_ID).value;
689                                data.to = data.to.replace(/&lt;/gi,"<");
690                                data.to = data.to.replace(/&gt;/gi,">");
691                        }
692                }       
693               
694                if (document.getElementById("to_values_" + border_ID)){
695                        data.to_all = document.getElementById("to_values_" + border_ID).value;
696                        data.to_all = data.to_all.replace(/\n/gi," ");         
697                        data.to_all = data.to_all.replace(/&lt;/gi,"<");
698                        data.to_all = data.to_all.replace(/&gt;/gi,">");
699                        var _array_to_all = data.to_all.split(",");
700                }       
701        }
702       
703        if (document.getElementById("cc_" + border_ID)){
704                data.cc = document.getElementById("cc_values_" + border_ID).value;
705                data.cc = data.cc.replace(/&lt;/gi,"<");
706                data.cc = data.cc.replace(/&gt;/gi,">");
707        }
708        if (document.getElementById("subject_" + border_ID))
709                data.subject = document.getElementById("subject_" + border_ID).innerHTML;
710        if (document.getElementById("body_" + border_ID))
711                data.body = document.getElementById("body_" + border_ID).innerHTML;
712       
713        if (Element('date_' + border_ID)){
714                data.date = Element('date_' + border_ID).innerHTML;
715        }
716       
717        if (Element('date_day_' + border_ID)){
718                data.date_day = Element('date_day_' + border_ID).value;
719        }
720        if (Element('date_hour_' + border_ID)){
721                data.date_hour = Element('date_hour_' + border_ID).value;
722        }
723        var signature = preferences.type_signature == 'html' ? preferences.signature : preferences.signature.replace(/\n/g, "<br>");
724        switch(type){
725                case "reply_without_history":                   
726                        Element("to_" + new_border_ID).value = data.to;
727                        title = "Re: " + data.subject;
728                        Element("subject_" + new_border_ID).value = "Re: " + data.subject;                     
729                        useOriginalAttachments(new_border_ID,border_ID);
730                        var body = Element("body_" + new_border_ID);
731                        body.contentWindow.document.open();
732                        // Insert the signature automaticaly at message body if use_signature preference is set
733                        if (preferences.use_signature == "1"){
734                                body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>" + "<br>" + signature + "</body></html>");
735                        }
736                        else{
737                        body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'></body></html>");
738                        }
739                        body.contentWindow.document.close();
740                        body.contentWindow.document.designMode = "on";
741                        //Focus
742                        if (is_ie)
743                                window.setTimeout('document.getElementById("body_'+new_border_ID+'").contentWindow.focus();', 300);
744                        else
745                                body.contentWindow.focus();
746                        if (is_ie)
747                                body.contentWindow.document.onkeypress = function(){if(body.contentWindow.event.keyCode == 13){changeEnterKey(body.contentWindow)}};
748                        msg_reply_from = document.createElement('input');
749                        msg_reply_from.id = "msg_reply_from_" + new_border_ID;
750                        msg_reply_from.type = "hidden";
751                        msg_reply_from.value = Element("msg_number_" + border_ID).value;
752                        Element("content_id_" + new_border_ID).appendChild(msg_reply_from);
753                        break;
754                case "reply_with_history":
755                        title = "Re: " + data.subject;
756                        Element("subject_" + new_border_ID).value = "Re: " + data.subject;
757                        Element("to_" + new_border_ID).value = data.to;
758                        useOriginalAttachments(new_border_ID,border_ID);
759                        block_quoted_body = make_body_reply(data.body, data.to, data.date_day, data.date_hour);
760                        var body = Element("body_" + new_border_ID);
761                        body.contentWindow.document.open();
762                        // Insert the signature automaticaly at message body if use_signature preference is set
763                        if (preferences.use_signature == "1") {
764                                body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>" + "<br>" + signature + "</body></html>" + block_quoted_body + "</body></html>");
765                        }
766                        else {
767                        body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>"+block_quoted_body+"</body></html>");
768                        }
769                        body.contentWindow.document.close();
770                        body.contentWindow.document.designMode = "on";
771                        //Focus
772                        if (is_ie)
773                                window.setTimeout('document.getElementById("body_'+new_border_ID+'").contentWindow.focus();', 300);
774                        else
775                                body.contentWindow.focus();
776                        if (is_ie)
777                                body.contentWindow.document.onkeypress = function(){if(body.contentWindow.event.keyCode == 13){changeEnterKey(body.contentWindow)}};
778                        msg_reply_from = document.createElement('input');
779                        msg_reply_from.id = "msg_reply_from_" + new_border_ID;
780                        msg_reply_from.type = "hidden";
781                        msg_reply_from.value = Element("msg_number_" + border_ID).value;
782                        Element("content_id_" + new_border_ID).appendChild(msg_reply_from);
783                        break;
784                case "reply_to_all_without_history":
785                        // delete user email from to_all array.
786                        data.to_all = new Array();
787                        var j = 0;
788                        for(i = 0; i < _array_to_all.length; i++) {                     
789                                if(_array_to_all[i].lastIndexOf(Element("user_email").value) == "-1"){
790                                        data.to_all[j++] = _array_to_all[i];
791                                }
792                        }
793                        data.to_all = data.to_all.join(",");
794
795                        title = "Re: " + data.subject;
796                        Element("subject_" + new_border_ID).value = "Re: " + data.subject;
797                        Element("to_" + new_border_ID).value = data.to;
798                        Element("to_" + new_border_ID).value += ', ' + data.to_all;
799                        if (data.cc){
800                                Element("cc_" + new_border_ID).value = data.cc;
801                                Element("a_cc_link_" + new_border_ID).style.display='none';
802                                Element("tr_cc_" + new_border_ID).style.display='';
803                                Element('space_link_' + new_border_ID).style.display='none';
804                        }
805                        useOriginalAttachments(new_border_ID,border_ID);
806                        var body = Element("body_" + new_border_ID);
807                        body.contentWindow.document.open();
808                        // Insert the signature automaticaly at message body if use_signature preference is set
809                        if (preferences.use_signature == "1") {
810                                body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>" + "<br>" + signature + "</body></html>");
811                        }
812                        else {
813                        body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'></body></html>");
814                        }
815                        body.contentWindow.document.close();
816                        body.contentWindow.document.designMode = "on";
817                        //Focus
818                        if (is_ie)
819                                window.setTimeout('document.getElementById("body_'+new_border_ID+'").contentWindow.focus();', 300);
820                        else
821                                body.contentWindow.focus();
822                        if (is_ie)
823                                body.contentWindow.document.onkeypress = function(){if(body.contentWindow.event.keyCode == 13){changeEnterKey(body.contentWindow)}};
824                        msg_reply_from = document.createElement('input');
825                        msg_reply_from.id = "msg_reply_from_" + new_border_ID;
826                        msg_reply_from.type = "hidden";
827                        msg_reply_from.value = Element("msg_number_" + border_ID).value;
828                        Element("content_id_" + new_border_ID).appendChild(msg_reply_from);
829                        break;
830                case "reply_to_all_with_history":
831                        // delete user email from to_all array.
832                        data.to_all = new Array();
833                        var j = 0;
834                                for(i = 0; i < _array_to_all.length; i++) {                     
835                                if(_array_to_all[i].lastIndexOf(Element("user_email").value) == "-1"){
836                                        data.to_all[j++] = _array_to_all[i];
837                                }
838                        }
839                        data.to_all = data.to_all.join(",");
840                        title = "Re: " + data.subject;
841                        Element("to_" + new_border_ID).value = data.to;
842                        Element("to_" + new_border_ID).value += ', ' + data.to_all;
843                        if (data.cc){
844                                document.getElementById("cc_" + new_border_ID).value = data.cc;
845                                document.getElementById("a_cc_link_" + new_border_ID).style.display='none';
846                                document.getElementById("tr_cc_" + new_border_ID).style.display='';
847                                document.getElementById('space_link_' + new_border_ID).style.display='none';
848                        }
849                        document.getElementById("subject_" + new_border_ID).value = "Re: " + data.subject;
850                        useOriginalAttachments(new_border_ID,border_ID);
851                        block_quoted_body = make_body_reply(data.body, data.to, data.date_day, data.date_hour);
852                        var body = document.getElementById("body_" + new_border_ID);
853                        body.contentWindow.document.open();
854                        // Insert the signature automaticaly at message body if use_signature preference is set
855                        if (preferences.use_signature == "1") {
856                                body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>" + "<br>" + signature + "</body></html>" + block_quoted_body + "</body></html>");
857                        }
858                        else {
859                        body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>"+block_quoted_body+"</body></html>");
860                        }
861                        body.contentWindow.document.close();
862                        body.contentWindow.document.designMode = "on";
863                        //Focus
864                        if (is_ie)
865                                window.setTimeout('document.getElementById("body_'+new_border_ID+'").contentWindow.focus();', 300);
866                        else
867                                body.contentWindow.focus();
868                        if (is_ie)
869                                body.contentWindow.document.onkeypress = function(){if(body.contentWindow.event.keyCode == 13){changeEnterKey(body.contentWindow)}};
870                        msg_reply_from = document.createElement('input');
871                        msg_reply_from.id = "msg_reply_from_" + new_border_ID;
872                        msg_reply_from.type = "hidden";
873                        msg_reply_from.value = Element("msg_number_" + border_ID).value;
874                        Element("content_id_" + new_border_ID).appendChild(msg_reply_from);
875                        break;
876                case "forward":
877                        data.is_local_message = (document.getElementById("is_local_"+border_ID).value=="1")?true:false;
878                        msg_forward_from = document.createElement('input');
879                        msg_forward_from.id = "msg_forward_from_" + new_border_ID;
880                        msg_forward_from.type = "hidden";
881                        msg_forward_from.value = Element("msg_number_" + border_ID).value;
882                        Element("content_id_" + new_border_ID).appendChild(msg_forward_from);                   
883                        title = "Fw: " + data.subject;
884                        document.getElementById("subject_" + new_border_ID).value = "Fw: " + data.subject;
885                        var divFiles = Element("divFiles_"+new_border_ID);
886                        var campo_arquivo
887                        if (Element("attachments_" + border_ID)){
888                                var attachments = document.getElementById("attachments_" + border_ID).childNodes;
889                                for (var i = (attachments.length > 1 ? 1 : 0); i < attachments.length; i++){
890                                        if((attachments[i].tagName=="SPAN") || (attachments[i].tagName=="IMG") ||
891                                                        ((attachments[i].href.indexOf("javascript:download_local_attachment")==-1)&&(attachments[i].href.indexOf("javascript:download_attachments")==-1)))
892                                                continue;
893                                        var link_attachment = document.createElement("A");
894                                        link_attachment.setAttribute("href", attachments[i].href);
895                                        link_attachment.innerHTML = attachments[i].innerHTML;
896                                        if (data.is_local_message) {//Local messages
897                                                document.getElementById("is_local_forward"+new_border_ID).value = "1";
898                                                var tmp = link_attachment.href.substring(link_attachment.href.indexOf("(") + 2);//Pula o parenteses e a aspas
899                                                tmp = tmp.substring(0, tmp.length - 2);//corta a aspas e o parenteses
900                                                tmp = replaceAll(tmp,"%20"," ");
901                                                var tempNomeArquivo = tmp.split("/");
902                                                var nomeArquivo = tempNomeArquivo[tempNomeArquivo.length-1];
903                                                nomeArquivo = nomeArquivo.substring(0,nomeArquivo.length - 4); //Anexos no gears são todos com extensão .php. tenho que tirar a extensão para ficar o nome real do arquivo.
904                                                campo_arquivo = addForwardedFile(new_border_ID,nomeArquivo,link_attachment.href);
905                                               
906                                                expresso_local_messages.getInputFileFromAnexo(campo_arquivo, tmp);
907                                        }
908                                        else {
909                                                var tmp = link_attachment.href.replace("javascript:download_attachments(", "").replace(")", "");
910                                                var a_tmp = tmp.split(',');
911                                                tmp = link_attachment.innerHTML.substring(0,link_attachment.innerHTML.lastIndexOf("("));
912                                                a_tmp[2] = "'"+tmp.substring(0,tmp.length-1)+"'";
913                                                s_tmp = escape(connector.serialize(a_tmp));
914
915                                                divFiles.innerHTML += "<input style='border:0' type='CHECKBOX' name='forwarding_attachments[]' checked value=\""+s_tmp+"\"/>";
916                                                divFiles.innerHTML += "<link style='border:0' name='file_"+i+"' id='inputFile_"+border_ID+i+"'/>";
917                                                divFiles.appendChild(link_attachment);
918                                        }
919                                }
920                        }
921                        var body = Element("body_" + new_border_ID);
922                        body.contentWindow.document.open();
923                        // Insert the signature automaticaly at message body if use_signature preference is set
924                        if (preferences.use_signature == "1") {
925                                body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>" + "<br>" + signature + "</body></html>" + make_forward_body(data.body, data.to, data.date, data.subject, data.to_all, data.cc) + "</body></html>");
926                        }
927                        else {
928                        body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>"+make_forward_body(data.body, data.to, data.date, data.subject, data.to_all, data.cc)+"</body></html>");
929                        }
930                        body.contentWindow.document.close();
931                        body.contentWindow.document.designMode = "on";
932                        if (is_ie)
933                                body.contentWindow.document.onkeypress = function(){if(body.contentWindow.event.keyCode == 13){changeEnterKey(body.contentWindow)}};
934                        Element("to_" + new_border_ID).focus();
935                        break;
936                case "new":
937                        title = get_lang("New Message");
938                        if(Element('msg_number').value) {
939                                var _to = Element('msg_number').value;
940                                var reEmail = /^[A-Za-z\d_-]+(\.[A-Za-z\d_-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;                         
941                                if(!reEmail.test(_to)){
942                                        var array_contacts = contacts.split(',');
943                                        for(i = 0; i < array_contacts.length;i++) {
944                                                if(array_contacts[i].lastIndexOf(_to) != "-1"){
945                                                        var _group = array_contacts[i].split(";");
946                                                        _to = '"'+_group[0]+'" <'+_group[1]+'>';
947                                                        break;
948                                                }
949                                        }
950                                }
951                                Element("to_" + new_border_ID).value = _to +',';
952                                Element('msg_number').value = '';
953                        }
954                        var body = document.getElementById("body_" + new_border_ID);
955                        body.contentWindow.document.open();
956                        // Insert the signature automaticaly at message body if use_signature preference is set
957                        if (preferences.use_signature == "1") {
958                                body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>" + "<br>" + signature + "</body></html>");
959                        }
960                        else {
961                        body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'></body></html>");
962                        }
963                        body.contentWindow.document.close();
964                        body.contentWindow.document.designMode = "on";
965                        if (is_ie)
966                                body.contentWindow.document.onkeypress = function(){if(body.contentWindow.event.keyCode == 13){changeEnterKey(body.contentWindow)}};
967                        Element("to_" + new_border_ID).focus();
968                        break;
969                case "edit":
970                        openTab.imapBox[new_border_ID] = folder_message.value;
971                        openTab.toPreserve[new_border_ID] = true;
972                        openTab.imapUid[new_border_ID] = parseInt(border_ID.substr(0,border_ID.indexOf("_")));
973                        document.getElementById('font_border_id_'+new_border_ID).innerHTML = data.subject;
974                        data.to = Element("to_values_" + border_ID).value;
975                        data.to = data.to.replace(/&lt;/gi,"<");
976                        data.to = data.to.replace(/&gt;/gi,">");
977                        title = "Edição: "+data.subject;
978                       
979                        Element("to_" + new_border_ID).value = data.to;
980                        if (data.cc){
981                                Element("cc_" + new_border_ID).value = data.cc;
982                                Element("space_link_" + new_border_ID).style.display = 'none';
983                                Element("a_cc_link_" + new_border_ID).style.display = 'none';
984                                Element("tr_cc_"+ new_border_ID).style.display = '';
985                        }
986                        Element("subject_" + new_border_ID).value = data.subject;
987                       
988                        var divFiles = Element("divFiles_"+new_border_ID);
989                        if (Element("attachments_" + border_ID)){
990                                var attachments = document.getElementById("attachments_" + border_ID).childNodes;
991                                for (var i = (attachments.length > 1 ? 1 : 0); i < attachments.length; i++){
992                                        var link_attachment = document.createElement("A");
993                                        link_attachment.setAttribute("href", attachments[i].href);
994                                        link_attachment.innerHTML = attachments[i].innerHTML;
995                                        var tmp = link_attachment.href.replace("javascript:download_attachments(", "").replace(")", "");
996                                        var a_tmp = tmp.split(',');
997                                        tmp = link_attachment.innerHTML.substring(0,link_attachment.innerHTML.lastIndexOf("("));
998                                        a_tmp[2] = "'"+tmp.substring(0,tmp.length-1)+"'";
999                                        s_tmp = escape(connector.serialize(a_tmp));
1000                                        divFiles.innerHTML += "<input style='border:0' type='CHECKBOX' name='forwarding_attachments[]' checked value=\""+s_tmp+"\"/>";
1001                                        divFiles.appendChild(link_attachment);
1002                                }
1003                        }
1004                        var body = Element("body_" + new_border_ID);
1005                        body.contentWindow.document.open();
1006                        body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>"+data.body+"</body></html>");
1007                        body.contentWindow.document.close();
1008                        body.contentWindow.document.designMode = "on";
1009                        //Focus
1010                        if (is_ie)
1011                                window.setTimeout('document.getElementById("body_'+new_border_ID+'").contentWindow.focus();', 300);
1012                        else
1013                                body.contentWindow.focus();
1014                        if (is_ie)
1015                                body.contentWindow.document.onkeypress = function(){if(body.contentWindow.event.keyCode == 13){changeEnterKey(body.contentWindow)}};
1016                        break;
1017                default:
1018        }
1019
1020        if (preferences.auto_save_draft == 1)
1021        {
1022                openTab.autosave_timer[new_border_ID] = false;
1023                var save_link = document.getElementById("save_message_options"+new_border_ID);
1024
1025        function auto_sav()
1026                        {
1027                                if (openTab.autosave_timer[new_border_ID])
1028                                        clearTimeout(openTab.autosave_timer[new_border_ID]);
1029
1030                                openTab.autosave_timer[new_border_ID] = setTimeout("save_msg("+new_border_ID+")", autosave_time);
1031        }
1032        config_events(body.contentWindow.document,'keypress', auto_sav);
1033    }
1034
1035        //BEGIN Tab event
1036        if (preferences.use_shortcuts == '1')
1037        {
1038                if (is_ie)
1039                {
1040                        body.contentWindow.document.attachEvent('onkeydown', function(event) { if(event.keyCode==27){delete_border(new_border_ID,'false');} if(event.keyCode==9) { Element('to_'+new_border_ID).focus(); Element('send_button_'+new_border_ID).focus(); return false;} }, false);
1041                }
1042                else
1043                {
1044                        body.contentWindow.document.addEventListener('keypress', function(event) { if(event.keyCode==27){delete_border(new_border_ID,'false');} if(event.keyCode==9) { Element('send_button_'+new_border_ID).focus(); event.preventDefault(); } }, false);
1045                }
1046        }
1047        // END Tab event
1048       
1049        var offWidth = Element('border_blank').offsetWidth ? Element('border_blank').offsetWidth : Element('border_blank').clientWidth;
1050        var resize = false;
1051       
1052        if (offWidth < 200) {
1053                resize = Element("border_id_" + new_border_ID).style.width;
1054        }
1055
1056        if (title.length > 21){
1057                title = title.substring(0,21) + "...";
1058        }
1059       
1060        if(resize)
1061                title = title.substring(0, parseInt(resize)*0.08);
1062
1063        Element("border_id_" + new_border_ID).innerHTML = "<table width=100% border=0 cellspacing=0 cellpadding=0><tr><td id=font_border_id_" + new_border_ID +" class='font-menu' width=*>" +title + "</td><td width=1px><img onmousedown='javascript:return false' style='cursor:pointer' onclick=delete_border('" + new_border_ID + "','false') src='templates/"+template+"/images/close_button.gif'></td></tr></table>";
1064        return new_border_ID; //Preciso retornar o ID da nova mensagem.
1065}
1066
1067function useOriginalAttachments(new_id_border,old_id_border)
1068{
1069        var divFiles = Element("divFiles_"+new_id_border);
1070        if (Element("attachments_" + old_id_border)) {
1071                var areaOldAttachments = document.createElement("DIV");
1072                areaOldAttachments.id = "area_div_attachments_"+new_id_border;
1073                divFiles.appendChild(areaOldAttachments);
1074                var optAttachments = document.createElement("A");
1075                optAttachments.setAttribute("href","javascript:void(0)");
1076                optAttachments.tabIndex = -1;
1077                optAttachments.innerHTML = get_lang("Original attachments: add")+"</br>";
1078                areaOldAttachments.appendChild(optAttachments);
1079                var divOriginalAttachments = document.createElement("DIV");
1080                divOriginalAttachments.id = "div_attachments_"+new_id_border;
1081                optAttachments.onclick = function(){
1082                        if(document.getElementById('div_attachments_'+new_id_border))
1083                        {
1084                                areaOldAttachments.removeChild(document.getElementById('div_attachments_'+new_id_border));
1085                                optAttachments.innerHTML = get_lang("Original attachments: add")+"</br>";
1086                        }
1087                        else
1088                        {
1089                                areaOldAttachments.appendChild(divOriginalAttachments);
1090                                optAttachments.innerHTML = get_lang("Original attachments: remove")+"</br>";
1091                        }
1092                        return false;};
1093                        var attachments = document.getElementById("attachments_" + old_id_border).childNodes;
1094                        for (var i = (attachments.length > 1 ? 1 : 0); i < attachments.length; i++){
1095                                var link_attachment = document.createElement("A");
1096                                link_attachment.setAttribute("href", attachments[i].href);
1097                                link_attachment.innerHTML = attachments[i].innerHTML;
1098                                var tmp = link_attachment.href.replace("javascript:download_attachments(", "").replace(")", "");
1099                                var a_tmp = tmp.split(',');
1100                                tmp = link_attachment.innerHTML.substring(0,link_attachment.innerHTML.lastIndexOf("("));
1101                                a_tmp[2] = "'"+tmp.substring(0,tmp.length-1)+"'";
1102                                s_tmp = escape(connector.serialize(a_tmp));
1103                                divOriginalAttachments.innerHTML += "<input style='border:0' type='CHECKBOX' name='forwarding_attachments[]' checked value=\""+s_tmp+"\"/>";
1104                                divOriginalAttachments.appendChild(link_attachment);
1105                        }
1106        }
1107}
1108
1109
1110// Change the tag <P> for the tag <BR> on IE
1111function changeEnterKey(win) {
1112        var oSel = win.document.selection.createRange();
1113        oSel.pasteHTML("<br />");
1114        win.event.cancelBubble = true;
1115        win.event.returnValue=false;
1116        oSel.select();
1117        oSel.moveEnd("character",1);
1118        oSel.moveStart("character",1);
1119        oSel.collapse(false);
1120        return false;
1121}
1122
1123function send_message_return(data, ID){
1124        if(data && data.success == true ){
1125                // if send ok, set a flag as answered or forwarded
1126                var msg_number_replied = Element('msg_reply_from_'+ID);
1127                var msg_number_forwarded = Element('msg_forward_from_'+ID);
1128
1129                if (msg_number_replied){
1130                        set_message_flag(msg_number_replied.value, 'answered');
1131                }
1132                else if (msg_number_forwarded){
1133                        set_message_flag(msg_number_forwarded.value, 'forwarded');
1134                }
1135                if(wfolders.alert){
1136                        write_msg(get_lang('Your message was sent and save.'));
1137                        wfolders.alert = false;
1138                }else{
1139                        write_msg(get_lang('Your message was sent.'));
1140                }
1141                // If new dynamic contacts were added, update the autocomplete ....
1142                if(data.new_contacts){
1143                        var ar_contacts = data.new_contacts.split(',;');
1144                        for(var j in ar_contacts){
1145                                // If the dynamic contact don't exist, update the autocomplete....
1146                                if((contacts+",").indexOf(";"+ar_contacts[j]+",") == -1)
1147                                        contacts += ",;" + ar_contacts[j];
1148                        }
1149                }
1150                if ((! openTab.toPreserve[ID]) && (openTab.imapUid[ID] != 0))
1151                        cExecute ("$this.imap_functions.delete_msgs&folder="+openTab.imapBox[ID]+"&msgs_number="+openTab.imapUid[ID],function(data){ return });
1152                delete_border(ID,'true'); // Becarefull: email saved automatically should be deleted. delete_border erase information about openTab
1153        }
1154        else{
1155                if(data == 'Post-Content-Length')
1156                        write_msg(get_lang('The size of this message has exceeded  the limit (%1B).',Element('upload_max_filesize').value));
1157                else if(data)
1158                        write_msg(data);
1159                else
1160                        write_msg(get_lang("Connection failed with %1 Server. Try later.", "Web"));
1161        }
1162}
1163
1164function send_message(ID, folder, folder_name){
1165        var save_link = Element("save_message_options_"+ID);
1166        save_link.onclick = '';
1167        save_link.style.color = '#999';
1168       
1169        ID_tmp = ID;
1170
1171        var handler_send_message = function(data){
1172                send_message_return(data, this.ID_tmp); // this is a hack to escape quotation form connector bug
1173        };
1174               
1175        var textArea = document.createElement("TEXTAREA");
1176        textArea.style.display='none';
1177        textArea.name = "body";
1178        body = document.getElementById("body_"+ID);
1179        textArea.value += '<body>\r\n';
1180        textArea.value += body.contentWindow.document.body.innerHTML;
1181        textArea.value += '\r\n</body>';
1182        var input_folder = document.createElement("INPUT");
1183        input_folder.style.display='none';
1184        input_folder.name = "folder";
1185        input_folder.value = folder;
1186        var msg_id = document.createElement("INPUT");
1187        msg_id.style.display='none';
1188        msg_id.name = "msg_id";
1189        msg_id.value = openTab.imapUid[ID];
1190       
1191        if (is_ie){
1192                var i = 0;
1193                while (document.forms(i).name != "form_message_"+ID){i++}
1194                form = document.forms(i);
1195        }
1196        else
1197                form = document.forms["form_message_"+ID];
1198       
1199        form.appendChild(textArea);
1200        form.appendChild(input_folder);
1201        form.appendChild(msg_id);
1202
1203        var _subject = trim(Element("subject_"+ID).value);
1204        if((_subject.length == 0) && !confirm(get_lang("Send this message without a subject?"))) {
1205                Element("subject_"+ID).focus();
1206                return;
1207        }
1208       
1209        cExecuteForm ("$this.imap_functions.send_mail", form, handler_send_message, ID);
1210}
1211
1212function return_save(data,border_id,folder_name,folder_id,message_id)
1213{
1214        var handler_delete_msg = function(data){ refresh(preferences.alert_new_msg); };
1215
1216        if (data.append != true || !data)
1217        {
1218                RichTextEditor.saveFlag = -1;
1219                if (! data.append)
1220                        write_msg('ERROR saving your message.');
1221                else
1222                {
1223                        if (data.append.match(/^(.*)TRYCREATE(.*)$/))
1224                        {
1225                                connector.loadScript('TreeS');
1226                                alert(get_lang('There is not %1 folder, Expresso is creating it for you... Please, repeat your request later.',draftsfolder));
1227                                connector.loadScript('TreeShow');
1228                                ttree.FOLDER = 'root';
1229                                ttreeBox.new_past(draftsfolder);
1230                                setTimeout('save_msg('+border_id+')',3000);
1231                        }
1232                        else
1233                                write_msg(data.append);
1234                }
1235        }
1236        else
1237        {
1238                RichTextEditor.saveFlag = 1;
1239                openTab.imapUid[border_id] = data.msg_no;
1240                openTab.imapBox[border_id] = data.folder_id;
1241               
1242                var newTitle = document.getElementById('subject_'+border_id).value;
1243                if (newTitle.length > 18)
1244                        newTitle = newTitle.substr(18) + '...';
1245                else if (newTitle == '')
1246                                newTitle = get_lang("No subject");
1247                document.getElementById('font_border_id_'+border_id).innerHTML = newTitle;
1248               
1249                // Replace the embedded images for new uids
1250                var mainField = document.getElementById('body_'+border_id).contentWindow;
1251                var content_body =  mainField.document.getElementsByTagName('body').item(0).innerHTML;
1252                var body_images = content_body.match(/msg_num=\d*/g);
1253                var images_part = content_body.match(/msg_part=\d*/g);
1254                if (body_images)
1255                {
1256                        for (var i=0; i<body_images.length; i++){
1257                                content_body =  content_body.replace(body_images[i],"msg_num="+openTab.imapUid[border_id]);
1258                        }
1259                        var allImgs = new Array (images_part.length);
1260                                var j=-1;
1261                                for (var i in images_part){
1262                               
1263                                        if (is_ie)
1264                                                if (i == 0)
1265                                                        var image_number = parseInt(images_part[i].substr(9));
1266                                                else
1267                                                        image_number = "null";
1268                                        else
1269                                                var image_number = parseInt(images_part[i].substr(9));
1270                                       
1271                                if (! isNaN(image_number))
1272                                        {
1273                                                if (! allImgs[image_number])
1274                                                {
1275                                                        allImgs[image_number] = true;
1276                                                        j--;                                   
1277                                                }
1278                                        content_body = content_body.replace(images_part[i],'msg_part='+j);
1279                                        }
1280                                }
1281                        content_body = content_body.replace(/msg_part=-/g,'msg_part=');
1282                       
1283                        mainField.document.getElementsByTagName('body').item(0).innerHTML = content_body;
1284                }       
1285                               
1286                //Replace all files to new files
1287                var divFiles = Element("divFiles_"+border_id);
1288                var divParent = divFiles.parentNode;
1289                divParent.removeChild(divFiles);
1290                divFiles = document.createElement('DIV');
1291                divFiles.id = "divFiles_"+border_id;
1292                divParent.appendChild(divFiles);
1293               
1294                var attach_files = connector.unserialize(data.files);
1295                if (attach_files != null) {
1296                        openTab.countFile[border_id] = attach_files.length;
1297                for (att_index = 0; att_index < attach_files.length; att_index++){
1298       
1299                        var link_attachment = document.createElement("A");
1300                        var fileName = attach_files[att_index].substr(0,attach_files[att_index].indexOf('_SIZE_'));
1301                        var fileSize = parseInt(attach_files[att_index].substr(attach_files[att_index].indexOf('_SIZE_')+6))/1024
1302                        link_attachment.innerHTML = fileName + " ("+parseInt(fileSize)+" kb)";
1303
1304                        var href = "'"+folder_id+"','"+data.msg_no+"','"+(att_index)+"','"+(att_index+2)+"','base64'";
1305
1306                        link_attachment.setAttribute("href", "javascript:download_attachments("+href+")");
1307
1308                        var a_tmp = href.split(',');
1309                        a_tmp[2] = fileName;
1310                        s_tmp = escape(connector.serialize(a_tmp));
1311                                       
1312                        var check_attachment = document.createElement("INPUT");
1313                        check_attachment.type = 'CHECKBOX';
1314                        check_attachment.name = 'forwarding_attachments[]';
1315                        check_attachment.value = s_tmp;
1316
1317                        divFiles.appendChild(check_attachment);
1318                        divFiles.appendChild(link_attachment);
1319                        divFiles.appendChild(document.createElement("BR"));
1320
1321                        check_attachment.checked = true;
1322                }
1323        }
1324                if (message_id)
1325                {
1326                        cExecute ("$this.imap_functions.delete_msgs&folder="+openTab.imapBox[border_id]+"&msgs_number="+message_id,handler_delete_msg);
1327                        if (openTab.imapBox[0] == "INBOX/"+draftsfolder)
1328                        {
1329                                //Update mailbox
1330                                var tr_msg = document.getElementById(message_id);
1331                                change_tr_properties(tr_msg, data.msg_no, data.subject);
1332                        }
1333               
1334                }
1335                var save_link = Element("save_message_options_"+border_id);
1336                save_link.onclick = '';
1337                save_link.style.color = '#999';
1338                watch_changes_in_msg(border_id);
1339                Element("send_button_"+border_id).style.visibility="visible";
1340                write_msg(get_lang('Your message was save as draft in folder %1.', lang_folder(folder_name)));
1341        }               
1342}
1343
1344function save_msg(border_id){
1345        var sendButton = Element("send_button_"+border_id);
1346        if (sendButton)
1347                sendButton.style.visibility="hidden";
1348
1349        if (openTab.imapBox[border_id]) //Gets the imap folder
1350                var folder_id = openTab.imapBox[border_id];
1351        else
1352                var     folder_id = "INBOX/"+draftsfolder;
1353
1354        if (folder_id == 'INBOX') // and folder name from border
1355                var folder_name = get_lang(folder_id);
1356        else
1357                var folder_name = folder_id.substr(6);
1358               
1359        // hack to avoid form connector bug,  escapes quotation. Please see #179
1360        tmp_border_id=border_id;
1361        tmp_folder_name=folder_name;
1362        tmp_folder_id=folder_id;
1363        message_id = openTab.imapUid[border_id];
1364        var handler_save_msg = function(data){ return_save(data,this.tmp_border_id,this.tmp_folder_name,this.tmp_folder_id,this.message_id); }
1365
1366        var textArea = document.createElement("TEXTAREA");
1367        textArea.style.display='none';
1368        textArea.name = "body";
1369        body = document.getElementById("body_"+border_id);
1370        if (! body)
1371                return;
1372        textArea.value += '<body>\r\n';
1373        textArea.value += body.contentWindow.document.body.innerHTML;
1374        textArea.value += '\r\n</body>';
1375        var input_folder = document.createElement("INPUT");
1376        input_folder.style.display='none';
1377        input_folder.name = "folder";
1378        input_folder.value = folder_id;
1379        var input_msgid = document.createElement("INPUT");
1380        input_msgid.style.display='none';
1381        input_msgid.name = "msg_id";
1382        input_msgid.value = message_id;
1383       
1384        if (is_ie){
1385                var i = 0;
1386                while (document.forms(i).name != "form_message_"+border_id){i++}
1387                form = document.forms(i);
1388        }
1389        else
1390                form = document.forms["form_message_"+border_id];
1391        form.appendChild(textArea);
1392        form.appendChild(input_folder);
1393        form.appendChild(input_msgid);
1394
1395        cExecuteForm ("$this.imap_functions.save_msg", form, handler_save_msg,border_id);       
1396}
1397
1398function return_saveas(data,border_id,folder_name)
1399{
1400        if(!verify_session(data))
1401                return;
1402        if (data.append)
1403        {
1404                delete_border(border_id,null);
1405                write_msg(get_lang('Your message was save as draft in folder %1.', folder_name));
1406        }
1407        else
1408                write_msg('ERROR saving your message.');                                       
1409}
1410
1411
1412function save_as_msg(border_id, folder_id, folder_name){
1413        // hack to avoid form connector bug,  escapes quotation. Please see #179
1414        tmp_border_id=border_id;
1415        tmp_folder_name=folder_name;
1416        var handler_save_msg = function(data){ return_saveas(data,this.tmp_border_id,this.tmp_folder_name); }   
1417        var textArea = document.createElement("TEXTAREA");
1418        textArea.style.display='none';
1419        textArea.name = "body";
1420        body = document.getElementById("body_"+border_id);
1421        textArea.value += '<body>\r\n';
1422        textArea.value += body.contentWindow.document.body.innerHTML;
1423        textArea.value += '\r\n</body>';
1424       
1425        var input_folder = document.createElement("INPUT");
1426        input_folder.style.display='none';
1427        input_folder.name = "folder";
1428        input_folder.value = folder_id;
1429       
1430        if (is_ie){
1431                var i = 0;
1432                while (document.forms(i).name != "form_message_"+border_id){i++}
1433                form = document.forms(i);
1434        }
1435        else
1436                form = document.forms["form_message_"+border_id];
1437        form.appendChild(textArea);
1438        form.appendChild(input_folder);
1439       
1440        cExecuteForm ("$this.imap_functions.save_msg", form, handler_save_msg,border_id);
1441}
1442
1443
1444// Get checked messages
1445function set_messages_flag(flag, msgs_to_set){
1446        var handler_set_messages_flag = function (data){
1447               
1448                if(!verify_session(data))
1449                        return;
1450                var msgs_to_set = data.msgs_to_set.split(",");
1451
1452                if(!data.status) {
1453                        alert(data.msg);
1454                        Element('chk_box_select_all_messages').checked = false;
1455                        for (var i = 0; i < msgs_to_set.length; i++) {
1456                                Element("check_box_message_" + msgs_to_set[i]).checked = false;
1457                                remove_className(Element(msgs_to_set[i]), 'selected_msg');
1458                        }
1459                        if(!data.msgs_unflageds)
1460                                return;
1461                        else
1462                                msgs_to_set = data.msgs_unflageds.split(",");
1463                }
1464               
1465
1466                for (var i=0; i<msgs_to_set.length; i++){
1467                        if(Element("check_box_message_" + msgs_to_set[i])){
1468                                switch(data.flag){
1469                                        case "unseen":
1470                                                set_msg_as_unread(msgs_to_set[i]);
1471                                                Element("check_box_message_" + msgs_to_set[i]).checked = false;
1472                                                break;
1473                                        case "seen":
1474                                                set_msg_as_read(msgs_to_set[i], false);
1475                                                Element("check_box_message_" + msgs_to_set[i]).checked = false;
1476                                                break;
1477                                        case "flagged":
1478                                                set_msg_as_flagged(msgs_to_set[i]);
1479                                                document.getElementById("check_box_message_" + msgs_to_set[i]).checked = false;
1480                                                break;
1481                                        case "unflagged":
1482                                                set_msg_as_unflagged(msgs_to_set[i]);
1483                                                Element("check_box_message_" + msgs_to_set[i]).checked = false;
1484                                                break;
1485                                }
1486                        }
1487                }
1488                Element('chk_box_select_all_messages').checked = false;
1489        }
1490       
1491        var folder = get_current_folder();
1492        if (msgs_to_set == 'get_selected_messages')
1493                var msgs_to_set = this.get_selected_messages();
1494        else
1495                folder = Element("input_folder_"+msgs_to_set+"_r").value;
1496       
1497        if (msgs_to_set)
1498                cExecute ("$this.imap_functions.set_messages_flag&folder="+folder+"&msgs_to_set="+msgs_to_set+"&flag="+flag, handler_set_messages_flag);
1499        else
1500                write_msg(get_lang('No selected message.'));           
1501}
1502
1503// By message number
1504function set_message_flag(msg_number, flag){
1505        var msg_number_folder = Element("new_input_folder_"+msg_number+"_r");
1506        var handler_set_messages_flag = function (data){
1507                if(!verify_session(data))
1508                        return;
1509                if (data.status && Element("td_message_answered_"+msg_number)) {       
1510                        if(flag == 'answered')
1511                                Element("td_message_answered_"+msg_number).innerHTML = '<img src=templates/'+template+'/images/answered.gif title=Respondida>';
1512                        else if(flag == 'forwarded')
1513                                Element("td_message_answered_"+msg_number).innerHTML = '<img src=templates/'+template+'/images/forwarded.gif title=Encaminhada>';
1514                }
1515        }
1516        cExecute ("$this.imap_functions.set_messages_flag&folder="+( msg_number_folder ?  msg_number_folder.value : get_current_folder() )+"&msgs_to_set="+msg_number+"&flag="+flag, handler_set_messages_flag);
1517}
1518
1519function print_all(){
1520        if (openTab.type[currentTab] == 2)
1521                return print_msg(current_folder,currentTab.substr(0,currentTab.indexOf("_r")),currentTab);
1522
1523        var folder= Element('border_id_0').innerHTML;
1524        var body = Element('divScrollMain_'+numBox).innerHTML;
1525        var print_width = screen.width - 200;
1526        var x = ((screen.width - print_width) / 2);
1527        var y = ((screen.height - 400) / 2) - 35;
1528        var window_print = window.open('','ExpressoMail','width='+print_width+',height=400,resizable=yes,scrollbars=yes,left='+x+',top='+y);
1529        var seekDot = /\<img /gi;
1530        body = body.replace(seekDot, "<img style='display:none' ");
1531        seekDot = /\<input /gi;
1532        body = body.replace(seekDot, "<input style='display:none' ");
1533       
1534        while (1){
1535                try{
1536                        var html = '<br>';
1537                        html += "<h4>ExpressoLivre - ExpressoMail</h4>";
1538                        html += folder+"<hr>";
1539                       
1540                        window_print.document.body.innerHTML = html + '<blockquote><font size="2">' +
1541                        '<table style="font-size:12" width="'+(is_ie ? "85%" : "99%" )+'"><TR><TD align="center" width="5%">&nbsp;</TD><TD width="30%" align="center">'+get_lang("Who")+'</TD><TD align="center" width="45%">'+get_lang("Subject")+'</TD><TD align="center" width="10%">'+get_lang("Date")+'</TD><TD width="10%">'+get_lang("Size")+'</TD></TR></table>'
1542                        + body + '</font></blockquote>';
1543                        break;
1544                }
1545                catch(e){
1546                        //alert(e.message);
1547                }
1548        }
1549        window_print.document.close();
1550        window_print.print();
1551}
1552
1553
1554function print_msg(msg_folder, msg_number, border_ID){
1555        var div_toaddress_full = Element("div_toaddress_full_"+border_ID);     
1556        var div_ccaddress_full = Element("div_ccaddress_full_"+border_ID);
1557        var printListTO = (div_toaddress_full && div_toaddress_full.style.display != 'none') || toaddress_array[border_ID].length == 1 ? true : false; 
1558        var printListCC = (div_ccaddress_full && div_ccaddress_full.style.display != 'none') || !div_ccaddress_full ? true : false;     
1559        var sender              = Element('sender_values_'+border_ID) ? Element('sender_values_'+border_ID).value : null;
1560        var from                = Element('from_values_'+border_ID) ? Element('from_values_'+border_ID).value : null;
1561        var to                  = Element('to_values_'+border_ID) ? Element('to_values_'+border_ID).value :null;
1562        var cc                  = Element('cc_values_'+border_ID) ? Element('cc_values_'+border_ID).value : null;               
1563        var date                =  Element('date_'+border_ID); 
1564        var subject             = Element('subject_'+border_ID);
1565        var attachments = Element('attachments_'+border_ID);
1566        var body                = Element('body_'+border_ID);
1567
1568        var print_width = screen.width - 200;
1569        var x = ((screen.width - print_width) / 2);
1570        var y = ((screen.height - 400) / 2) - 35;
1571        var window_print = window.open('','ExpressoMail','width='+print_width+',height=400,resizable=yes,scrollbars=yes,left='+x+',top='+y);
1572        if(window_print == null) {
1573                alert(get_lang("The Anti Pop-Up is enabled. Allow this site (%1) for print.",document.location.hostname));
1574                return;
1575        }
1576       
1577        while (1){
1578                try{
1579                        var html = '<br><br>';
1580                        //html += "<input type='button' value='Imprimir' onclick='javascript:window.print();'>";
1581                        html += "<h4>ExpressoLivre - ExpressoMail</h4><hr>";
1582                        html += '<table><tbody>';
1583                        if(sender)
1584                                html += "<tr><td width=7% noWrap><font size='2'>" + get_lang('Sent by') + ": </font></td><td><font size='2'>"+sender+"</font></td></tr>";
1585                        if(from)
1586                                html += "<tr><td width=7%><font size='2'>" + get_lang('From') + ": </font></td><td><font size='2'>"+from+"</font></td></tr>";
1587                        if(to) {
1588                                if(!printListTO)
1589                                        to = 'Os destinatários não estão sendo exibidos para esta impressão';
1590                                html += "<tr><td width=7%><font size='2'>" + get_lang('To') + ": </font></td><td><font size='2'>"+to+"</font></td></tr>";
1591                        }                       
1592                        if (cc) {
1593                                if(!printListCC)
1594                                        cc = 'Os destinatários não estão sendo exibidos para esta impressão';
1595                                html += "<tr><td width=7%><font size='2'>" + get_lang('Cc') + ": </font></td><td><font size='2'>"+cc+"</font></td></tr>";
1596                        }
1597                        if(date)
1598                                html += "<tr><td width=7%><font size='2'>" + get_lang('Date') + ": </font></td><td><font size='2'>"+date.innerHTML+"</font></td></tr>";                 
1599                        html += "<tr><td width=7%><font size='2'>" + get_lang('Subject')+ ": </font></td><td><font size='2'>"+subject.innerHTML+"</font></td></tr>";
1600                        html += "</tbody></table><hr>";
1601                        window_print.document.body.innerHTML = html + '<blockquote><font size="2">' + body.innerHTML + '</font></blockquote>';
1602                        if(!is_ie){
1603                                var tab_tags = window_print.document.getElementsByTagName("IMG");                       
1604                                for(var i = 0; i < tab_tags.length;i++){
1605                                        var _img = document.createElement("IMG");
1606                                        _img.src = tab_tags[i].src;
1607                                        tab_tags[i].parentNode.replaceChild(_img,tab_tags[i]);
1608                                }
1609                        }
1610                        break;
1611                }
1612                catch(e){
1613                        //alert(e.message);
1614                }
1615        }
1616        window_print.document.close();
1617        window_print.print();
1618}
1619
1620function empty_trash_imap(){
1621        var handler_empty_trash = function(data){
1622                Element('chk_box_select_all_messages').checked = false;
1623                if(!verify_session(data))
1624                        return;
1625                if (get_current_folder() == 'INBOX'+cyrus_delimiter+trashfolder){
1626                        draw_paging(0);
1627                        kill_current_box();
1628                }
1629                tree_folders.getNodeById('INBOX'+cyrus_delimiter+trashfolder).alter({caption: get_lang("Trash")});
1630                tree_folders.getNodeById('INBOX'+cyrus_delimiter+trashfolder)._refresh();
1631                update_quota(get_current_folder());
1632                if (data)
1633                        write_msg(get_lang('Your Trash folder was empty.'));
1634                else
1635                        write_msg(get_lang('ERROR emptying your Trash folder.'));
1636        }
1637        var realyEmptyTrash=confirm(get_lang('Do you really want to empty your trash folder?'));
1638        if (realyEmptyTrash)
1639                cExecute ("$this.imap_functions.empty_trash", handler_empty_trash);
1640}
1641
1642function export_all_selected_msgs(){
1643        if (openTab.type[currentTab] > 1){
1644                source_msg(currentTab,current_folder);
1645                return;
1646        }
1647        var msgs_to_export = this.get_selected_messages();
1648       
1649        var handler_export_all_selected_msgs = function(data){
1650       
1651                if(!data){
1652                        write_msg(get_lang('Error compressing messages (ZIP). Contact the administrator.'));
1653                }
1654                else
1655                        download_attachments(null, null, data, null,null,'mensagens.zip');
1656        }
1657       
1658        if (msgs_to_export) {
1659                cExecute ("$this.exporteml.makeAll", handler_export_all_selected_msgs, "folder="+get_current_folder()+"&msgs_to_export="+msgs_to_export);
1660                write_msg(get_lang('You must wait while the messages will be exported...'));
1661        }
1662        else
1663                write_msg(get_lang('No selected message.'));
1664}
1665
1666function select_all_search_messages(select, id){
1667        var search_box = Element("table_resultsearch_" + id.substr(18)).firstChild;
1668        var felement = search_box.firstChild;
1669        while(felement)
1670        {
1671        if (select)
1672                felement.firstChild.firstChild.checked = true;
1673        else
1674                felement.firstChild.firstChild.checked = false;
1675        felement = felement.nextSibling;
1676        }
1677}
1678
1679function verify_session(data){
1680
1681        if(data && data.imap_error) {
1682                if(data.imap_error == "nosession")
1683                        write_msg(get_lang("your session could not be verified."));
1684                else
1685                        write_msg(data.imap_error);
1686                // Hold sesion for edit message.
1687                //if(!hold_session)
1688                //      location.href="../login.php?cd=10&phpgw_forward=%2FexpressoMail1_2%2Findex.php";               
1689                return false;
1690        }
1691        else
1692                return true;
1693}
1694
1695// Save image file.
1696function save_image(e,thumb){
1697        thumb.oncontextmenu = function(e) {
1698                return false;
1699        }
1700        var _button = is_ie ? window.event.button : e.which;
1701        var     _target = is_ie ? event.srcElement : e.target;
1702       
1703        if(_button == 2 || _button == 3) {
1704                var _params = _target.id.split(";;");
1705                download_attachments(_params[0],_params[1],_params[2],_params[3],_params[4]);
1706        }
1707}
1708
1709function nospam(msgs_number, border_ID, folder){
1710        if (folder == 'null')
1711                folder = get_current_folder();
1712        var new_folder  = 'INBOX';
1713        var new_folder_name = get_lang('INBOX');
1714        var handler_move_msgs = function(data){
1715                if (msgs_number == 'selected') 
1716                        set_messages_flag("unseen", "get_selected_messages");
1717                else
1718                        set_message_flag(msgs_number, "unseen");
1719            proxy_mensagens.proxy_move_messages(folder, msgs_number, border_ID, new_folder, new_folder_name);
1720        }
1721
1722    if (msgs_number == 'selected')
1723                msgs_number = get_selected_messages();
1724       
1725        if (parseInt(msgs_number) > 0 || msgs_number.length > 0)
1726                cExecute ("$this.imap_functions.spam&folder="+folder+"&spam=false"+"&msgs_number="+msgs_number+"&border_ID="+border_ID+"&sort_box_type="+sort_box_type+"&sort_box_reverse="+sort_box_reverse+"&reuse_border="+border_ID+"&new_folder="+new_folder+"&new_folder_name="+new_folder_name+"&get_previous_msg="+preferences.delete_and_show_previous_message+"&cyrus_delimiter="+cyrus_delimiter, handler_move_msgs);
1727        else
1728                write_msg(get_lang('No selected message.'));
1729}
1730
1731function spam(folder, msgs_number, border_ID){
1732        if (folder == 'null')
1733                folder = get_current_folder();
1734    var new_folder              = 'INBOX'+cyrus_delimiter+'Spam';
1735        var new_folder_name = 'Spam';
1736        var handler_move_msgs = function(data){
1737                // debug
1738                // alert(data);
1739                proxy_mensagens.proxy_move_messages(folder, msgs_number, border_ID, new_folder, new_folder_name);
1740        }
1741    if(msgs_number == 'selected')
1742                msgs_number = get_selected_messages();
1743        if(parseInt(msgs_number) > 0 || msgs_number.length > 0)
1744                cExecute ("$this.imap_functions.spam&folder="+folder+"&spam=true"+"&msgs_number="+msgs_number+"&border_ID="+border_ID+"&sort_box_type="+sort_box_type+"&sort_box_reverse="+sort_box_reverse+"&reuse_border="+border_ID+"&new_folder="+new_folder+"&new_folder_name="+new_folder_name+"&get_previous_msg="+preferences.delete_and_show_previous_message+"&cyrus_delimiter="+cyrus_delimiter, handler_move_msgs);
1745        else
1746        write_msg(get_lang('No selected message.'));
1747}
1748
1749function import_window(){
1750        var win = arrayJSWin["import_window"];
1751        var form_upload = Element("form_upload");
1752        if(!win) {
1753                var form = document.createElement("DIV");
1754                form.id  = "import_window";
1755                form.style.visibility = "hidden";
1756                form.style.position = "absolute";
1757                form.style.background = "#eeeeee";
1758                form.style.left = "0px";
1759                form.style.top  = "0px";
1760                form.style.width = "0px";
1761                form.style.height = "0px";
1762                document.body.appendChild(form);
1763                form_upload = document.createElement("DIV");
1764                form_upload.id = "form_upload";
1765                form_upload.style.position = "absolute";
1766                form_upload.style.top = "5px";
1767                form_upload.style.left = "5px";
1768                form_upload.name =  get_lang('zip mails to import');
1769                form_upload.style.width = "450px";
1770                form_upload.style.height = "75px";
1771                form.appendChild(form_upload); 
1772                form.style.width  =  form.firstChild.style.width;
1773                form.style.height = form.firstChild.style.height;
1774                form.style.zIndex = "10000";                   
1775                var title = form.firstChild.name;
1776                var wHeight = form.offsetHeight + "px";
1777                var wWidth =  form.offsetWidth   + "px";
1778                form.style.width = form.offsetWidth - 5;
1779                win = new dJSWin({
1780                        id: 'win_'+form.id,
1781                        content_id: form.id,
1782                        width: wWidth,
1783                        height: wHeight,
1784                        title_color: '#3978d6',
1785                        bg_color: '#eee',
1786                        title: title,
1787                        title_text_color: 'white',
1788                        button_x_img: '../phpgwapi/images/winclose.gif',
1789                        border: true });       
1790                win.draw();
1791        }
1792        form_upload.innerHTML = '<form method="POST" name="form_import" enctype="multipart/form-data">'+get_lang('zip mails to import')+':<br>'+
1793        '<input name="file_1" maxlength="255" size="50" id="file_1" type="file"><br>' +
1794        '<input title="'+get_lang('Select a folder')+'"  value="' + get_lang('Select a folder') + '"' + 'type="button" onclick="javascript:select_import_folder()">&nbsp;' +
1795        '<input title="' + get_lang('Close') + '"  value="' + get_lang('Close') + '"' +
1796        ' type="button" onclick="arrayJSWin[\'import_window\'].close()"></form>';       
1797        win.open();
1798}
1799
1800function import_msgs(wfolders_tree){
1801        function handler(data){         
1802                // Its necessary to encapsulate the data returned (IE bugfix)
1803                return_import_msgs(data,wfolders_tree);         
1804        }
1805        var countFiles = document.form_import.countFiles;
1806        if(!countFiles){
1807                countFiles = document.createElement("INPUT");
1808                countFiles.type = "hidden";
1809                countFiles.name = "countFiles";
1810                countFiles.value = "1";
1811                document.form_import.appendChild(countFiles);
1812        }
1813        var folder = document.createElement("INPUT");
1814        folder.type = "hidden";
1815        folder.name = "folder";
1816        folder.value = wfolders_tree._selected.id;
1817        document.form_import.appendChild(folder);
1818        write_msg(get_lang('You must wait while the messages will be imported...'));
1819       
1820        cExecuteForm('$this.imap_functions.import_msgs', document.form_import, handler);
1821}
1822function return_import_msgs(data, wfolders_tree){
1823        if(data && data.error){
1824                write_msg(data.error);
1825        }
1826        else{
1827                if(data == 'Post-Content-Length')
1828                        write_msg(get_lang('The size of this message has exceeded  the limit (%1B).',Element('upload_max_filesize').value));
1829                else {
1830                        write_msg(data);
1831                        arrayJSWin["import_window"].close();
1832                        if(openTab.imapBox[0] == wfolders_tree._selected.id){
1833                                openTab.imapBox[0] = '';
1834                                change_folder(wfolders_tree._selected.id, wfolders_tree._selected.caption);
1835                        }
1836                        else{
1837                                refresh();
1838                        }
1839                }
1840        }
1841}
1842
1843function select_import_folder(){
1844        //Begin: Verify if the file extension is allowed.
1845        var imgExtensions = new Array("eml","zip");
1846        var inputFile = document.form_import.file_1;   
1847        if(!inputFile.value){
1848                alert(get_lang('File extension forbidden or invalid file') + '.');
1849                return false;
1850        }
1851        var fileExtension = inputFile.value.split(".");
1852        fileExtension = fileExtension[(fileExtension.length-1)];
1853        var deniedExtension = true;
1854        for(var i=0; i<imgExtensions.length; i++) {
1855                if(imgExtensions[i].toUpperCase() == fileExtension.toUpperCase()) {
1856                        deniedExtension = false;
1857                        break;
1858                }
1859        }
1860        if(deniedExtension) {
1861                alert(get_lang('File extension forbidden or invalid file') + '.');
1862                return false;
1863        }
1864        arrayJSWin['import_window'].close();
1865        wfolders.makeWindow('null','import');
1866}
1867function import_calendar(data){
1868        function handler_import_calendar(data){
1869                if(data === true){
1870                        write_msg(get_lang("The event was imported successfully."));
1871                }
1872        }
1873        if(confirm(get_lang("Do you confirm this import to your Calendar?"))){
1874                        cExecute('$this.db_functions.import_vcard&msg_folder='+data,handler_import_calendar);
1875        }
1876}
Note: See TracBrowser for help on using the repository browser.