source: sandbox/expressoMail1_2/MailArchiver/2.2/expressoMail1_2/js/main.js @ 4893

Revision 4893, 106.9 KB checked in by fernando-alberto, 13 years ago (diff)

Ticket #1269 - Desenvolvimento da nova solucao de arquivamento local MailArchiver?, novo offsetGMT

  • 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
7//MAILARCHIVE
8// Intervalo de tempo de verificacao de comunicacao com o MailArchiver (milisegundos)
9var check_services_interval = 2000;
10// Numero de tentativas de reconexao
11var check_services_tryouts = 1;
12// Limite de tentativas de reconexao
13var check_services_tryouts_limit = 5;
14
15function init(){
16        if (!is_ie)
17                Element('tableDivAppbox').width = '100%';
18
19        var save_contacts = function(data){
20                contacts = data;
21                if (preferences.use_local_messages == 1 && window.google && google.gears)
22                        if (expresso_local_messages.is_offline_installed())
23                                expresso_local_messages.capt_url('controller.php?action=$this.db_functions.get_dropdown_contacts_to_cache');
24
25        }
26        //MailArchiver save offset to gmt user preference data to list correctly date/time from messages list
27        var save_gmtoffset = function(data){
28            gmtoffset = data;
29        }
30       
31        var save_preferences = function(data){
32
33
34                preferences = data;
35                current_folder="INBOX";
36               
37                if( (window.google && google.gears) && !google.gears.factory.getPermission())
38                    preferences.use_local_messages=0;
39               
40                //MAILARCHIVER TODO_01 = only offline needs to be handled
41                /*if ((preferences.use_local_messages==1) && (!window.google || !google.gears)) {
42                    temp = confirm(get_lang("To use local messages you have to install google gears. Would you like to be redirected to gears installation page?"));
43                    if (temp) {
44                            location.href = "http://gears.google.com/?action=install&message="+
45                            "Para utilizar o recurso de mensagens locais, instale o google gears&return=" + document.location.href;
46                    }
47                    else {
48                            preferences.use_local_messages=0;
49                    }
50                }
51                if (preferences.use_local_messages==1) { //O I.E 7 estava se atrapalhando caso esses loads fossem feitos apï¿œs as chamadas ajax. Antes nï¿œo apresentou problemas...
52                        connector.loadScript('mail_sync');
53                        if (is_ie)
54                                connector.loadScript('TreeShow');
55                        setTimeout('auto_archiving()', 30000);
56                       
57                }
58                */
59                //MAILARCHIVER
60                //Try to get ArchiveServices object directly
61                //window.alert('em init com ArchiveServices = ' + ArchiveServices);
62                if(ArchiveServices)
63                    expresso_mail_archive.Startup();
64                //ArchiveServices not runnnig: catch the user preferences to set up message at header
65                else{
66                    if(preferences.use_local_messages=="1")
67                        write_msg(get_lang('Sorry, but Mail Archiver does not seems to be running or installed at this workstation. By now, we are turning off local messages!'));
68                }         
69               
70                cExecute ("$this.imap_functions.get_range_msgs2&folder=INBOX&msg_range_begin=1&msg_range_end="+preferences.max_email_per_page+"&sort_box_type=SORTARRIVAL&search_box_type=ALL&sort_box_reverse=1", handler_draw_box);
71                cExecute ("$this.imap_functions.get_folders_list&onload=true", update_menu);
72                cExecute ("$this.db_functions.get_dropdown_contacts", save_contacts); //Save contacts needs preferences.
73               
74                if(preferences.hide_folders == "1")
75                        Element('divAppboxHeader').innerHTML =  title_app_menu;
76
77                if (preferences.delete_trash_messages_after_n_days != 0)
78                        cExecute ("$this.imap_functions.automatic_trash_cleanness&before_date="+preferences.delete_trash_messages_after_n_days+"&cyrus_delimiter="+cyrus_delimiter, handler_automatic_trash_cleanness);
79
80                if(preferences.outoffice == "1")
81                        write_msg(get_lang("Attention, you are in out of office mode."), true);
82
83                ConstructMenuTools();
84               
85                //Disabled -> check futurelly to offline only
86                //if ( (preferences.use_local_messages==1) && (expresso_local_messages.is_offline_installed()) )  //Precisa ser feito apï¿œs a renderizaᅵᅵo da caixa de emails
87                //      check_mail_in_queue();
88               
89                // Insere a applet de criptografia
90                if (preferences.use_signature_digital_cripto == '1'){
91                        loadApplet();
92                }
93                // Fim da inserᅵᅵo da applet
94
95        }
96        var handler_automatic_trash_cleanness = function(data){
97                if (data != false){
98                        write_msg(data.length +' '+ Element('txt_clear_trash').value);
99                }
100        }
101
102        // Versï¿œo
103        Element('divAppboxHeader').innerHTML = title_app;
104
105        // Get cyrus delimiter
106        cyrus_delimiter = Element('cyrus_delimiter').value;
107
108        cExecute ("$this.functions.get_preferences", save_preferences);
109        //MailArchiver invoke get_offset_gmt from imap functions
110        cExecute ("$this.imap_functions.get_offset_gmt", save_gmtoffset);
111       
112        cExecute ("phpgwapi.browser.isMobile", function( data )
113        {
114                mobile_device = ( ( data.constructor == Boolean ) ? data : ( data === 'true' ) );
115        } );
116        setTimeout('auto_refresh()', time_refresh);
117
118}
119
120function init_offline(){
121        current_folder = 'local_Inbox';
122        if (account_id != null) {
123                if (!is_ie)
124                        Element('tableDivAppbox').width = '100%';
125                else
126                        connector.createXMLHTTP();
127                Element('divStatusBar').innerHTML = '<table height="16px" border=0 width=100% cellspacing=0 cellpadding=2>' +
128                '<tr>' +
129                '<td style="padding-left:17px" width=33% id="content_quota" align=left></td>' +
130                '<td width=33% height=16px align=center nowrap><font face=Verdana, Arial, Helvetica, sans-serif color=#000066 size=2>' +
131                '<b>ExpressoMail Offline</b><font size=1><b> - Versï¿œo 1.0</b></font></td>' +
132                '<td width=33% id="div_menu_c3" align=right></td>' +
133                '</tr></table>';
134
135                ConstructMenuTools();
136
137                draw_tree_folders();
138
139                proxy_mensagens.messages_list('local_Inbox', 1, preferences.max_email_per_page, 'SORTARRIVAL', null, 1,1,1, function handler(data){
140                        draw_box(data, 'local_Inbox');
141                })
142
143                // Get cyrus delimiter
144        cyrus_delimiter = Element('cyrus_delimiter').value;
145
146        cExecute ("$this.db_functions.get_dropdown_contacts_to_cache", function(data) {contacts = data;});
147        //cExecute ("$this.functions.get_preferences", save_preferences);
148        }
149}
150/**
151 * Carrega a applet java no objeto search_div
152 * @author Mï¿œrio Cï¿œsar Kolling <mario.kolling@serpro.gov.br>
153 */
154
155function loadApplet(){
156
157        var search_div = Element('search_div');
158        var applet = null;
159        if (navigator.userAgent.match('MSIE')){
160                applet = document.createElement('<object style="display:yes;width:0;height:0;vertical-align:bottom;" id="cert_applet" ' +
161                        'classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"></object>');
162
163                var parameters = {
164                        type:'application/x-java-applet;version=1.5',
165                        code:'ExpressoSmimeApplet',
166                        codebase:'/security/',
167                        mayscript:'true',
168                        token: token_param,
169                        locale: locale,
170                        archive:'ExpressoCertMail.jar,' +
171                                'ExpressoCert.jar,' +
172                                'bcmail-jdk15-142.jar,' +
173                                'mail.jar,' +
174                                'activation.jar,' +
175                                'bcprov-jdk15-142.jar,' +
176                                'commons-codec-1.3.jar,' +
177                                'commons-httpclient-3.1.jar,' +
178                                'commons-logging-1.1.1.jar'
179                        //debug:'true'
180                }
181
182                if (parameters != 'undefined' && parameters != null){
183                        for (var parameter in parameters) {
184                                var param = document.createElement("PARAM");
185                                param.setAttribute("name",parameter);
186                                param.setAttribute("value",parameters[parameter]);
187                                applet.appendChild(param);
188                        }
189                }
190        }
191        else
192        {
193                applet = document.createElement('embed');
194                applet.innerHTML = '<embed style="display:yes;width:0;height:0;vertical-align:bottom;" id="cert_applet" code="ExpressoSmimeApplet.class" ' +
195                        'codebase="/security/" locale="'+locale+'"'+
196                        'archive="ExpressoCertMail.jar,ExpressoCert.jar,bcmail-jdk15-142.jar,mail.jar,activation.jar,bcprov-jdk15-142.jar,commons-codec-1.3.jar,commons-httpclient-3.1.jar,commons-logging-1.1.1.jar" ' +
197                        'token="' + token_param + '" ' +
198                        'type="application/x-java-applet;version=1.5" mayscript > ' +
199                        //'type="application/x-java-applet;version=1.5" debug="true" mayscript > ' +
200                        '<noembed> ' +
201                        'No Java Support. ' +
202                        '</noembed> ' +
203                        '</embed> ';
204        }
205       
206        if( applet != null )
207        {
208                applet.style.top        = "-100px";
209                applet.style.left       = "-100px";
210                window.document.body.insertBefore( applet, document.body.lastChild );
211        }
212       
213}
214
215function disable_field(field,condition) {
216        var comando = "if ("+condition+") { document.getElementById('"+field.id+"').disabled=true;} else { document.getElementById('"+field.id+"').disabled=false; }";
217        eval(comando);
218}
219/*
220        funᅵᅵo que remove todos os anexos...
221*/
222function remove_all_attachments(folder,msg_num) {
223
224        var call_back = function(data) {
225                if(!data.status) {
226                        alert(data.msg);
227                }
228                else {
229                        msg_to_delete = Element(msg_num);
230                        change_tr_properties(msg_to_delete, data.msg_no);
231                        msg_to_delete.childNodes[1].innerHTML = "";
232                        write_msg(get_lang("Attachments removed"));
233                        delete_border(msg_num+'_r','false'); //close email tab
234                }
235        };
236        if (confirm(get_lang("delete all attachments confirmation")))
237                cExecute ("$this.imap_functions.remove_attachments&folder="
238                                +folder+"&msg_num="+msg_num, call_back);
239}
240function watch_changes_in_msg(border_id)
241{
242        if (document.getElementById('border_id_'+border_id))
243        {
244                function keypress_handler ()
245                {
246                        away=false;
247                        var save_link = Element("save_message_options_"+border_id);
248                        save_link.onclick = function onclick(event) { openTab.toPreserve[border_id] = true; save_msg(border_id); } ;
249                        save_link.className = 'message_options';
250                };
251
252                var obj = document.getElementById('body_'+border_id).contentWindow.document;
253                if ( obj.addEventListener )
254                                obj.addEventListener('keypress', keypress_handler, false);
255                else if ( obj.attachEvent )
256                        obj.attachEvent('onkeypress', keypress_handler);
257
258                var subject_obj = document.getElementById('subject_'+border_id);
259                if ( subject_obj.addEventListener )
260                                subject_obj.addEventListener('keypress', keypress_handler, false);
261                else if ( subject_obj.attachEvent )
262                        subject_obj.attachEvent('onkeypress', keypress_handler);
263
264                var to_obj = document.getElementById('to_'+border_id);
265                if ( to_obj.addEventListener )
266                                to_obj.addEventListener('keypress', keypress_handler, false);
267                else if ( to_obj.attachEvent )
268                        to_obj.attachEvent('onkeypress', keypress_handler);
269
270        }
271}
272
273function show_msg_img(msg_number,folder){
274        var call_back = function(data){
275           data.showImg = true;
276           if (!Element(data.msg_number)){
277                   trElement = document.createElement('DIV');
278                   trElement.id = data.msg_number;
279                   Element("tbody_box").appendChild(trElement);
280           }
281           show_msg(data);
282        }
283
284        proxy_mensagens.msg_img(msg_number,folder,call_back);
285
286}
287
288function show_msg(msg_info){
289        if(!verify_session(msg_info))
290                return;
291        if (typeof(msg_info) != 'object')
292                alert(get_lang("Error in show_msg param is not object"));
293
294        if (msg_info.status_get_msg_info == 'false')
295        {
296                write_msg(get_lang("Problems reading your message")+ ".");
297                return;
298        }
299
300        var handler_sendNotification = function(data){
301                if (data)
302                        write_msg(get_lang("A read confirmation was sent."));
303                else
304                        write_msg(get_lang("Error in SMTP sending read confirmation."));
305        }
306
307        if(msg_info.source)
308        {
309                // Abrindo um e-mail criptografado
310                // Verifica se existe o objeto applet
311                if (!Element('cert_applet')){
312                        // se nï¿œo existir, mostra mensagem de erro.
313                        write_msg(get_lang('The preference "%1" isn\'t enabled.', get_lang('Enable digitally sign/cipher the message?')));
314                } else {
315                        // se existir prepara os dados para serem enviados e chama a
316                        // operaᅵᅵo na applet
317
318                        connector.showProgressBar();
319
320                   // if ((msg_info.DispositionNotificationTo) && ((msg_info.Unseen == 'U') || (msg_info.Recent == 'N'))){
321                        /*      var confNotification = confirm(get_lang("The sender waits your notification of reading. Do you want to confirm this?"), "");
322                                if (confNotification)*/
323                        //              cExecute ("$this.imap_functions.send_notification&notificationto="+msg_info.DispositionNotificationTo+"&subject="+url_encode(msg_info.subject), handler_sendNotification);
324                   // }
325
326                        Element('cert_applet').doButtonClickAction('decript',
327                                                                                                                msg_info.msg_number,
328                                                                                                                msg_info.source,
329                                                                                                                msg_info.msg_folder); // Passa os dados para a applet
330                }
331                return;
332
333        }
334
335
336        if (msg_info.status_get_msg_info == 'false')
337        {
338                write_msg(get_lang("Problems reading your message")+ ".");
339                return;
340        }
341
342        if (msg_info.status == 'false'){
343                eval(msg_info.command_to_exec);
344        }
345        else{
346                var ID = msg_info.original_ID ? msg_info.original_ID : msg_info.msg_number;
347                var id_msg_read = ID+"_r";
348
349                if (preferences.use_shortcuts == '1')
350                        select_msg(ID, 'null');
351                // Call function to draw message
352                // If needed, delete old border
353                if (openTab.type[currentTab] == 2 || openTab.type[currentTab] == 3)
354                        delete_border(currentTab,'false');
355
356
357                if(Element("border_id_" + id_msg_read)) {
358                        alternate_border(id_msg_read);
359                        resizeWindow();
360                }
361                else {
362                        var border_id = create_border(msg_info.subject, id_msg_read);
363                        if(border_id)
364                        {
365                                openTab.type[border_id] = 2;
366                                draw_message(msg_info,border_id);
367                                var unseen_sort = document.getElementById('span_flag_UNSEEN').getAttribute('onclick');
368                                unseen_sort = unseen_sort.toString();
369                                if ( !(unseen_sort.indexOf("'UNSEEN' == 'UNSEEN'") < 0) )
370                                {
371                                        var sort_type = sort_box_type;
372                                        sort_box_type = null;
373                                        sort_box('UNSEEN', sort_type);
374                                }
375                        }
376                        else
377                                return;
378                }
379
380                var domains = "";
381                if ((msg_info.DispositionNotificationTo) && (!msg_is_read(ID) || (msg_info.Recent == 'N')))
382                {
383                        if (preferences.notification_domains != undefined && preferences.notification_domains != "")
384                        {
385                                domains = preferences.notification_domains.split(',');
386                        }
387                        else
388                        {
389                                var confNotification = true;
390                         }
391                        for (var i = 0; i < domains.length; i++)
392                                if (msg_info.DispositionNotificationTo.match(domains[i]+">"))
393                                {
394                                        var confNotification = true;
395                                        break;
396                                }
397                                if (confNotification == undefined)
398                                        var confNotification = confirm(get_lang("The sender:\n%1\nwaits your notification of reading. Do you want to confirm this?",msg_info.DispositionNotificationTo), "");
399
400                        if (confNotification)
401                                cExecute ("$this.imap_functions.send_notification&notificationto="+msg_info.DispositionNotificationTo+"&date="+msg_info.udate+"&subject="+url_encode(msg_info.subject), handler_sendNotification);
402                }
403                //Change msg class to read.
404                if (!msg_is_read(ID))
405                {
406                        set_msg_as_read(ID, true);
407                        if (msg_info.cacheHit || (!proxy_mensagens.is_local_folder(get_current_folder()) && msg_info.original_ID))
408                        {
409                                set_message_flag(ID, "seen"); // avoid caducous (lazy) data
410                        }
411                }
412        }
413}
414
415function auto_refresh(){
416        refresh(preferences.alert_new_msg);
417        setTimeout('auto_refresh()', time_refresh);
418}
419
420function auto_archiving() {
421        expresso_mail_sync.start_sync();
422        setTimeout('auto_archiving()',600000);
423}
424
425function refresh(alert_new_msg){
426        var handler_refresh = function(data){
427                if(!verify_session(data))
428                        return;
429                       
430                var box = Element("tbody_box");
431                if (box.childNodes.length == 0)
432                {
433                        var tr_info = document.createElement("TR");
434                        var td_info = document.createElement("TD");
435                        td_info.setAttribute("colspan", "10");
436                        td_info.setAttribute("background", "#FFF");
437                        td_info.setAttribute("id","msg_info");
438                        td_info.id = "msg_info";
439                        td_info.align = "center";
440                        td_info.style.padding = "25px";
441                        td_info.style.fontWeight = "bold";
442                        td_info.style.fontSize = "11pt";
443                        td_info.innerHTML = get_lang("This mail box is empty");
444                        tr_info.appendChild(td_info);
445                        box.appendChild(td_info);
446                }
447
448                if (data.length > 0){
449                        var msg_info = document.getElementById('msg_info');
450                        if (msg_info != null)
451                        {
452                                var msg_tr = msg_info.parentNode;
453                                msg_tr.removeChild(msg_info);
454                        }
455
456                        table_element = Element("table_box");
457                        var box = Element("tbody_box");
458                        table_element.appendChild(box);
459
460                        if (data.msgs_to_delete.length > 0)
461                                for (var i=0; i<data.msgs_to_delete.length; i++){
462                                        if ( (data.msgs_to_delete[i] != undefined) && (data.msgs_to_delete[i] != "")){
463                                                removeAll(data.msgs_to_delete[i]);
464                                        }
465                                }
466
467                        if (data[0].msg_folder != current_folder) // Bad request
468                                return false;
469
470                        var total_messages_element = Element('tot_m');
471
472                        for (var i=0; i<data.length; i++){
473                                var existent = document.getElementById(data[i].msg_number);
474                                if (!existent)
475                                {
476                                        var new_msg = this.make_tr_message(data[i], current_folder, data.offsetToGMT);
477                                        _dragArea.makeDragged(new_msg, data[i].msg_number, data[i].subject, true);
478                                       
479                                        if( data[i].next_msg_number != undefined && data[i].next_msg_number != null )
480                                                box.insertBefore(new_msg, Element(data[i].next_msg_number));
481                                        else if (data[i].Recent == 'N')
482                                                box.insertBefore(new_msg,box.firstChild);
483                                        else
484                                                box.appendChild(new_msg);
485
486                                        total_messages_element.innerHTML = parseInt( total_messages_element.innerHTML ) + 1;
487                                }
488                        }
489
490                        if(parseInt(alert_new_msg) && data.new_msgs > 0)
491                                alert(data['new_msgs'] > 1 ? get_lang("You have %1 new messages", data['new_msgs']) + "!" : get_lang("You have 1 new message") +"!");
492                        build_quota(data['quota']);
493                }
494                // Update Box BgColor
495                var box = Element("tbody_box");
496                if(box.childNodes.length > 1){
497                        updateBoxBgColor(box.childNodes);
498                }
499                connector.purgeCache();
500                update_menu();
501        }
502
503        msg_range_end = (current_page*preferences.max_email_per_page);
504        msg_range_begin = (msg_range_end-(preferences.max_email_per_page)+1);
505
506
507        //Get element tBody.
508        main = Element("tbody_box");
509        if(!main)
510                return;
511
512        // Get all TR (messages) in tBody.
513        main_list = main.childNodes;
514        var tmp = '';
515        var string_msgs_in_main = '';
516
517        var len = main_list.length;
518        for (var j=0; j < len; j++)
519                tmp += main_list[j].id + ',';
520
521        string_msgs_in_main = tmp.substring(0,(tmp.length-1));
522        if(!expresso_offline)
523                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);
524}
525
526function delete_msgs(folder, msgs_number, border_ID, show_success_msg,archive)
527{
528        if (arguments.length < 4){
529                show_success_msg = true;
530        }
531
532        if (folder == 'null')
533                folder = current_folder;
534
535        if(openTab.type[currentTab] == 1)
536                return move_search_msgs('content_id_'+currentTab,'INBOX'+cyrus_delimiter+trashfolder,trashfolder);
537
538        if(currentTab.toString().indexOf("_r") != -1){
539                        msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r"));
540        }
541
542        if (!archive && (parseInt(preferences.save_deleted_msg)) && (folder!='INBOX'+cyrus_delimiter+trashfolder)){
543                move_msgs2(folder, msgs_number, border_ID, 'INBOX'+cyrus_delimiter+trashfolder,trashfolder,show_success_msg );
544                return;
545        }
546
547        var handler_delete_msgs = function(data){
548
549                Element('chk_box_select_all_messages').checked = false;
550                if (currentTab)
551                        mail_msg = Element("tbody_box_"+currentTab);
552                else
553                        mail_msg = Element("tbody_box");
554
555                if ( preferences.use_shortcuts == '1') {
556                                //Last msg is selected
557                                if (mail_msg && exist_className(mail_msg.childNodes[mail_msg.childNodes.length-1], 'selected_shortcut_msg') ) {
558                                        select_msg('null', 'up', true);
559                                }
560                                else {
561                                        if (!select_msg('null', 'down', true)) {
562                                                select_msg('null', 'up', true);
563                                        }
564                                }
565                        }
566
567                if (show_success_msg) {
568                        if (data.msgs_number.length == 1)
569                                write_msg(get_lang("The message was deleted."));
570                        else
571                                write_msg(get_lang("The messages were deleted."));
572                }
573                if (openTab.type[currentTab] > 1){
574                        var msg_to_delete = Element(msgs_number);
575                        if (parseInt(preferences.delete_and_show_previous_message) && msg_to_delete) {
576                                if (msg_to_delete.previousSibling){
577                                        var previous_msg = msg_to_delete.previousSibling.id;
578                                        cExecute("$this.imap_functions.get_info_msg&msg_number="+previous_msg+"&msg_folder=" + url_encode(current_folder), show_msg);
579                                }
580                                else
581                                        delete_border(currentTab,'false');
582                        }
583                        else
584                                delete_border(currentTab,'false');
585                }
586                for (var i=0; i<data.msgs_number.length; i++){
587                                var msg_to_delete = Element(data.msgs_number[i]);
588                                if (msg_to_delete){
589                                                removeAll(msg_to_delete.id);
590                                }
591                }
592                Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) - data.msgs_number.length;
593                refresh();
594        }
595
596        if (msgs_number == 'selected')
597                msgs_number = get_selected_messages();
598        if (msgs_number.length > 0 || parseInt(msgs_number) > 0)
599                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, handler_delete_msgs);
600        else
601                write_msg(get_lang('No selected message.'));
602}
603
604
605function move_search_msgs(border_id, new_folder, new_folder_name){
606        var selected_messages = '';
607        var temp_msg;
608        var main_list = Element("tbody_box_"+currentTab.substr(7)).childNodes;
609        for (j = 0; j < main_list.length; j++)  {
610                var check_box = main_list[j].firstChild.firstChild;
611                if(check_box && check_box.checked) {
612                        if (proxy_mensagens.is_local_folder(main_list[j].getAttribute('name'))) {
613                                alert(get_lang("You cant manipulate local messages on search"));
614                                return;
615                        }
616                        selected_messages += main_list[j].id + ',';
617                }
618        }
619        selected_messages = selected_messages.substring(0,(selected_messages.length-1));
620        var handler_move_search_msgs = function(data){
621                if(!data || !data.msgs_number)
622                        return;
623                else if(data.deleted) {
624                        if (data.msgs_number.length == 1)
625                                write_msg(get_lang("The message was deleted."));
626                        else
627                                write_msg(get_lang("The messages were deleted."));
628                }
629                else{
630                        if (data.msgs_number.length == 1)
631                                write_msg(get_lang("The message was moved to folder ") + lang_folder(data.new_folder_name));
632                        else
633                                write_msg(get_lang("The messages were moved to folder ") + lang_folder(data.new_folder_name));
634                }
635
636                selected_messages = selected_messages.split(",");
637                for (i = 0; i < selected_messages.length; i++){
638                        removeAll(selected_messages[i]);
639                }
640                // Update Box BgColor
641                var box = Element("tbody_box_"+currentTab.substr(7)).childNodes;
642                if(main_list.length > 1){
643                        updateBoxBgColor(box);
644                }
645                connector.purgeCache();
646        }
647
648        if (selected_messages){
649                var selected_param = "";
650                if (selected_messages.indexOf(',') != -1)
651                {
652                        selected_msg_array = selected_messages.split(",");
653                        for (i = 0; i < selected_msg_array.length; i++){
654                                var tr = Element(selected_msg_array[i]);
655                                if (tr.getAttribute('name') == new_folder)
656                                {
657                                        write_msg(get_lang('At least one message have the same origin'));
658                                        return false;
659                                }
660                                trfolder = (tr.getAttribute('name') == null?get_current_folder():tr.getAttribute('name'));
661                                        selected_param += ','+trfolder+';'+tr.id.replace(/_[a-zA-Z0-9]+/,"");
662                        }
663                }
664                else
665                {
666                        var tr=Element(selected_messages);
667                        if (tr.getAttribute('name') == new_folder)
668                        {
669                                write_msg(get_lang('The origin folder and the destination folder are the same.'));
670                                return false;
671                        }
672                        trfolder = (tr.getAttribute('name') == null?get_current_folder():tr.getAttribute('name'));
673                        selected_param=trfolder+';'+tr.id.replace(/_[a-zA-Z0-9]+/,"");
674                }
675                var params = "";
676                if (!new_folder && parseInt(preferences.save_deleted_msg)){
677                        new_folder = 'INBOX'+cyrus_delimiter+trashfolder;
678                        new_folder_name = trashfolder;
679                        params = "&delete=true";
680                }
681
682                params += "&selected_messages="+url_encode(selected_param);
683                if(new_folder) {
684                        params += "&new_folder="+url_encode(new_folder);
685                        params += "&new_folder_name="+url_encode(new_folder_name);
686                }
687                cExecute ("$this.imap_functions.move_search_messages", handler_move_search_msgs, params);
688        }
689        else
690                write_msg(get_lang('No selected message.'));
691}
692
693function move_msgs2(folder, msgs_number, border_ID, new_folder, new_folder_name,show_success_msg)
694{
695    if (! folder || folder == 'null')
696        folder = Element("input_folder_"+msgs_number+"_r") ? Element("input_folder_"+msgs_number+"_r").value : (openTab.imapBox[currentTab] ? openTab.imapBox[currentTab]:get_current_folder());
697    if(openTab.type[currentTab] == 1)
698        return move_search_msgs('content_id_'+currentTab,new_folder,new_folder_name);
699
700    var handler_move_msgs = function(data)
701    {
702        if(typeof(data) == 'string')
703        {   
704            if (data.match(/^(.*)TRYCREATE(.*)$/))
705            {
706                connector.loadScript('TreeS');
707                var move_to_folder = data.match(/^(.*)Spam(.*)$/) ? "Spam" : trashfolder;
708                alert(get_lang('There is not %1 folder, Expresso is creating it for you... Please, repeat your request later.', move_to_folder));
709                connector.loadScript('TreeShow');
710                ttree.FOLDER = 'root';
711                ttreeBox.new_past(move_to_folder);
712                return false;
713            }
714            else
715            {
716                alert(get_lang('Error moving message.')+":\n"+data);
717                return false;
718            }
719        }
720       
721        //Este bloco verifica as permissoes ACL sobre pastas compartilhadas
722        if( data.status == false )
723        {
724            alert(get_lang("You don't have permission for this operation in this shared folder!"));
725            return false;
726        }
727       
728        mail_msg = ( Element("divScrollMain_"+numBox) ) ? Element("divScrollMain_"+numBox).firstChild.firstChild : Element("divScrollMain_0").firstChild.firstChild;
729       
730        if ( data.msgs_number.length == 1 )
731        {   
732            write_msg(get_lang("The message was moved to folder ") + lang_folder(data.new_folder_name));
733        }
734        else
735        {   
736            write_msg(get_lang("The messages were moved to folder ") + lang_folder(data.new_folder_name));
737        }
738
739        if ( openTab.type[currentTab] > 1 )
740        {
741            msg_to_delete = Element( data.msgs_number );
742           
743            if ( parseInt(preferences.delete_and_show_previous_message) && msg_to_delete )
744            {
745                if ( msg_to_delete.previousSibling )
746                {
747                    var previous_msg = msg_to_delete.previousSibling.id;
748                    cExecute("$this.imap_functions.get_info_msg&msg_number="+previous_msg+"&msg_folder=" + url_encode(folder), show_msg);
749                }
750                else
751                {   
752                    delete_border( data.border_ID, 'false' );
753                }
754            }
755            else
756            {   
757                delete_border( data.border_ID, 'false' );
758            }
759           
760            if( msg_to_delete != null )
761            {   
762                msg_to_delete.parentNode.removeChild( msg_to_delete );
763                //mail_msg.removeChild(msg_to_delete);
764            }
765           
766            if( data.border_ID.toString().indexOf("_r") > -1 )
767            {
768                var _msgSearch = data.border_ID.toString();
769                    _msgSearch = _msgSearch.substr(0, _msgSearch.indexOf("_r") );
770               
771                if( Element(_msgSearch) != null )
772                {
773                    Element(_msgSearch).parentNode.removeChild( Element(_msgSearch) );
774                }   
775            }   
776
777            // Update Box BgColor
778            if( Element("tbody_box") != null )
779            {
780                var box = Element("tbody_box");
781
782                if( box.childNodes.length > 0)
783                {
784                    updateBoxBgColor(box.childNodes);
785                }
786            }   
787        }
788        else
789        {
790            Element('chk_box_select_all_messages').checked = false;
791            if (! mail_msg)
792                mail_msg = Element("tbody_box");
793            data.msgs_number = data.msgs_number.split(",");
794
795            var msg_to_delete;
796            if( typeof(msgs_number) == 'string' )
797                all_search_msg = msgs_number.split(',');
798            else if( typeof(msgs_number) == 'number')
799                all_search_msg = msgs_number;
800
801            for (var i=0; i <= all_search_msg.length; i++)
802            {
803                msg_to_delete = Element(folder+';'+all_search_msg[i]);
804                if (msg_to_delete)
805                    msg_to_delete.parentNode.removeChild(msg_to_delete);
806            }
807
808            if ( preferences.use_shortcuts == '1') {
809                var all_messages = Element('tbody_box').childNodes;
810
811                //Last msg is selected
812                if ( exist_className(all_messages[all_messages.length-1], 'selected_shortcut_msg') ) {
813                    select_msg('null', 'up', true);
814                }
815                else {
816                    if (!select_msg('null', 'down', true)) {
817                        select_msg('null', 'up', true);
818                    }
819                }
820            }
821            for (var i=0; i<data.msgs_number.length; i++)
822            {
823                msg_to_delete = Element(data.msgs_number[i]);
824                if (msg_to_delete)
825                    mail_msg.removeChild(msg_to_delete);
826            }
827
828
829            if (data.msgs_number.length == 1)
830                write_msg(get_lang("The message was moved to folder ") + lang_folder(data.new_folder_name));
831            else
832                write_msg(get_lang("The messages were moved to folder ") + lang_folder(data.new_folder_name));
833            if (data.border_ID.indexOf('r') != -1){
834                if (parseInt(preferences.delete_and_show_previous_message) && folder == get_current_folder()){
835                    delete_border(data.border_ID,'false');
836                    show_msg(data.previous_msg);
837                }
838                else
839                    delete_border(data.border_ID,'false');
840            }
841            if(folder == get_current_folder())
842                Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) - data.msgs_number.length;
843
844            refresh();
845        }   
846       
847    }// END VAR HANDLER_MOVE_MSG
848
849    if (msgs_number == 'selected')
850    {
851        msgs_number = get_selected_messages();
852    }
853
854    if(openTab.type[currentTab] == 1)
855    {
856        return move_search_msgs('content_id_'+currentTab,new_folder,new_folder_name);
857    }
858
859    if(currentTab.toString().indexOf("_r") != -1)
860    {
861        msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r"));
862        border_ID   = currentTab.toString();
863    }
864
865    if( msgs_number.toString().indexOf("_s") != -1 )
866    {   
867        folder = Element(msgs_number).getAttribute("name");
868        msgs_number = msgs_number.toString().substr(0 ,msgs_number.toString().indexOf("_s") );
869    }
870   
871    if ( folder == new_folder )
872    {
873        write_msg(get_lang('The origin folder and the destination folder are the same.'));
874        return;
875    }
876
877    if (parseInt(msgs_number) > 0 || msgs_number.length > 0)
878        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);
879    else
880        write_msg(get_lang('No selected message.'));
881
882}
883
884
885function move_msgs(folder, msgs_number, border_ID, new_folder, new_folder_name) {
886        move_msgs2(folder, msgs_number, border_ID, new_folder, new_folder_name,true);
887}
888
889//MAILARCHIVE NEW FUNC
890function archive_msgs(folder,folder_dest,id_msgs){
891    /*if(proxy_mensagens.is_local_folder(folder)) {
892        write_msg(get_lang("You cant archive local mails"));
893        return;
894    }*/
895
896    if(currentTab.toString().indexOf("_r") != -1){
897        id_msgs = currentTab.toString().substr(0,currentTab.toString().indexOf("_r"));
898    }
899
900    if(!id_msgs)
901        id_msgs = get_selected_messages();
902
903    if(folder_dest=='local_root' || folder_dest==null) //Caso seja o primeiro arquivamento...
904        folder_dest = 'local_Inbox';
905
906    if (parseInt(id_msgs) > 0 || id_msgs.length > 0){
907        expresso_mail_archive.Archive(folder,folder_dest,id_msgs);                   
908    }
909    else
910        write_msg(get_lang('No selected message.'));
911}
912
913function get_selected_messages(){
914        try{
915                main = document.getElementById("divScrollMain_"+numBox).firstChild.firstChild;
916        }catch(e){
917        };
918
919        if (! main)
920                main = Element("tbody_box");
921
922        // Get all TR (messages) in tBody.
923        main_list = main.childNodes;
924
925        var selected_messages = '';
926        var selected_messages_by_shortcuts = '';
927        var j = 0;
928        for (j; j<(main_list.length); j++)
929        {
930
931                if ( (!isNaN(parseInt(numBox))) && (numBox == 0)) {
932                        check_box = Element("check_box_message_" + main_list[j].id);
933                }else {
934                        id_mensagem = main_list[j].id.split('_');
935                        check_box = Element("search_" + numBox + "_check_box_message_" + id_mensagem[0]);
936                }
937
938                if ((check_box) && (check_box.checked)) {
939
940                        var numericTest = /^[0-9]+$/;
941                        if (numericTest.test(main_list[j].id))
942                                selected_messages += main_list[j].id + ',';
943                        else
944                                selected_messages += id_mensagem[0] + ',';
945               
946                }
947       
948                if (preferences.use_shortcuts == '1')
949                {
950                        if ( exist_className(Element(main_list[j].id), 'selected_shortcut_msg') )
951                        {
952                                selected_messages_by_shortcuts += main_list[j].id + ',';
953                        }
954                }
955               
956        }
957        selected_messages = selected_messages.substring(0,(selected_messages.length-1));
958
959        if (preferences.use_shortcuts == '1')
960        {
961                selected_messages_by_shortcuts = selected_messages_by_shortcuts.substring(0,(selected_messages_by_shortcuts.length-1));
962
963                var array_selected_messages_by_shortcuts = selected_messages_by_shortcuts.split(",");
964                var array_selected_messages = selected_messages.split(",");
965
966                if ((array_selected_messages.length <= 1) && (array_selected_messages_by_shortcuts.length > 1))
967                {
968                        return selected_messages_by_shortcuts;
969                }
970        }
971
972        if (selected_messages == '')
973                return false;
974        else
975                return selected_messages;
976}
977
978function replaceAll(string, token, newtoken) {
979        while (string.indexOf(token) != -1) {
980                string = string.replace(token, newtoken);
981        }
982        return string;
983}
984
985function new_message_to(email) {
986        var new_border_ID = new_message('new','null');
987        document.getElementById("to_" + new_border_ID).value=email;
988}
989
990function new_message(type, border_ID){
991                if (Element('show_img_link_'+border_ID))
992                {
993                        show_msg_img(border_ID.match(/^\d*/)[0], Element('input_folder_'+border_ID).value);
994                }
995        var new_border_ID = draw_new_message(parseInt(border_ID));
996        if(typeof(openTab.type[new_border_ID]) != "undefined") {
997                if(tabTypes[type] == openTab.type[new_border_ID]) {
998                        return new_border_ID;
999                } else {
1000                        var a_types = { 6 : get_lang("Forward"),7 : get_lang("Reply"),
1001                                        8 : get_lang("Reply to all with history"),
1002                                        9 : get_lang("Reply without history"),
1003                                        10: get_lang("Reply to all without history")};
1004
1005                        if(!confirm(get_lang("Your message to %1 has not been saved or sent. "+
1006                                                "To %2 will be necessary open it again. Discard your message?",
1007                                                a_types[openTab.type[new_border_ID]].toUpperCase(),
1008                                                a_types[tabTypes[type]].toUpperCase()))){
1009                                return new_border_ID;
1010                        } else {
1011                                delete_border(currentTab);
1012                                new_border_ID = draw_new_message(parseInt(border_ID));
1013                        }
1014                }
1015        }
1016        if (new_border_ID == false)
1017        {
1018                setTimeout('new_message(\''+type+'\',\''+border_ID+'\');',500);
1019                return false;
1020        }
1021        openTab.type[new_border_ID] = tabTypes[type];
1022       
1023        // Salva a pasta da mensagem respondida ou encaminhada:
1024        var folder_message = Element("input_folder_"+border_ID);
1025        if(folder_message) {
1026                var input_current_folder = document.createElement('input');
1027                input_current_folder.id = "new_input_folder_"+border_ID;
1028                input_current_folder.name = "input_folder";
1029                input_current_folder.type = "hidden";
1030                input_current_folder.value = folder_message.value;
1031                Element("content_id_" + new_border_ID).appendChild(input_current_folder);
1032        }//Fim.
1033        var title = '';
1034        data = [];
1035        if (Element("from_" + border_ID)){
1036                        if (document.getElementById("reply_to_" + border_ID)){
1037                                data.to = document.getElementById("reply_to_values_" + border_ID).value;
1038                                data.to = data.to.replace(/&lt;/gi,"<");
1039                                data.to = data.to.replace(/&gt;/gi,">");
1040                }
1041                else {
1042                        if (document.getElementById("from_values_" + border_ID))
1043                        {
1044                                data.to = document.getElementById("from_values_" + border_ID).value;
1045                                data.to = data.to.replace(/&lt;/gi,"<");
1046                                data.to = data.to.replace(/&gt;/gi,">");
1047                        }
1048                }
1049
1050                if (document.getElementById("to_values_" + border_ID)){
1051                        data.to_all = document.getElementById("to_values_" + border_ID).value;
1052                        data.to_all = data.to_all.replace(/\n/gi," ");
1053                        data.to_all = data.to_all.replace(/&lt;/gi,"<");
1054                        data.to_all = data.to_all.replace(/&gt;/gi,">");
1055                        var _array_to_all = data.to_all.split(",");
1056                }
1057        }
1058
1059        if (document.getElementById("cc_" + border_ID)){
1060                data.cc = document.getElementById("cc_values_" + border_ID).value;
1061                data.cc = data.cc.replace(/&lt;/gi,"<");
1062                data.cc = data.cc.replace(/&gt;/gi,">");
1063        }
1064        if (document.getElementById("cco_" + border_ID)){
1065                data.cco = document.getElementById("cco_values_" + border_ID).value;
1066                data.cco = data.cco.replace(/&lt;/gi,"<");
1067                data.cco = data.cco.replace(/&gt;/gi,">");
1068        }
1069        if (document.getElementById("subject_" + border_ID))
1070                data.subject = document.getElementById("subject_" + border_ID).innerHTML;
1071        if (document.getElementById("body_" + border_ID))
1072                data.body = document.getElementById("body_" + border_ID).innerHTML;
1073
1074        if (Element('date_' + border_ID)){
1075                data.date = Element('date_' + border_ID).innerHTML;
1076        }
1077
1078        if (Element('date_day_' + border_ID)){
1079                data.date_day = Element('date_day_' + border_ID).value;
1080        }
1081        if (Element('date_hour_' + border_ID)){
1082                data.date_hour = Element('date_hour_' + border_ID).value;
1083        }
1084        if(typeof(preferences.signature) == 'undefined')
1085                preferences.signature = "";
1086        var signature = preferences.type_signature == 'html' ? preferences.signature : preferences.signature.replace(/\n/g, "<br>");
1087        if(type!="new" && type!="edit")
1088                data.is_local_message = (document.getElementById("is_local_"+border_ID).value=="1")?true:false;
1089        switch(type){
1090                case "reply_without_history":
1091                        Element("to_" + new_border_ID).value = data.to;
1092                        title = "Re: " + data.subject;
1093                        Element("subject_" + new_border_ID).value = "Re: " + data.subject;                     
1094                        useOriginalAttachments(new_border_ID,border_ID,data.is_local_message);
1095                        var body = Element("body_" + new_border_ID);
1096                        body.contentWindow.document.open();
1097                        // Insert the signature automaticaly at message body if use_signature preference is set
1098                        if (preferences.use_signature == "1"){
1099                                body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>" + "<br>" + signature + "</body></html>");
1100                        }
1101                        else{
1102                        body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'></body></html>");
1103                        }
1104                        body.contentWindow.document.close();
1105                        body.contentWindow.document.designMode = "on";
1106                        //Focus
1107                        if (is_ie)
1108                                window.setTimeout('document.getElementById("body_'+new_border_ID+'").contentWindow.focus();', 300);
1109                        else
1110                                body.contentWindow.focus();
1111                        config_events( body.contentWindow.document, 'onkeyup', function( e )
1112                        {
1113                                if ( e.keyCode == 13 )
1114                                {
1115                                        var paragraphs = body.contentWindow.document.getElementsByTagName( 'p' );
1116                                        for ( p = 0; p < paragraphs.length; p++ )
1117                                                paragraphs.item( p ).style.margin = '0px';
1118                                }
1119                        });
1120                        msg_reply_from = document.createElement('input');
1121                        msg_reply_from.id = "msg_reply_from_" + new_border_ID;
1122                        msg_reply_from.type = "hidden";
1123                        msg_reply_from.value = Element("msg_number_" + border_ID).value;
1124                        Element("content_id_" + new_border_ID).appendChild(msg_reply_from);
1125                        break;
1126                case "reply_with_history":
1127                        title = "Re: " + data.subject;
1128                        Element("subject_" + new_border_ID).value = "Re: " + data.subject;
1129                        Element("to_" + new_border_ID).value = data.to;
1130                        useOriginalAttachments(new_border_ID,border_ID,data.is_local_message);
1131                        block_quoted_body = make_body_reply(data.body, data.to, data.date_day, data.date_hour);
1132                        var body = Element("body_" + new_border_ID);
1133                        body.contentWindow.document.open();
1134                        // Insert the signature automaticaly at message body if use_signature preference is set
1135                        if (preferences.use_signature == "1") {
1136                                body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>" + "<br>" + signature + "</body></html>" + block_quoted_body + "</body></html>");
1137                        }
1138                        else {
1139                        body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>"+block_quoted_body+"</body></html>");
1140                        }
1141                        body.contentWindow.document.close();
1142                        body.contentWindow.document.designMode = "on";
1143                        //Focus
1144                        if (is_ie)
1145                                window.setTimeout('document.getElementById("body_'+new_border_ID+'").contentWindow.focus();', 300);
1146                        else
1147                                body.contentWindow.focus();
1148                        config_events( body.contentWindow.document, 'onkeyup', function( e )
1149                        {
1150                                if ( e.keyCode == 13 )
1151                                {
1152                                        var paragraphs = body.contentWindow.document.getElementsByTagName( 'p' );
1153                                        for ( p = 0; p < paragraphs.length; p++ )
1154                                                paragraphs.item( p ).style.margin = '0px';
1155                                }
1156                        });
1157                        msg_reply_from = document.createElement('input');
1158                        msg_reply_from.id = "msg_reply_from_" + new_border_ID;
1159                        msg_reply_from.type = "hidden";
1160                        msg_reply_from.value = Element("msg_number_" + border_ID).value;
1161                        Element("content_id_" + new_border_ID).appendChild(msg_reply_from);
1162                        break;
1163                case "reply_to_all_without_history":
1164                        // delete user email from to_all array.
1165                        data.to_all = new Array();
1166                        var j = 0;
1167                        for(i = 0; i < _array_to_all.length; i++) {
1168                                if(_array_to_all[i].lastIndexOf(Element("user_email").value) == "-1"){
1169                                        data.to_all[j++] = _array_to_all[i];
1170                                }
1171                        }
1172                        data.to_all = data.to_all.join(",");
1173
1174                        title = "Re: " + data.subject;
1175                        Element("subject_" + new_border_ID).value = "Re: " + data.subject;
1176                        Element("to_" + new_border_ID).value = data.to;
1177                        Element("to_" + new_border_ID).value += ', ' + data.to_all;
1178                        if (data.cc){
1179                                Element("cc_" + new_border_ID).value = data.cc;
1180                                Element("a_cc_link_" + new_border_ID).style.display='none';
1181                                Element("tr_cc_" + new_border_ID).style.display='';
1182                                Element('space_link_' + new_border_ID).style.display='none';
1183                        }
1184                        useOriginalAttachments(new_border_ID,border_ID,data.is_local_message);
1185                        var body = Element("body_" + new_border_ID);
1186                        body.contentWindow.document.open();
1187                        // Insert the signature automaticaly at message body if use_signature preference is set
1188                        if (preferences.use_signature == "1") {
1189                                body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>" + "<br>" + signature + "</body></html>");
1190                        }
1191                        else {
1192                        body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'></body></html>");
1193                        }
1194                        body.contentWindow.document.close();
1195                        body.contentWindow.document.designMode = "on";
1196                        //Focus
1197                        if (is_ie)
1198                                window.setTimeout('document.getElementById("body_'+new_border_ID+'").contentWindow.focus();', 300);
1199                        else
1200                                body.contentWindow.focus();
1201                        config_events( body.contentWindow.document, 'onkeyup', function( e )
1202                        {
1203                                if ( e.keyCode == 13 )
1204                                {
1205                                        var paragraphs = body.contentWindow.document.getElementsByTagName( 'p' );
1206                                        for ( p = 0; p < paragraphs.length; p++ )
1207                                                paragraphs.item( p ).style.margin = '0px';
1208                                }
1209                        });
1210                        msg_reply_from = document.createElement('input');
1211                        msg_reply_from.id = "msg_reply_from_" + new_border_ID;
1212                        msg_reply_from.type = "hidden";
1213                        msg_reply_from.value = Element("msg_number_" + border_ID).value;
1214                        Element("content_id_" + new_border_ID).appendChild(msg_reply_from);
1215                        break;
1216                case "reply_to_all_with_history":
1217                        // delete user email from to_all array.
1218                        data.to_all = new Array();
1219                        var j = 0;
1220                                for(i = 0; i < _array_to_all.length; i++) {
1221                                if(_array_to_all[i].lastIndexOf(Element("user_email").value) == "-1"){
1222                                        data.to_all[j++] = _array_to_all[i];
1223                                }
1224                }
1225                        if (data.to_all != get_lang("undisclosed-recipient"))
1226                                data.to_all = data.to_all.join(",");
1227                        else
1228                                data.to_all = "";
1229                        title = "Re: " + data.subject;
1230                        Element("to_" + new_border_ID).value = data.to;
1231                        Element("to_" + new_border_ID).value += ', ' + data.to_all;
1232                        if (data.cc){
1233                                document.getElementById("cc_" + new_border_ID).value = data.cc;
1234                                document.getElementById("a_cc_link_" + new_border_ID).style.display='none';
1235                                document.getElementById("tr_cc_" + new_border_ID).style.display='';
1236                                document.getElementById('space_link_' + new_border_ID).style.display='none';
1237                        }
1238                        document.getElementById("subject_" + new_border_ID).value = "Re: " + data.subject;
1239                        useOriginalAttachments(new_border_ID,border_ID,data.is_local_message);
1240                        block_quoted_body = make_body_reply(data.body, data.to, data.date_day, data.date_hour);
1241                        var body = document.getElementById("body_" + new_border_ID);
1242                        body.contentWindow.document.open();
1243                        // Insert the signature automaticaly at message body if use_signature preference is set
1244                        if (preferences.use_signature == "1") {
1245                                body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>" + "<br>" + signature + "</body></html>" + block_quoted_body + "</body></html>");
1246                        }
1247                        else {
1248                        body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>"+block_quoted_body+"</body></html>");
1249                        }
1250                        body.contentWindow.document.close();
1251                        body.contentWindow.document.designMode = "on";
1252                        //Focus
1253                        if (is_ie)
1254                                window.setTimeout('document.getElementById("body_'+new_border_ID+'").contentWindow.focus();', 300);
1255                        else
1256                                body.contentWindow.focus();
1257                        config_events( body.contentWindow.document, 'onkeyup', function( e )
1258                        {
1259                                if ( e.keyCode == 13 )
1260                                {
1261                                        var paragraphs = body.contentWindow.document.getElementsByTagName( 'p' );
1262                                        for ( p = 0; p < paragraphs.length; p++ )
1263                                                paragraphs.item( p ).style.margin = '0px';
1264                                }
1265                        });
1266                        msg_reply_from = document.createElement('input');
1267                        msg_reply_from.id = "msg_reply_from_" + new_border_ID;
1268                        msg_reply_from.type = "hidden";
1269                        msg_reply_from.value = Element("msg_number_" + border_ID).value;
1270                        Element("content_id_" + new_border_ID).appendChild(msg_reply_from);
1271                        break;
1272                case "forward":
1273                        data.is_local_message = (document.getElementById("is_local_"+border_ID).value=="1")?true:false;
1274                        msg_forward_from = document.createElement('input');
1275                        msg_forward_from.id = "msg_forward_from_" + new_border_ID;
1276                        msg_forward_from.type = "hidden";
1277                        msg_forward_from.value = Element("msg_number_" + border_ID).value;
1278                        Element("content_id_" + new_border_ID).appendChild(msg_forward_from);
1279                        title = "Fw: " + data.subject;
1280                        document.getElementById("subject_" + new_border_ID).value = "Fw: " + data.subject;
1281                        var divFiles = Element("divFiles_"+new_border_ID);
1282                        var campo_arquivo;
1283                        if (Element("attachments_" + border_ID)){
1284                                var attachments = document.getElementById("attachments_" + border_ID).getElementsByTagName("a");
1285                               
1286                                for (var i = (attachments.length > 1 ? 1 : 0); i < attachments.length; i++){
1287                                        if((attachments[i].tagName=="SPAN") || (attachments[i].tagName=="IMG") ||
1288                                                        ((attachments[i].href.indexOf("javascript:download_local_attachment")==-1)&&(attachments[i].href.indexOf("javascript:download_attachments")==-1)))
1289                                                continue;
1290                                        var link_attachment = document.createElement("A");
1291                                        link_attachment.setAttribute("href", attachments[i].href);
1292                                        link_attachment.innerHTML = attachments[i].firstChild.nodeValue + '<br/>';
1293                                        if (data.is_local_message) {//Local messages
1294                                                document.getElementById("is_local_forward"+new_border_ID).value = "1";
1295                                                var tmp = link_attachment.href.substring(link_attachment.href.indexOf("(") + 2);//Pula o parenteses e a aspas
1296                                                tmp = tmp.substring(0, tmp.length - 2);//corta a aspas e o parenteses
1297                                                tmp = replaceAll(tmp,"%20"," ");
1298                                                if (!tmp.match(/inc\/gotodownload.php/)) { //Anexos apï¿œs ticket #1257 que usa gotodownload
1299                                                        var tempNomeArquivo = tmp.split("/");
1300                                                        var nomeArquivo = tempNomeArquivo[tempNomeArquivo.length - 1];
1301                                                }
1302                                                else {
1303                                                        var tempNomeArquivo = tmp.split("&newfilename=");
1304                                                        var nomeArquivo = tempNomeArquivo[tempNomeArquivo.length - 1];
1305                                                }
1306                                               
1307                                                if(nomeArquivo.match(/\.[a-z]{1,3}\.php$/i)!=null) //Anexos no gears podem vir com .php depois de sua extensï¿œo. tenho que tirar o .php para ficar o nome real do arquivo.
1308                                                        nomeArquivo = nomeArquivo.substring(0, nomeArquivo.length - 4);
1309                                                campo_arquivo = addForwardedFile(new_border_ID, nomeArquivo, link_attachment.href);
1310                                                       
1311                                                if(!expresso_offline)
1312                                                        expresso_local_messages.getInputFileFromAnexo(campo_arquivo, tmp);
1313                                                else //To offline, you just set the url on value of a hidden input.
1314                                                        campo_arquivo.value = tmp;
1315
1316                                        }
1317                                        else {
1318                                                var tmp = link_attachment.href.replace("javascript:download_attachments(", "").replace(")", "");
1319                                                var a_tmp = tmp.split(',');
1320                                                tmp = link_attachment.innerHTML.substring(0,link_attachment.innerHTML.lastIndexOf("("));
1321                                                a_tmp[2] = "'"+tmp.substring(0,tmp.length-1)+"'";
1322                                                s_tmp = trim(escape(connector.serialize(a_tmp)));
1323                                                                       
1324                                                divFiles.innerHTML += "<input style='border:0' type='CHECKBOX' name='forwarding_attachments[]' checked value=\""+s_tmp+"\"/>";
1325                                                divFiles.innerHTML += "<link style='border:0' name='file_"+i+"' id='inputFile_"+border_ID+i+"'/>";
1326                                                divFiles.appendChild(link_attachment);
1327                                        }
1328                                }
1329                        }
1330                        var body = Element("body_" + new_border_ID);
1331                        body.contentWindow.document.open();
1332                        // Insert the signature automaticaly at message body if use_signature preference is set
1333                        if (preferences.use_signature == "1") {
1334                                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>");
1335                        }
1336                        else {
1337                        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>");
1338                        }
1339                        body.contentWindow.document.close();
1340                        body.contentWindow.document.designMode = "on";
1341                        config_events( body.contentWindow.document, 'onkeyup', function( e )
1342                        {
1343                                if ( e.keyCode == 13 )
1344                                {
1345                                        var paragraphs = body.contentWindow.document.getElementsByTagName( 'p' );
1346                                        for ( p = 0; p < paragraphs.length; p++ )
1347                                                paragraphs.item( p ).style.margin = '0px';
1348                                }
1349                        });
1350                        Element("to_" + new_border_ID).focus();
1351                        break;
1352                case "new":
1353                        title = get_lang("New Message");
1354                        if(Element('msg_number').value) {
1355                                var _to = Element('msg_number').value;
1356                                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}\])$/;
1357                                if(!reEmail.test(_to)){
1358                                        var array_contacts = contacts.split(',');
1359                                        for(i = 0; i < array_contacts.length;i++) {
1360                                                if(array_contacts[i].lastIndexOf(_to) != "-1"){
1361                                                        var _group = array_contacts[i].split(";");
1362                                                        _to = '"'+_group[0]+'" <'+_group[1]+'>';
1363                                                        break;
1364                                                }
1365                                        }
1366                                }
1367                                Element("to_" + new_border_ID).value = _to +',';
1368                                Element('msg_number').value = '';
1369                        }
1370                        var body = document.getElementById("body_" + new_border_ID);
1371                        body.contentWindow.document.open();
1372                        // Insert the signature automaticaly at message body if use_signature preference is set
1373                        if (preferences.use_signature == "1") {
1374                                body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>" + "<br>" + signature + "</body></html>");
1375                        }
1376                        else {
1377                        body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'></body></html>");
1378                        }
1379                        body.contentWindow.document.close();
1380                        body.contentWindow.document.designMode = "on";
1381                        config_events( body.contentWindow.document, 'onkeyup', function( e )
1382                        {
1383                                if ( e.keyCode == 13 )
1384                                {
1385                                        var paragraphs = body.contentWindow.document.getElementsByTagName( 'p' );
1386                                        for ( p = 0; p < paragraphs.length; p++ )
1387                                                paragraphs.item( p ).style.margin = '0px';
1388                                }
1389                        });
1390                        Element("to_" + new_border_ID).focus();
1391                        break;
1392                case "edit":
1393                        openTab.imapBox[new_border_ID] = folder_message.value;
1394                        openTab.toPreserve[new_border_ID] = true;
1395                        openTab.imapUid[new_border_ID] = parseInt(border_ID.substr(0,border_ID.indexOf("_")));
1396                        document.getElementById('font_border_id_'+new_border_ID).innerHTML = data.subject;
1397                        title = "Ediᅵᅵo: "+data.subject;
1398                       
1399                        data.to = Element("to_values_" + border_ID).value;
1400                        if( data.to != get_lang("without destination") ) {
1401                                data.to = data.to.replace(/&lt;/gi,"<");
1402                                data.to = data.to.replace(/&gt;/gi,">");
1403                        } else {
1404                                data.to = "";
1405                        }
1406
1407                        Element("to_" + new_border_ID).value = data.to;
1408                        if (data.cc){
1409                                Element("cc_" + new_border_ID).value = data.cc;
1410                                Element("space_link_" + new_border_ID).style.display = 'none';
1411                                Element("a_cc_link_" + new_border_ID).style.display = 'none';
1412                                Element("tr_cc_"+ new_border_ID).style.display = '';
1413                        }
1414                        if (data.cco){
1415                                Element("cco_" + new_border_ID).value = data.cco;
1416                                Element("space_link_" + new_border_ID).style.display = 'none';
1417                                Element("a_cco_link_" + new_border_ID).style.display = 'none';
1418                                Element("tr_cco_"+ new_border_ID).style.display = '';
1419                        }
1420                        Element("subject_" + new_border_ID).value = data.subject;
1421                       
1422                        if( Element("disposition_notification_" + border_ID) )
1423                                Element("return_receipt_" + new_border_ID).checked = true;
1424
1425                        var element_important_message = Element("important_message_" + new_border_ID);
1426                        if(element_important_message) {
1427                                if(Element("is_important_" + border_ID).value == "1") element_important_message.checked = true;
1428                        }
1429
1430                        var divFiles = Element("divFiles_"+new_border_ID);
1431                        if (Element("attachments_" + border_ID)){
1432                                var attachments = document.getElementById("attachments_" + border_ID).getElementsByTagName("a");
1433                                for (var i = (attachments.length > 1 ? 1 : 0); i < attachments.length; i++){
1434                                        if((attachments[i].tagName=="SPAN") || (attachments[i].tagName=="IMG") ||
1435                                                        ((attachments[i].href.indexOf("javascript:download_local_attachment")==-1)&&(attachments[i].href.indexOf("javascript:download_attachments")==-1)))
1436                                                continue;
1437                                        var link_attachment = document.createElement("A");
1438                                        link_attachment.setAttribute("href", attachments[i].href);
1439                                        link_attachment.innerHTML = attachments[i].innerHTML;
1440                                        var tmp = link_attachment.href.replace("javascript:download_attachments(", "").replace(")", "");
1441                                        var a_tmp = tmp.split(',');
1442                                        tmp = link_attachment.innerHTML.substring(0,link_attachment.innerHTML.lastIndexOf("("));
1443                                        a_tmp[2] = "'"+tmp.substring(0,tmp.length-1)+"'";
1444                                        //s_tmp = trim(escape(connector.serialize(a_tmp)));
1445                                        s_tmp = escape(connector.serialize(a_tmp));
1446                                        divFiles.innerHTML += "<input style='border:0' type='CHECKBOX' name='forwarding_attachments[]' checked value=\""+s_tmp+"\"/>";
1447                                        divFiles.appendChild(link_attachment);
1448                                }
1449                        }
1450                        var body = Element("body_" + new_border_ID);
1451                        body.contentWindow.document.open();
1452                        body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>"+data.body+"</body></html>");
1453                        body.contentWindow.document.close();
1454                        body.contentWindow.document.designMode = "on";
1455                        //Focus
1456                        if (is_ie)
1457                                window.setTimeout('document.getElementById("body_'+new_border_ID+'").contentWindow.focus();', 300);
1458                        else
1459                                body.contentWindow.focus();
1460                        config_events( body.contentWindow.document, 'onkeyup', function( e )
1461                        {
1462                                if ( e.keyCode == 13 )
1463                                {
1464                                        var paragraphs = body.contentWindow.document.getElementsByTagName( 'p' );
1465                                        for ( p = 0; p < paragraphs.length; p++ )
1466                                                paragraphs.item( p ).style.margin = '0px';
1467                                }
1468                        });
1469                        break;
1470                default:
1471        }
1472
1473        // IM Module Enabled
1474        if( window.parent.loadscript && loadscript.autoStatusIM )
1475        {
1476                config_events( body.contentWindow.document, "onkeypress", loadscript.autoStatusIM );
1477        }
1478
1479        if ( ! expresso_offline )
1480        {
1481                if ( mobile_device )
1482                {
1483                        var text_plain = document.getElementById( 'textplain_rt_checkbox_' + new_border_ID );
1484                        text_plain.click( );
1485                        text_plain.parentNode.style.display = 'none';
1486                }
1487        }
1488
1489        if (preferences.auto_save_draft == 1)
1490        {
1491                openTab.autosave_timer[new_border_ID] = false;
1492                var save_link = document.getElementById("save_message_options"+new_border_ID);
1493
1494                function auto_sav()
1495                        {
1496                                if (openTab.autosave_timer[new_border_ID])
1497                                        clearTimeout(openTab.autosave_timer[new_border_ID]);
1498
1499                                openTab.autosave_timer[new_border_ID] = setTimeout("save_msg("+new_border_ID+")", autosave_time);
1500        }
1501                config_events(body.contentWindow.document,'keypress', auto_sav);
1502        }
1503
1504        //BEGIN Tab event
1505        if (preferences.use_shortcuts == '1')
1506        {
1507                if (is_ie)
1508                {
1509                        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);
1510                }
1511                else
1512                {
1513                        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);
1514                }
1515        }
1516        // END Tab event
1517
1518        // Load default style for <PRE> tag, inside RichTextEditor.
1519        RichTextEditor.loadStyle("pre","main.css");
1520
1521        Element("border_id_" + new_border_ID).title = title;
1522        set_border_caption("border_id_" + new_border_ID, title);
1523
1524        if(!expresso_offline && preferences.use_SpellChecker != '0')
1525            setupSpellChecker();
1526
1527        return new_border_ID; //Preciso retornar o ID da nova mensagem.
1528}
1529
1530function useOriginalAttachments(new_id_border,old_id_border,is_local)
1531{
1532        var divFiles = Element("divFiles_"+new_id_border);
1533        if (Element("attachments_" + old_id_border)) {
1534                var areaOldAttachments = document.createElement("DIV");
1535                areaOldAttachments.id = "area_div_attachments_"+new_id_border;
1536                divFiles.appendChild(areaOldAttachments);
1537                var optAttachments = document.createElement("A");
1538                optAttachments.setAttribute("href","javascript:void(0)");
1539                optAttachments.tabIndex = -1;
1540                optAttachments.innerHTML = get_lang("Original attachments: add")+"</br>";
1541                areaOldAttachments.appendChild(optAttachments);
1542                var divOriginalAttachments = document.createElement("DIV");
1543                divOriginalAttachments.id = "div_attachments_"+new_id_border;
1544                optAttachments.onclick = function(){
1545                        if(document.getElementById('div_attachments_'+new_id_border))
1546                        {
1547                                areaOldAttachments.removeChild(document.getElementById('div_attachments_'+new_id_border));
1548                                optAttachments.innerHTML = get_lang("Original attachments: add")+"</br>";
1549                        }
1550                        else
1551                        {
1552                                areaOldAttachments.appendChild(divOriginalAttachments);
1553                                optAttachments.innerHTML = get_lang("Original attachments: remove")+"</br>";
1554                        }
1555                        return false;};
1556                        var attachments = document.getElementById("attachments_" + old_id_border).getElementsByTagName("a");
1557                        for (var i = (attachments.length > 1 ? 1 : 0); i < attachments.length; i++){
1558                                if (!is_local) {
1559                                        var link_attachment = document.createElement("A");
1560                                        link_attachment.setAttribute("href", attachments[i].href);
1561                                        link_attachment.innerHTML = attachments[i].firstChild.nodeValue + '<br/>';
1562                                        var tmp = link_attachment.href.replace("javascript:download_attachments(", "").replace(")", "");
1563                                        var a_tmp = tmp.split(',');
1564                                        tmp = link_attachment.innerHTML.substring(0,link_attachment.innerHTML.lastIndexOf("("));
1565                                        a_tmp[2] = "'"+tmp.substring(0,tmp.length-1)+"'";
1566                                        s_tmp = trim(escape(connector.serialize(a_tmp)));
1567                                        divOriginalAttachments.innerHTML += "<input style='border:0' type='CHECKBOX' name='forwarding_attachments[]' checked value=\""+s_tmp+"\"/>";
1568                                        divOriginalAttachments.appendChild(link_attachment);
1569                                }
1570                                else {
1571                                        document.getElementById("is_local_forward"+new_id_border).value = "1";
1572                                        var link = attachments[i].href.replace("javascript:download_local_attachment('", "").replace("')", "");
1573                                        var name = attachments[i].innerHTML.substring(0, attachments[i].innerHTML.lastIndexOf("("));
1574                                        var campo_arquivo = addForwardedFile(new_id_border, name, attachments[i].href, divOriginalAttachments);
1575                                        expresso_local_messages.getInputFileFromAnexo(campo_arquivo, link);
1576                                }
1577                        }
1578        }
1579}
1580
1581function send_message_return(data, ID){
1582        watch_changes_in_msg(ID);
1583
1584        var sign = false;
1585        var crypt = false;
1586        if ((preferences.use_assinar_criptografar != '0') && (preferences.use_signature_digital_cripto != '0')){
1587                var checkSign = document.getElementById('return_digital_'+ID)
1588                if (checkSign.checked){
1589                        sign = true;
1590                }
1591
1592                var checkCript = document.getElementById('return_cripto_'+ID);
1593                if (checkCript.checked){
1594                        crypt = true;
1595                }
1596        }
1597
1598        if (typeof(data) == 'object' && !data.success)
1599        {
1600                connector = new  cConnector();
1601                connector.showProgressBar();
1602
1603                if (sign || crypt){
1604                        var operation = '';
1605                        if (sign){
1606                                operation = 'sign';
1607                        }
1608                        else { // crypt
1609                                //TODO: Colocar mensagem de erro, e finalizar o mï¿œtodo.
1610                                operation = 'nop';
1611                        }
1612                }
1613
1614                if (data.body){
1615                        Element('cert_applet').doButtonClickAction(operation, ID, data.body);
1616                }
1617                else {
1618                        alert(data.error);
1619                }
1620
1621                return;
1622        }
1623        if(data && data.success == true ){
1624                // if send ok, set a flag as answered or forwarded
1625                var msg_number_replied = Element('msg_reply_from_'+ID);
1626                var msg_number_forwarded = Element('msg_forward_from_'+ID);
1627
1628                if (msg_number_replied){
1629                        proxy_mensagens.proxy_set_message_flag(msg_number_replied.value, 'answered');
1630                }
1631                else if (msg_number_forwarded){
1632                        proxy_mensagens.proxy_set_message_flag(msg_number_forwarded.value, 'forwarded');
1633                }
1634                if(expresso_offline){
1635                        write_msg(get_lang('Your message was sent to queue'));
1636                        delete_border(ID,'true');
1637                        return;
1638                }else{
1639                        if (wfolders.alert) {
1640                                write_msg(get_lang('Your message was sent and save.'));
1641                                wfolders.alert = false;
1642                        }
1643                        else {
1644                                write_msg(get_lang('Your message was sent.'));
1645                        }
1646                }
1647                // If new dynamic contacts were added, update the autocomplete ....
1648                if(data.new_contacts){
1649                        var ar_contacts = data.new_contacts.split(',;');
1650                        for(var j in ar_contacts){
1651                                // If the dynamic contact don't exist, update the autocomplete....
1652                                if((contacts+",").indexOf(ar_contacts[j]+",") == -1)
1653                                        contacts += "," + ar_contacts[j];
1654                        }
1655                }
1656                if ((! openTab.toPreserve[ID]) && (openTab.imapUid[ID] != 0))
1657                        cExecute ("$this.imap_functions.delete_msgs&folder="+openTab.imapBox[ID]+"&msgs_number="+openTab.imapUid[ID],function(data){ return });
1658                delete_border(ID,'true'); // Becarefull: email saved automatically should be deleted. delete_border erase information about openTab
1659        }
1660        else{
1661                if(data == 'Post-Content-Length')
1662                        write_msg(get_lang('The size of this message has exceeded  the limit (%1B).',Element('upload_max_filesize').value));
1663                else if(data)
1664                        write_msg(data);
1665                else
1666                        write_msg(get_lang("Connection failed with %1 Server. Try later.", "Web"));
1667               
1668                var save_link = Element("save_message_options_"+ID);
1669                save_link.onclick = function onclick(event) { openTab.toPreserve[ID] = true; save_msg(ID); } ;
1670                save_link.className = 'message_options';
1671        }
1672        if(!expresso_offline)
1673                connector.hideProgressBar();
1674}
1675
1676/**
1677 * Mï¿œtodo chamado pela applet para retornar o resultado da assinatura/decifragem do e-mail.
1678 * para posterior envio ao servidor.
1679 * @author Mï¿œrio Cï¿œsar Kolling <mario.kolling@serpro.gov.br>, Bruno Vieira da Costa <bruno.vieira-costa@serpro.gov.br>
1680 * @param smime O e-mail decifrado/assinado
1681 * @param ID O ID do e-mail, para saber em que aba esse e-mail serï¿œ mostrado.
1682 * @param operation A operaᅵᅵo que foi realizada pela applet (assinatura ou decifragem)
1683 */
1684function appletReturn(smime, ID, operation, folder){
1685
1686        if (!smime){ // Erro aconteceu ao assinar ou decifrar e-mail
1687                connector = new  cConnector();
1688                connector.hideProgressBar();
1689                return;
1690        }
1691
1692        if(operation=='decript')
1693        {
1694                var handler = function(data){
1695
1696                        if(data.msg_day == '')
1697                        {
1698                                header=expresso_local_messages.get_msg_date(data.original_ID, proxy_mensagens.is_local_folder(get_current_folder()));
1699
1700                                data.fulldate=header.fulldate;
1701                                data.smalldate=header.smalldate;
1702                                data.msg_day = header.msg_day;
1703                                data.msg_hour = header.msg_hour;
1704
1705                        }
1706                        this.show_msg(data);
1707                }
1708                para="&source="+smime+"&ID="+ID+"&folder="+folder;
1709                cExecute ("$this.imap_functions.show_decript&", handler, para);
1710        }else
1711        {
1712                ID_tmp = ID;
1713                // Lï¿œ a variï¿œvel e chama a nova funᅵᅵo cExecuteForm
1714                // Processa e envia para o servidor web
1715                // Faz o request do connector novamente. Talvez implementar no connector
1716                // para manter coerï¿œncia.
1717
1718                var handler_send_smime = function(data){
1719                        send_message_return(data, this.ID_tmp); // this is a hack to escape quotation form connector bug
1720                };
1721
1722                var textArea = document.createElement("TEXTAREA");
1723                textArea.style.display='none';
1724                textArea.id = 'smime';
1725                textArea.name = "smime";
1726                textArea.value += smime;
1727
1728                // Lï¿œ a variï¿œvel e chama a nova funᅵᅵo cExecuteForm
1729                // Processa e envia para o servidor web
1730                // Faz o request do connector novamente. Talvez implementar no connector
1731                // para manter coerï¿œncia.
1732                if (is_ie){
1733                        var i = 0;
1734                        while (document.forms(i).name != "form_message_"+ID){i++}
1735                        form = document.forms(i);
1736                }
1737                else
1738                        form = document.forms["form_message_"+ID];
1739
1740                form.appendChild(textArea);
1741
1742                cExecuteForm ("$this.imap_functions.send_mail", form, handler_send_smime, ID);
1743        }
1744}
1745
1746function send_message(ID, folder, folder_name){
1747
1748        //limpa autosave_timer[ID]; havia conflito quando uma mensagem ia ser enviada e nesse exato momento o autosave
1749                //entrava em execucao (a aba de edicao da mensagem continuava aberta e a mensagem exibida era a de que a mensagem foi
1750                //salva na pasta Rascunhos e nao que tinha sido enviada, como deveria);
1751                if (preferences.auto_save_draft == 1)
1752        {
1753                if (openTab.autosave_timer[ID])
1754                {
1755                        clearTimeout(openTab.autosave_timer[ID]);
1756                }
1757        }
1758
1759        if ( document.getElementById('viewsource_rt_checkbox_' + ID).checked == true )
1760                document.getElementById('viewsource_rt_checkbox_' + ID).click();
1761
1762        var save_link = Element("save_message_options_"+ID);
1763        save_link.onclick = '';
1764        save_link.className = 'message_options_inactive';
1765
1766        ID_tmp = ID;
1767
1768        var handler_send_message = function(data){
1769                send_message_return(data, this.ID_tmp); // this is a hack to escape quotation form connector bug
1770        };
1771
1772        var mail_as_plain = document.getElementById( 'textplain_rt_checkbox_' + ID );
1773        mail_as_plain = ( mail_as_plain ) ? mail_as_plain.checked : false;
1774
1775        var textArea = document.createElement("TEXTAREA");
1776        textArea.style.display='none';
1777        textArea.name = "body";
1778        body = document.getElementById("body_"+ID);
1779        textArea.value = ( ( mail_as_plain ) ? (is_ie ? body.contentWindow.document.body.innerHTML : body.previousSibling.value) : ( '<body>\r\n' + body.contentWindow.document.body.innerHTML + '\r\n</body>' ) );
1780        var input_folder = document.createElement("INPUT");
1781        input_folder.style.display='none';
1782        input_folder.name = "folder";
1783        input_folder.value = folder;
1784        var msg_id = document.createElement("INPUT");
1785        msg_id.style.display='none';
1786        msg_id.name = "msg_id";
1787        msg_id.value = openTab.imapUid[ID];
1788
1789        if (is_ie){
1790                var i = 0;
1791                while (document.forms(i).name != "form_message_"+ID){i++}
1792                form = document.forms(i);
1793        }
1794        else
1795                form = document.forms["form_message_"+ID];
1796
1797                // Evita que e-mails assinados sejam enviados quando o usuï¿œrio tenta enviar um e-mail
1798                // nï¿œo assinado (desmarcou a opᅵᅵo) apï¿œs tentar enviar um e-mail assinado que nï¿œo passou
1799                // no teste de validaᅵᅵo.
1800                var checkSign = document.getElementById('return_digital_'+ID);
1801                if (checkSign && !checkSign.checked){
1802                        var smime = Element('smime');
1803                        if (smime)
1804                        {
1805                                var parent = smime.parentNode;
1806                                parent.removeChild(smime);
1807                        }
1808                 }
1809
1810        form.appendChild(textArea);
1811        form.appendChild(input_folder);
1812        form.appendChild(msg_id);
1813
1814        var mail_type = document.createElement('input');
1815        mail_type.setAttribute('type', 'hidden');
1816        mail_type.name = 'type';
1817        mail_type.value = ( mail_as_plain ) ? 'plain' : 'html';
1818        form.appendChild(mail_type);
1819
1820        var _subject = trim(Element("subject_"+ID).value);
1821        if((_subject.length == 0) && !confirm(get_lang("Send this message without a subject?"))) {
1822                Element("subject_"+ID).focus();
1823                return;
1824        }
1825
1826        if (expresso_offline) {
1827                stringEmail = Element("to_"+ID).value;
1828                stringEmail += Element("cco_"+ID).value =='' ? "":", "+Element("cco_"+ID).value;
1829                stringEmail += Element("cc_"+ID).value =='' ? "":", "+Element("cc_"+ID).value;
1830                var invalidEmail = searchEmail(stringEmail);
1831                if(Element("to_"+ID).value=="" && Element("cco_"+ID).value=="" && Element("cc_"+ID).value=="") {
1832                        write_msg(get_lang("message without receiver."));
1833                        return;
1834                }else if(invalidEmail[0] == true){
1835                        write_msg("Os endereï¿œos de destinatï¿œrio a seguir estï¿œo incorretos: "+invalidEmail[1]);
1836                        return;
1837                }
1838
1839                sucess = expresso_local_messages.send_to_queue(form);
1840                var data_return = new Array();
1841                data_return.success = sucess;
1842                handler_send_message(data_return,ID);
1843        }
1844        else
1845                cExecuteForm("$this.imap_functions.send_mail", form, handler_send_message, ID);
1846}
1847function change_tr_properties(tr_element, newUid, newSubject){
1848        message_id=tr_element.id;
1849        var td_who = document.getElementById('td_who_'+message_id);
1850        if (typeof(newSubject) != 'undefined')
1851                td_who.nextSibling.innerHTML = newSubject;
1852        tr_element.id = newUid;
1853
1854        var openNewMessage = function () {
1855                cExecute("$this.imap_functions.get_info_msg&msg_number="+newUid
1856                                +"&msg_folder="+url_encode(current_folder),show_msg);
1857        };
1858        for (var i=2; i < 10; i++){
1859                if (typeof(tr_element.childNodes[i].id) != "undefined")
1860                        tr_element.childNodes[i].id = tr_element.childNodes[i].id.replace(message_id,newUid);
1861                tr_element.childNodes[i].onclick = openNewMessage;
1862        }
1863}
1864
1865function return_save(data,border_id,folder_name,folder_id,message_id)
1866{
1867        Element("send_button_"+border_id).style.visibility="visible";
1868        var handler_delete_msg = function(data){ refresh(preferences.alert_new_msg); };
1869
1870        if (data.append != true || !data)
1871        {
1872                RichTextEditor.saveFlag = 0;
1873                if (! data.append)
1874                        if(data == 'Post-Content-Length')
1875                                write_msg(get_lang('The size of this message has exceeded  the limit (%1B).', preferences.max_attachment_size ? preferences.max_attachment_size : Element('upload_max_filesize').value));
1876                        else
1877                                write_msg(get_lang('ERROR saving your message.'));
1878                else
1879                {
1880                        if (data.append.match(/^(.*)TRYCREATE(.*)$/))
1881                        {
1882                                connector.loadScript('TreeS');
1883                                alert(get_lang('There is not %1 folder, Expresso is creating it for you... Please, repeat your request later.',draftsfolder));
1884                                connector.loadScript('TreeShow');
1885                                ttree.FOLDER = 'root';
1886                                ttreeBox.new_past(draftsfolder);
1887                                setTimeout('save_msg('+border_id+')',3000);
1888                        }
1889                        else
1890                                write_msg(data.append);
1891                }
1892        }
1893        else
1894        {
1895                openTab.imapUid[border_id] = data.msg_no;
1896                openTab.imapBox[border_id] = data.folder_id;
1897
1898                var newTitle = document.getElementById('subject_'+border_id).value;
1899                if (newTitle == '')
1900                        newTitle = get_lang("No subject");
1901                set_border_caption('border_id_'+border_id, newTitle);
1902
1903                // Replace the embedded images for new uids
1904                var mainField = document.getElementById('body_'+border_id).contentWindow;
1905                var content_body =  mainField.document.getElementsByTagName('body').item(0).innerHTML;
1906                var body_images = content_body.match(/msg_num=\d*/g);
1907                var images_part = content_body.match(/msg_part=\d*/g);
1908                if (body_images)
1909                {
1910                        for (var i=0; i<body_images.length; i++){
1911                                content_body =  content_body.replace(body_images[i],"msg_num="+openTab.imapUid[border_id]);
1912                        }
1913                        var allImgs = new Array (images_part.length);
1914                                var j=-1;
1915                                for (var i in images_part){
1916
1917                                        if (is_ie)
1918                                                if (i == 0)
1919                                                        var image_number = parseInt(images_part[i].substr(9));
1920                                                else
1921                                                        image_number = "null";
1922                                        else
1923                                                var image_number = parseInt(images_part[i].substr(9));
1924
1925                                if (! isNaN(image_number))
1926                                        {
1927                                                if (! allImgs[image_number])
1928                                                {
1929                                                        allImgs[image_number] = true;
1930                                                        j--;
1931                                                }
1932                                        content_body = content_body.replace(images_part[i],'msg_part='+j);
1933                                        }
1934                                }
1935                        content_body = content_body.replace(/msg_part=-/g,'msg_part=');
1936
1937                        mainField.document.getElementsByTagName('body').item(0).innerHTML = content_body;
1938                }
1939
1940                //Replace all files to new files
1941                var divFiles = Element("divFiles_"+border_id);
1942                elFiles = divFiles.getElementsByTagName("input");
1943                var countCheck =0;
1944                for (var i=0; i<elFiles.length; i++) {
1945                        if(elFiles[i].value !=""){
1946                                if (elFiles[i].type == "checkbox") {
1947                                        countCheck++;
1948                                }
1949                                else {
1950                                        elFiles[i].value ="";
1951                                        parantNodeFile = elFiles[i].parentNode.parentNode;
1952                                        parantNodeFile.removeChild(elFiles[i].parentNode);
1953                                        i--;
1954                                }
1955
1956                        }
1957                };
1958
1959                var attach_files = connector.unserialize(data.files);
1960                if (attach_files != null) {
1961                        openTab.countFile[border_id] = attach_files.length;
1962                        att_index = countCheck;
1963                for (att_index; att_index < attach_files.length; att_index++){
1964
1965                        var link_attachment = document.createElement("A");
1966                        var fileName = attach_files[att_index].substr(0,attach_files[att_index].indexOf('_SIZE_'));
1967                        var fileSize = parseInt(attach_files[att_index].substr(attach_files[att_index].indexOf('_SIZE_')+6))/1024
1968                        link_attachment.innerHTML = fileName + " ("+borkb((parseInt(fileSize)*1024))+")";
1969
1970                        var href = "'"+folder_id+"','"+data.msg_no+"','"+(att_index)+"','"+(att_index+2)+"','base64'";
1971
1972                        link_attachment.setAttribute("href", "javascript:download_attachments("+href+")");
1973
1974                        var a_tmp = href.split(',');
1975                        a_tmp[2] = fileName;
1976                        s_tmp = escape(connector.serialize(a_tmp));
1977
1978                        var check_attachment = document.createElement("INPUT");
1979                        check_attachment.type = 'CHECKBOX';
1980                        check_attachment.name = 'forwarding_attachments[]';
1981                        check_attachment.value = trim(s_tmp);
1982
1983                        if (!divFiles.childNodes[0])
1984                        {
1985                            divFiles.appendChild(document.createElement("BR"));
1986                        }
1987                        else
1988                            {
1989                                divFiles.insertBefore(document.createElement("BR"),divFiles.childNodes[0]);
1990                            }
1991
1992                        divFiles.insertBefore(link_attachment,divFiles.childNodes[0]);
1993                        divFiles.insertBefore(check_attachment,divFiles.childNodes[0]);
1994
1995                        check_attachment.checked = true;
1996                }
1997        }
1998                if (message_id)
1999                {
2000                        cExecute ("$this.imap_functions.delete_msgs&folder="+openTab.imapBox[border_id]+"&msgs_number="+message_id,handler_delete_msg);
2001                        if (openTab.imapBox[0] == "INBOX/"+draftsfolder)
2002                        {
2003                                //Update mailbox
2004                                                var tr_msg = document.getElementById(message_id);
2005                                change_tr_properties(tr_msg, data.msg_no, data.subject);
2006                        }
2007                } else {
2008                        refresh();
2009                }
2010
2011                var save_link = Element("save_message_options_"+border_id);
2012                save_link.onclick = '';
2013                save_link.className = 'message_options_inactive';
2014                watch_changes_in_msg(border_id);
2015                write_msg(get_lang('Your message was save as draft in folder %1.', lang_folder(folder_name)));
2016                setTimeout( function(){ RichTextEditor.saveFlag = 1; }, 1000 );
2017        }
2018}
2019
2020function save_msg(border_id,withImage){
2021        if (typeof(withImage) == 'undefined')
2022                withImage = false;
2023
2024        var rt_checkbox = Element('viewsource_rt_checkbox_' + border_id);
2025        if (rt_checkbox == null)
2026                return false;
2027        if (rt_checkbox.checked == true)
2028                rt_checkbox.click();
2029
2030        var sendButton = Element("send_button_"+border_id);
2031        if (sendButton)
2032                sendButton.style.visibility="hidden";
2033
2034        if (openTab.imapBox[border_id] && openTab.type[border_id] < 6) //Gets the imap folder
2035                var folder_id = openTab.imapBox[border_id];
2036        else
2037                var folder_id = "INBOX/"+draftsfolder;
2038
2039        if (folder_id == 'INBOX') // and folder name from border
2040                var folder_name = get_lang(folder_id);
2041        else
2042                var folder_name = folder_id.substr(6);
2043
2044        // hack to avoid form connector bug,  escapes quotation. Please see #179
2045        tmp_border_id=border_id;
2046        tmp_folder_name=folder_name;
2047        tmp_folder_id=folder_id;
2048        message_id = openTab.imapUid[border_id];
2049        var handler_save_msg = function(data){ return_save(data,this.tmp_border_id,this.tmp_folder_name,this.tmp_folder_id,this.message_id); }
2050
2051        var mail_as_plain = document.getElementById( 'textplain_rt_checkbox_' + border_id );
2052        mail_as_plain = ( mail_as_plain ) ? mail_as_plain.checked : false;
2053
2054        var textArea = document.createElement("TEXTAREA");
2055        textArea.style.display='none';
2056        textArea.name = "body";
2057        body = document.getElementById("body_"+border_id);
2058        if (! body)
2059                return;
2060        textArea.value = ( ( mail_as_plain ) ? body.previousSibling.value : ( '<body>\r\n' + body.contentWindow.document.body.innerHTML + '\r\n</body>' ) );
2061        var input_folder = document.createElement("INPUT");
2062        input_folder.style.display='none';
2063        input_folder.name = "folder";
2064        input_folder.value = folder_id;
2065        var input_msgid = document.createElement("INPUT");
2066        input_msgid.style.display='none';
2067        input_msgid.name = "msg_id";
2068        input_msgid.value = message_id;
2069        var input_insertImg = document.createElement("INPUT");
2070        input_insertImg.style.display='none';
2071        input_insertImg.name = "insertImg";
2072        input_insertImg.value = withImage;
2073
2074
2075        if (is_ie)
2076        {
2077                var i = 0;
2078                while (document.forms(i).name != "form_message_"+border_id){i++}
2079                form = document.forms(i);
2080        }
2081        else
2082        {   
2083            form = document.forms["form_message_"+border_id];
2084        }
2085       
2086        form.appendChild(textArea);
2087        form.appendChild(input_folder);
2088        form.appendChild(input_msgid);
2089        form.appendChild(input_insertImg);
2090
2091        var mail_type = document.createElement('input');
2092        mail_type.name = 'type';
2093        mail_type.setAttribute('type', 'hidden');
2094        mail_type.value = ( mail_as_plain ) ? 'plain' : 'html';
2095        form.appendChild(mail_type);
2096
2097        cExecuteForm ("$this.imap_functions.save_msg", form, handler_save_msg,border_id);
2098}
2099
2100function return_saveas(data,border_id,folder_name)
2101{
2102        if(!verify_session(data))
2103                return;
2104        if (data.append)
2105        {
2106                delete_border(border_id,null);
2107                write_msg(get_lang('Your message was save as draft in folder %1.', folder_name));
2108        }
2109        else
2110                write_msg('ERROR saving your message.');
2111}
2112
2113
2114function save_as_msg(border_id, folder_id, folder_name){
2115        // hack to avoid form connector bug,  escapes quotation. Please see #179
2116        tmp_border_id=border_id;
2117        tmp_folder_name=folder_name;
2118        var handler_save_msg = function(data){ return_saveas(data,this.tmp_border_id,this.tmp_folder_name); }
2119        var textArea = document.createElement("TEXTAREA");
2120        textArea.style.display='none';
2121        textArea.name = "body";
2122        body = document.getElementById("body_"+border_id);
2123        textArea.value += '<body>\r\n';
2124        textArea.value += body.contentWindow.document.body.innerHTML;
2125        textArea.value += '\r\n</body>';
2126
2127        var input_folder = document.createElement("INPUT");
2128        input_folder.style.display='none';
2129        input_folder.name = "folder";
2130        input_folder.value = folder_id;
2131
2132        if (is_ie){
2133                var i = 0;
2134                while (document.forms(i).name != "form_message_"+border_id){i++}
2135                form = document.forms(i);
2136        }
2137        else
2138                form = document.forms["form_message_"+border_id];
2139        form.appendChild(textArea);
2140        form.appendChild(input_folder);
2141
2142        cExecuteForm ("$this.imap_functions.save_msg", form, handler_save_msg,border_id);
2143}
2144
2145
2146// Get checked messages
2147function set_messages_flag(flag, msgs_to_set){
2148        var handler_set_messages_flag = function (data){
2149                if(!verify_session(data))
2150                        return;
2151                var msgs_to_set = data.msgs_to_set.split(",");
2152
2153                if(!data.status) {
2154                        write_msg(data.msg);
2155                        Element('chk_box_select_all_messages').checked = false;
2156                        for (var i = 0; i < msgs_to_set.length; i++) {
2157                                Element("check_box_message_" + msgs_to_set[i]).checked = false;
2158                                remove_className(Element(msgs_to_set[i]), 'selected_msg');
2159                        }
2160                        if(!data.msgs_unflageds)
2161                                return;
2162                        else
2163                                msgs_to_set = data.msgs_unflageds.split(",");
2164                }
2165
2166                for (var i=0; i<msgs_to_set.length; i++){
2167                        if (preferences.use_cache == 'True')
2168                        {
2169                                if (current_folder == '')
2170                                        current_folder = 'INBOX';
2171                                var setFlag = function(msgObj) {
2172                                        switch(data.flag){
2173                                                case "unseen":
2174                                                        msgObj.Unseen = "U";
2175                                                        break;
2176                                                case "seen":
2177                                                        msgObj.Unseen = "";
2178                                                        break;
2179                                                case "flagged":
2180                                                        msgObj.Flagged = "F";
2181                                                        break;
2182                                                case "unflagged":
2183                                                        msgObj.Flagged = "";
2184                                                        break;
2185                                        }
2186                                }
2187                                proxy_mensagens.get_msg(msgs_to_set[i],current_folder, false, setFlag);
2188
2189
2190                        }
2191                        if(Element("check_box_message_" + msgs_to_set[i])){
2192                                switch(data.flag){
2193                                        case "unseen":
2194                                                set_msg_as_unread(msgs_to_set[i]);
2195                                                Element("check_box_message_" + msgs_to_set[i]).checked = false;
2196                                                break;
2197                                        case "seen":
2198                                                set_msg_as_read(msgs_to_set[i], false);
2199                                                Element("check_box_message_" + msgs_to_set[i]).checked = false;
2200                                                break;
2201                                        case "flagged":
2202                                                set_msg_as_flagged(msgs_to_set[i]);
2203                                                document.getElementById("check_box_message_" + msgs_to_set[i]).checked = false;
2204                                                break;
2205                                        case "unflagged":
2206                                                set_msg_as_unflagged(msgs_to_set[i]);
2207                                                Element("check_box_message_" + msgs_to_set[i]).checked = false;
2208                                                break;
2209                                }
2210                        }
2211                }
2212                Element('chk_box_select_all_messages').checked = false;
2213        }
2214
2215        var folder = get_current_folder();
2216        if (msgs_to_set == 'get_selected_messages')
2217                var msgs_to_set = this.get_selected_messages();
2218        else
2219                folder = Element("input_folder_"+msgs_to_set+"_r").value;
2220
2221        if (msgs_to_set)
2222                cExecute ("$this.imap_functions.set_messages_flag&folder="+folder+"&msgs_to_set="+msgs_to_set+"&flag="+flag, handler_set_messages_flag);
2223        else
2224                write_msg(get_lang('No selected message.'));
2225}
2226
2227// By message number
2228function set_message_flag(msg_number, flag, func_after_flag_change){
2229        var msg_number_folder = Element("new_input_folder_"+msg_number+"_r"); //Mensagens respondidas/encaminhadas
2230        if(!msg_number_folder)
2231                var msg_number_folder = Element("input_folder_"+msg_number+"_r"); //Mensagens abertas
2232       
2233        var handler_set_messages_flag = function (data){
2234                if(!verify_session(data))
2235                        return;
2236                if(!data.status) {
2237                        write_msg(get_lang("this message cant be marked as normal"));
2238                        return;
2239                }
2240                else if(func_after_flag_change) {
2241                        func_after_flag_change(true);
2242                }
2243                if (data.status && Element("td_message_answered_"+msg_number)) {
2244                       
2245                        switch(flag){
2246                                case "unseen":
2247                                        set_msg_as_unread(msg_number);
2248                                        break;
2249                                case "seen":
2250                                        set_msg_as_read(msg_number);
2251                                        break;
2252                                case "flagged":
2253                                        set_msg_as_flagged(msg_number);
2254                                        break;
2255                                case "unflagged":
2256                                        set_msg_as_unflagged(msg_number);
2257                                        break;
2258                                case "answered":
2259                                        Element("td_message_answered_"+msg_number).innerHTML = '<img src=templates/'+template+'/images/answered.gif title=Respondida>';
2260                                        break;
2261                                case "forwarded":
2262                                        Element("td_message_answered_"+msg_number).innerHTML = '<img src=templates/'+template+'/images/forwarded.gif title=Encaminhada>';
2263                                        break;
2264                        }                               
2265                } else {
2266                        refresh();
2267                }
2268        }
2269        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);
2270}
2271
2272function print_all(){
2273        if (openTab.type[currentTab] == 2)
2274                return print_msg(current_folder,currentTab.substr(0,currentTab.indexOf("_r")),currentTab);
2275
2276        var folder= Element('border_id_0').innerHTML;
2277        var body = Element('divScrollMain_'+numBox).innerHTML;
2278        var print_width = screen.width - 200;
2279        var x = ((screen.width - print_width) / 2);
2280        var y = ((screen.height - 400) / 2) - 35;
2281        var window_print = window.open('','ExpressoMail','width='+print_width+',height=400,resizable=yes,scrollbars=yes,left='+x+',top='+y);
2282        var seekDot = /\<img /gi;
2283        body = body.replace(seekDot, "<img style='display:none' ");
2284        seekDot = /\<input /gi;
2285        body = body.replace(seekDot, "<input style='display:none' ");
2286
2287        while (1){
2288                try{
2289                        var html = '<br>';
2290                        html += "<h4>ExpressoLivre - ExpressoMail</h4>";
2291                        html += folder+"<hr>";
2292
2293                        window_print.document.body.innerHTML = html + '<blockquote><font size="2">' +
2294                        '<table style="font-size:12" width="'+(is_ie ? "94%" : "100%" )+'">' +
2295                        '<TD width="25%" align="center">'+get_lang("Who")+'</TD>' +
2296                        '<TD align="center" width="'+(is_ie ? "50%" : "55%" )+'">'+get_lang("Subject")+'</TD>' +
2297                        '<TD align="center" width="11%">'+get_lang("Date")+'</TD>' +
2298                        '<TD align="center" width="'+(is_ie ? "10%" : "9%" )+'">'+get_lang("Size")+'</TD></TR></table>'
2299                        + body + '</font></blockquote>';
2300                        break;
2301                }
2302                catch(e){
2303                        //alert(e.message);
2304                }
2305        }
2306        window_print.document.close();
2307        window_print.print();
2308}
2309
2310
2311function print_msg(msg_folder, msg_number, border_ID){
2312        var div_toaddress_full = Element("div_toaddress_full_"+border_ID);
2313        var div_ccaddress_full = Element("div_ccaddress_full_"+border_ID);
2314        var div_ccoaddress_full = Element("div_ccoaddress_full_"+border_ID);
2315        var printListTO = (div_toaddress_full && div_toaddress_full.style.display != 'none') || toaddress_array[border_ID].length == 1 ? true : false; 
2316        var printListCC = (div_ccaddress_full && div_ccaddress_full.style.display != 'none') || !div_ccaddress_full ? true : false;
2317        var printListCCO = (div_ccoaddress_full && div_ccoaddress_full.style.display != 'none') || !div_ccoaddress_full ? true : false;
2318        var sender              = Element('sender_values_'+border_ID) ? Element('sender_values_'+border_ID).value : null;
2319        var from                = Element('from_values_'+border_ID) ? Element('from_values_'+border_ID).value : null;
2320        var to                  = Element('to_values_'+border_ID) ? Element('to_values_'+border_ID).value :null;
2321        var cco                 = Element('cco_values_'+border_ID) ? Element('cco_values_'+border_ID).value : null;
2322        var cc                  = Element('cc_values_'+border_ID) ? Element('cc_values_'+border_ID).value : null;               
2323        var date                =  Element('date_'+border_ID); 
2324        var subject             = Element('subject_'+border_ID);
2325        var attachments = Element('attachments_'+border_ID);
2326        var body                = Element('body_'+border_ID);
2327
2328        if(!is_ie)
2329            {
2330                var link = location.href.replace(/\/expressoMail1_2\/(.*)/, "");
2331                var tab_tags = body.getElementsByTagName("IMG");
2332                for(var i = 0; i < tab_tags.length;i++)
2333                    {
2334                        var _img = document.createElement("IMG");
2335                        _img.src = tab_tags[i].src;
2336                        if(tab_tags[i].src.toUpperCase().indexOf('/INC/SHOW_EMBEDDED_ATTACH.PHP?MSG_FOLDER=') > -1)
2337                            {
2338                                _img.src = link + '/expressoMail1_2'+tab_tags[i].src.substr(tab_tags[i].src.toUpperCase().indexOf('/INC/SHOW_EMBEDDED_ATTACH.PHP?MSG_FOLDER='));
2339                            }
2340                        tab_tags[i].parentNode.replaceChild(_img,tab_tags[i]);
2341                    }
2342            }
2343        var print_width = screen.width - 200;
2344        var x = ((screen.width - print_width) / 2);
2345        var y = ((screen.height - 400) / 2) - 35;
2346        var window_print = window.open('','ExpressoMail','width='+print_width+',height=400,resizable=yes,scrollbars=yes,left='+x+',top='+y);
2347        if(window_print == null) {
2348                alert(get_lang("The Anti Pop-Up is enabled. Allow this site (%1) for print.",document.location.hostname));
2349                return;
2350        }
2351
2352        //needed to get the names of the attachments... only.
2353        if(attachments != null)
2354        {
2355                var a = attachments.childNodes;
2356                var attachs = "";
2357                var show_attachs = "";
2358                var ii = a.length >2?2:1;
2359                for(i=ii;i<a.length;i++)
2360                {
2361                        if(a[i].tagName && a[i].tagName == "A")
2362                        {
2363                                attachs += a[i].innerHTML;
2364                        }
2365                }
2366                show_attachs = "<tr><td width=7%><font size='2'>" + get_lang('Attachments: ')+ " </font></td><td><font size='2'>"+attachs+"</font></td></tr>";
2367        } else{
2368                show_attachs = "";
2369        }
2370        var current_path = window.location.href.substr(0,window.location.href.lastIndexOf("/"));
2371        var head = '<head><title></title><link href="'+current_path+'/templates/default/main.css" type="text/css" rel="stylesheet"></head>'; 
2372        window_print.document.write(head);
2373
2374        while (1){
2375                try{
2376                        var html ='<body>';
2377                        html += "<h4>ExpressoLivre - ExpressoMail</h4><hr>";
2378                        html += '<table><tbody>';
2379                        if(sender)
2380                                html += "<tr><td width=7% noWrap><font size='2'>" + get_lang('Sent by') + ": </font></td><td><font size='2'>"+sender+"</font></td></tr>";
2381                        if(from)
2382                                html += "<tr><td width=7%><font size='2'>" + get_lang('From') + ": </font></td><td><font size='2'>"+from+"</font></td></tr>";
2383                        if(to) {
2384                                if(!printListTO)
2385                                        to = 'Os destinatï¿œrios nï¿œo estï¿œo sendo exibidos para esta impressï¿œo';
2386                                html += "<tr><td width=7%><font size='2'>" + get_lang('To') + ": </font></td><td><font size='2'>"+to+"</font></td></tr>";
2387                        }
2388                        if (cc) {
2389                                if(!printListCC)
2390                                        cc = 'Os destinatï¿œrios nï¿œo estï¿œo sendo exibidos para esta impressï¿œo';
2391                                html += "<tr><td width=7%><font size='2'>" + get_lang('Cc') + ": </font></td><td><font size='2'>"+cc+"</font></td></tr>";
2392                        }
2393                        if (cco) {
2394                                if(!printListCCO)
2395                                        cco = 'Os destinatï¿œrios nï¿œo estï¿œo sendo exibidos para esta impressï¿œo';
2396                                html += "<tr><td width=7%><font size='2'>" + get_lang('Cco') + ": </font></td><td><font size='2'>"+cco+"</font></td></tr>";
2397                        }
2398                        if(date)
2399                                html += "<tr><td width=7%><font size='2'>" + get_lang('Date') + ": </font></td><td><font size='2'>"+date.innerHTML+"</font></td></tr>";
2400                        html += "<tr><td width=7%><font size='2'>" + get_lang('Subject')+ ": </font></td><td><font size='2'>"+subject.innerHTML+"</font></td></tr>";
2401                        html += show_attachs; //to show the names of the attachments
2402                        html += "</tbody></table><hr>";
2403                        window_print.document.write(html + body.innerHTML);
2404                        if(!is_ie){
2405                                var tab_tags = window_print.document.getElementsByTagName("IMG");
2406                                for(var i = 0; i < tab_tags.length;i++){
2407                                        var _img = document.createElement("IMG");
2408                                        _img.src = tab_tags[i].src;
2409                                        tab_tags[i].parentNode.replaceChild(_img,tab_tags[i]);
2410                                }
2411                        }
2412                        break;
2413                }
2414                catch(e){
2415                        //alert(e.message);
2416                }
2417        }
2418        window_print.document.close();
2419        window_print.print();
2420}
2421
2422function empty_trash_imap(){
2423        var handler_empty_trash = function(data){
2424                Element('chk_box_select_all_messages').checked = false;
2425                if(!verify_session(data))
2426                        return;
2427                tree_folders.getNodeById('INBOX'+cyrus_delimiter+trashfolder).alter({caption: get_lang("Trash")});
2428                tree_folders.getNodeById('INBOX'+cyrus_delimiter+trashfolder)._refresh();
2429                update_quota(get_current_folder());
2430                if (data){
2431                        write_msg(get_lang('Your Trash folder was empty.'));
2432                        if (get_current_folder() == 'INBOX'+cyrus_delimiter+trashfolder){
2433                                draw_paging(0);
2434                                kill_current_box();
2435                                Element('tot_m').innerHTML = 0;
2436                                Element('new_m').innerHTML = 0;
2437                        }
2438                }
2439                else
2440                        write_msg(get_lang('ERROR emptying your Trash folder.'));
2441        }
2442        var realyEmptyTrash=confirm(get_lang('Do you really want to empty your trash folder?'));
2443        if (realyEmptyTrash)
2444                cExecute ("$this.imap_functions.empty_folder&clean_folder="+"imapDefaultTrashFolder", handler_empty_trash);
2445}
2446
2447function empty_spam_imap(){
2448        var handler_empty_spam = function(data){
2449                Element('chk_box_select_all_messages').checked = false;
2450                if(!verify_session(data))
2451                        return;
2452                if (get_current_folder() == 'INBOX'+cyrus_delimiter+spamfolder){
2453                        draw_paging(0);
2454                        kill_current_box();
2455                }
2456                tree_folders.getNodeById('INBOX'+cyrus_delimiter+spamfolder).alter({caption: get_lang("Spam")});
2457                tree_folders.getNodeById('INBOX'+cyrus_delimiter+spamfolder)._refresh();
2458                update_quota(get_current_folder());
2459                if (data)
2460                        write_msg(get_lang('Your Spam folder was empty.'));
2461                else
2462                        write_msg(get_lang('ERROR emptying your Spam folder.'));
2463        }
2464        var realyEmptySpam=confirm(get_lang('Do you really want to empty your spam folder?'));
2465        if (realyEmptySpam)
2466                cExecute ("$this.imap_functions.empty_folder&clean_folder="+"imapDefaultSpamFolder", handler_empty_spam);
2467}
2468
2469
2470function export_all_selected_msgs(){
2471        if (openTab.type[currentTab] > 1){
2472                source_msg(currentTab,current_folder);
2473                return;
2474        }
2475        var msgs_to_export = this.get_selected_messages();
2476
2477        var handler_export_all_selected_msgs = function(data){
2478
2479                if(!data){
2480                        write_msg(get_lang('Error compressing messages (ZIP). Contact the administrator.'));
2481                }
2482                else
2483                        download_attachments(null, null, data, null,null,'mensagens.zip');
2484        }
2485
2486        if (msgs_to_export) {
2487                cExecute ("$this.exporteml.makeAll", handler_export_all_selected_msgs, "folder="+get_current_folder()+"&msgs_to_export="+msgs_to_export);
2488                write_msg(get_lang('You must wait while the messages will be exported...'));
2489        }
2490        else
2491                write_msg(get_lang('No selected message.'));
2492}
2493
2494function select_all_search_messages(select, id){
2495        var search_box = Element("table_resultsearch_" + id.substr(18)).firstChild;
2496        var felement = search_box.firstChild;
2497        while(felement)
2498        {
2499        if (select)
2500                felement.firstChild.firstChild.checked = true;
2501        else
2502                felement.firstChild.firstChild.checked = false;
2503        felement = felement.nextSibling;
2504        }
2505}
2506
2507function verify_session(data){
2508
2509        if(data && data.imap_error) {
2510                if(data.imap_error == "nosession")
2511                        write_msg(get_lang("your session could not be verified."));
2512                else
2513                        write_msg(data.imap_error);
2514                // Hold sesion for edit message.
2515                //if(!hold_session)
2516                //      location.href="../login.php?cd=10&phpgw_forward=%2FexpressoMail1_2%2Findex.php";
2517                return false;
2518        }
2519        else
2520                return true;
2521}
2522
2523// Save image file.
2524function save_image(e,thumb,file_type){
2525        file_type = file_type.replace("/",".");
2526        thumb.oncontextmenu = function(e) {
2527                return false;
2528        }
2529        var _button = is_ie ? window.event.button : e.which;
2530        var     _target = is_ie ? event.srcElement : e.target;
2531
2532        if(_button == 2 || _button == 3) {
2533                var _params = _target.id.split(";;");
2534                download_attachments(_params[0],_params[1],_params[2],_params[3],_params[4],file_type);
2535        }
2536}
2537
2538function nospam(msgs_number, border_ID, folder){
2539        if (folder == 'null')
2540                folder = get_current_folder();
2541        var new_folder  = 'INBOX';
2542        var new_folder_name = get_lang('INBOX');
2543        var handler_move_msgs = function(data){
2544                if (msgs_number == 'selected')
2545                        set_messages_flag("unseen", "get_selected_messages");
2546                else
2547                        proxy_mensagens.proxy_set_message_flag(msgs_number, "unseen");
2548                proxy_mensagens.proxy_move_messages(folder, msgs_number, border_ID, new_folder, new_folder_name);
2549
2550                if (openTab.type[currentTab] > 1)
2551                        delete_border(currentTab,'false');
2552        }
2553
2554        if(currentTab.toString().indexOf("_r") != -1)
2555                msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r"));
2556        else if(msgs_number == 'selected')
2557                msgs_number = get_selected_messages();
2558
2559        if (parseInt(msgs_number) > 0 || msgs_number.length > 0)
2560                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);
2561        else
2562                write_msg(get_lang('No selected message.'));
2563}
2564
2565function spam(folder, msgs_number, border_ID){
2566        if (folder == 'null')
2567                folder = get_current_folder();
2568        var new_folder = 'INBOX'+cyrus_delimiter+'Spam';
2569        var new_folder_name = 'Spam';
2570        var handler_move_msgs = function(data){
2571                proxy_mensagens.proxy_move_messages(folder, msgs_number, border_ID, new_folder, new_folder_name);
2572                if (openTab.type[currentTab] > 1)
2573                        delete_border(currentTab,'false');
2574        }
2575
2576        if(currentTab.toString().indexOf("_r") != -1)
2577                msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r"));
2578        else if(msgs_number == 'selected')
2579                msgs_number = get_selected_messages();
2580
2581        if(parseInt(msgs_number) > 0 || msgs_number.length > 0)
2582                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);
2583        else
2584                write_msg(get_lang('No selected message.'));
2585}
2586
2587function import_window(){
2588        var win = arrayJSWin["import_window"];
2589        var form_upload = Element("form_upload");
2590        if(!win) {
2591                var form = document.createElement("DIV");
2592                form.id  = "import_window";
2593                form.style.visibility = "hidden";
2594                form.style.position = "absolute";
2595                form.style.background = "#eeeeee";
2596                form.style.left = "0px";
2597                form.style.top  = "0px";
2598                form.style.width = "0px";
2599                form.style.height = "0px";
2600                document.body.appendChild(form);
2601                form_upload = document.createElement("DIV");
2602                form_upload.id = "form_upload";
2603                form_upload.style.position = "absolute";
2604                form_upload.style.top = "5px";
2605                form_upload.style.left = "5px";
2606                form_upload.name =  get_lang('zip mails to import');
2607                form_upload.style.width = "450px";
2608                form_upload.style.height = "75px";
2609                form.appendChild(form_upload);
2610                form.style.width  =  form.firstChild.style.width;
2611                form.style.height = form.firstChild.style.height;
2612                form.style.zIndex = "10000";
2613                var title = form.firstChild.name;
2614                var wHeight = form.offsetHeight + "px";
2615                var wWidth =  form.offsetWidth   + "px";
2616                form.style.width = form.offsetWidth - 5;
2617                win = new dJSWin({
2618                        id: 'win_'+form.id,
2619                        content_id: form.id,
2620                        width: wWidth,
2621                        height: wHeight,
2622                        title_color: '#3978d6',
2623                        bg_color: '#eee',
2624                        title: title,
2625                        title_text_color: 'white',
2626                        button_x_img: '../phpgwapi/images/winclose.gif',
2627                        border: true });
2628                win.draw();
2629        }
2630        form_upload.innerHTML = '<form method="POST" name="form_import" enctype="multipart/form-data">'+get_lang('zip mails to import')+':<br>'+
2631        '<input name="file_1" maxlength="255" size="50" id="file_1" type="file"><br>' +
2632        '<input title="'+get_lang('Select a folder')+'"  value="' + get_lang('Select a folder') + '"' + 'type="button" onclick="javascript:select_import_folder()">&nbsp;' +
2633        '<input title="' + get_lang('Close') + '"  value="' + get_lang('Close') + '"' +
2634        ' type="button" onclick="arrayJSWin[\'import_window\'].close()"></form>';
2635        win.open();
2636}
2637
2638function import_msgs(wfolders_tree){
2639        function handler(data){
2640                // Its necessary to encapsulate the data returned (IE bugfix)
2641                return_import_msgs(data,wfolders_tree);
2642        }
2643        var countFiles = document.form_import.countFiles;
2644        if(!countFiles){
2645                countFiles = document.createElement("INPUT");
2646                countFiles.type = "hidden";
2647                countFiles.name = "countFiles";
2648                countFiles.value = "1";
2649                document.form_import.appendChild(countFiles);
2650        }
2651        var folder = document.createElement("INPUT");
2652        folder.type = "hidden";
2653        folder.name = "folder";
2654        folder.value = wfolders_tree._selected.id;
2655        document.form_import.appendChild(folder);
2656        write_msg(get_lang('You must wait while the messages will be imported...'));
2657
2658        cExecuteForm('$this.imap_functions.import_msgs', document.form_import, handler);
2659}
2660function return_import_msgs(data, wfolders_tree){
2661        if(data && data.error){
2662                write_msg(data.error);
2663        }
2664        else{
2665                if(data == 'Post-Content-Length')
2666                        write_msg(get_lang('The size of this message has exceeded  the limit (%1B).', preferences.max_attachment_size ? preferences.max_attachment_size : Element('upload_max_filesize').value));
2667                else {  /*
2668                        * @author Rommel Cysne (rommel.cysne@serpro.gov.br)
2669                        * @date 2009/05/15
2670                        * Foi colocado um teste para verificar se a pasta selecionada, passada como parametro,
2671                        * eh uma pasta local (qualquer uma)
2672                        */
2673                        var er = /^local_/;
2674                        if ( er.test(wfolders_tree._selected.id) )
2675                        {
2676                                archive_msgs('INBOX/Lixeira/tmpMoveToLocal',wfolders_tree._selected.id,data);
2677                                cExecute('$this.imap_functions.delete_mailbox',function(){},'del_past=INBOX/Lixeira/tmpMoveToLocal');
2678                        }
2679                                                 else{
2680                                write_msg(get_lang(data));
2681                                arrayJSWin["import_window"].close();
2682                                if(openTab.imapBox[0] == wfolders_tree._selected.id)
2683                                {
2684                                        openTab.imapBox[0] = '';
2685                                        change_folder(wfolders_tree._selected.id, wfolders_tree._selected.caption);
2686                                } else{
2687                                        refresh();
2688                                }
2689                        }
2690        }
2691        }
2692
2693}
2694
2695function select_import_folder(){
2696        //Begin: Verify if the file extension is allowed.
2697        var imgExtensions = new Array("eml","zip");
2698        var inputFile = document.form_import.file_1;
2699        if(!inputFile.value){
2700                alert(get_lang('File extension forbidden or invalid file') + '.');
2701                return false;
2702        }
2703        var fileExtension = inputFile.value.split(".");
2704        fileExtension = fileExtension[(fileExtension.length-1)];
2705        var deniedExtension = true;
2706        for(var i=0; i<imgExtensions.length; i++) {
2707                if(imgExtensions[i].toUpperCase() == fileExtension.toUpperCase()) {
2708                        deniedExtension = false;
2709                        break;
2710                }
2711        }
2712        if(deniedExtension) {
2713                alert(get_lang('File extension forbidden or invalid file') + '.');
2714                return false;
2715        }
2716        arrayJSWin['import_window'].close();
2717                connector.loadScript('wfolders');
2718
2719        if ( typeof(wfolders) == "undefined" )
2720                setTimeout( 'select_import_folder()', 500 );
2721        else
2722                wfolders.makeWindow('null','import');
2723}
2724function import_calendar(data){
2725        function handler_import_calendar(data){
2726                if(data === true){
2727                        write_msg(get_lang("The event was imported successfully."));
2728                }
2729        }
2730        if(confirm(get_lang("Do you confirm this import to your Calendar?"))){
2731                        cExecute('$this.db_functions.import_vcard&msg_folder='+data,handler_import_calendar);
2732        }
2733}
2734function hack_sent_queue(data,rowid_message) {
2735
2736        if (data.success != true) {
2737                queue_send_errors = true;
2738                expresso_local_messages.set_problem_on_sent(rowid_message,data);
2739        }
2740        else {
2741                expresso_local_messages.set_as_sent(rowid_message);
2742                if(document.getElementById('_action')) { //Nï¿œo posso manter esse elemento, pois o connector irï¿œ criar outro com o mesmo id para a prï¿œxima mensagem.
2743                        el =document.getElementById('_action');
2744                        father = el.parentNode;
2745                        father.removeChild(el);
2746                }
2747                send_mail_from_queue(false);
2748        }
2749}
2750
2751function send_mail_from_queue(first_pass) {
2752        if(first_pass)
2753                modal('send_queue');
2754        var num_msgs = expresso_local_messages.get_num_msgs_to_send();
2755        if (num_msgs <= 0) {
2756                close_lightbox();
2757                return;
2758        }
2759        document.getElementById('text_send_queue').innerHTML = get_lang('Number of messages to send:')+' '+num_msgs;
2760        var handler_send_queue_message = function(data,rowid_message) {
2761                hack_sent_queue(data,this.ID_tmp);
2762        }
2763        var msg_to_send = expresso_local_messages.get_form_msg_to_send();
2764        if(!is_ie)
2765                ID_tmp = msg_to_send.rowid.value;
2766        else {//I.E kills me of shame...
2767                for (var i=0;i<msg_to_send.length;i++) {
2768                        if(msg_to_send.elements[i].name=='rowid') {
2769                                ID_tmp = msg_to_send.elements[i].value;
2770                                break;
2771                        }
2772                }
2773        }
2774        expresso_local_messages.set_as_sent(ID_tmp);
2775        cExecuteForm("$this.imap_functions.send_mail", msg_to_send, handler_send_queue_message,"queue_"+ID_tmp);
2776        send_mail_from_queue(false);
2777}
2778
2779function check_mail_in_queue() {
2780        var num_msgs = expresso_local_messages.get_num_msgs_to_send();
2781        if(num_msgs>0) {
2782                control = confirm(get_lang('You have messages to send. Want you to send them now?'));
2783                if(control) {
2784                        send_mail_from_queue(true);
2785                }
2786                return true;
2787        }
2788        else {
2789                return false;
2790        }
2791}
2792
2793function force_check_queue() {
2794        if(!check_mail_in_queue()) {
2795                write_msg(get_lang("No messages to send"));
2796        }
2797}
2798
2799function searchEmail(emailString){
2800                var arrayInvalidEmails = new  Array();
2801                arrayInvalidEmails[1] = '';
2802                var email;
2803                var arrayEmailsFull = new Array();
2804                arrayEmailsFull = emailString.split(',');
2805                var er_Email =  new RegExp("<(.*?)>");
2806                // TODO Use validateEmail of common functions !
2807                var er_ValidaEmail = new RegExp("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$");
2808
2809                for (i=0; i < arrayEmailsFull.length; i++){
2810                        email = er_Email.exec(arrayEmailsFull[i]);
2811                        tempEmail = email == null  ? arrayEmailsFull[i]:email[1];
2812                        tempEmail = tempEmail.replace(/^\s+|\s+$/g,"");
2813                        if (tempEmail != '') {
2814                                singleEmail = er_ValidaEmail.exec(tempEmail);
2815
2816                                if (singleEmail == null) {
2817                                        arrayInvalidEmails[0] = true;
2818                                        arrayInvalidEmails[1] += (email == null ? arrayEmailsFull[i] : email[1]) + "; ";
2819                                }
2820                        }
2821                }
2822
2823                return arrayInvalidEmails;
2824}
2825
2826//MAILARCHIVER
2827function services_retry(){
2828    //window.alert('services_retry invoked');
2829    try{
2830        /*if(ttintval)
2831            window.alert('services_retry:\nttintval= ' + ttintval + '\nttintval2= ' + ttintval2 + '\ntryouts= ' + check_services_tryouts);
2832        */
2833        connector.purgeCache();
2834        //window.alert('expresso var dump:\nenabled = ' + expresso_mail_archive.enabled + '\ntimer = ' + expresso_mail_archive.timer +'\ncounter = ' + expresso_mail_archive.counter);
2835
2836        if ((expresso_mail_archive.enabled == null) && (expresso_mail_archive.timer == null) && (expresso_mail_archive.counter > 0)){
2837           
2838            //window.clearInterval(ttintval);
2839            //window.clearInterval(ttintval2);
2840            connector.hideProgressBar();
2841            connector.resetProgressBarText();
2842            write_msg(get_lang('Sorry, but you need to reload this web page. Click at reload page at web browsing top navigation.'));
2843            //location.reload();
2844            return;
2845
2846        }
2847
2848        if (arguments.length == 0){
2849           connector.setProgressBarText(get_lang('Trying to communicate with Mail Archiver...'));
2850        }
2851
2852        connector.showProgressBar();
2853        //var head= document.getElementsByTagName('head')[0];
2854        var head = document.getElementById('send_queue');
2855        var script= document.createElement('script');
2856        var script_tag_id = 'mail_archiver_retry';
2857
2858        var script_utils= document.createElement('script');
2859        var script_utils_tag_id = 'mail_archiver_retry_utils';
2860
2861        var script_transport= document.createElement('script');
2862        var script_transport_tag_id = 'mail_archiver_retry_transport';
2863
2864        if(document.getElementById(script_tag_id)){
2865            document.getElementById(script_tag_id).parentNode.removeChild(document.getElementById(script_tag_id));
2866        }
2867
2868        if(document.getElementById(script_utils_tag_id)){
2869            document.getElementById(script_utils_tag_id).parentNode.removeChild(document.getElementById(script_utils_tag_id));
2870        }
2871
2872        if(document.getElementById(script_transport_tag_id)){
2873            document.getElementById(script_transport_tag_id).parentNode.removeChild(document.getElementById(script_transport_tag_id));
2874        }
2875
2876        //Transport
2877        script_transport.type= 'text/javascript';
2878        script_transport.src=  mail_archive_protocol + '://' + mail_archive_host + ':' + mail_archive_port  + '/arcservutil/cxf-addon-transport.js';
2879        script_transport.id= script_transport_tag_id;
2880        head.appendChild(script_transport);
2881
2882        //Utils Cors support
2883        script_utils.type= 'text/javascript';
2884        script_utils.src= mail_archive_protocol + '://' + mail_archive_host + ':' + mail_archive_port  + '/arcservutil/cxf-utils-cors.js';
2885        script_utils.id= script_utils_tag_id;
2886        head.appendChild(script_utils);
2887
2888        //Cxf core
2889        script.type= 'text/javascript';
2890        script.src= mail_archive_protocol + '://' + mail_archive_host + ':' + mail_archive_port  + '/arcserv/ArchiveServices?js&nojsutils';
2891        script.id= script_tag_id;
2892        head.appendChild(script);
2893
2894        //window.alert('Script tag added.  URL = ' + script.src);
2895        ttintval = window.setTimeout('check_services_restart()', 1000);
2896    }
2897    catch (e){
2898        //window.alert('e:' + e);
2899        write_msg(get_lang('Sorry, but Mail Archiver still seems to be sleeping. Check out your system services!'));
2900        connector.hideProgressBar();
2901        connector.resetProgressBarText();
2902        check_services_tryouts = 1;
2903    }
2904}
2905
2906//MAILARCHIVER
2907function check_services_restart(){
2908    //window.alert('check_services_restart invoked: expresso_mail_archive.enabled = ' + expresso_mail_archive.enabled + '\nArchiveServices = ' + ArchiveServices + '\nTryouts = ' + check_services_tryouts);
2909    try{
2910        connector.setProgressBarText(get_lang('Wait: attempt %1 from %2...', check_services_tryouts, check_services_tryouts_limit));
2911        if(check_services_tryouts <= 5){
2912            try{
2913                ArchiveServices = new web_service_mailarchiver_serpro__ArchiveServices();
2914                ArchiveServices.url = mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + "/arcserv/ArchiveServices";
2915                window.clearInterval(ttintval2);
2916                //window.alert('ttintval2 cleaned up. ArchServ = ' + ArchiveServices);
2917                expresso_mail_archive.Restart(expresso_mail_archive);
2918            }
2919            catch (e){
2920                //window.alert('check_services_restart failure [attempt ' + check_services_tryouts +'] :' + e);
2921                check_services_tryouts++;
2922                //window.setTimeout('check_services_restart()', check_services_interval);
2923                window.clearInterval(ttintval);
2924                //window.alert('ttintval cleaned up.');
2925                ttintval2 = window.setTimeout('services_retry(true)',1);
2926                //window.alert('ttintval2 setted.');
2927                //throw('check_services_restart failure [attempt ' + check_services_tryouts +'] :' + e);
2928            }
2929        }
2930        else{
2931           /* if (document.getElementById(script_tag_id))
2932               var tem_tag = true;
2933            else
2934               var tem_tag = false;
2935           */
2936            //window.alert('else2 de check_services_restart...' + check_services_tryouts + '\ntag script? ' + tem_tag);
2937            write_msg(get_lang('Sorry, but Mail Archiver still seems to be sleeping. Check out your system services!'));
2938            connector.hideProgressBar();
2939            connector.resetProgressBarText();
2940            check_services_tryouts = 1;
2941            //throw('else2 de check_services_restart...' + check_services_tryouts + '\ntag script? ' + tem_tag);
2942        }
2943    }
2944    catch (e){
2945        //window.alert('else3 de check_services_restart... :O' + e);
2946        //check_services_tryouts++;
2947        //window.setTimeout('check_services_restart()', check_services_interval);
2948        write_msg(get_lang('Sorry, but Mail Archiver still seems to be sleeping. Check out your system services!'));
2949        connector.hideProgressBar();
2950        connector.resetProgressBarText();
2951        check_services_tryouts = 1;
2952    }
2953}
Note: See TracBrowser for help on using the repository browser.