source: sandbox/newExpressoMail/expressoMail1_2/js/main.js @ 7043

Revision 7043, 163.6 KB checked in by gustavo, 12 years ago (diff)

Ticket #2911 - Melhoria na disposição e exibição das abas

  • 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 = 40000;
6
7var results_search_messages = "";
8var cabecalho = '<h4>ExpressoLivre - ExpressoMail</h4>';
9// Variavel para controle de atualizaᅵᅵo das mensagens listadas na modal de alerta de filtro por remetente
10var checkAlarmsFilter = false;
11
12var dynamicPersonalContacts = new Array();
13var dynamicContacts = new Array();
14var topContact = 0;
15DataLayer.get("folder", true);
16
17//Os IE's < 9 nï¿œo possui suporte a trim() introduzida no JavaScript 1.8.1
18if(!String.prototype.trim){ 
19        String.prototype.trim = function(){
20                return this.replace(/^\s+|\s+$/g,'');
21        }
22}
23
24function mount_url_folder(folders){
25        return folders.join(cyrus_delimiter);
26}
27
28function updateDynamicContact(){
29        dynamicContacts = new Array();
30        var dynamicData = REST.get("/dynamiccontacts").collection.itens;
31        if(dynamicData){
32                $.each(dynamicData, function(index, value){
33                        if(index ==0){
34                                topContact = parseInt(value.data[2].value);
35                        }
36                        var dynamic = {
37                                name : value.data[0].value,
38                                mail : value.data[1].value,
39                                value: value.data[0].value + " - " + value.data[1].value,
40                                type: "",
41                                id: parseInt(value.data[3].value),
42                                qtd : parseInt(value.data[2].value)
43                        };
44                        dynamicContacts.push(dynamic);
45                });
46        }
47}
48
49
50function updateDynamicPersonalContacts(){
51        dynamicPersonalContacts = new Array();
52        var contactsData = REST.get("/contacts").collection.itens;
53        if(contactsData){
54                $.each(contactsData, function(index, value){
55                        var contact = {
56                                id : parseInt(value.data[0].value),
57                                name : value.data[1].value,
58                                email : value.data[2].value,
59                                value: value.data[1].value + " - " + value.data[2].value,
60                                type: "P"
61                        };
62                        dynamicPersonalContacts.push(contact);
63                });
64        }
65}
66
67function init(){
68        if (!is_ie)
69                Element('tableDivAppbox').width = '100%';
70
71        var save_preferences = function(data){
72
73
74                preferences = data;
75               
76               
77                        if(preferences.show_name_print_messages == "1") {
78                                                        var getUserName = document.getElementById("user_info");
79                                var userName = getUserName.innerHTML;
80                                var position = userName.indexOf("-");
81                                var userName = userName.substring(3, position);
82                                cabecalho = '<h4>' + userName;
83                        }
84               
85               
86                current_folder="INBOX";
87
88                $( "#ptabs span.ui-icon-close" ).live( "click", function() {
89                        removeTab($( this ).prev().attr("href"));
90
91                        var teste = "";
92                        var ola = $( this );
93                        $.each($.cookie('open_tabs').split(","), function(index, value){
94                                if(value != ola.prev().attr("href").substring(7)){
95                                        teste += value+",";
96                                }
97                        });
98                        $.cookie('open_tabs', teste.substring(0, teste.length-1));
99                });
100
101                $( "#ptabs").find( ".ui-tabs-nav" ).sortable({
102                        axis: "x",
103                        items: "li:not(.ui-tab-disabled)",
104                }).disableSelection();
105
106                if($.cookie('open_tabs')){     
107                        $.Zebra_Dialog("Gostaria de recuperar suas mensagens que estavam abertas?", {
108                                'type':     'question',
109                                'title':    "Recuperar Mensagens Abertas",
110                                'buttons':  [get_lang("Yes"), get_lang("No")],
111                                'overlay_opacity' : 0.5,
112                                'onClose':  function(caption) {
113                                        if(caption == get_lang("Yes")){
114                                                if($.cookie('open_tabs') != ""){       
115                                                        var selected = $.cookie('ui-tabs-1');   
116                                                        var ola = $.cookie('open_tabs');
117                                                        $.cookie('open_tabs', "");
118                                                        $.each(ola.split(','), function(index, value){
119                                                                if(value.split("_r_").length > 1){
120                                                                        var msg_number = value.split("_r_")[0];
121                                                                        var msg_folder = Base64.decode(value.split("_r_")[1]);
122                                                                        $.ajax({
123                                                                                url: 'controller.php?' + $.param( {action: '$this.imap_functions.get_info_msg',
124                                                                              msg_number: msg_number,
125                                                                              msg_folder: msg_folder,
126                                                                              decoded: true } ),
127                                                                                async : false,
128                                                                                success: function( data ){
129                                                                                    data = connector.unserialize( data );
130                                                                                    if( data )
131                                                                                                show_msg( data );
132                                                                                        $(ptabs).tabs("select", parseInt(selected));
133                                                                            },
134                                                                                beforeSend: function( jqXHR, settings ){
135                                                                                        connector.showProgressBar();
136                                                                                },
137                                                                                complete: function( jqXHR, settings ){
138                                                                                        connector.hideProgressBar();
139                                                                                }
140                                                                        });
141                                                                }else{
142                                                                        write_msg("Novas Mensagens nï¿œo podem ser recuperadas, verifique seus rascunhos");                     
143                                                                }
144                                                        });
145                                                }
146                                        }else
147                                                write_msg("Mensagens removidas dos cookies");
148                                                $.cookie('open_tabs', '');
149                                        }
150                        });
151                }
152
153                if( (window.google && google.gears) && !google.gears.factory.getPermission())
154                    preferences.use_local_messages=0;
155               
156                if ((preferences.use_local_messages==1) && (!window.google || !google.gears)) {
157                    temp = confirm(get_lang("To use local messages you have to install google gears. Would you like to be redirected to gears installation page?"));
158                    if (temp) {
159                            location.href = "http://gears.google.com/?action=install&message="+
160                            "Para utilizar o recurso de mensagens locais, instale o google gears&return=" + document.location.href;
161                    }
162                    else {
163                            preferences.use_local_messages=0;
164                    }
165                }
166                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...
167                        connector.loadScript('mail_sync');
168                        setTimeout('auto_archiving()', 30000);
169                       
170                }
171                /*Carrega a lista de mensagens*/
172                var  handler_populateSelectedMsgs = function(data){
173                        populateSelectedMsgs(data);
174                }
175                cExecute ("$this.imap_functions.get_msgs&folder=INBOX&sort_box_type=SORTARRIVAL&search_box_type=ALL&sort_box_reverse=1&msg_range_begin=1", handler_populateSelectedMsgs);
176                //Substituido por padrï¿œo Jquery
177                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);
178                //cExecute ("$this.db_functions.get_dropdown_contacts", save_contacts); //Save contacts needs preferences.
179                if(preferences.hide_folders == "1")
180                        Element('divAppboxHeader').innerHTML =  title_app_menu;
181
182                if (preferences.delete_trash_messages_after_n_days != 0)
183                        cExecute ("$this.imap_functions.automatic_trash_cleanness&before_date="+preferences.delete_trash_messages_after_n_days+"&cyrus_delimiter="+cyrus_delimiter, handler_automatic_trash_cleanness);
184
185                //if(preferences.outoffice == "1")
186                //     
187
188                //Troca da forma de construᅵᅵo de menu para o plugin jquery.contextMenu
189                //ConstructMenuTools();
190               
191                if ( (preferences.use_local_messages==1) && (expresso_local_messages.is_offline_installed()) )  //Precisa ser feito apï¿œs a renderizaᅵᅵo da caixa de emails
192                        check_mail_in_queue();
193               
194                // Insere a applet de criptografia
195                if (preferences.use_signature_digital_cripto == '1'){
196                        loadApplet();
197                }
198                // Fim da inserᅵᅵo da applet       
199                DataLayer.get("folder", true);
200                cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu);     
201               
202                if($.cookie('collapse_folders') == "true"){
203                        if(!is_ie)
204                                $("#folderscol").addClass( "hidden");
205                        else
206                                $("#folderscol").hide();
207                        $(".collapse_folders").addClass("ui-icon ui-icon-triangle-1-e").children().attr('title', "Expandir");
208                        refresh();
209                        //resizeWindow();
210                }       
211                else{
212                        $(".collapse_folders").addClass("ui-icon ui-icon-triangle-1-w").children().attr('title', "Ocultar");
213                        refresh();
214                        //resizeWindow();
215                }
216               
217                $(".collapse_folders_td").attr('title', "Ocultar/Expandir").click(function(){
218                        if($("#folderscol").css("display") != "none"){
219                                if(!is_ie)
220                                        $("#folderscol").addClass( "hidden");
221                                else
222                                        $("#folderscol").hide();
223                                       
224                                $(".collapse_folders").removeClass("ui-icon-triangle-1-w");
225                                $(".collapse_folders").addClass("ui-icon-triangle-1-e");
226                                $(".collapse_folders").parent().attr('title', "Expandir");
227                                $.cookie('collapse_folders', "true");
228                                refresh();
229                                resizeWindow();
230                        }else{
231                                if(!is_ie)
232                                        $("#folderscol").removeClass( "hidden");
233                                else
234                                        $("#folderscol").show();
235                                $(".collapse_folders").removeClass("ui-icon-triangle-1-e");
236                                $(".collapse_folders").addClass("ui-icon-triangle-1-w");
237                                $(".collapse_folders").parent().attr('title', "Ocultar");
238                                $.cookie('collapse_folders', "false");
239                                refresh();
240                                //resizeWindow();
241                        }
242                        //resizeWindow();
243                       
244                }).hover(
245                        function(){
246                                $(this).addClass("collapse_folders_td_over");
247                        },
248                        function(){
249                                $(this).removeClass("collapse_folders_td_over");
250                        }
251                );
252               
253                if(parseInt(preferences.use_dynamic_contacts)){
254                        var load_dynamics = function(){
255                                updateDynamicContact();
256                                updateDynamicPersonalContacts();
257                        };
258                        load_dynamics();
259                }
260        }
261        var handler_automatic_trash_cleanness = function(data){
262                if (data != false){
263                        write_msg(data.length +' '+ Element('txt_clear_trash').value);
264                }
265        }
266
267        // Versï¿œo
268        Element('divAppboxHeader').innerHTML = title_app;
269
270        // Get cyrus delimiter
271        cyrus_delimiter = Element('cyrus_delimiter').value;
272
273        cExecute ("$this.functions.get_preferences", save_preferences);
274    cExecute ("phpgwapi.browser.isMobile", function( data ){
275                mobile_device = ( ( data.constructor == Boolean ) ? data : ( data === 'true' ) );
276        });
277
278        DataLayer.get("folder", true);
279        cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu);     
280       
281        setTimeout('auto_refresh()', time_refresh);
282       
283        $("#divAppbox").css("padding-left", "0px");
284}
285
286function init_offline(){
287        current_folder = 'local_Inbox';
288        if (account_id != null) {
289                if (!is_ie)
290                        Element('tableDivAppbox').width = '100%';
291                else
292                        connector.createXMLHTTP();
293                Element('divStatusBar').innerHTML = '<table height="16px" border=0 width=100% cellspacing=0 cellpadding=2>' +
294                '<tr>' +
295                '<td style="padding-left:17px" width=33% id="content_quota" align=left></td>' +
296                '<td width=33% height=16px align=center nowrap><font face=Verdana, Arial, Helvetica, sans-serif color=#000066 size=2>' +
297                '<b>ExpressoMail Offline</b><font size=1><b> - Versï¿œo 1.0</b></font></td>' +
298                '<td width=33% id="div_menu_c3" align=right></td>' +
299                '</tr></table>';
300
301                //Troca da forma de construᅵᅵo de menu para o plugin jquery.contextMenu
302                //ConstructMenuTools();
303
304                draw_tree_folders();
305
306                proxy_mensagens.messages_list('local_Inbox', 1, preferences.max_email_per_page, 'SORTARRIVAL', null, 1,1,1, function handler(data){
307                        draw_box(data, 'local_Inbox');
308                })
309
310                // Get cyrus delimiter
311        cyrus_delimiter = Element('cyrus_delimiter').value;
312
313        //cExecute ("$this.db_functions.get_dropdown_contacts_to_cache", function(data) {contacts = data;});
314        //cExecute ("$this.functions.get_preferences", save_preferences);
315        }
316}
317/**
318 * Carrega a applet java no objeto search_div
319 * @author Mï¿œrio Cï¿œsar Kolling <mario.kolling@serpro.gov.br>
320 */
321
322function loadApplet(){
323
324        var search_div = Element('search_div');
325        var applet = null;
326        if (navigator.userAgent.match('MSIE')){
327                applet = document.createElement('<object style="display:yes;width:0;height:0;vertical-align:bottom;" id="cert_applet" ' +
328                        'classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"></object>');
329
330                var parameters = {
331                        type:'application/x-java-applet;version=1.5',
332                        code:'ExpressoSmimeApplet',
333                        codebase:'/security/',
334                        mayscript:'true',
335                        token: token_param,
336                        locale: locale,
337                        archive:'ExpressoCertMail.jar,' +
338                                'ExpressoCert.jar,' +
339                                'bcmail-jdk15-142.jar,' +
340                                'mail.jar,' +
341                                'activation.jar,' +
342                                'bcprov-jdk15-142.jar,' +
343                                'commons-codec-1.3.jar,' +
344                                'commons-httpclient-3.1.jar,' +
345                                'commons-logging-1.1.1.jar'
346                        //debug:'true'
347                }
348
349                if (parameters != 'undefined' && parameters != null){
350                        for (var parameter in parameters) {
351                                var param = document.createElement("PARAM");
352                                param.setAttribute("name",parameter);
353                                param.setAttribute("value",parameters[parameter]);
354                                applet.appendChild(param);
355                        }
356                }
357        }
358        else
359        {
360                applet = document.createElement('embed');
361                applet.innerHTML = '<embed style="display:yes;width:0;height:0;vertical-align:bottom;" id="cert_applet" code="ExpressoSmimeApplet.class" ' +
362                        'codebase="/security/" locale="'+locale+'"'+
363                        '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" ' +
364                        'token="' + token_param + '" ' +
365                        'type="application/x-java-applet;version=1.5" mayscript > ' +
366                        //'type="application/x-java-applet;version=1.5" debug="true" mayscript > ' +
367                        '<noembed> ' +
368                        'No Java Support. ' +
369                        '</noembed> ' +
370                        '</embed> ';
371        }
372       
373        if( applet != null )
374        {
375                applet.style.top        = "-100px";
376                applet.style.left       = "-100px";
377                window.document.body.insertBefore( applet, document.body.lastChild );
378        }
379       
380}
381
382function disable_field(field,condition) {
383        var comando = "if ("+condition+") { document.getElementById('"+field.id+"').disabled=true;} else { document.getElementById('"+field.id+"').disabled=false; }";
384        eval(comando);
385}
386/*
387        funᅵᅵo que remove todos os anexos...
388*/
389function remove_all_attachments(folder,msg_num) {
390
391        var call_back = function(data) {
392                if(!data.status) {
393                        alert(data.msg);
394                }
395                else {
396                        msg_to_delete = Element(msg_num);
397                        change_tr_properties(msg_to_delete, data.msg_no);
398                        msg_to_delete.childNodes[1].innerHTML = "";
399                        write_msg(get_lang("Attachments removed"));
400                        folderName = Base64.encode(folder);
401                        folderName = folderName.replace(/=/gi, '');
402                        delete_border(msg_num+'_r_'+folderName,'false'); //close email tab
403                }
404        };
405        if (confirm(get_lang("delete all attachments confirmation")))
406                cExecute ("$this.imap_functions.remove_attachments&folder="
407                                +folder+"&msg_num="+msg_num, call_back);
408}
409function watch_changes_in_msg(border_id)
410{
411        if (document.getElementById('border_id_'+border_id))
412        {
413                function keypress_handler ()
414                {
415                        away=false;
416                        var save_link = content.find(".save");
417                        save_link.onclick = function onclick(event) {openTab.toPreserve[border_id] = true;save_msg(border_id);} ;
418                        save_link.button({disabled: false});
419                        $(".header-button").button();
420                };
421                var content = $("#content_id_"+border_id);
422               
423                var subject_obj = content.find(".subject");
424                if ( subject_obj.addEventListener )
425                                subject_obj.addEventListener('keypress', keypress_handler, false);
426                else if ( subject_obj.attachEvent )
427                        subject_obj.attachEvent('onkeypress', keypress_handler);
428
429                var to_obj = content.find('[name="input_to"]');
430                if ( to_obj.addEventListener )
431                                to_obj.addEventListener('keypress', keypress_handler, false);
432                else if ( to_obj.attachEvent )
433                        to_obj.attachEvent('onkeypress', keypress_handler);
434                       
435                var cc_obj = content.find('[name="input_cc"]');
436                if ( cc_obj.addEventListener )
437                                cc_obj.addEventListener('keypress', keypress_handler, false);
438                else if ( cc_obj.attachEvent )
439                        cc_obj.attachEvent('onkeypress', keypress_handler);
440               
441                if(content.find('[name="input_cco"]').length){
442                        var cco_obj = content.find('[name="input_cco"]');
443                        if ( cco_obj.addEventListener )
444                                cco_obj.addEventListener('keypress', keypress_handler, false);
445                        else if ( cco_obj.attachEvent )
446                                cco_obj.attachEvent('onkeypress', keypress_handler);
447                }
448                //var important_obj = $("important_message_options_"+border_id).bind('click',keypress_handler);
449                        //important_obj.addEventListener('click', keypress_handler, false);
450                       
451        var txtarea_obj = Element('body_'+border_id);
452        if (txtarea_obj){
453          if ((preferences.plain_text_editor == 1)||(Element('body_')+border_id).checked){
454                    if ( txtarea_obj.addEventListener )
455                           txtarea_obj.addEventListener('keypress', keypress_handler, false);
456                    else if ( txtarea_obj.attachEvent )
457                           txtarea_obj.attachEvent('onkeypress', keypress_handler);
458          }
459        }
460        }
461}
462
463function show_msg_img(msg_number,folder){
464        var call_back = function(data){
465           data.showImg = true;
466           if (!Element(data.msg_number)){
467                   trElement = document.createElement('DIV');
468                   trElement.id = data.msg_number;
469                   Element("tbody_box").appendChild(trElement);
470           }
471           show_msg(data);
472        }
473
474        proxy_mensagens.msg_img(msg_number,folder,call_back);
475
476}
477
478function show_msg(msg_info){
479        if(!verify_session(msg_info))
480                return;
481        if (typeof(msg_info) != 'object')
482                alert(get_lang("Error in show_msg param is not object"));
483
484        if (msg_info.status_get_msg_info == 'false')
485        {
486                write_msg(get_lang("Problems reading your message")+ ".");
487                return;
488        }
489
490        var handler_sendNotification = function(data){
491                if (data)
492                        write_msg(get_lang("A read confirmation was sent."));
493                else
494                        write_msg(get_lang("Error in SMTP sending read confirmation."));
495        }
496
497        if(msg_info.source)
498        {
499                // Abrindo um e-mail criptografado
500                // Verifica se existe o objeto applet
501                if (!Element('cert_applet')){
502                        // se nï¿œo existir, mostra mensagem de erro.
503                        write_msg(get_lang('The preference "%1" isn\'t enabled.', get_lang('Enable digitally sign/cipher the message?')));
504                } else {
505                        // se existir prepara os dados para serem enviados e chama a
506                        // operaᅵᅵo na applet
507
508                   // if ((msg_info.DispositionNotificationTo) && ((msg_info.Unseen == 'U') || (msg_info.Recent == 'N'))){
509                        /*      var confNotification = confirm(get_lang("The sender waits your notification of reading. Do you want to confirm this?"), "");
510                                if (confNotification)*/
511                        //              cExecute ("$this.imap_functions.send_notification&notificationto="+msg_info.DispositionNotificationTo+"&subject="+url_encode(msg_info.subject), handler_sendNotification);
512                   // }
513
514                        Element('cert_applet').doButtonClickAction('decript',
515                                                                                                                msg_info.msg_number,
516                                                                                                                msg_info.source,
517                                                                                                                msg_info.msg_folder); // Passa os dados para a applet
518                }
519                return;
520
521        }
522
523
524        if (msg_info.status_get_msg_info == 'false')
525        {
526                write_msg(get_lang("Problems reading your message")+ ".");
527                return;
528        }
529
530        if (msg_info.status == 'false'){
531                eval(msg_info.command_to_exec);
532        }
533        else{
534                var ID = msg_info.original_ID ? msg_info.original_ID : msg_info.msg_number;
535                       
536                var folderName = msg_info.msg_folder;
537                folderName = Base64.encode(folderName);
538                folderName = folderName.replace(/=/gi, '');
539                var id_msg_read = ID+"_r_"+folderName;
540       
541        //Evita a tentativa de criaᅵᅵo de uma aba cujo ID jï¿œ existe
542        if (Element("border_id_"+id_msg_read) && currentTab > 0)
543                    id_msg_read += "n";
544   
545                if (preferences.use_shortcuts == '1')
546                  select_msg(ID, 'null');
547                         
548                // Call function to draw message
549                // If needed, delete old border
550                var isPartMsg = false;
551                for(var ii = 0; ii < partMsgs.length; ii++)
552                     if(partMsgs[ii] == ID) isPartMsg = true;   
553                                         
554                                        if(msg_info.alarm == false){
555                                                if ((openTab.type[currentTab] == 2 || openTab.type[currentTab] == 3) && isPartMsg === false)
556                                                                delete_border(currentTab,'false');
557                                        }
558                                       
559                if(Element("border_id_" + id_msg_read)) {
560                        alternate_border(id_msg_read);
561                        resizeWindow();
562                }
563                else {
564                        var sbj = msg_info.subject.length < 21 ? msg_info.subject : msg_info.subject.substr(0,21) + "...";
565                        var content = $(DataLayer.render("../prototype/modules/mail/templates/email.ejs", {info : msg_info}));
566
567                        createTab(sbj, content.html(), id_msg_read);
568
569                        content.find(".message-flags").buttonset();
570                        //$(".message-flags").buttonset();
571                        //$(".button").button();
572                        /*
573                        var border_id = create_border(msg_info.subject, id_msg_read);
574                        if(border_id)
575                        {
576                                openTab.type[border_id] = 2;
577                                openTab.imapBox[border_id] = msg_info.msg_folder;
578                                draw_message(msg_info,border_id);
579                                var unseen_sort = document.getElementById('span_flag_UNSEEN').getAttribute('onclick');
580                                unseen_sort = unseen_sort.toString();
581                                if ( !(unseen_sort.indexOf("'UNSEEN' == 'UNSEEN'") < 0) )
582                                {
583                                        var sort_type = sort_box_type;
584                                        sort_box_type = null;
585                                        sort_box('UNSEEN', sort_type,false);
586                                        delete selectedPagingMsgs[msg_info.msg_number];
587                                        totalFolderMsgs--;
588                                }
589                        }
590                        else
591                                return; */
592                }
593
594                var domains = "";
595                if ((msg_info.DispositionNotificationTo) && (!msg_is_read(ID) || (msg_info.Recent == 'N')))
596                {
597                        if (preferences.notification_domains != undefined && preferences.notification_domains != "")
598                        {
599                                domains = preferences.notification_domains.split(',');
600                        }
601                        else
602                        {
603                                var confNotification = true;
604                         }
605                        for (var i = 0; i < domains.length; i++)
606                                if (Base64.decode(msg_info.DispositionNotificationTo).match("@"+domains[i]))
607                                {
608                                        var confNotification = true;
609                                        break;
610                                }
611                                if (confNotification == undefined)
612                                        var confNotification = confirm(get_lang("The sender:\n%1\nwaits your notification of reading. Do you want to confirm this?",Base64.decode(msg_info.DispositionNotificationTo)), "");
613
614                        if (confNotification) {
615                        /* Adequaᅵᅵo a nova funcionalidade. Agora, a confirmaᅵᅵo de leitura ï¿œ uma preferï¿œncia do usuï¿œrio. */
616                                if(preferences.confirm_read_message) {
617                                        $.Zebra_Dialog(get_lang("Would you like to send the read receipt?"), {
618                                                'type':     'question',
619                                                'title':    get_lang('Read receipt'),
620                                                'buttons':  [get_lang("Yes"), get_lang("No")],
621                                                'overlay_opacity' : 0.5,
622                                                'onClose':  function(caption) {
623                                                        if(caption == get_lang("Yes"))
624                                                                cExecute ("$this.imap_functions.send_notification&notificationto="+msg_info.DispositionNotificationTo+"&date="+msg_info.udate+"&subject="+url_encode(msg_info.subject), handler_sendNotification);                                                             
625                                                        else
626                                                                write_msg(get_lang("Confirmation message is not sent"));
627                                                }
628                                        });
629                                }
630                                else
631                                        cExecute ("$this.imap_functions.send_notification&notificationto="+msg_info.DispositionNotificationTo+"&date="+msg_info.udate+"&subject="+url_encode(msg_info.subject), handler_sendNotification);                                                             
632                        }
633                               
634                }
635                //Change msg class to read.
636                if (!msg_is_read(ID))
637                {
638                        set_msg_as_read(ID, true);
639                        if (msg_info.cacheHit || (!proxy_mensagens.is_local_folder(get_current_folder()) && msg_info.original_ID))
640                        {
641                                set_message_flag(ID, "seen"); // avoid caducous (lazy) data
642                        }
643                }
644        }
645        setTimeout('resizeWindow()',300);
646}
647
648function auto_refresh(){
649        refresh(preferences.alert_new_msg);
650        setTimeout('auto_refresh()', time_refresh);
651}
652
653function auto_archiving() {
654        expresso_mail_sync.start_sync();
655        setTimeout('auto_archiving()',600000);
656}
657
658function refresh(alert_new_msg){
659        getFromAlertRules();
660        var handler_refresh = function(data){
661                if(checkAlarmsFilter){
662                        handlerMessageFilter = function (data) {
663                                alarmFollowupflagged('filtersAlarms', data);
664                        }
665                        /* Busca  nas pastas indexadas para ver se hï¿œ novas mensagens com a flag $FilteredMessage */
666                        cExecute ("$this.imap_functions.getFlaggedAlertMessages&folders="+fromRules, handlerMessageFilter);
667                }
668                checkAlarmsFilter = true;
669                if(data['msg_range_end'])
670                        if(data['msg_range_end'] > 0)
671                                current_page = data['msg_range_end']/preferences.max_email_per_page;
672                if(!verify_session(data))
673                        return;
674                var total_messages_element = Element('tot_m');
675                       
676                var box = Element("tbody_box");
677                if (box.childNodes.length == 0)
678                        showEmptyBoxMsg(box);
679
680                if (data.length > 0){
681                        for(var i=0;i< data.length;i++){
682                                if (!onceOpenedHeadersMessages[current_folder])
683                                        onceOpenedHeadersMessages[current_folder] = {};
684                                onceOpenedHeadersMessages[current_folder][data[i].msg_number] = data[i];
685                        }
686                        Element("table_message_header_box_"+numBox).emptyBody = false;
687                        table_element = Element("table_box");
688                        var msg_info = document.getElementById('msg_info');
689                        if (msg_info != null)
690                        {
691                                var msg_tr = msg_info.parentNode.parentNode;
692                                msg_tr.removeChild(msg_info.parentNode);
693                                if (!Element("colgroup_main_"+numBox)) {
694                                        var colgr_element = buildColGroup();
695                                        colgr_element.setAttribute("id","colgroup_main_"+numBox);
696                                        table_element.appendChild(colgr_element);
697                                }
698                        }
699
700                        var box = Element("tbody_box");
701                        //table_element.insertBefore(box, Element("colgroup_main_"+numBox)); // keeps colgroup as the last child
702                        //table_element.appendChild(Element("colgroup_main_"+numBox));
703                       
704                        $(table_element).append(Element("colgroup_main_"+numBox));
705
706                        if (data.msgs_to_delete.length > 0){
707                                for (var i=0; i<data.msgs_to_delete.length; i++){
708                                        if ( (data.msgs_to_delete[i] != undefined) && (data.msgs_to_delete[i] != "")){
709                                                removeAll(data.msgs_to_delete[i]);
710                                        }
711                                }
712                        }
713                        if (data[0].msg_folder != current_folder) // Bad request
714                                return false;
715                        for (var i=0; i<data.length; i++){
716                                var existent = document.getElementById(data[i].msg_number);
717                                if (!existent)
718                                {
719                                        selectedPagingMsgs[data[i].msg_number] = false;
720                                        totalFolderMsgs++;
721                                        updateSelectedMsgs(false,data[i].msg_number);
722                                        var new_msg = this.make_tr_message(data[i], current_folder, data.offsetToGMT);
723                                        $(new_msg).draggable({
724                                                start : function(){
725                                                        if($(".shared-folders").length){
726                                                                $(".shared-folders").parent().find('.folder:not(".shared-folders")').droppable({
727                                                                        over : function(a, b){                                         
728                                                                                //SETA BORDA EM VOLTA DA PASTA
729                                                                                over = $(this);
730                                                                                $(this).addClass("folder-over");
731                                                                                if(($(this)[0] != $(this).parent().find(".head_folder")[0]))
732                                                                                        if($(this).prev()[0])
733                                                                                                if($(this).parent().find(".expandable-hitarea")[0] == $(this).prev()[0]){
734                                                                                                        setTimeout(function(){
735                                                                                                                if(over.hasClass("folder-over"))
736                                                                                                                        over.prev().trigger("click");
737                                                                                                        }, 500);
738                                                                                                       
739                                                                                                }
740                                                                        },
741                                                                        out : function(){
742                                                                                //RETIRA BORDA EM VOLTA DA PASTA
743                                                                                $(this).removeClass("folder-over");
744                                                                        },
745                                                                        //accept: ".draggin_mail",
746                                                                        drop : function(event, ui){
747                                                                                $(this).css("border", "");
748                                                                                if($(this).parent().attr('id') == undefined){
749                                                                                        var folder_to = 'INBOX';
750                                                                                        var to_folder_title = get_lang("Inbox");
751                                                                                }else{
752                                                                                        var folder_to = $(this).parent().attr('id');
753                                                                                        var to_folder_title = $(this).attr('title');
754                                                                                }               
755                                                                                var folder_to_move = ui.draggable.parent().attr('id');
756                                                                                var border_id = ui.draggable.find("input[type=hidden]").attr("name");
757                                                                                // Mensagens : SE O DROP VIER DA LISTA DE MENSAGENS :
758                                                                                if(folder_to_move == "tbody_box"){
759                                                                                        move_msgs2(get_current_folder(), 'selected', 0, folder_to, to_folder_title,true);
760                                                                                        return refresh();
761                                                                                }
762                                                                        }
763                                                                });
764                                                        }
765                                                },
766                                                stop :function(){
767                                                        $(".shared-folders").parent().find(".folder").droppable("destroy");
768                                                },
769                                                helper: function(event){
770                                                        $(this).addClass("selected_msg").find("input:checkbox").attr("checked", true);
771                                                        updateSelectedMsgs($(this).find("input:checkbox").is(':checked'),$(this).attr("id"));
772                                                        if ( $("#tbody_box .selected_shortcut_msg").length > 1) {
773                                                                $("#tbody_box .selected_shortcut_msg").addClass("selected_msg").find('.checkbox').attr('checked',true);
774                                                                $.each( $(".selected_shortcut_msg"), function(index, value){
775                                                        updateSelectedMsgs($(value).find(":checkbox").is(':checked'),$(value).attr("id"));
776                                                        });
777                                                        }
778                                                        if(totalSelected() > 1)
779                                                                return $("<tr><td>"+DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : (totalSelected()+" mensagens selecionadas"), type: "messages"})+"</td></tr>");
780                                                        if(     $(this).find(".td_msg_subject").text().length > 18 )
781                                                                return $("<tr><td>"+DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : $(this).find(".td_msg_subject").text().substring(0,18) + "...", type: "messages"})+"</td></tr>");
782                                                        else
783                                                                return $("<tr><td>"+DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : $(this).find(".td_msg_subject").text(), type: "messages"})+"</td></tr>");
784                                                },
785                                                iframeFix: true,
786                                                delay: 150,
787                                                cursorAt: {top: 5, left: 56},
788                                                refreshPositions: true,
789                                                containment: "#divAppbox"
790                                        }).bind("contextmenu", function(){
791                                                if (!(($(event.target).find('img').length > 0) && ($(event.target).hasClass('td-label')))){
792                                                        if($(this).find("input:checkbox").attr("checked") != "checked"){
793                                                                $(this).find("input:checkbox").trigger('click');
794                                                                $(this).addClass("selected_msg");
795                                                        }
796                                                        updateSelectedMsgs($(this).find("input:checkbox").is(':checked'),$(this).attr("id"));
797                                                }
798                                        });
799                                        //_dragArea.makeDragged(new_msg, data[i].msg_number, data[i].subject, true);
800                                       
801                                        if( data[i].next_msg_number != undefined && data[i].next_msg_number != null ){
802                                                try {
803                                                        box.insertBefore(new_msg, box.childNodes[data[i].msg_key_position]);                                   
804                                                }
805                                                catch (e){
806                                                        box.insertBefore(new_msg, box.firstChild);
807                                                }
808                                        }
809                                        else if (data[i].Recent == 'N'){
810                                                box.insertBefore(new_msg,box.firstChild);
811                                        }
812                                        else {
813                                                box.appendChild(new_msg);
814                                        }
815                                }
816                        }
817                        if(parseInt(preferences.use_shortcuts))
818                                select_msg("null","reload_msg","null");
819
820                        if(parseInt(alert_new_msg) && data.new_msgs > 0)
821                                alert(data['new_msgs'] > 1 ? get_lang("You have %1 new messages", data['new_msgs']) + "!" : get_lang("You have 1 new message") +"!");
822                        build_quota(data['quota']);
823                }
824                if(data.new_msgs){
825                        total_messages_element.innerHTML = parseInt( total_messages_element.innerHTML ) + data.new_msgs;
826                }else if(data.tot_msgs){
827                        total_messages_element.innerHTML = data.tot_msgs;
828                }
829                // Update Box BgColor
830                var box = Element("tbody_box");
831                if(box.childNodes.length > 1){
832                        updateBoxBgColor(box.childNodes);
833                }
834                connector.purgeCache();
835                update_menu();
836                resizeMailList();
837
838        }
839       
840        msg_range_end = (current_page*preferences.max_email_per_page);
841        msg_range_begin = (msg_range_end-(preferences.max_email_per_page)+1);
842
843
844        //Get element tBody.
845        main = Element("tbody_box");
846        if(!main)
847                return;
848
849        // Get all TR (messages) in tBody.
850        main_list = main.childNodes;
851        var tmp = '';
852        var string_msgs_in_main = '';
853
854        var len = main_list.length;
855        for (var j=0; j < len; j++)
856                tmp += main_list[j].id + ',';
857
858        string_msgs_in_main = tmp.substring(0,(tmp.length-1));
859        if(!expresso_offline)
860                $.ajax({
861                          url: 'controller.php?' + $.param( {action: '$this.imap_functions.refresh',
862                                                              folder: current_folder,
863                                                              msgs_existent: string_msgs_in_main,
864                                                              msg_range_begin: msg_range_begin,
865                                                              msg_range_end: msg_range_end,
866                                                              sort_box_type: sort_box_type,
867                                                              search_box_type: search_box_type,
868                                                              sort_box_reverse: sort_box_reverse } ),
869                          success: function( data ){
870                              data = connector.unserialize( data );
871                             
872                              if( data )
873                                  handler_refresh( data );
874                          },
875                          beforeSend: function( jqXHR, settings ){
876                                connector.showProgressBar();
877                          },
878                          complete: function( jqXHR, settings ){
879                                connector.hideProgressBar();
880                          }
881
882                });
883}
884
885function delete_msgs(folder, msgs_number, border_ID, show_success_msg,archive){
886                        if( preferences.use_local_messages == 1 && expresso_local_messages.isArchiving( msgs_number, folder ) ){
887                          alert( "Impossivel deletar mensagens que estï¿œo ainda estï¿œo sendo arquivadas." );
888                          return;
889                        }
890                               
891                        var userTrashFolder = '';
892                       
893                        if (arguments.length < 4) show_success_msg = true;
894                        if (folder == 'null') folder = current_folder;
895                 
896                        if(folder.substr(0,4) == 'user')
897                        {
898                                        var arrayFolder = folder.split(cyrus_delimiter);
899                                        userTrashFolder = 'user'+cyrus_delimiter+arrayFolder[1]+cyrus_delimiter+special_folders['Trash']; 
900                                        /** TODO Mudar quando melhorias forem implementadas na API de atualizaᅵᅵo do cache */
901                                        DataLayer.remove('folder', false);
902                                        DataLayer.get('folder');
903                                       
904                                        var has_folder = DataLayer.get('folder', userTrashFolder);
905                                        if(!has_folder){
906                                                create_new_folder(special_folders['Trash'], 'user'+cyrus_delimiter+arrayFolder[1]);
907                                        }
908                                       
909                        }
910                                else userTrashFolder = mount_url_folder(["INBOX",special_folders["Trash"]]);
911         
912                        if(openTab.type[currentTab] == 1)
913                                        return move_search_msgs('content_id_'+currentTab,userTrashFolder,special_folders['Trash']);
914                                       
915                                if(currentTab.toString().indexOf("_r") != -1)
916                                        msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r"));
917                         
918                        if (!archive && (parseInt(preferences.save_deleted_msg)) && (folder != userTrashFolder)){
919                    if(currentTab == 0)
920                                                msgs_number = get_selected_messages();
921                            move_msgs2(folder, ""+msgs_number, border_ID, userTrashFolder,special_folders['Trash'],show_success_msg );
922                                return;
923        }
924
925        var handler_delete_msgs = function(data){
926
927                Element('chk_box_select_all_messages').checked = false;
928                if (currentTab)
929                        mail_msg = Element("tbody_box_"+currentTab);
930                else
931                        mail_msg = Element("tbody_box");
932
933                if ( preferences.use_shortcuts == '1') {
934                                //Last msg is selected
935                                if (mail_msg && exist_className(mail_msg.childNodes[mail_msg.childNodes.length-1], 'selected_shortcut_msg') ) {
936                                        select_msg('null', 'up', true);
937                                }
938                                else {
939                                        if (!select_msg('null', 'down', true)) {
940                                                select_msg('null', 'up', true);
941                                        }
942                                }
943                        }
944
945                if (show_success_msg) {
946                        if (data.msgs_number.length == 1)
947                                write_msg(get_lang("The message was deleted."));
948                        else
949                                write_msg(get_lang("The messages were deleted."));
950                }
951                if (openTab.type[currentTab] > 1){
952                        var msg_to_delete = Element(msgs_number);
953                        if (parseInt(preferences.delete_and_show_previous_message) && msg_to_delete) {
954                                if (msg_to_delete.previousSibling){
955                                        var previous_msg = msg_to_delete.previousSibling.id;
956                                         $.ajax({
957                                                  url: 'controller.php?' + $.param( {action: '$this.imap_functions.get_info_msg',
958                                                                                      msg_number: previous_msg,
959                                                                                      msg_folder: current_folder,
960                                                                                      decoded: true } ),
961                                                  success: function( data ){
962                                                      data = connector.unserialize( data );
963                                                     
964                                                      if( data )
965                                                          show_msg( data );
966                                                  },
967                                                  beforeSend: function( jqXHR, settings ){
968                                                        connector.showProgressBar();
969                                                  },
970                                                  complete: function( jqXHR, settings ){
971                                                        connector.hideProgressBar();
972                                                  }
973
974                                        });
975                                }
976                                else
977                                        delete_border(currentTab,'false');
978                        }
979                        else
980                                delete_border(currentTab,'false');
981                }
982                for (var i=0; i<data.msgs_number.length; i++){
983                                var msg_to_delete = Element(data.msgs_number[i]);
984                                if (msg_to_delete){
985                                                removeAll(msg_to_delete.id);
986                                }
987                }
988                Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) - data.msgs_number.length;
989                refresh();
990        }
991        if(currentTab == 0 )
992                msgs_number = get_selected_messages();
993
994        if (msgs_number.length > 0 || parseInt(msgs_number) > 0)
995                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);
996        else
997                write_msg(get_lang('No selected message.'));
998}
999
1000 
1001function move_search_msgs(border_id, new_folder, new_folder_name, action){
1002
1003        var msg_to_delete = "";
1004        var msg_to_move = "";
1005        var selected_messages = '';
1006        var temp_msg;
1007        var remove_currente_folder = "";
1008        var id_border = currentTab.replace(/[a-zA-Z_]+/, "");
1009       
1010        var delete_msg = false;
1011       
1012        if(new_folder_name == special_folders['Trash']){
1013                delete_msg = true;
1014                }
1015        selected_messages = get_selected_messages_search();
1016       
1017        if( preferences.use_local_messages == 1 && expresso_local_messages.isArchiving( selected_messages, folder ) ){
1018          alert( "Impossivel mover mensagens que estï¿œo ainda estï¿œo sendo arquivadas." );
1019          return;
1020        }
1021        var handler_move_search_msgs = function(data){
1022                if(!data || !data.msgs_number)
1023                        return;
1024                else if(data.deleted) {
1025                        if(data.no_move && data.move)
1026                                alert(get_lang("Unable to remove the message (s) of shared folders which you do not have permission."));
1027                        else if (data.msgs_number.length == 1)
1028                                write_msg(get_lang("The message was deleted."));
1029                        else
1030                                write_msg(get_lang("The messages were deleted."));
1031                }else if(data.status == false && data.move ){
1032                                        alert(get_lang("Unable to remove the message (s) of shared folders which you do not have permission."));
1033                }else if(data.status == false){
1034                                        alert(get_lang("You don't have permission for this operation in this shared folder!"));
1035                                        return false;
1036                }else{
1037                        if (data.msgs_number.length == 1)
1038                                write_msg(get_lang("The message was moved to folder ") + lang_folder(data.new_folder_name));
1039                        else
1040                                write_msg(get_lang("The messages were moved to folder ") + lang_folder(data.new_folder_name));
1041                }
1042
1043                if(data.no_move){
1044                        var no_remove = data.no_move.split(',');
1045                        var continua = true;
1046                       
1047                selected_messages = selected_messages.split(",");
1048                for (i = 0; i < selected_messages.length; i++){
1049                                for(j = 0; j < no_remove.length; j++)
1050                                        if(selected_messages[i] == no_remove[j])
1051                                                continua = false;
1052                                if(continua)   
1053                                        removeAll(selected_messages[i]+'_s'+id_border);
1054                                continua = true;
1055                }
1056                }else{
1057                        selected_messages = selected_messages.split(",");
1058                        for (i = 0; i < selected_messages.length; i++){
1059                                removeAll(selected_messages[i]+'_s'+id_border);
1060               
1061                        }
1062                }
1063               
1064                // Update Box BgColor
1065                var box = Element("tbody_box_"+getNumBoxFromTabId(currentTab)).childNodes;
1066                if(box.length > 1){
1067                        updateBoxBgColor(box);
1068                }
1069                connector.purgeCache();
1070
1071               
1072                if(remove_currente_folder != ""){
1073                        var mail_msg = Element('tbody_box').childNodes;
1074                        remove_currente_folder = remove_currente_folder.substring(0,(remove_currente_folder.length-1));
1075                        remove_currente_folder = remove_currente_folder.split(",");
1076                        for(i = 0; i < remove_currente_folder.length; i++)
1077                                removeAll(remove_currente_folder[i]);
1078
1079                        // Update Box BgColor
1080                        var box = Element("tbody_box");
1081                        if(box.childNodes.length > 0){
1082                                updateBoxBgColor(box.childNodes);
1083                        }
1084                        if(folder == get_current_folder()){
1085                                Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) - remove_currente_folder.length;
1086                        }
1087                }
1088               
1089                draw_tree_folders();
1090                EsearchE.refresh();
1091        }
1092
1093        if (selected_messages){
1094               
1095                var selected_param = "";
1096                if (selected_messages.indexOf(',') != -1)
1097                {
1098                        selected_msg_array = selected_messages.split(",");
1099                        for (i = 0; i < selected_msg_array.length; i++){
1100                                var tr = Element(selected_msg_array[i]+'_s'+id_border);
1101                                if(tr.getAttribute('name') == current_folder)
1102                                        remove_currente_folder += tr.id.replace(/_[a-zA-Z0-9]+/,"")+',';
1103                               
1104                                if ((action == 'delete' && tr.getAttribute('name') == mount_url_folder(["INBOX",special_folders["Trash"]])) || !(parseInt(preferences.save_deleted_msg)))
1105                                {
1106                                        msg_to_delete +=   ','+special_folders['Trash']+';'+tr.id.replace(/_[a-zA-Z0-9]+/,"");
1107                                }
1108                                else if (!(tr.getAttribute('name') == new_folder && action != 'delete'))
1109                                {
1110                                        msg_to_move = (tr.getAttribute('name') == null?get_current_folder():tr.getAttribute('name'));
1111                                        selected_param += ','+msg_to_move+';'+tr.id.replace(/_[a-zA-Z0-9]+/,"");
1112                                }else{
1113                                        write_msg(get_lang('At least one message have the same origin'));
1114                                        return false;
1115                                }
1116                        }
1117                }
1118                else
1119                {
1120                        var tr=Element(selected_messages+'_s'+id_border);
1121                        if(tr.getAttribute('name') == current_folder)
1122                                        remove_currente_folder += tr.id.replace(/_[a-zA-Z0-9]+/,"")+',';
1123                        if((action == 'delete' && tr.getAttribute('name') == mount_url_folder(["INBOX",special_folders["Trash"]])) || !(parseInt(preferences.save_deleted_msg))){
1124                                msg_to_delete = special_folders['Trash']+';'+tr.id.replace(/_[a-zA-Z0-9]+/,"");
1125                        }else if (!(tr.getAttribute('name') == new_folder && action != 'delete')){
1126                                trfolder = (tr.getAttribute('name') == null?get_current_folder():tr.getAttribute('name'));
1127                                selected_param=trfolder+';'+tr.id.replace(/_[a-zA-Z0-9]+/,"");
1128                        }else{
1129                                write_msg(get_lang('The origin folder and the destination folder are the same.'));
1130                                return false;
1131                        }
1132                }
1133                var params = "";
1134                if(msg_to_delete != "" && msg_to_move != ""){
1135                        params += "&selected_messages_move="+url_encode(selected_param);
1136                        params += "&new_folder_move="+url_encode(new_folder);
1137                        params += "&new_folder_name_move="+url_encode(new_folder_name);
1138               
1139                        new_folder = mount_url_folder(["INBOX",special_folders["Trash"]]);
1140                        new_folder_name = special_folders['Trash'];
1141                        params += "&selected_messages_delete="+url_encode(msg_to_delete);
1142                        params += "&new_folder_delete="+url_encode(new_folder);
1143                        cExecute ("$this.imap_functions.move_delete_search_messages", handler_move_search_msgs, params);
1144                }else if(msg_to_delete != ""){
1145                        new_folder = mount_url_folder(["INBOX",special_folders["Trash"]]);
1146                        new_folder_name = special_folders['Trash'];
1147                        params += "&delete=true";
1148                        params += "&selected_messages="+url_encode(msg_to_delete);
1149                        params += "&new_folder="+url_encode(new_folder);
1150                        cExecute ("$this.imap_functions.move_search_messages", handler_move_search_msgs, params);
1151                }else{
1152                        params = "&selected_messages="+url_encode(selected_param);
1153                        params += "&delete=false";
1154                        params += "&new_folder="+url_encode(new_folder);
1155                        params += "&new_folder_name="+url_encode(new_folder_name);
1156                        cExecute ("$this.imap_functions.move_search_messages", handler_move_search_msgs, params);
1157                }
1158        }
1159        else
1160                write_msg(get_lang('No selected message.'));
1161}
1162
1163function move_msgs2(folder, msgs_number, border_ID, new_folder, new_folder_name,show_success_msg, not_opem_previus){
1164        not_opem_previus = typeof(not_opem_previus) != 'undefined' ? not_opem_previus : false;
1165        var folder_error = new_folder_name;
1166        if( preferences.use_local_messages == 1 && expresso_local_messages.isArchiving( msgs_number, folder ) ){
1167            alert( "Impossivel mover mensagens que estï¿œo ainda estï¿œo sendo arquivadas." );
1168            return;
1169        }
1170
1171        if (! folder || folder == 'null')
1172                folder = Element("input_folder_"+msgs_number+"_r") ? Element("input_folder_"+msgs_number+"_r").value : (openTab.imapBox[currentTab] ? openTab.imapBox[currentTab]:get_current_folder());
1173        if(openTab.type[currentTab] == 1)
1174                return move_search_msgs('content_id_'+currentTab,new_folder,new_folder_name);
1175
1176        var handler_move_msgs = function(data){
1177                if(typeof(data) == 'string')
1178                        if (data.match(/^(.*)TRYCREATE(.*)$/)){
1179                                connector.loadScript('TreeS');
1180                                var move_to_folder = data.match(/^(.*)Spam(.*)$/) ? "Spam" : special_folders['Trash'];
1181                                alert(get_lang('There is not %1 folder, Expresso is creating it for you... Please, repeat your request later.', folder_error));
1182                                ttree.FOLDER = 'root';
1183                                create_new_folder(move_to_folder,"INBOX");
1184                                return false;
1185                        }else{
1186                                data = data.split("/").reverse(); //Recupera o nome da pasta do array
1187                                write_msg(get_lang('Error moving message.')+" "+get_lang('Permission denied to folder "%1".', data[0]));
1188                                return false;
1189                        }
1190                //Este bloco verifica as permissoes ACL sobre pastas compartilhadas
1191                if(data.status == false){
1192                        write_msg(get_lang("You don't have permission for this operation in this shared folder!"));
1193                        return false;
1194                }
1195                mail_msg = ( Element("divScrollMain_"+numBox) ) ? Element("divScrollMain_"+numBox).firstChild.firstChild : Element("divScrollMain_0").firstChild.firstChild;
1196                if (data.msgs_number.length == 1){
1197                        write_msg(get_lang("The message was moved to folder ") + lang_folder(data.new_folder_name));
1198                }
1199                else{
1200                        write_msg(get_lang("The messages were moved to folder ") + lang_folder(data.new_folder_name));
1201                }
1202
1203                if (openTab.type[currentTab] > 1){
1204                        msg_to_delete = Element(msgs_number);
1205                        if (parseInt(preferences.delete_and_show_previous_message) && msg_to_delete)
1206                        {
1207                                if (msg_to_delete.previousSibling){
1208                                        var previous_msg = msg_to_delete.previousSibling.id;
1209                                        //cExecute("$this.imap_functions.get_info_msg&msg_number="+previous_msg+"&msg_folder=" + current_folder, show_msg);
1210                                        if(!not_opem_previus){
1211                                                $.ajax({
1212                                                          url: 'controller.php?' + $.param( {action: '$this.imap_functions.get_info_msg',
1213                                                                                              msg_number: previous_msg,
1214                                                                                              msg_folder: folder,
1215                                                                                              decoded: true } ),
1216                                                          success: function( data ){
1217                                                              data = connector.unserialize( data );
1218                                                             
1219                                                              if( data )
1220                                                                  show_msg( data );
1221                                                          },
1222                                                          beforeSend: function( jqXHR, settings ){
1223                                                                connector.showProgressBar();
1224                                                          },
1225                                                          complete: function( jqXHR, settings ){
1226                                                                connector.hideProgressBar();
1227                                                          }
1228                                                });
1229                                        }
1230                                }
1231                                //se houver pagina anterior a paginaᅵᅵo deve ser refeita
1232                                else if (current_page > 1){
1233                                        $('#msg_opt_previous_'+msg_to_delete.getAttribute('id') + '_r').trigger('click');
1234                                }
1235                                else
1236                                        delete_border(currentTab,'false');
1237                        }
1238                        else{
1239                                delete_border(currentTab,'false');
1240                        }
1241                        if(msg_to_delete)
1242                                mail_msg.removeChild(msg_to_delete);
1243
1244                        // Update Box BgColor
1245                        var box = Element("tbody_box");
1246                        if(box.childNodes.length > 0){
1247                                updateBoxBgColor(box.childNodes);
1248                        }
1249                        if(folder == get_current_folder()){
1250                                Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) - 1;
1251                        }
1252                        return;
1253                }
1254
1255                Element('chk_box_select_all_messages').checked = false;
1256                if (! mail_msg)
1257                                mail_msg = Element("tbody_box");
1258                data.msgs_number = data.msgs_number.split(",");
1259
1260                var msg_to_delete;
1261                if( typeof(msgs_number) == 'string' )
1262                        all_search_msg = msgs_number.split(',');
1263                else if( typeof(msgs_number) == 'number')
1264                        all_search_msg = msgs_number;
1265
1266                for (var i=0; i <= all_search_msg.length; i++)
1267                {
1268                        msg_to_delete = Element(folder+';'+all_search_msg[i]);
1269                        if (msg_to_delete)
1270                                msg_to_delete.parentNode.removeChild(msg_to_delete);
1271                }
1272
1273                if ( preferences.use_shortcuts == '1') {
1274                        var all_messages = Element('tbody_box').childNodes;
1275                        // verificar se a msg selecionada com o checkbox ï¿œ a mesma selecionada com o shortcut
1276                        var msg_list_shortcut = get_selected_messages_shortcut().split(',');
1277                        if(data.msgs_number.length > 0 && msg_list_shortcut.length > 0 && data.msgs_number.toString() == msg_list_shortcut.toString()){
1278                                //Last msg is selected
1279                                if ( exist_className(all_messages[all_messages.length-1], 'selected_shortcut_msg') ) {
1280                                        select_msg('null', 'up', true);
1281                                }
1282                                else {
1283                                        if (!select_msg('null', 'down', true)) {
1284                                                select_msg('null', 'up', true);
1285                                        }
1286                                }
1287                        }
1288                }
1289                for (var i=0; i<data.msgs_number.length; i++)
1290                {
1291                        msg_to_delete = Element(data.msgs_number[i]);
1292                        if (msg_to_delete)
1293                                mail_msg.removeChild(msg_to_delete);   
1294                }
1295
1296                if (data.msgs_number.length == 1)
1297                        write_msg(get_lang("The message was moved to folder ") + lang_folder(data.new_folder_name));
1298                else
1299                        write_msg(get_lang("The messages were moved to folder ") + lang_folder(data.new_folder_name));
1300                if (data.border_ID.indexOf('r') != -1){
1301                        if (parseInt(preferences.delete_and_show_previous_message) && folder == get_current_folder()){
1302                                delete_border(data.border_ID,'false');
1303                                show_msg(data.previous_msg);
1304                                }
1305                        else
1306                                delete_border(data.border_ID,'false');
1307                }
1308                if(folder == get_current_folder()){
1309                        var n_total_msg = parseInt(Element('tot_m').innerHTML) - data.msgs_number.length;
1310                        draw_paging(n_total_msg);
1311                        Element('tot_m').innerHTML = n_total_msg;
1312                }
1313                refresh();
1314        }
1315
1316        if (folder == new_folder){
1317                write_msg(get_lang('The origin folder and the destination folder are the same.'));
1318                return;
1319        }
1320
1321        try{
1322                if (proxy_mensagens.is_local_folder(Element('input_folder_'+currentTab).getAttribute('value'))) {
1323                        alert(get_lang("You cant manipulate local messages on search"));
1324                        return;
1325                }
1326        } catch (e) {}
1327
1328        if(currentTab == 0)
1329                msgs_number = get_selected_messages();
1330
1331        if(openTab.type[currentTab] == 1){
1332                return move_search_msgs('content_id_'+currentTab,new_folder,new_folder_name);
1333                }
1334
1335        // se a aba estiver aberta e selecionada, apenas a msg da aba ï¿œ movida
1336        if(currentTab.toString().indexOf("_r") != -1 && currentTab == border_ID)
1337        {
1338                //se a aba for aberta atraves de uma pesquisa
1339                if(currentTab.toString().indexOf('_s') != -1)
1340                   msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf('_s'));
1341                else
1342                    msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf('_r'));
1343        }
1344        refresh();
1345        if (parseInt(msgs_number) > 0 || msgs_number.length > 0){
1346                // remove a flag $FilteredMessage da mensagem, depois move
1347                var handler_removeFlag = function(){
1348                        $.ajax({
1349                                url: 'controller.php?' + $.param( {action: '$this.imap_functions.move_messages',
1350                                                                    folder: folder,
1351                                                                    msgs_number: ""+msgs_number,
1352                                                                    border_ID: border_ID,
1353                                                                    sort_box_type: sort_box_type,
1354                                                                    search_box_type: search_box_type,
1355                                                                    sort_box_reverse: sort_box_reverse,
1356                                                                    reuse_border: border_ID,
1357                                                                    new_folder: new_folder,
1358                                                                    new_folder_name: new_folder_name,
1359                                                                    get_previous_msg: ( !not_opem_previus ? preferences.delete_and_show_previous_message : false ),
1360                                                                    decoded: true } ),
1361
1362                                success: function( data ){
1363                                    data = connector.unserialize( data );
1364                                    $.each(msgs_number, function(index, value){
1365                                        delete selectedPagingMsgs[value];
1366                                    });
1367                                    totalFolderMsgs -= msgs_number.split(",").length;
1368
1369                                    //TESTE
1370                                    selectAllFolderMsgs();
1371                                $('.select-link').unbind('click');
1372
1373                                    if( data )
1374                                        handler_move_msgs( data );
1375                                },
1376                                beforeSend: function( jqXHR, settings ){
1377                                        connector.showProgressBar();
1378                            },
1379                            complete: function( jqXHR, settings ){
1380                                        connector.hideProgressBar();
1381                          }
1382
1383                    });
1384                }
1385                var hasFolder = false;
1386                $.each(fromRules, function(index, value) {
1387                        if(value == folder){
1388                                hasFolder = true;
1389                                cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+folder+"&msg_number="+msgs_number, handler_removeFlag);
1390                                return false;
1391                        }
1392                });
1393                if(!hasFolder){
1394                        handler_removeFlag();
1395                }
1396               
1397        }else
1398                write_msg(get_lang('No selected message.'));
1399}
1400
1401function move_msgs(folder, msgs_number, border_ID, new_folder, new_folder_name, not_opem_previus) {
1402        move_msgs2(folder, msgs_number, border_ID, new_folder, new_folder_name,true, not_opem_previus);
1403}
1404
1405//Caso deseja-se que nï¿œo se abra a mensagem anterior independente da
1406//preferencia do usuario
1407function move_msgs_not_previus(folder, msgs_number, border_ID, new_folder, new_folder_name) {
1408        move_msgs2(folder, msgs_number, border_ID, new_folder, new_folder_name,true, true);
1409}
1410
1411function normalizeMsgNumber( msgNumber ){
1412 
1413      if (msgNumber || msgNumber == 'selected')
1414          msgNumber = get_selected_messages();
1415
1416
1417      // se a aba estiver aberta e selecionada, apenas a msg da aba ï¿œ movida
1418      if(currentTab.toString().indexOf("_r") != -1)
1419      {
1420            //se a aba for aberta atraves de uma pesquisa
1421            if(currentTab.toString().indexOf('_s') != -1)
1422                msgNumber = currentTab.toString().substr(0,currentTab.toString().indexOf('_s'));
1423            else
1424                msgNumber = currentTab.toString().substr(0,currentTab.toString().indexOf('_r'));
1425      }
1426     
1427      if (parseInt(msgNumber) <= 0 || msgNumber.length <= 0){
1428            write_msg(get_lang('No selected message.'));
1429            return( false );
1430      }
1431     
1432      return( msgNumber );
1433
1434}
1435
1436function archive_search_msgs(folder_dest) {
1437       
1438        var id_msgs = "";
1439        id_msgs = get_selected_messages_search();
1440        var msg_to_arquive = "";
1441        var messages = "";
1442        var id_border = currentTab.replace(/[a-zA-Z_]+/, "");
1443
1444        if ( parseInt(id_msgs) <= 0 || id_msgs.length <= 0 )
1445            return write_msg(get_lang('No selected message.'));
1446       
1447        if(folder_dest=='local_root' || folder_dest==null) //Caso seja o primeiro arquivamento...
1448            folder_dest = 'local_Inbox';
1449
1450        id_msgs = expresso_local_messages.checkArchived( id_msgs, folder_dest );
1451
1452        if( !id_msgs ){
1453            write_msg( "Todas as mensagens jï¿œ foram arquivadas anteriormente." );
1454            return;
1455        }
1456 
1457        document.getElementById("overlay").style.visibility = "visible";
1458
1459        var handler_arquivar_mensagens = function(data) {
1460         
1461            var msgs_info = [];
1462         
1463            for( var i = 0; i < data.length; i++ )
1464                msgs_info[i] = connector.unserialize( data[i] );
1465
1466            //vejo se jï¿œ tinha mensagens locais
1467            var h = expresso_local_messages.has_local_mails();
1468           
1469            expresso_local_messages.insert_mails( msgs_info, folder_dest, function( s, f ){complete_archiving( s, f, h )} );
1470
1471            document.getElementById("overlay").style.visibility = "hidden";
1472        }
1473
1474        id_msgs =  id_msgs.split(',');
1475        for (i = 0; i < id_msgs.length; i++){
1476                var tr = Element(id_msgs[i]+'_s'+id_border);
1477                msg_to_arquive = (tr.getAttribute('name') == null?get_current_folder():tr.getAttribute('name'));
1478                messages += ','+msg_to_arquive+';'+tr.id.replace(/_[a-zA-Z0-9]+/,"");
1479        }
1480       
1481        $.ajax({
1482                  url: 'controller.php?' + $.param( {action: '$this.imap_functions.get_info_msg',
1483                                                      msg_number: messages,
1484                                                      msg_folder: folder_dest,
1485                                                      decoded: true } ),
1486                  success: function( data ){
1487                      data = connector.unserialize( data );
1488                     
1489                      if( data )
1490                          handler_arquivar_mensagens( data );
1491                  },
1492                  beforeSend: function( jqXHR, settings ){
1493                        connector.showProgressBar();
1494                  },
1495                  complete: function( jqXHR, settings ){
1496                        connector.hideProgressBar();
1497                  }
1498
1499        });
1500}
1501
1502
1503function archive_msgs(folder,folder_dest,id_msgs) {
1504        if(proxy_mensagens.is_local_folder(folder)) {
1505                write_msg(get_lang("You cant archive local mails"));
1506                return;
1507        }
1508
1509        if(currentTab.toString().indexOf("_r") != -1)
1510        id_msgs = currentTab.toString().substr(0,currentTab.toString().indexOf("_r"));
1511               
1512    if(currentTab.toString().indexOf("_s") != -1)
1513                id_msgs = currentTab.toString().substr(0,currentTab.toString().indexOf("_s"));
1514
1515        if(!id_msgs){
1516                if (currentTab != 0 && currentTab.indexOf("search_")  >= 0){
1517                        archive_search_msgs(folder_dest);
1518                        return;
1519                }else
1520                        id_msgs = get_selected_messages();
1521        }       
1522
1523        if ( parseInt(id_msgs) <= 0 || id_msgs.length <= 0 )
1524            return write_msg(get_lang('No selected message.'));
1525       
1526        if(folder_dest=='local_root' || folder_dest==null) //Caso seja o primeiro arquivamento...
1527                folder_dest = 'local_Inbox';
1528
1529        id_msgs = expresso_local_messages.checkArchived( id_msgs, folder_dest );
1530
1531         if( !id_msgs ){
1532              write_msg( "Todas as mensagens jï¿œ foram arquivadas anteriormente." );
1533              return;
1534          }
1535 
1536        document.getElementById("overlay").style.visibility = "visible";
1537
1538        var handler_arquivar_mensagens = function(data) {
1539         
1540            var msgs_info = [];
1541         
1542            for( var i = 0; i < data.length; i++ )
1543                msgs_info[i] = connector.unserialize( data[i] );
1544
1545            //vejo se jï¿œ tinha mensagens locais
1546            var h = expresso_local_messages.has_local_mails();
1547           
1548            expresso_local_messages.insert_mails( msgs_info, folder_dest, function( s, f ){complete_archiving( s, f, h )} );
1549
1550            document.getElementById("overlay").style.visibility = "hidden";
1551        }
1552
1553        $.ajax({
1554                  url: 'controller.php?' + $.param( {action: '$this.imap_functions.get_info_msg',
1555                                                      msg_number: id_msgs,
1556                                                      msg_folder: folder,
1557                                                      decoded: true } ),
1558                  success: function( data ){
1559                      data = connector.unserialize( data );
1560                     
1561                      if( data )
1562                          handler_arquivar_mensagens( data );
1563                  },
1564                  beforeSend: function( jqXHR, settings ){
1565                        connector.showProgressBar();
1566                  },
1567                  complete: function( jqXHR, settings ){
1568                        connector.hideProgressBar();
1569                  }
1570
1571        });
1572}
1573
1574function complete_archiving( success, fails, has_local_messages_before )
1575{
1576    var msgs_to_remove = {};
1577    var target = mount_url_folder(["INBOX",special_folders["Trash"],'tmpMoveToLocal']);
1578   
1579    success = expresso_local_messages.select_mail( [ 'original_id', 'original_folder' ], success );
1580
1581    for (var i = 0; i < success.length; i++) {
1582       
1583        var msg_info = success[i];
1584
1585//      if ( msg_info.dest_folder == target )
1586//      {
1587//              msg_info.msg_folder += (Date.parse(new Date));
1588//      }
1589
1590        //////////////// deselecionando ////////////////
1591        Element('chk_box_select_all_messages').checked = false;
1592
1593        if ( Element("check_box_message_" + msg_info.original_id) )
1594        {
1595                Element("check_box_message_" + msg_info.original_id).checked = false;
1596        }
1597        if ( Element(msg_info.original_id) )
1598        {
1599                remove_className(Element(msg_info.original_id), 'selected_msg');
1600        }
1601
1602//      if ( tree_folders._selected.id.indexOf( 'local_' ) == 0 || msg_info.dest_folder.indexOf( target ) == 0 )
1603//      {
1604//              openTab.imapBox[0] = '';
1605//              tree_folders.getNodeById( 'local_Inbox' )._select( );
1606//              change_folder('local_Inbox','Inbox');
1607//      }
1608        /////////////////////////////////////////////////
1609
1610        //As mensagens arquivadas devem ser removidas, caso o usuario tenha isso configurado.
1611        msgs_to_remove[ msg_info.original_folder ] = msgs_to_remove[ msg_info.original_folder ] || [];
1612        msgs_to_remove[ msg_info.original_folder ].push( msg_info.original_id );
1613    }
1614
1615    if (preferences.keep_archived_messages == 0) {
1616            //Remove as mensagens
1617            for( var folder in msgs_to_remove ){
1618                if(folder != 'undefined')
1619                        delete_msgs(folder, msgs_to_remove[folder],'null',false,true);
1620            }
1621    }
1622
1623    if( !has_local_messages_before && expresso_local_messages.has_local_mails() )
1624            ttreeBox.update_folder();
1625    else
1626            update_menu();
1627}
1628
1629function action_msg_selected_from_search(aba, evento){
1630        if(evento == "delete")
1631                move_search_msgs(aba,'INBOX/Trash', 'Trash', 'delete');
1632}
1633
1634function get_all_messages_search(){
1635        var aba = document.getElementById('content_id_'+currentTab);
1636        var messages = "";
1637        jQuery(function() {
1638            jQuery("#"+aba.id+" tr").each(function(i, main_list) {
1639                                messages += main_list.id.replace(/_[a-zA-Z0-9]+/,"") + ',' ;
1640            });             
1641             
1642        });
1643        if(messages.indexOf(',') == 0)
1644                messages = messages.substring(1,(messages.length));
1645        return messages.substring(0,(messages.length-1));
1646}
1647
1648function get_selected_messages_search(){
1649        var aba = document.getElementById('content_id_'+currentTab);
1650        var selected_messages = "";
1651            jQuery("#"+aba.id+" tr").each(function(i, main_list) {
1652                var check_box = main_list.firstChild.firstChild;
1653                        if(check_box && check_box.checked) {
1654                                selected_messages += main_list.id.replace(/_[a-zA-Z0-9]+/,"") + ',' ;
1655                        };
1656            });             
1657             
1658        if (selected_messages != ""){
1659                if(selected_messages.indexOf(',') == 0)
1660                        selected_messages = selected_messages.substring(1,(selected_messages.length));
1661                selected_messages = selected_messages.substring(0,(selected_messages.length-1));
1662                return selected_messages;
1663        }else{
1664                return false;
1665        }
1666}
1667
1668function get_selected_messages_search_role(){
1669        var aba = document.getElementById('content_id_'+currentTab);
1670        var selected_messages = "";
1671        jQuery("#"+aba.id+" tr").each(function(i, main_list) {
1672        var check_box = main_list.firstChild.firstChild;
1673                if(check_box && check_box.checked && check_box.id != 'chk_box_select_all_messages_search') {
1674                        selected_messages += main_list.role + ',' ;
1675                };
1676        });             
1677
1678        if (selected_messages != ""){
1679                if(selected_messages.indexOf(',') == 0)
1680                        selected_messages = selected_messages.substring(1,(selected_messages.length));
1681                selected_messages = selected_messages.substring(0,(selected_messages.length-1));
1682                return selected_messages;
1683        }else{
1684                return false;
1685        }
1686}
1687
1688function get_selected_messages_shortcut(){
1689        var main;
1690        try{
1691                main = document.getElementById("divScrollMain_"+numBox).firstChild.firstChild;
1692        }catch(e){
1693        };
1694
1695        if (! main)
1696                main = Element("tbody_box_"+numBox);
1697
1698        if (! main)
1699                main = Element("tbody_box");
1700
1701        // Get all TR (messages) in tBody.
1702        var main_list = main.childNodes;
1703        var selected_messages_by_shortcuts = '';
1704        var j = 0;
1705        for (j; j<(main_list.length); j++)
1706        {
1707
1708                if ( exist_className(Element(main_list[j].id), 'selected_shortcut_msg') )
1709                {
1710                        selected_messages_by_shortcuts += main_list[j].id + ',';
1711                }
1712
1713        }
1714        selected_messages_by_shortcuts = selected_messages_by_shortcuts.substring(0,(selected_messages_by_shortcuts.length-1));
1715
1716        return selected_messages_by_shortcuts;
1717
1718}
1719
1720/*function get_selected_messages(){
1721        var main;
1722        try{
1723                main = document.getElementById("divScrollMain_"+numBox).firstChild.firstChild;
1724        }catch(e){
1725        };
1726
1727        if (! main)
1728                main = Element("tbody_box_"+numBox);
1729
1730        if (! main)
1731                main = Element("tbody_box");
1732
1733        // Get all TR (messages) in tBody.
1734        var main_list = main.childNodes;
1735
1736        var _tab_prefix = getTabPrefix();
1737        var selected_messages = '';
1738        var selected_messages_by_shortcuts = '';
1739        var j = 0;
1740        for (j; j<(main_list.length); j++)
1741        {
1742
1743                if ( (!isNaN(parseInt(numBox))) && (numBox == 0)) {
1744                        check_box = Element("check_box_message_" + main_list[j].id);
1745                } else {
1746                        id_mensagem = main_list[j].id.split('_');
1747                                                check_box = Element("search_" + numBox + "_check_box_message_" + id_mensagem[0]);
1748                }       
1749                                 
1750                if ( (check_box) && (check_box.checked) )
1751                        selected_messages += main_list[j].id + ',';
1752
1753                if (preferences.use_shortcuts == '1')
1754                {
1755                        if ( exist_className(Element(main_list[j].id), 'selected_shortcut_msg') )
1756                        {
1757                                selected_messages_by_shortcuts += main_list[j].id + ',';
1758                        }
1759                }
1760        }
1761        selected_messages = selected_messages.substring(0,(selected_messages.length-1));
1762
1763                         
1764                        /* Verifica se estï¿œ na tela de pesquisa. */ /*
1765                        if(selected_messages.indexOf("_") != -1)
1766                        {
1767                                results_search_messages = selected_messages;
1768                                /* Retira a informaᅵᅵo da aba */ /*
1769                                selected_messages = selected_messages.substring(0,selected_messages.indexOf("_"));
1770        }
1771       
1772
1773        if (preferences.use_shortcuts == '1')
1774        {
1775                selected_messages_by_shortcuts = selected_messages_by_shortcuts.substring(0,(selected_messages_by_shortcuts.length-1));
1776
1777                var array_selected_messages_by_shortcuts = selected_messages_by_shortcuts.split(",");
1778                var array_selected_messages = selected_messages.split(",");
1779                /*
1780                if ((array_selected_messages.length == 0) && (array_selected_messages_by_shortcuts.length > 0))
1781                {
1782                        return selected_messages_by_shortcuts;
1783                }*/
1784                /*Se houver mais de uma mensagem selecionada por atalho*//*
1785                if (array_selected_messages_by_shortcuts.length > 1){
1786                        if (selected_messages == "")
1787                           return selected_messages_by_shortcuts;
1788                        else
1789                           return selected_messages + "," + selected_messages_by_shortcuts;
1790                }
1791        }       
1792        if (selected_messages == '')
1793                return false;
1794        else
1795                return selected_messages;
1796}*/
1797function get_selected_messages(){
1798        var selected = new Array();
1799        $.each(selectedPagingMsgs, function(index, value){
1800                if(value)
1801                        selected.push(index);
1802        });
1803        return ""+selected;
1804}
1805
1806function replaceAll(string, token, newtoken) {
1807        while (string.indexOf(token) != -1) {
1808                string = string.replace(token, newtoken);
1809        }
1810        return string;
1811}
1812
1813function new_message_to(email) {
1814        var new_border_ID = new_message('new','null');
1815        document.getElementById("to_" + new_border_ID).value=email;
1816}
1817
1818function new_message(type, border_ID){
1819                if(RichTextEditor.editorReady === false) return false;
1820                             
1821            RichTextEditor.editorReady = false;
1822
1823               
1824                if (Element('show_img_link_'+border_ID))
1825                {
1826                        show_msg_img(border_ID.match(/^\d*/)[0], Element('input_folder_'+border_ID).value);
1827                }
1828        var new_border_ID = draw_new_message(parseInt(border_ID.replace('_r','')));
1829       
1830        if(typeof(openTab.type[new_border_ID]) != "undefined") {
1831                if(tabTypes[type] == openTab.type[new_border_ID]) {
1832                    if (type != 'edit')
1833                    {
1834                                                delete_border(currentTab);
1835                                                new_border_ID = draw_new_message(parseInt(border_ID));
1836                    }                   
1837                } else {
1838                        var a_types = {6 : get_lang("Forward"),7 : get_lang("Reply"),
1839                                        8 : get_lang("Reply to all with history"),
1840                                        9 : get_lang("Reply without history"),
1841                                        10: get_lang("Reply to all without history")};
1842                        if(new_border_ID != 0)
1843                        if(!confirm(get_lang("Your message to %1 has not been saved or sent. "+
1844                                                "To %2 will be necessary open it again. Discard your message?",
1845                                                a_types[openTab.type[new_border_ID]].toUpperCase(),
1846                                                a_types[tabTypes[type]].toUpperCase()))){
1847                                return new_border_ID;
1848                        } else {
1849                                delete_border(currentTab);
1850                                new_border_ID = draw_new_message(parseInt(border_ID));
1851                        }
1852                }
1853        }
1854        if (new_border_ID == 'maximo'){
1855                RichTextEditor.editorReady = true;
1856                return false;
1857        }
1858        if (new_border_ID == false)
1859        {
1860                RichTextEditor.editorReady = true;
1861            setTimeout('new_message(\''+type+'\',\''+border_ID+'\');',500);
1862                return false;
1863        }
1864        openTab.type[new_border_ID] = tabTypes[type];
1865
1866        // Salva a pasta da mensagem respondida ou encaminhada:
1867        var folder_message = Element("input_folder_"+border_ID);
1868        if(folder_message) {
1869                var input_current_folder = document.createElement('input');
1870                input_current_folder.id = "new_input_folder_"+border_ID;
1871                input_current_folder.name = "input_folder";
1872                input_current_folder.type = "hidden";
1873                input_current_folder.value = folder_message.value;
1874                Element("content_id_" + new_border_ID).appendChild(input_current_folder);
1875        }//Fim.
1876        var title = '';
1877        data = [];
1878
1879       
1880        if (Element("from_" + border_ID)){
1881                if (document.getElementById("reply_to_" + border_ID)){
1882                                data.to = document.getElementById("reply_to_values_" + border_ID).value;
1883                                data.to = data.to.replace(/&lt;/gi,"<");
1884                                data.to = data.to.replace(/&gt;/gi,">");
1885                }
1886                else {
1887                        if (document.getElementById("sender_values_"+border_ID))
1888                        {
1889                                data.to = document.getElementById("sender_values_"+border_ID).value;
1890                                data.to = data.to.replace(/&lt;/gi,"<");
1891                                data.to = data.to.replace(/&gt;/gi,">");
1892                        }
1893                        else if(document.getElementById("from_values_"+border_ID)) {
1894                                data.to = document.getElementById("from_values_"+border_ID).value;
1895                                data.to = data.to.replace(/&lt;/gi,"<");
1896                                data.to = data.to.replace(/&gt;/gi,">");
1897                        }
1898                }
1899                if (document.getElementById("to_values_" + border_ID)){
1900                        data.to_all = document.getElementById("to_values_" + border_ID).value;
1901                        data.to_all_alternative = document.getElementById("user_email_alternative").value;
1902                        data.to_all = data.to_all.replace(/\n/gi," ");
1903                        data.to_all = data.to_all.replace(/&lt;/gi,"<");
1904                        data.to_all = data.to_all.replace(/&gt;/gi,">");
1905                        var _array_to_all = data.to_all.split(",");
1906                        var _array_to_alternative = data.to_all_alternative.split(",");
1907                }
1908        }
1909        if (document.getElementById("cc_" + border_ID)){
1910                data.cc = document.getElementById("cc_values_" + border_ID).value;
1911                data.cc = data.cc.replace(/&lt;/gi,"<");
1912                data.cc = data.cc.replace(/&gt;/gi,">");
1913                var _array_cc = data.cc.split(",");
1914        }
1915        if (document.getElementById("cco_" + border_ID)){
1916                data.cco = document.getElementById("cco_values_" + border_ID).value;
1917                data.cco = data.cco.replace(/&lt;/gi,"<");
1918                data.cco = data.cco.replace(/&gt;/gi,">");
1919        }
1920        if ($("#subject_" + border_ID))
1921                data.subject = $("#subject_" + border_ID).text();
1922        if(data.subject == get_lang("(no subject)   "))
1923                data.subject = '';
1924        if (document.getElementById("body_" + border_ID))
1925                data.body = document.getElementById("body_" + border_ID).innerHTML;
1926        if (document.getElementById("from_values_" + border_ID))
1927                data.from = document.getElementById("from_values_"+border_ID).value;
1928        if (Element('date_' + border_ID)){
1929                data.date = Element('date_' + border_ID).innerHTML;
1930        }
1931        if (Element('date_day_' + border_ID)){
1932                data.date_day = Element('date_day_' + border_ID).value;
1933        }
1934        if (Element('date_hour_' + border_ID)){
1935                data.date_hour = Element('date_hour_' + border_ID).value;
1936        }
1937       
1938        var signature = RichTextEditor.getSignatureDefault();
1939       
1940        if(type!="new" && type!="edit" && document.getElementById("is_local_"+border_ID) != null)
1941                data.is_local_message = (document.getElementById("is_local_"+border_ID).value=="1")?true:false;
1942               
1943        if(typeof($.fn.elastic) == "undefined"){
1944                $.lazy({
1945                        src: '../prototype/plugins/jquery-elastic/jquery.elastic.source.js',
1946                        name: 'elastic'
1947                });
1948        }
1949        var content = $("#content_id_"+new_border_ID);
1950
1951switch(type){
1952                case "reply_without_history":
1953                        RichTextEditor.replyController = true; //Seta o editor como modo reply
1954                        content.find('[name="input_to"]').val(data.to);                 
1955                       
1956                        draw_reply_boxes_by_field("to", data.to, content);
1957                       
1958                        title = "Re: " + html_entities(data.subject);
1959                        content.find(".subject").val("Re: " + data.subject);                   
1960                        useOriginalAttachments(new_border_ID,border_ID);
1961                        content.find('[name="msg_reply_from"]').val($("#msg_number_" + border_ID).val());                       
1962
1963                        // Insert the signature automaticaly at message body if use_signature preference is set
1964                        if (preferences.use_signature == "1"){ 
1965                                RichTextEditor.setInitData(new_border_ID,'<div><br type="_moz"></div>' + signature ,true) ;     
1966                        }
1967                        break;
1968                case "reply_with_history":
1969                        RichTextEditor.replyController = true; //Seta o editor como modo reply
1970                        title = "Re: " + html_entities(data.subject);
1971                        content.find(".subject").val("Re: " + data.subject);
1972                        content.find('[name="input_to"]').val(data.to);
1973                       
1974                        draw_reply_boxes_by_field("to", data.to, content);
1975                        content.find('[name="msg_reply_from"]').val($("#msg_number_" + border_ID).val());       
1976                        block_quoted_body = make_body_reply(data.body, data.from, data.date_day, data.date_hour);
1977                       
1978                        useOriginalAttachments(new_border_ID,border_ID);
1979                       
1980                        // Insert the signature automaticaly at message body if use_signature preference is set
1981                        if (preferences.use_signature == "1"){ 
1982                                RichTextEditor.setInitData(new_border_ID, '<div><br type="_moz"></div>' + signature + '<div><br type="_moz"></div>' + block_quoted_body,true);                         
1983                        }else{
1984                                RichTextEditor.setInitData(new_border_ID,'<div><br type="_moz"></div>'+ block_quoted_body,true);
1985                        }
1986                        break;
1987                case "reply_to_all_without_history":
1988                        RichTextEditor.replyController = true; //Seta o editor como modo reply
1989                        // delete user email from to_all array.
1990                        data.to_all = new Array();
1991                        data.to_all = removeUserEmail(_array_to_all);
1992                        data.to_all = removeAlternative(data.to_all,_array_to_alternative);
1993                        content.find('[name="msg_reply_from"]').val($("#msg_number_" + border_ID).val());       
1994
1995                        data.to_all = data.to_all.join(",");
1996
1997                        title = "Re: " + html_entities(data.subject);
1998                        content.find(".subject").val("Re: " + data.subject);
1999                       
2000                        if (data.to.indexOf(Element("user_email").value) > 0 ){
2001                                draw_reply_boxes_by_field("to", data.to_all, content);
2002                                content.find('[name="input_to"]').val(data.to_all);
2003                        }else{
2004                                draw_reply_boxes_by_field("to", data.to + ',' + data.to_all, content);
2005                                content.find('[name="input_to"]').val(data.to + ',' + data.to_all);
2006                        }
2007                       
2008                        if (data.cc){
2009                                data.cc = new Array();
2010                                data.cc = removeUserEmail(_array_cc);
2011                                data.cc = removeAlternative(data.cc,_array_to_alternative);
2012                                        if (data.cc != get_lang("undisclosed-recipient"))
2013                                                data.cc = data.cc.join(",");
2014                                        else
2015                                                data.cc = "";   
2016                                if(data.cc != ""){
2017                                        content.find('[name="input_cc"]').val(data.cc);
2018                                        input_binds(content.find('[name="input_cc"]').parent(), new_border_ID);
2019                                        content.find(".cc-tr").show();//cc-button
2020                                        //document.getElementById("a_cc_link" + new_border_ID).value = data.cc;
2021                                        content.find(".cc-button").toggleClass("expressomail-button-icon-ative");
2022                                        content.find(".cc-button").find("span").html("Remover CC");
2023                                        draw_reply_boxes_by_field("cc", data.cc, content);
2024                                }
2025                        }
2026                       
2027                        useOriginalAttachments(new_border_ID,border_ID); 
2028                        if (preferences.use_signature == "1"){ 
2029                                RichTextEditor.setInitData(new_border_ID,'<div><br type="_moz"></div>' + signature,true);
2030                        }
2031                               
2032                        break;
2033                case "reply_to_all_with_history":
2034                        RichTextEditor.replyController = true; //Seta o editor como modo reply
2035                        //delete user email from to_all array.
2036                        data.to_all = new Array();
2037                        data.to_all = removeUserEmail(_array_to_all);
2038                        data.to_all = removeAlternative(data.to_all,_array_to_alternative);
2039                        content.find('[name="msg_reply_from"]').val($("#msg_number_" + border_ID).val());
2040               
2041                        if (data.to_all != get_lang("undisclosed-recipient"))
2042                                data.to_all = data.to_all.join(",");
2043                        else
2044                                data.to_all = "";
2045                       
2046                        title = "Re: " + html_entities(data.subject);
2047                       
2048                        if (data.to.indexOf(Element("user_email").value) > 0 ){
2049                                draw_reply_boxes_by_field("to", data.to_all, content);
2050                                content.find('[name="input_to"]').val(data.to_all);
2051                        }else{
2052                                draw_reply_boxes_by_field("to", data.to + ',' + data.to_all, content);
2053                                content.find('[name="input_to"]').val(data.to + ',' + data.to_all);                     
2054                        }
2055                       
2056                        if (data.cc){
2057                                data.cc = new Array();
2058                                data.cc = removeUserEmail(_array_cc);
2059                                data.cc = removeAlternative(data.cc,_array_to_alternative);
2060                                        if (data.cc != get_lang("undisclosed-recipient"))
2061                                                data.cc = data.cc.join(",");
2062                                        else
2063                                                data.cc = "";                   
2064                                if(data.cc != ""){
2065                                        content.find('[name="input_cc"]').val(data.cc);
2066                                        input_binds(content.find('[name="input_cc"]').parent(), new_border_ID);
2067                                        content.find(".cc-tr").show();
2068                                        content.find(".cc-button").toggleClass("expressomail-button-icon-ative");
2069                                        content.find(".cc-button").find("span").html("Remover CC");
2070                                       
2071                                        draw_reply_boxes_by_field("cc", data.cc, content);
2072                                }
2073                        }
2074                        content.find(".subject").val("Re: " + data.subject);
2075                       
2076                        block_quoted_body = make_body_reply(data.body, data.from, data.date_day, data.date_hour);
2077                       
2078                        useOriginalAttachments(new_border_ID,border_ID);
2079                       
2080                        if (preferences.use_signature == "1"){ 
2081                                RichTextEditor.setInitData(new_border_ID,'<div><br type="_moz"></div><div><br type="_moz"></div>' + signature + '<div><br type="_moz"></div>'+ block_quoted_body,true);
2082                        }else{               
2083                                RichTextEditor.setInitData(new_border_ID,block_quoted_body,true);
2084                        }
2085                               
2086                        break;
2087                case "forward":
2088                        title = "Fw: " + html_entities(data.subject);
2089                        content.find(".subject").val("Fw: " + data.subject);
2090                        var divFiles = Element("divFiles_"+new_border_ID);
2091                        var campo_arquivo;
2092                        content.find('[name="msg_forward_from"]').val($("#msg_number_" + border_ID).val());
2093                 
2094                        if (Element("attachments_" + border_ID))
2095                            addOriginalAttachments(new_border_ID,border_ID);
2096                       
2097                        // Insert the signature automaticaly at message body if use_signature preference is set
2098                        if (preferences.use_signature == "1"){
2099                                $("#body_"+new_border_ID).val('<div><br type="_moz"></div><div><br type="_moz"></div>' + signature + '<div><br type="_moz"></div>'+ make_forward_body(data.body, data.to, data.date, data.subject, data.to_all, data.cc));
2100                        RichTextEditor.setInitData(new_border_ID,'<div><br type="_moz"></div>' + signature + '<div><br type="_moz"></div>'+ make_forward_body(data.body, data.to, data.date, data.subject, data.to_all, data.cc));
2101                                content.find(".to").focus();
2102                        }
2103                        else{   
2104                                RichTextEditor.setInitData(new_border_ID,make_forward_body(data.body, data.to, data.date, data.subject, data.to_all, data.cc));   
2105                                $("#body_"+new_border_ID).val('<div><br type="_moz"></div><div><br type="_moz"></div>'+make_forward_body(data.body, data.to, data.date, data.subject, data.to_all, data.cc));
2106                                content.find(".to").focus();
2107                        }
2108
2109                        break;
2110                case "new":
2111                        title = get_lang("New Message");
2112                        if(Element('msg_number').value) {
2113                                var _to = Element('msg_number').value;
2114                                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}\])$/;
2115                                if(!reEmail.test(_to)){
2116                                        var array_contacts = contacts.split(',');
2117                                        for(i = 0; i < array_contacts.length;i++) {
2118                                                if(array_contacts[i].lastIndexOf(_to) != "-1"){
2119                                                        var _group = array_contacts[i].split(";");
2120                                                        _to = '"'+_group[0]+'" <'+_group[1]+'>';
2121                                                        break;
2122                                                }
2123                                        }
2124                                }
2125                                content.find('[name="input_to"]').val(_to +',');
2126                                draw_email_box(_to, content.find(".to").filter("input"));
2127                                Element('msg_number').value = '';
2128                        }
2129                       
2130                        // Insert the signature automaticaly at message body if use_signature preference is set
2131                         if (preferences.use_signature == "1"){
2132                                $("#body_"+new_border_ID).val('<div><br type="_moz"></div><div><br type="_moz"></div>' + signature);
2133                                RichTextEditor.setInitData(new_border_ID, '<div><br type="_moz"></div>' + signature);
2134                                content.find(".to").focus();
2135                         }
2136                         else
2137                           content.find('[name="input_to"]').focus();
2138                        break;
2139                case "edit":
2140                        openTab.imapBox[new_border_ID] = folder_message.value;
2141                        document.getElementById('font_border_id_'+new_border_ID).innerHTML = data.subject;
2142                        title = "Ediᅵᅵo: "+ html_entities(data.subject);
2143                       
2144                        data.to = Element("to_values_" + border_ID).value;
2145                        if( data.to != get_lang("without destination") ) {
2146                                data.to = data.to.replace(/&lt;/gi,"<");
2147                                data.to = data.to.replace(/&gt;/gi,">");
2148                        } else {
2149                                data.to = "";
2150                        }
2151
2152                        draw_reply_boxes_by_field("to", data.to, content);
2153                       
2154                        content.find('[name="input_to"]').val(data.to);
2155                        if (data.cc){
2156                                data.cc = data.cc.replace(/&lt;/gi,"<");
2157                                data.cc = data.cc.replace(/&gt;/gi,">");
2158                                content.find('[name="input_cc"]').val(data.cc);
2159                                input_binds(content.find('[name="input_cc"]').parent(), new_border_ID);
2160                                content.find(".cc-tr").show();
2161                                content.find(".cc-button").toggleClass("expressomail-button-icon-ative");
2162                                content.find(".cc-button").find("span").html(get_lang('Remove CC'));
2163                                draw_reply_boxes_by_field("cc", data.cc, content);
2164                        }
2165                        if (data.cco){
2166                                if(content.find('[name="input_cco"]').length){
2167                                        content.find('[name="input_cco"]').val(data.cco);
2168                                        content.find(".cco-tr").show();
2169                                        content.find(".cco-button").toggleClass("expressomail-button-icon-ative");
2170                                        content.find(".cco-button").find("span").html(get_lang('Remove CCo'));
2171                                        input_binds(content.find('[name="input_cco"]').parent(), new_border_ID);
2172                                        draw_reply_boxes_by_field("cco", data.cco, content);
2173                                }
2174                        }
2175                        content.find(".subject").val(data.subject);
2176                       
2177                        if( $("#disposition_notification_" + border_ID).length ){
2178                                content.find('[name="input_return_receipt"]').attr("checked", true);
2179                                content.find(".return-recept").toggleClass("expressomail-button-icon-ative");
2180                                //Element("return_receipt_" + new_border_ID).checked = true;
2181                        }
2182
2183                        var element_important_message = Element("important_message_" + new_border_ID);
2184                        if(element_important_message) {
2185                                       
2186                                if($("#disposition_important_" + border_ID).length){
2187                                        content.find('[name="input_important_message"]').attr("checked", true);
2188                                        content.find(".important").toggleClass("expressomail-button-icon-ative");       
2189                                }
2190                        }
2191
2192                        if (Element("attachments_" + border_ID))
2193                                addOriginalAttachments(new_border_ID,border_ID);
2194                        RichTextEditor.setInitData(new_border_ID, data.body, 'edit');
2195                       
2196                        uidsSave[new_border_ID].push(new_border_ID);
2197                        close_delete(border_ID);
2198                       
2199                        break;
2200                default:
2201        }
2202       
2203        content.find('[name="input_to"]').trigger("update");   
2204        var txtarea = $('#body_'+new_border_ID);
2205        var height = document.body.scrollHeight - 330;
2206        txtarea.css("overflowY","auto");
2207        txtarea.css("height",height);
2208        $("#border_id_" + new_border_ID).attr("title", title);
2209//      set_border_caption("border_id_" + new_border_ID, title);
2210//      resizeWindow();
2211        return new_border_ID; //Preciso retornar o ID da nova mensagem.
2212}
2213
2214//DESENHA OS RETANGULOS PARA OS E-MAIL NA OPᅵᅵO REPLY
2215function draw_reply_boxes_by_field(field, value, context){
2216        array = break_comma(value);
2217        $.each(array, function(index, value){
2218                draw_email_box(value, context.find("."+field).filter("input"));
2219        });
2220}
2221
2222//Remove o email do usuario ao responder a todos
2223function removeUserEmail(emailList){
2224      var userEmail = Element("user_email").value;
2225      var array_emails = Array();
2226      var j = 0;
2227      for (var i=0;i<emailList.length;i++){
2228                        if (emailList[i].indexOf(userEmail) < 0){
2229                           array_emails[j++] = emailList[i];
2230                        }
2231          } 
2232 return array_emails;
2233}
2234
2235//Remove os emails alternativos ao responder a todos
2236function removeAlternative(value_to_all, _array_to_alternative){
2237        for(i = 0; i < _array_to_alternative.length; i++) {
2238                for(k = 0; k < value_to_all.length; k++){
2239                        if(value_to_all[k].match(/<([^<]*)>[\s]*$/)){
2240                                if(value_to_all[k].match(/<([^<]*)>[\s]*$/)[1].toLowerCase() == _array_to_alternative[i].toLowerCase()){
2241                                        value_to_all.splice( k , 1);
2242                                        k--;
2243                                }
2244                        }else if(value_to_all[k].replace(/^\s+|\s+$/g,"").toLowerCase() == _array_to_alternative[i].toLowerCase()){
2245                                        value_to_all.splice( k , 1);
2246                                        k--;
2247                        }
2248                }
2249        }
2250        return value_to_all;
2251}
2252
2253function useOriginalAttachments(new_border_ID,old_id_border)
2254{   
2255        if (Element("attachments_" + old_id_border))
2256        {
2257                var fileUploadMSG = $('#fileupload_msg'+new_border_ID);         
2258                var attachments = document.getElementById("attachments_" + old_id_border).getElementsByTagName("a");   
2259                var imagens = block_quoted_body.match(/<img[^>]*>/g);
2260                var arrayAttachments = [];
2261                var arrayAttachmentsA = [];
2262               
2263                //-------------------
2264                    for (var i = 0; i < attachments.length; i++){
2265                            if((attachments[i].tagName=="SPAN") || (attachments[i].tagName=="IMG") || ((attachments[i].href.indexOf("javascript:download_local_attachment")==-1)&&(attachments[i].href.indexOf("javascript:download_attachments")==-1)))
2266                                    continue;
2267
2268                                var arrayAtt = attachments[i].href.replace("javascript:download_attachments(", "").replace(")", "").split(',');                                 
2269                                var att = new Object();
2270                                var regex = new RegExp( "'", "g" );
2271                                att.folder = arrayAtt[0].replace(regex,"");
2272                                att.uid = arrayAtt[1].replace(regex,"");
2273                                att.part = arrayAtt[3].replace(regex,"");
2274                                att.type = 'imapPart';
2275                                var idATT = JSON.stringify(att);
2276                               
2277                                if(block_quoted_body.indexOf('src="./inc/get_archive.php?msgFolder='+att.folder+'&amp;msgNumber='+att.uid+'&amp;indexPart='+att.part+'"') !== -1)
2278                                {
2279                                    addAttachment( new_border_ID , idATT); 
2280
2281                                    var attach = {};
2282                                    attach.fileName =  attachments[i].text.substring(0, attachments[i].text.lastIndexOf('('));
2283                    attach.fullFileName = attach.fileName;
2284                                    if(attach.fileName.length > 20)
2285                                        attach.fileName = attach.fileName.substr(0, 17) + " ... " + attach.fileName.substr(attach.fileName.length-9, attach.fileName.length);
2286
2287                                    attach.fileSize =  attachments[i].text.substring(( attachments[i].text.lastIndexOf('(')+1), attachments[i].text.lastIndexOf(')'));
2288
2289                    attach.error = false;
2290                    fileUploadMSG.find(' .attachments-list').show();
2291                                    var upload = $(DataLayer.render("../prototype/modules/mail/templates/attachment_add_itemlist.ejs", {file : attach}));
2292                                    upload.append('<input type="hidden" name="fileId[]" value=\''+idATT+'\'/>');
2293                    upload.find(".att-box-loading").remove();
2294                                    upload.find('.att-box-delete').click(function(){
2295                                            var idAttach = $(this).parent().find('input[name="fileId[]"]').val();
2296                                            var content_body = RichTextEditor.getData('body_'+new_border_ID);
2297                                            var imagens = content_body.match(/<img[^>]*>/g);
2298                                            var att = JSON.parse(idAttach);
2299                                            if(imagens != null)
2300                                            {   
2301                                                for (var x = 0; x < imagens.length; x++)
2302                                                    if(imagens[x].indexOf('src="./inc/get_archive.php?msgFolder='+att.folder+'&amp;msgNumber='+att.uid+'&amp;indexPart='+att.part) !== -1)
2303                                                        content_body = content_body.replace(imagens[x],'');
2304
2305                                                RichTextEditor.setData('body_'+new_border_ID,content_body);   
2306                                            }       
2307
2308                                            fileUploadMSG.find('.attachments-list').find('input[value="'+idAttach+'"]');
2309                                            delAttachment(new_border_ID,idAttach);
2310                                            $(this).parent().qtip("destroy");
2311                        $(this).parent().remove();
2312                        if(!fileUploadMSG.find(' .attachments-list').find(".att-box").length){
2313                            fileUploadMSG.find(' .attachments-list').hide();
2314                        }
2315                                    });
2316
2317                                    fileUploadMSG.find('.attachments-list').append(upload);
2318                    fileUploadMSG.find('.attachments-list .att-box:last').qtip({
2319                        content: DataLayer.render("../prototype/modules/mail/templates/attachment_add_itemlist_tooltip.ejs", {attach : attach}),
2320                        position: {
2321                            corner: {
2322                                tooltip: 'bottomMiddle',
2323                                target: 'topMiddle'
2324                            },
2325                            adjust: {
2326                               resize: true,
2327                               scroll: true,
2328                               screen: show
2329                            }
2330                        },
2331                        show: {
2332                            when: 'mouseover', // Don't specify a show event
2333                            ready: false // Show the tooltip when ready
2334                        },
2335                        hide: 'mouseout', // Don't specify a hide event
2336                        style: {
2337                            border: {
2338                                width: 1,
2339                                radius: 5
2340                            },
2341                            width: {
2342                                                                 min: 75,
2343                                                                 max : 1000
2344                                                        },
2345                            padding: 3,
2346                            textAlign: 'left',
2347                            tip: true, // Give it a speech bubble tip with automatic corner detection
2348                            name: 'blue' // Style it according to the preset 'cream' style
2349                        }
2350                    });
2351                                }
2352                                else
2353                                {   
2354                                    arrayAttachments.push(idATT);
2355                                    arrayAttachmentsA.push(attachments[i]);
2356                                }
2357                    }
2358                //-------------------
2359               
2360                if(arrayAttachments.length > 0)
2361                {
2362               
2363                    var orignialAtt = fileUploadMSG.find('.button-files-upload').append(' <button tabindex="-1" class="message-add-original-att button small">Anexar arquivos originais</button>').find(".message-add-original-att").button();
2364                    orignialAtt.click(function(event ){
2365
2366                        for (var i = 0; i < arrayAttachments.length; i++){
2367
2368                                    var att = JSON.parse(arrayAttachments[i]);
2369                                    addAttachment( new_border_ID , arrayAttachments[i]); 
2370
2371                                    var attach = {};
2372                                    attach.fileName =  arrayAttachmentsA[i].text.substring(0, arrayAttachmentsA[i].text.lastIndexOf('('));
2373                    attach.fullFileName = attach.fileName;
2374                                    if(attach.fileName.length > 20)
2375                                        attach.fileName = attach.fileName.substr(0, 17) + " ... " + attach.fileName.substr(attach.fileName.length-9, attach.fileName.length);
2376
2377                                    attach.fileSize =  arrayAttachmentsA[i].text.substring(( arrayAttachmentsA[i].text.lastIndexOf('(')+1), arrayAttachmentsA[i].text.lastIndexOf(')'));
2378                    attach.error = false;
2379                    fileUploadMSG.find(' .attachments-list').show();
2380                                    var upload = $(DataLayer.render("../prototype/modules/mail/templates/attachment_add_itemlist.ejs", {file : attach}));
2381                                    upload.find('.att-box-loading').remove();
2382                                    upload.append('<input type="hidden" name="fileId[]" value=\''+arrayAttachments[i]+'\'/>');
2383                                    upload.find('.att-box-delete').click(function(){
2384                                            var idAttach = $(this).parent().find('input[name="fileId[]"]').val();
2385                                            var content_body = RichTextEditor.getData('body_'+new_border_ID);
2386                                            var imagens = content_body.match(/<img[^>]*>/g);
2387                                            var att = JSON.parse(idAttach);
2388                                            if(imagens != null)
2389                                            {   
2390                                                for (var x = 0; x < imagens.length; x++)
2391                                                    if(imagens[x].indexOf('src="./inc/get_archive.php?msgFolder='+att.folder+'&amp;msgNumber='+att.uid+'&amp;indexPart='+att.part) !== -1)
2392                                                        content_body = content_body.replace(imagens[x],'');
2393
2394                                                RichTextEditor.setData('body_'+new_border_ID,content_body);   
2395                                            }       
2396
2397                                            fileUploadMSG.find('.attachments-list').find('input[value="'+idAttach+'"]');
2398                                            delAttachment(new_border_ID,idAttach);
2399                                            $(this).parent().qtip("destroy");
2400                        $(this).parent().remove();
2401                        if(!fileUploadMSG.find(' .attachments-list').find(".att-box").length){
2402                            fileUploadMSG.find(' .attachments-list').hide();
2403                        }
2404                                    });
2405
2406                                    fileUploadMSG.find('.attachments-list').append(upload);
2407                    fileUploadMSG.find('.attachments-list .att-box:last').qtip({
2408                        content: DataLayer.render("../prototype/modules/mail/templates/attachment_add_itemlist_tooltip.ejs", {attach : attach}),
2409                        position: {
2410                            corner: {
2411                                tooltip: 'bottomMiddle',
2412                                target: 'topMiddle'
2413                            },
2414                            adjust: {
2415                               resize: true,
2416                               scroll: true,
2417                               screen: show
2418                            }
2419                        },
2420                        show: {
2421                            when: 'mouseover', // Don't specify a show event
2422                            ready: false // Show the tooltip when ready
2423                        },
2424                        hide: 'mouseout', // Don't specify a hide event
2425                        style: {
2426                            border: {
2427                                width: 1,
2428                                radius: 5
2429                            },
2430                            width: {
2431                                                                 min: 75,
2432                                                                 max : 1000
2433                                                        },
2434                            padding: 3,
2435                            textAlign: 'left',
2436                            tip: true, // Give it a speech bubble tip with automatic corner detection
2437                            name: 'blue' // Style it according to the preset 'cream' style
2438                        }
2439                    });
2440                        }
2441
2442                    $(this).remove();
2443                    });
2444                }
2445
2446         }
2447               
2448}
2449
2450function addOriginalAttachments(new_border_ID,old_id_border)
2451{   
2452    var fileUploadMSG = $('#fileupload_msg'+new_border_ID);
2453    var attachments = $("#attachments_" + old_id_border).find("a");                     
2454    for (var i = 0; i < attachments.length; i++){
2455            if((attachments[i].tagName=="SPAN") || (attachments[i].tagName=="IMG") || ((attachments[i].href.indexOf("javascript:download_local_attachment")==-1)&&(attachments[i].href.indexOf("javascript:download_attachments")==-1)))
2456                    continue;
2457                fileUploadMSG.find(' .attachments-list').show();
2458                var arrayAtt = attachments[i].href.replace("javascript:download_attachments(", "").replace(")", "").split(',');                                 
2459                var att = new Object();
2460                var regex = new RegExp( "'", "g" );
2461                att.folder = arrayAtt[0].replace(regex,"");
2462                att.uid = arrayAtt[1].replace(regex,"");
2463                att.part = arrayAtt[3].replace(regex,"");
2464                att.type = 'imapPart';
2465                var idATT = JSON.stringify(att);
2466                addAttachment( new_border_ID , idATT); 
2467
2468                var attach = {};
2469
2470                attach.fileName =  attachments[i].text.substring(0, attachments[i].text.lastIndexOf('('));
2471                attach.fullFileName = attach.fileName;
2472
2473                if(attach.fileName.length > 20)
2474                    attach.fileName = attach.fileName.substr(0, 17) + " ... " + attach.fileName.substr(attach.fileName.length-9, attach.fileName.length);
2475
2476                attach.fileSize =  attachments[i].text.substring(( attachments[i].text.lastIndexOf('(')+1), attachments[i].text.lastIndexOf(')'));
2477                attach.error = false;
2478
2479                var upload = $(DataLayer.render("../prototype/modules/mail/templates/attachment_add_itemlist.ejs", {file : attach}));
2480                upload.find('.att-box-loading').remove();
2481                upload.find('.att-box-delete').click(function(){
2482                    var idAttach = $(this).parent().find('input[name="fileId[]"]').val();
2483                    var content_body = RichTextEditor.getData('body_'+new_border_ID);
2484                    var imagens = content_body.match(/<img[^>]*>/g);
2485                    var att = JSON.parse(idAttach);
2486                    if(imagens != null)
2487                    {   
2488                        for (var x = 0; x < imagens.length; x++)
2489                            if(imagens[x].indexOf('src="./inc/get_archive.php?msgFolder='+att.folder+'&amp;msgNumber='+att.uid+'&amp;indexPart='+att.part) !== -1)
2490                                content_body = content_body.replace(imagens[x],'');
2491
2492                         RichTextEditor.setData('body_'+new_border_ID,content_body);   
2493                    }       
2494
2495                    fileUploadMSG.find(' .attachments-list').find('input[value="'+idAttach+'"]');
2496                    delAttachment(new_border_ID,idAttach);
2497                    $(this).parent().qtip("destroy");
2498                    $(this).parent().remove();
2499                    if(!fileUploadMSG.find(' .attachments-list').find(".att-box").length){
2500                        fileUploadMSG.find(' .attachments-list').hide();
2501                    }
2502                });     
2503
2504
2505                upload.append('<input type="hidden" name="fileId[]" value=\''+idATT+'\'/>');
2506                fileUploadMSG.find('.attachments-list').append(upload);
2507                fileUploadMSG.find('.attachments-list .att-box:last').qtip({
2508                    content: DataLayer.render("../prototype/modules/mail/templates/attachment_add_itemlist_tooltip.ejs", {attach : attach}),
2509                    position: {
2510                        corner: {
2511                            tooltip: 'bottomMiddle',
2512                            target: 'topMiddle'
2513                        },
2514                        adjust: {
2515                           resize: true,
2516                           scroll: true,
2517                           screen: show
2518                        }
2519                    },
2520                    show: {
2521                        when: 'mouseover', // Don't specify a show event
2522                        ready: false // Show the tooltip when ready
2523                    },
2524                    hide: 'mouseout', // Don't specify a hide event
2525                    style: {
2526                        border: {
2527                            width: 1,
2528                            radius: 5
2529                        },
2530                        width: {
2531                                                         min: 75,
2532                                                         max : 1000
2533                                                },
2534                        padding: 3,
2535                        textAlign: 'left',
2536                        tip: true, // Give it a speech bubble tip with automatic corner detection
2537                        name: 'blue' // Style it according to the preset 'cream' style
2538                    }
2539                });
2540
2541    }                   
2542}
2543
2544function send_message_return(data, ID){
2545       
2546        if (typeof(data) == 'object' && data.load){
2547                cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu);
2548        }
2549        watch_changes_in_msg(ID);
2550
2551        var content = $("#content_id_"+ID);
2552        var sign = false;
2553        var crypt = false;
2554        var reComplexEmail = /<([^<]*)>[\s]*$/;
2555        if ((preferences.use_assinar_criptografar != '0') && (preferences.use_signature_digital_cripto != '0')){
2556                var checkSign = document.getElementById('return_digital_'+ID)
2557                if (checkSign.checked){
2558                        sign = true;
2559                }
2560
2561                var checkCript = document.getElementById('return_cripto_'+ID);
2562                if (checkCript.checked){
2563                        crypt = true;
2564                }
2565        }
2566
2567        if (typeof(data) == 'object' && !data.success)
2568        {
2569                connector = new  cConnector();
2570
2571                if (sign || crypt){
2572                        var operation = '';
2573                        if (sign){
2574                                operation = 'sign';
2575                        }
2576                        else { // crypt
2577                                //TODO: Colocar mensagem de erro, e finalizar o mï¿œtodo.
2578                                operation = 'nop';
2579                        }
2580                }
2581
2582                if (data.body){
2583                        Element('cert_applet').doButtonClickAction(operation, ID, data.body);
2584                }
2585                else {
2586                        alert(data.error);
2587                }
2588
2589                return;
2590        }
2591        if(data && data.success == true ){
2592                // if send ok, set a flag as answered or forwarded
2593                var msg_number_replied = content.find('[name="msg_reply_from"]');
2594                var msg_number_forwarded = content.find('[name="msg_forward_from"]');
2595
2596                if (msg_number_replied.val()){
2597                        proxy_mensagens.proxy_set_message_flag(msg_number_replied.val(), 'answered');
2598                }
2599                else if (msg_number_forwarded.val()){
2600                        proxy_mensagens.proxy_set_message_flag(msg_number_forwarded.val(), 'forwarded');
2601                }
2602                if(expresso_offline){
2603                        write_msg(get_lang('Your message was sent to queue'));
2604                        delete_border(ID,'true');
2605                        return;
2606                }else{
2607                        if (wfolders.alert) {
2608                                write_msg(get_lang('Your message was sent and save.'));
2609                                wfolders.alert = false;
2610                        }
2611                        else {
2612                                write_msg(get_lang('Your message was sent.'));
2613                        }
2614                }
2615               
2616                $
2617                //REFAZER ISTO COM UMA CHAMADA ASSINCRONA PARA REGISTRAR E ATUALIZAR A LISTA DOS NOVOS CONTATOS DINAMICOS
2618                // If new dynamic contacts were added, update the autocomplete ....
2619                /*if(data.new_contacts){
2620                        var ar_contacts = data.new_contacts.split(',;');
2621                        for(var j in ar_contacts){
2622                                // If the dynamic contact don't exist, update the autocomplete....
2623                                if((contacts+",").indexOf(";"+ar_contacts[j]+",") == -1)
2624                                        contacts += ",;" + ar_contacts[j];
2625                        }
2626                }
2627                var dynamicPersonalContacts = new Array();
2628                var dynamicPersonalGroups = new Array();
2629                var dynamicContacts = new Array();
2630                var dynamicContactList = new Array();
2631
2632                */
2633                //delete_border(ID,'true');
2634                removeTab();
2635
2636                var arrayTo = content.find(".to-tr").find(".box").clone();
2637                save_dynamic_contacts(arrayTo);
2638                var arrayCC = content.find(".cc-tr").find(".box").clone();
2639                save_dynamic_contacts(arrayCC);
2640                var arrayCCo = content.find(".cco-tr").find(".box").clone();
2641                save_dynamic_contacts(arrayCCo);
2642                cache = new Array();
2643        }
2644        else{
2645                if(data == 'Post-Content-Length')
2646                        write_msg(get_lang('The size of this message has exceeded  the limit (%1B).',Element('upload_max_filesize').value));
2647                else if(data){
2648                        var error_mail = $.trim(data.split(":")[data.split(":").length-1]);
2649                        var array = content.find(".to-tr").find(".box");
2650                        //$(value).find("input").val()
2651                        $.each(array, function(index, value){
2652                                if(error_mail == $(value).find("input").val().match(reComplexEmail)[1])
2653                                        $(value).addClass("invalid-email-box");
2654                        });
2655                        if ( content.find('[name="input_cco"]').length){
2656                                if(content.find(".cco-tr").css("display") != "none"){
2657                                        var array = content.find(".cco-tr").find(".box");
2658                                        $.each(array, function(index, value){
2659                                                if(error_mail == $(value).find("input").val().match(reComplexEmail)[1])
2660                                                        $(value).addClass("invalid-email-box");
2661                                        });
2662                                }
2663                        }
2664                        if(content.find(".cc-tr").css("display") != "none")
2665                        {
2666                                var array = content.find(".cc-tr").find(".box");
2667                                $.each(array, function(index, value){
2668                                        if(error_mail == $(value).find("input").val().match(reComplexEmail)[1])
2669                                                $(value).addClass("invalid-email-box");
2670                                });                             
2671                        }
2672                        write_msg(data);
2673                }else
2674                        write_msg(get_lang("Connection failed with %1 Server. Try later.", "Web"));
2675               
2676                var save_link = $("#content_id_"+ID).find(".save")[0];
2677                save_link.onclick = function onclick(event) {openTab.toPreserve[ID] = true;save_msg(ID);} ;
2678                $("#save_message_options_"+ID).button({disabled: false});
2679                //save_link.className = 'message_options';
2680        }
2681        if(!expresso_offline)
2682                connector.hideProgressBar();
2683}
2684
2685/*Funᅵᅵo que grava o destinatᅵrio nos contatos dinᅵmicos*/
2686function save_dynamic_contacts(array){
2687        if(parseInt(preferences.use_dynamic_contacts)){
2688               
2689                $.each(array, function(i, value){
2690                        var stop = false;
2691                        $.each(dynamicPersonalContacts, function(x, valuex){
2692                                if(valuex.email == $(value).find("input").val().match(reComplexEmail)[1]){
2693                                        stop = true;
2694                                        return false;
2695                                }
2696                        });
2697                        if(!stop){
2698                                var exist = 0;
2699                                $.each(dynamicContacts, function(x, valuex){
2700                                        if(valuex.mail == $(value).find("input").val().match(reComplexEmail)[1]){
2701                                                exist = valuex.id;
2702                                                return false;
2703                                        }
2704                                });
2705                                if(exist){
2706                                        REST.put("/dynamiccontact/"+exist, {name: $(value).find("input").val().split('"')[1], mail:$(value).find("input").val().match(reComplexEmail)[1]});
2707                                }else{
2708                                        REST.post("/dynamiccontacts", {name: $(value).find("input").val().split('"')[1], mail:$(value).find("input").val().match(reComplexEmail)[1]});
2709                                }
2710                        }
2711                });
2712                updateDynamicContact();
2713        }
2714}
2715
2716/**
2717 * Mï¿œtodo chamado pela applet para retornar o resultado da assinatura/decifragem do e-mail.
2718 * para posterior envio ao servidor.
2719 * @author Mï¿œrio Cï¿œsar Kolling <mario.kolling@serpro.gov.br>, Bruno Vieira da Costa <bruno.vieira-costa@serpro.gov.br>
2720 * @param smime O e-mail decifrado/assinado
2721 * @param ID O ID do e-mail, para saber em que aba esse e-mail serï¿œ mostrado.
2722 * @param operation A operaᅵᅵo que foi realizada pela applet (assinatura ou decifragem)
2723 */
2724function appletReturn(smime, ID, operation, folder){
2725
2726        if (!smime){ // Erro aconteceu ao assinar ou decifrar e-mail
2727                connector = new  cConnector();
2728                connector.hideProgressBar();
2729                return;
2730        }
2731
2732        if(operation=='decript')
2733        {
2734                var handler = function(data){
2735
2736                        if(data.msg_day == '')
2737                        {
2738                                header=expresso_local_messages.get_msg_date(data.original_ID, proxy_mensagens.is_local_folder(get_current_folder()));
2739
2740                                data.fulldate=header.fulldate;
2741                                data.smalldate=header.smalldate;
2742                                data.msg_day = header.msg_day;
2743                                data.msg_hour = header.msg_hour;
2744
2745                      }
2746                        this.show_msg(data);
2747                }
2748                para="&source="+smime+"&ID="+ID+"&folder="+folder;
2749                cExecute ("$this.imap_functions.show_decript&", handler, para);
2750        }else
2751        {
2752                ID_tmp = ID;
2753                // Lï¿œ a variï¿œvel e chama a nova funᅵᅵo cExecuteForm
2754                // Processa e envia para o servidor web
2755                // Faz o request do connector novamente. Talvez implementar no connector
2756                // para manter coerï¿œncia.
2757
2758                var handler_send_smime = function(data){
2759                        send_message_return(data, this.ID_tmp); // this is a hack to escape quotation form connector bug
2760                };
2761
2762                var textArea = document.createElement("TEXTAREA");
2763                textArea.style.display='none';
2764                textArea.id = 'smime';
2765                textArea.name = "smime";
2766                textArea.value += smime;
2767
2768                // Lï¿œ a variï¿œvel e chama a nova funᅵᅵo cExecuteForm
2769                // Processa e envia para o servidor web
2770                // Faz o request do connector novamente. Talvez implementar no connector
2771                // para manter coerï¿œncia.
2772                if (is_ie){
2773                        var i = 0;
2774                        while (document.forms(i).name != "form_message_"+ID){i++}
2775                        form = document.forms(i);
2776                }
2777                else
2778                        form = document.forms["form_message_"+ID];
2779
2780                form.appendChild(textArea);
2781
2782                cExecuteForm ("$this.imap_functions.send_mail", form, handler_send_smime, ID);
2783        }
2784}
2785
2786function send_message(ID, folder, folder_name){
2787    if(!zebraDiscardEventDialog && $('#fileupload_msg'+ID).find('.att-box-loading').length )
2788    {
2789        zebraDiscardEventDialog = true;
2790        window.setTimeout(function() {
2791            $.Zebra_Dialog('Existem anexos sendo enviados para o servidor. Caso envie sua mensagem agora estes arquivos serï¿œo perdidos.', {
2792                'type':     'question',
2793                'overlay_opacity': '0.5',
2794                'buttons':  ['Descartar anexos e enviar', 'Continuar editando e esperar anexos'],
2795                'width' : 500,
2796                'onClose':  function(clicked) {
2797                    if(clicked == 'Descartar anexos e enviar' ){
2798                        $.each($('#fileupload_msg'+ID).find('.att-box'), function(index, value){
2799                            if($(value).find(".att-box-loading").length)
2800                                $(value).find('.att-box-delete').trigger("click");
2801                        });
2802                        send_valided_message(ID, folder, folder_name);
2803                    }
2804                    window.setTimeout(function() {
2805                        zebraDiscardEventDialog = false;
2806                    }, 500);
2807                }
2808            })
2809        }, 300);
2810    }else
2811        send_valided_message(ID, folder, folder_name);     
2812}
2813
2814function send_valided_message(ID, folder, folder_name)
2815{
2816        if (preferences.auto_save_draft == 1)
2817           autoSaveControl.status[ID] = true;
2818        var content = $("#ptabs_"+ID);
2819        var save_link = $("#ptabs_"+ID).find(".save");
2820        var onClick = save_link.onclick;
2821        save_link.onclick = '';
2822        save_link.button({disabled: true});
2823
2824        ID_tmp = ID;
2825
2826        var handler_send_message = function(data){
2827                send_message_return(data, this.ID_tmp); // this is a hack to escape quotation form connector bug
2828        };
2829
2830        var mail_as_plain = document.getElementById( 'textplain_rt_checkbox_' + ID );
2831        mail_as_plain = ( mail_as_plain ) ? mail_as_plain.checked : false;
2832
2833       var content_body  = RichTextEditor.getData('body_'+ID);       
2834        var textArea = document.createElement("TEXTAREA");
2835        textArea.style.display='none';
2836        textArea.name = "body";
2837        textArea.value = content_body;
2838   
2839        var input_folder = document.createElement("INPUT");
2840        input_folder.style.display='none';
2841        input_folder.name = "folder";
2842        input_folder.value = folder;     
2843       
2844        var input_type = document.createElement("INPUT");
2845        input_type.style.display='none';
2846        input_type.name = "type";
2847        input_type.value = RichTextEditor.plain[ID] ? 'plain' : 'html';
2848       
2849    /*    var uids = document.createElement("INPUT");
2850        uids.style.display='none';
2851        uids.name = "uids_save";
2852        uids.value = uidsSave[ID].toString();
2853    */   
2854        var save_folder = document.createElement("INPUT");
2855        save_folder.style.display='none';
2856        save_folder.name = "save_folder";
2857        save_folder.value = (openTab.imapBox[ID] && openTab.type[ID] < 6) ? openTab.imapBox[ID]: "INBOX" + cyrus_delimiter + draftsfolder;
2858       
2859    /*    var msg_attachments = document.createElement("INPUT");
2860        msg_attachments.style.display='none';
2861        msg_attachments.name = "attachments";
2862        msg_attachments.value = listAttachment(ID);
2863        */
2864
2865        if (is_ie){
2866                var i = 0;
2867                while (document.forms(i).name != "form_message_"+ID){i++}
2868                form = document.forms(i);
2869        }
2870        else
2871                form = document.forms["form_message_"+ID];
2872
2873                // Evita que e-mails assinados sejam enviados quando o usuï¿œrio tenta enviar um e-mail
2874                // nï¿œo assinado (desmarcou a opᅵᅵo) apï¿œs tentar enviar um e-mail assinado que nï¿œo passou
2875                // no teste de validaᅵᅵo.
2876                var checkSign = document.getElementById('return_digital_'+ID);
2877                if (checkSign && !checkSign.checked){
2878                        var smime = Element('smime');
2879                        if (smime)
2880                        {
2881                                var parent = smime.parentNode;
2882                                parent.removeChild(smime);
2883                        }
2884                 }
2885
2886        form.appendChild(textArea);
2887        form.appendChild(input_folder);
2888    form.appendChild(input_type);
2889        // Implementaᅵᅵo do In_Reply_To e References
2890        var msgId = document.createElement("INPUT");
2891        msgId.style.display = 'none';
2892        msgId.name = 'messageNum';
2893        msgId.value = currentTab;
2894
2895        form.appendChild(msgId);
2896    form.appendChild(save_folder);
2897    //form.appendChild(uids);
2898        //form.appendChild(msg_attachments);
2899
2900        var mail_type = document.createElement('input');
2901        mail_type.setAttribute('type', 'hidden');
2902        mail_type.name = 'type';
2903        mail_type.value = ( mail_as_plain ) ? 'plain' : 'html';
2904        form.parentNode.appendChild(mail_type);
2905
2906        var _subject = trim(content.find(".subject").val());
2907        if((_subject.length == 0) && !confirm(get_lang("Send this message without a subject?"))) {
2908                save_link.click(onClick);
2909                content.find(".subject").focus();
2910                return;
2911        }
2912        //stringEmail = content.find('[name="input_to"]').val();
2913
2914    var stringReply = "";
2915    var array = content.find(".reply-to-tr").find(".box");
2916    $.each(array, function(index, value){
2917        stringReply += $(value).find("input").val() + ",";
2918    });
2919    content.find('[name="input_reply_to"]').val(stringReply);
2920
2921        var stringEmail = "";
2922        var stringToEmail = "";
2923        var array = content.find(".to-tr").find(".box");
2924        $.each(array, function(index, value){
2925                //stringEmail += $(value).find("input").val() + ",";
2926                stringToEmail += $(value).find("input").val() + ",";
2927        });
2928        content.find('[name="input_to"]').val(stringToEmail);
2929        stringEmail = stringToEmail;
2930        var stringCCoEmail = "";
2931        if ( content.find('[name="input_cco"]').length){
2932                if(content.find(".cco-tr").css("display") != "none"){
2933                        var array = content.find(".cco-tr").find(".box");
2934                        $.each(array, function(index, value){
2935                                //stringEmail += $(value).find("input").val() + ",";
2936                                stringCCoEmail += $(value).find("input").val() + ",";
2937                        });
2938                        content.find('[name="input_cco"]').val(stringCCoEmail);
2939                }
2940        }
2941        stringEmail += stringCCoEmail;
2942        var stringCCEmail = "";         
2943        if(content.find(".cc-tr").css("display") != "none")
2944        {
2945                var array = content.find(".cc-tr").find(".box");
2946                $.each(array, function(index, value){
2947                        //stringEmail += $(value).find("input").val() + ",";
2948                        stringCCEmail += $(value).find("input").val() + ",";
2949                });
2950                content.find('[name="input_cc"]').val(stringCCEmail);
2951        }
2952        stringEmail +=  stringCCEmail;
2953        if (expresso_offline) {
2954               
2955                var invalidEmail = searchEmail(stringEmail);
2956                if(content.find('[name="input_to"]').val()=="" && content.find('[name="input_cco"]').val()=="" && content.find('[name="input_cc"]').val()=="") {
2957                        write_msg(get_lang("message without receiver"));
2958                        return;
2959                }else if(invalidEmail[0] == true){
2960                        write_msg("Os endereï¿œos de destinatï¿œrio a seguir estï¿œo incorretos: "+invalidEmail[1]);
2961                        return;
2962                }
2963
2964                sucess = expresso_local_messages.send_to_queue(form);
2965                var data_return = new Array();
2966                data_return.success = sucess;
2967                handler_send_message(data_return,ID);
2968        }
2969        else{
2970                if(stringEmail != ""){
2971                        cExecuteForm("$this.imap_functions.send_mail", form, handler_send_message, ID);
2972                }else{
2973                        write_msg(get_lang("message without receiver"));
2974                        return;
2975                }
2976        }
2977
2978}
2979
2980
2981function is_valid_email(campo){
2982        var invalidEmail = searchEmail(campo);
2983        var semicolon = campo.split(";");
2984       
2985        if((campo.replace(/^\s+|\s+$/g,"")) != ""){
2986                        if(invalidEmail[0] == true){
2987                                write_msg("Erro de SMTP: Os endereï¿œos de destinatï¿œrio a seguir falharam: "+ invalidEmail[1]);
2988                                return false;
2989                        }else{
2990                                if(semicolon.length > 1){
2991                                        var stringError = "Erro de SMTP: Os endereï¿œos devem ser separados apenas por vï¿œgula: ";
2992                                        for(var i= 0; i < semicolon.length; i++){
2993                                                stringError = stringError + semicolon[i];
2994                                                if(i+1 < semicolon.length)
2995                                                        stringError = stringError + " ; ";
2996                                        }
2997                                        write_msg(stringError);
2998                                        return false;
2999                                }else {
3000                                        return true;
3001                                }
3002                        }
3003        }
3004        else{
3005                write_msg(get_lang("Message without receiver"));
3006                return false;
3007        }               
3008}
3009function change_tr_properties(tr_element, newUid, newSubject){
3010        message_id=tr_element.id;
3011        var td_from = document.getElementById('td_from_'+message_id);
3012        if (typeof(newSubject) != 'undefined')
3013                td_from.nextSibling.innerHTML = newSubject;
3014        tr_element.id = newUid;
3015
3016        var openNewMessage = function () {
3017                $.ajax({
3018                          url: 'controller.php?' + $.param( {action: '$this.imap_functions.get_info_msg',
3019                                                              msg_number: newUid,
3020                                                              msg_folder: current_folder,
3021                                                              decoded: true } ),
3022                          success: function( data ){
3023                              data = connector.unserialize( data );
3024                             
3025                              if( data )
3026                                  show_msg( data );
3027                          },
3028                          beforeSend: function( jqXHR, settings ){
3029                                connector.showProgressBar();
3030                          },
3031                          complete: function( jqXHR, settings ){
3032                                connector.hideProgressBar();
3033                          }
3034
3035                });
3036        };
3037        for (var i=2; i < 10; i++){
3038                if (typeof(tr_element.childNodes[i].id) != "undefined")
3039                        tr_element.childNodes[i].id = tr_element.childNodes[i].id.replace(message_id,newUid);
3040                tr_element.childNodes[i].onclick = openNewMessage;
3041        }
3042}
3043
3044
3045function autoSave( ID )
3046{
3047    if(autoSaveControl.status[ID] === false)
3048        save_msg(ID);         
3049}
3050
3051function save_msg(border_id){
3052   
3053    //seta o status do auto_save = true
3054   if (preferences.auto_save_draft == 1)
3055       autoSaveControl.status[border_id] = true;
3056   ///////////////////////////////////////////
3057    var content = $("#content_id_"+border_id);
3058       
3059
3060    var array = content.find(".reply-to-tr").find(".box");
3061    var stringReplyToEmail = "";
3062    $.each(array, function(index, value){
3063        stringReplyToEmail += $(value).find("input").val() + ",";
3064    });
3065    content.find('[name="input_reply_to"]').val(stringReplyToEmail);
3066
3067        var stringEmail = "";
3068        var array = content.find(".to-tr").find(".box");
3069        $.each(array, function(index, value){
3070                stringEmail += $(value).find("input").val() + ",";
3071        });
3072        content.find('[name="input_to"]').val(stringEmail);
3073        stringEmail = "";
3074        if ( content.find('[name="input_cco"]').length){
3075                if(content.find(".cco-tr").css("display") != "none"){
3076                        var array = content.find(".cco-tr").find(".box");
3077                        $.each(array, function(index, value){
3078                                stringEmail += $(value).find("input").val() + ",";
3079                        });
3080                        content.find('[name="input_cco"]').val(stringEmail);
3081                }
3082        }
3083       
3084        stringEmail = "";       
3085        if(content.find(".cc-tr").css("display") != "none")
3086        {
3087                var array = content.find(".cc-tr").find(".box");
3088                $.each(array, function(index, value){
3089                        stringEmail += $(value).find("input").val() + ",";
3090                });
3091                content.find('[name="input_cc"]').val(stringEmail);
3092        }
3093       
3094   var idJavascript = saveBorderError[border_id];
3095   
3096   if(saveBorderError[border_id] !== false)
3097        DataLayer.put('message',DataLayer.merge(DataLayer.form("#form_message_"+border_id), {id: idJavascript }));
3098   else
3099       idJavascript = DataLayer.put('message',DataLayer.form("#form_message_"+border_id)); 
3100
3101   uidsSave[border_id] = [];
3102   DataLayer.commit(false,false,function(data){
3103       if(data != null && data['message://'+idJavascript] !== undefined && data['message://'+idJavascript].id !== undefined )
3104       {
3105        uidsSave[border_id].push(data['message://'+idJavascript].id);
3106        saveBorderError[border_id] = false;
3107        write_msg('Mensagem salva com sucesso!');
3108       }
3109       else
3110       {
3111        saveBorderError[border_id] = idJavascript;
3112        write_msg('Erro ao salvar sua mensagem! Nova tentativa em alguns segundos.');     
3113       }
3114   });
3115
3116}
3117
3118function set_messages_flag_search_local(flag){
3119        var msgs_flag = this.get_selected_messages_search();
3120        if(local_messages.prototype.set_messages_flag(msgs_flag, flag, true)){
3121                var id_border = currentTab.replace(/[a-zA-Z_]+/, "");
3122                var msgs = msgs_flag.split(',');
3123                for(var i = 0; i < msgs.length; i++){
3124                        Element("search_local_msg"+id_border+"_check_box_message_"+msgs[i]).checked = false;
3125                }
3126                draw_tree_folders();
3127                Element('chk_box_select_all_messages_search_local').checked = false;
3128                refresh();
3129                write_msg(get_lang('The messages were marked with success!'));         
3130        }else{
3131                write_msg(get_lang('Error marking messages.'));
3132        }
3133}
3134
3135function set_messages_flag_search(flag){
3136       
3137        var id_border = currentTab.replace(/[a-zA-Z_]+/, "");
3138        var msgs_flag = this.get_selected_messages_search();
3139        if (!msgs_flag){
3140                write_msg(get_lang('No selected message.'));
3141                return;
3142        }
3143        var selected_param = "";
3144        msgs_to_flag = msgs_flag.split(",");
3145        search = true;
3146        for (i = 0; i < msgs_to_flag.length; i++){
3147                var tr = Element(msgs_to_flag[i]+'_s'+id_border);
3148                var msg_to_flag = (tr.getAttribute('name') == null?get_current_folder():tr.getAttribute('name'));
3149                selected_param += ','+msg_to_flag+';'+tr.id.replace(/_[a-zA-Z0-9]+/,"");
3150        }
3151       
3152        var handler_set_messages_flag = function(data){
3153                var errors = false;
3154                var notErrors = false;
3155                for (var i = 0; i < data.length; i++){
3156                        var notArray = true;
3157                        if(data[i].msgs_to_set != ''){
3158                                var msgs = [];
3159                                if(data[i].msgs_to_set.indexOf(',') > 0){
3160                                        msgs = data[i].msgs_to_set.split(',')
3161                                        notArray = false;
3162                                }else
3163                                        msgs[0] = data[i].msgs_to_set;
3164                                       
3165                                for (var j = 0; j < msgs.length; j++){
3166                                        switch(data[i].flag){
3167                                                case "unseen":
3168                                                        set_msg_as_unread(msgs[j]+'_s'+id_border, true);
3169                                                        Element("search_"+id_border+"_check_box_message_"+msgs[j]).checked = false;
3170                                                        break;
3171                                                case "seen":
3172                                                        set_msg_as_read(msgs[j]+'_s'+id_border, true);
3173                                                        Element("search_"+id_border+"_check_box_message_"+msgs[j]).checked = false;
3174                                                        break;
3175                                                case "flagged":
3176                                                        set_msg_as_flagged(msgs[j]+'_s'+id_border, true);
3177                                                        document.getElementById("search_"+id_border+"_check_box_message_"+msgs[j]).checked = false;
3178                                                        break;
3179                                                case "unflagged":
3180                                                        set_msg_as_unflagged(msgs[j]+'_s'+id_border, true);
3181                                                        Element("search_"+id_border+"_check_box_message_"+msgs[j]).checked = false;
3182                                                        break;
3183                                        }
3184                                        notErrors = true;
3185                                }
3186                        }else{
3187                                errors = true;
3188                        }
3189                }
3190               
3191                draw_tree_folders();
3192                Element('chk_box_select_all_messages_search').checked = false;
3193                refresh();
3194               
3195                if(errors && notErrors)
3196                        write_msg(get_lang('Some messages were not marked with success!'));
3197                else if(notErrors)
3198                        write_msg(get_lang('The messages were marked with success!'));
3199                else
3200                        write_msg(get_lang('Error marking messages.'));
3201        }
3202        cExecute ("$this.imap_functions.set_messages_flag_from_search&msg_to_flag="+selected_param+"&flag="+flag, handler_set_messages_flag);
3203}
3204
3205// Get checked messages
3206function set_messages_flag(flag, msgs_to_set){ 
3207        if(currentTab != 0 && currentTab.indexOf("search_local")  >= 0){
3208                return set_messages_flag_search_local(flag);
3209        }
3210        if (currentTab != 0 && currentTab.indexOf("search_")  >= 0){
3211                return set_messages_flag_search(flag);
3212        }
3213       
3214        var handler_set_messages_flag = function (data){
3215                if(!verify_session(data))
3216                        return;
3217                var msgs_to_set = data.msgs_to_set.split(",");
3218
3219                if(!data.status) {
3220                        write_msg(data.msg);
3221                        Element('chk_box_select_all_messages').checked = false;
3222                        for (var i = 0; i < msgs_to_set.length; i++) {
3223                                Element("check_box_message_" + msgs_to_set[i]).checked = false;
3224                                remove_className(Element(msgs_to_set[i]), 'selected_msg');
3225                        }
3226                        if(!data.msgs_unflageds)
3227                                return;
3228                               
3229                        else
3230                                if(data.msgs_not_to_set != "")
3231                                        write_msg(get_lang("Error processing some messages."));
3232                                       
3233                                msgs_to_set = data.msgs_unflageds.split(",");
3234                }
3235
3236                for (var i=0; i<msgs_to_set.length; i++){
3237                        if (preferences.use_cache == 'True')
3238                        {
3239                                if (current_folder == '')
3240                                        current_folder = 'INBOX';
3241                                var setFlag = function(msgObj) {
3242                                        switch(data.flag){
3243                                                case "unseen":
3244                                                        msgObj.Unseen = "U";
3245                                                        break;
3246                                                case "seen":
3247                                                        msgObj.Unseen = "";
3248                                                        break;
3249                                                case "flagged":
3250                                                        msgObj.Flagged = "F";
3251                                                        break;
3252                                                case "unflagged":
3253                                                        msgObj.Flagged = "";
3254                                                        break;
3255                                        }
3256                                }
3257                        }
3258                        if(Element("check_box_message_" + msgs_to_set[i])){
3259                                switch(data.flag){
3260                                        case "unseen":
3261                                                    set_msg_as_unread(msgs_to_set[i]);
3262                                                if(results_search_messages != "")
3263                                                        set_msg_as_unread(results_search_messages, true);
3264                                                Element("check_box_message_" + msgs_to_set[i]).checked = false;
3265                                                break;
3266                                        case "seen":
3267                                                set_msg_as_read(msgs_to_set[i], false);
3268                                                if(results_search_messages != "")
3269                                                        set_msg_as_read(results_search_messages, false, true);
3270                                                Element("check_box_message_" + msgs_to_set[i]).checked = false;
3271                                               
3272                                                // remove a flag $FilteredMessage da mensagem ao ser marcada como lida 
3273                                                $.each(fromRules, function(index, value) {
3274                                                        if(value == folder){
3275                                                                cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+folder+"&msg_number="+msgs_to_set, function(){});
3276                                                                return false;
3277                                                        }
3278                                                });     
3279                                               
3280                                                break;
3281                                        case "flagged":
3282                                                    set_msg_as_flagged(msgs_to_set[i]);
3283                                                if(results_search_messages != "")
3284                                                        set_msg_as_flagged(results_search_messages, true);
3285                                                document.getElementById("check_box_message_" + msgs_to_set[i]).checked = false;
3286                                                break;
3287                                        case "unflagged":
3288                                                    set_msg_as_unflagged(msgs_to_set[i]);
3289                                                if(results_search_messages != "")
3290                                set_msg_as_unflagged(results_search_messages, true);
3291                                                Element("check_box_message_" + msgs_to_set[i]).checked = false;
3292                                                break;
3293                                }
3294                        }
3295                }
3296                Element('chk_box_select_all_messages').checked = false;
3297        }
3298
3299        var folder = get_current_folder();
3300        if (msgs_to_set == 'get_selected_messages')
3301                var msgs_to_set = this.get_selected_messages();
3302        else
3303                folder = Element("input_folder_"+msgs_to_set+"_r").value;
3304       
3305        if (msgs_to_set)
3306                $.ajax({
3307                          url: 'controller.php?' + $.param( {action: '$this.imap_functions.set_messages_flag',
3308                                                              folder: folder,
3309                                                              msgs_to_set: msgs_to_set,
3310                                                              flag: flag,
3311                                                              decoded: true } ),
3312                          success: function( data ){
3313                              data = connector.unserialize( data );
3314
3315                              selectAllFolderMsgs();
3316                              $('.select-link').unbind('click');
3317
3318                              if( data )
3319                                  handler_set_messages_flag( data );
3320                          },
3321                          beforeSend: function( jqXHR, settings ){
3322                                connector.showProgressBar();
3323                          },
3324                          complete: function( jqXHR, settings ){
3325                                connector.hideProgressBar();
3326                          }
3327
3328                });
3329        else
3330                write_msg(get_lang('No selected message.'));
3331}
3332
3333// By message number
3334function set_message_flag(msg_number, flag, func_after_flag_change){
3335        var msg_number_folder = Element("new_input_folder_"+msg_number+"_r"); //Mensagens respondidas/encaminhadas
3336        if(!msg_number_folder)
3337                var msg_number_folder = Element("input_folder_"+msg_number+"_r"); //Mensagens abertas
3338       
3339        var handler_set_messages_flag = function (data){
3340                if(!verify_session(data))
3341                        return;
3342                if(!data.status) {
3343                        write_msg(get_lang("this message cant be marked as normal"));
3344                        return;
3345                }
3346                else if(func_after_flag_change) {
3347                        func_after_flag_change(true);
3348                }
3349                if (data.status && Element("td_message_answered_"+msg_number)) {
3350                       
3351                        switch(flag){
3352                                case "unseen":
3353                                        set_msg_as_unread(msg_number);
3354                                        break;
3355                                case "seen":
3356                                        set_msg_as_read(msg_number);
3357                                        break;
3358                                case "flagged":
3359                                        set_msg_as_flagged(msg_number);
3360                                        break;
3361                                case "unflagged":
3362                                        set_msg_as_unflagged(msg_number);
3363                                        break;
3364                                case "answered":
3365                                        Element("td_message_answered_"+msg_number).innerHTML = '<img src=templates/'+template+'/images/answered.gif title=Respondida>';
3366                                        break;
3367                                case "forwarded":
3368                                        Element("td_message_answered_"+msg_number).innerHTML = '<img src=templates/'+template+'/images/forwarded.gif title=Encaminhada>';
3369                                        break;
3370                        }                               
3371                } else {
3372                        refresh();
3373                }
3374        }
3375        $.ajax({
3376                  url: 'controller.php?' + $.param( {action: '$this.imap_functions.set_messages_flag',
3377                                                      folder: ( msg_number_folder ?  msg_number_folder.value : get_current_folder() ),
3378                                                      msgs_to_set: msg_number,
3379                                                      flag: flag,
3380                                                      decoded: true } ),
3381                  success: function( data ){
3382                      data = connector.unserialize( data );
3383                     
3384                      if( data )
3385                          handler_set_messages_flag( data );
3386                  },
3387                  beforeSend: function( jqXHR, settings ){
3388                                connector.showProgressBar();
3389                  },
3390                  complete: function( jqXHR, settings ){
3391                                connector.hideProgressBar();
3392                   }
3393
3394        });
3395}
3396
3397function print_search_msg(){           
3398        var folder = "<h2>&nbsp;Resultado da Pesquisa&nbsp;<font color=\"#505050\" face=\"Verdana\" size=\"1\"></h2>";
3399        msgs_number = get_selected_messages_search();
3400        var tbody = Element('divScrollMain_'+numBox).firstChild.firstChild.innerHTML;
3401        var id_border = currentTab.replace(/[a-zA-Z_]+/, "");
3402       
3403        if(msgs_number){
3404                msgs_number = msgs_number.split(",");
3405                var tbody = "";
3406                for(var i = 0; i < msgs_number.length; i++){
3407                        tbody += "<tr id=\""+msgs_number[i]+"_s"+id_border+"\" class=\"tr_msg_unread tr_msg_read2\">"+ Element(msgs_number[i]+'_s'+id_border).innerHTML+"</tr>";
3408                }
3409        }else{
3410                msgs_number = get_all_messages_search();
3411                msgs_number = msgs_number.split(",");
3412                var tbody = "";
3413                for(var i = 0; i < msgs_number.length; i++){
3414                        tbody += "<tr id=\""+msgs_number[i]+"_s"+id_border+"\" class=\"tr_msg_unread tr_msg_read2\">"+ Element(msgs_number[i]+'_s'+id_border).innerHTML+"</tr>";
3415                }
3416        }
3417       
3418        var print_width = screen.width - 200;
3419        var x = ((screen.width - print_width) / 2);
3420        var y = ((screen.height - 400) / 2) - 35;
3421        var window_print = window.open('','ExpressoMail','width='+print_width+',height=400,resizable=yes,scrollbars=yes,left='+x+',top='+y);
3422        seekDot = (is_ie ? /width=24/gi : /width="24"/gi);
3423
3424        var thead = "<tr class=\"message_header\">    <td width=\"3%\"></td><td width=\"2%\"></td><td width=\"1%\"></td><td width=\"1%\"></td><td width=\"1%\"></td><td width=\"1%\"></td><td width=\"2%\"></td><td id=\"message_header_FOLDER_0\" class=\"th_resizable\" align=\"left\" width=\"20%\">Pasta</td><td id=\"message_header_SORTFROM_0\" class=\"th_resizable\" align=\"left\" width=\"20%\">De</td><td id=\"message_header_SORTSUBJECT_0\" class=\"th_resizable\" align=\"left\" width=\"*\">Assunto</td><td id=\"message_header_SORTARRIVAL_0\" class=\"th_resizable\" align=\"center\" width=\"11%\"><b>Data</b><img src=\"templates/default/images/arrow_descendant.gif\"></td><td id=\"message_header_SORTSIZE_0\" class=\"th_resizable\" align=\"left\" width=\"11%\">Tamanho</td></tr>";
3425        tbody = tbody.replace(seekDot, "style='display:none'");
3426        seekDot = (is_ie ? /width=16/gi : /width="16"/gi);
3427
3428        tbody = tbody.replace(seekDot, "style='display:none'");
3429        seekDot = (is_ie ? /width=12/gi : /width="12"/gi);
3430
3431        tbody = tbody.replace(seekDot, "style='display:none'");
3432        while (1){
3433                try{
3434                        window_print.document.open();
3435                    var html = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html>'
3436                    + '<head><link rel="stylesheet" type="text/css" href="templates/'+template+'/print.css"></head>'
3437                    + cabecalho + '</h4><hr>'
3438                    + '<h2>'+folder+'</h2><hr/><blockquote><font size="2">'
3439                    + '<table width="100%" cellpadding="0" cellspacing="0">'
3440                    + '<thead>' + thead + '</thead><tbody>' + tbody + '</tbody>'
3441                    + '</table></font></blockquote></body></html>';
3442                    window_print.document.write(html);
3443                    window_print.document.close();
3444                    break;
3445                }
3446                catch(e){
3447                        //alert(e.message);
3448                }
3449        }
3450        window_print.document.close();
3451        window_print.print();
3452}
3453
3454function print_all(){
3455        if (openTab.type[currentTab] == 2)
3456                return print_msg(current_folder,currentTab.substr(0,currentTab.indexOf("_r")),currentTab);
3457
3458        if (currentTab != 0 && currentTab.indexOf("search_")  >= 0){
3459                return print_search_msg();
3460        }
3461               
3462        var folder= Element('border_id_0').innerHTML;
3463        //var thead = Element('divScrollHead_'+numBox).firstChild.firstChild.innerHTML;
3464       
3465        msgs_number = get_selected_messages();
3466        if(msgs_number == false){
3467        var tbody = Element('divScrollMain_'+numBox).firstChild.firstChild.innerHTML;
3468        }else{
3469                msgs_number = msgs_number.split(",");
3470                var tbody = "";
3471                for(var i = 0; i < msgs_number.length; i++){
3472                        tbody += "<tr id="+msgs_number[i]+" class=\"tr_msg_unread tr_msg_read2\">"+$("#"+msgs_number[i]).clone().find(".checkbox").remove().end().html()+"</tr>";
3473                }       
3474        }
3475        var print_width = screen.width - 200;
3476        var x = ((screen.width - print_width) / 2);
3477        var y = ((screen.height - 400) / 2) - 35;
3478        var window_print = window.open('','ExpressoMail','width='+print_width+',height=400,resizable=yes,scrollbars=yes,left='+x+',top='+y);
3479        seekDot = (is_ie ? /width=24/gi : /width="24"/gi);
3480        //thead = thead.replace(seekDot, "style='display:none'");
3481        var thead = "<tr class=\"message_header\"> <td width=\"3%\"></td><td width=\"2%\"></td><td width=\"1%\"></td><td width=\"1%\"></td><td width=\"1%\"></td><td width=\"1%\"></td><td width=\"2%\"></td><td width=\"2%\"></td><td width=\"2%\"></td><td id=\"message_header_SORTFROM_0\" class=\"th_resizable\" align=\"left\" width=\"20%\">De</td><td id=\"message_header_SORTSUBJECT_0\" class=\"th_resizable\" align=\"left\" width=\"*\">Assunto</td><td id=\"message_header_SORTARRIVAL_0\" class=\"th_resizable\" align=\"center\" width=\"11%\"><b>Data</b><img src=\"templates/default/images/arrow_descendant.gif\"></td><td id=\"message_header_SORTSIZE_0\" class=\"th_resizable\" align=\"left\" width=\"11%\">Tamanho</td></tr>";
3482        tbody = tbody.replace(seekDot, "style='display:none'");
3483        seekDot = (is_ie ? /width=16/gi : /width="16"/gi);
3484        //thead = thead.replace(seekDot, "style='display:none'");
3485        tbody = tbody.replace(seekDot, "style='display:none'");
3486        seekDot = (is_ie ? /width=12/gi : /width="12"/gi);
3487        //thead = thead.replace(seekDot, "style='display:none'");
3488        tbody = tbody.replace(seekDot, "style='display:none'");
3489        while (1){
3490                try{
3491                        window_print.document.open();
3492                        var html = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html>'
3493                        + '<head><link rel="stylesheet" type="text/css" href="templates/'+template+'/print.css"></head>'
3494                    + cabecalho + '</h4><hr>'
3495                        + '<h2>'+folder+'</h2><hr/><blockquote><font size="2">'
3496                        + '<table width="100%" cellpadding="0" cellspacing="0">'
3497                        + '<thead>' + thead + '</thead><tbody>' + tbody + '</tbody>'
3498                        + '</table></font></blockquote></body></html>';
3499                        window_print.document.write(html);
3500                        window_print.document.close();
3501                        break;
3502                }
3503                catch(e){
3504                        //alert(e.message);
3505                }
3506        }
3507        window_print.document.close();
3508        window_print.print();
3509}
3510
3511
3512function print_msg(msg_folder, msg_number, border_ID){
3513        var div_toaddress_full = Element("div_toaddress_full_"+border_ID);
3514        var div_ccaddress_full = Element("div_ccaddress_full_"+border_ID);
3515        var div_ccoaddress_full = Element("div_ccoaddress_full_"+border_ID);
3516        var printListTO = (div_toaddress_full && div_toaddress_full.style.display != 'none') || toaddress_array[border_ID].length == 1 ? true : false; 
3517        var printListCC = (div_ccaddress_full && div_ccaddress_full.style.display != 'none') || !div_ccaddress_full ? true : false;
3518        var printListCCO = (div_ccoaddress_full && div_ccoaddress_full.style.display != 'none') || !div_ccoaddress_full ? true : false;
3519        var sender              = Element('sender_values_'+border_ID) ? Element('sender_values_'+border_ID).value : null;
3520        var from                = Element('from_values_'+border_ID) ? Element('from_values_'+border_ID).value : null;
3521        var to                  = Element('to_values_'+border_ID) ? Element('to_values_'+border_ID).value :null;
3522        var cco                 = Element('cco_values_'+border_ID) ? Element('cco_values_'+border_ID).value : null;
3523        var cc                  = Element('cc_values_'+border_ID) ? Element('cc_values_'+border_ID).value : null;               
3524        var date                =  Element('date_'+border_ID); 
3525        var subject             = Element('subject_'+border_ID);
3526        var attachments = Element('attachments_'+border_ID);
3527        var body                = Element('body_'+border_ID);
3528
3529       
3530        var att = '';
3531       
3532        var countAtt = 0;
3533                         
3534        if(attachments !== null)
3535        {
3536                countAtt = attachments.getElementsByTagName('a').length;
3537                if(countAtt === 1) 
3538                        att =  attachments.getElementsByTagName('a')[0].innerHTML;
3539                else if(countAtt > 1)
3540                        for (var i = 1; i <attachments.getElementsByTagName('a').length; i++)
3541                                att += " | " + attachments.getElementsByTagName('a')[i].innerHTML;
3542        }
3543               
3544        var body = Element('body_'+border_ID);
3545       
3546        var print_width = screen.width - 200;
3547        var x = ((screen.width - print_width) / 2);
3548        var y = ((screen.height - 400) / 2) - 35;
3549        var window_print = window.open('','ExpressoMail','width='+print_width+',height=400,resizable=yes,scrollbars=yes,left='+x+',top='+y);
3550        if(window_print == null) {
3551                alert(get_lang("The Anti Pop-Up is enabled. Allow this site (%1) for print.",document.location.hostname));
3552                return;
3553        }
3554
3555        //needed to get the names of the attachments... only.
3556        if(attachments != null)
3557        {
3558                var a = attachments.childNodes;
3559                var attachs = "";
3560                var show_attachs = "";
3561                var ii = a.length >2?2:1;
3562                for(i=ii;i<a.length;i++)
3563                {
3564                        if(a[i].tagName && a[i].tagName == "A")
3565                        {
3566                                attachs += a[i].innerHTML;
3567                        }
3568                }
3569                show_attachs = "<tr><td width=7%><font size='2'>" + get_lang('Attachments: ')+ " </font></td><td><font size='2'>"+attachs+"</font></td></tr>";
3570        } else{
3571                show_attachs = "";
3572        }       
3573        var current_path = window.location.href.substr(0,window.location.href.lastIndexOf("/"));
3574        var head = '<head><title></title><link href="'+current_path+'/templates/default/main.css" type="text/css" rel="stylesheet"></head>';
3575        window_print.document.write(head);
3576
3577        while (1){
3578                try{
3579                        var html ='<body style="overflow:auto">';
3580                        html += cabecalho + '</h4><hr>';
3581                        html += '<table><tbody>';
3582                        if(sender)
3583                                html += "<tr><td width=7% noWrap><font size='2'>" + get_lang('Sent by') + ": </font></td><td><font size='2'>"+sender+"</font></td></tr>";
3584                        if(from)
3585                                html += "<tr><td width=7%><font size='2'>" + get_lang('From') + ": </font></td><td><font size='2'>"+from+"</font></td></tr>";
3586                        if(to) {
3587                                if(!printListTO)
3588                                        to = 'Os destinatï¿œrios nï¿œo estï¿œo sendo exibidos para esta impressï¿œo';
3589                                html += "<tr><td width=7%><font size='2'>" + get_lang('To') + ": </font></td><td><font size='2'>"+to+"</font></td></tr>";
3590                        }
3591                        if (cc) {
3592                                if(!printListCC)
3593                                        cc = 'Os destinatï¿œrios nï¿œo estï¿œo sendo exibidos para esta impressï¿œo';
3594                                html += "<tr><td width=7%><font size='2'>" + get_lang('Cc') + ": </font></td><td><font size='2'>"+cc+"</font></td></tr>";
3595                        }
3596                        if (cco) {
3597                                if(!printListCCO)
3598                                        cco = 'Os destinatï¿œrios nï¿œo estï¿œo sendo exibidos para esta impressï¿œo';
3599                                html += "<tr><td width=7%><font size='2'>" + get_lang('Cco') + ": </font></td><td><font size='2'>"+cco+"</font></td></tr>";
3600                        }
3601                        if(date)
3602                                html += "<tr><td width=7%><font size='2'>" + get_lang('Date') + ": </font></td><td><font size='2'>"+date.innerHTML+"</font></td></tr>";
3603                       
3604                        html += "<tr><td width=7%><font size='2'>" + get_lang('Subject')+ ": </font></td><td><font size='2'>"+subject.innerHTML+"</font></td></tr>";
3605                        //html += show_attachs; //to show the names of the attachments
3606                        if (countAtt > 0) {
3607                    html += "<tr><td width=7%><font size='2'>" + get_lang('Attachments: ') + "</font></td><td><font size='2'>"+att+"</font></td></tr>";       
3608                }
3609                        html += "</tbody></table><hr>";
3610                        window_print.document.write(html + body.innerHTML);
3611
3612                                var tab_tags = window_print.document.getElementsByTagName("IMG");
3613                        var link = location.href.replace(/\/expressoMail1_2\/(.*)/, "");
3614                                for(var i = 0; i < tab_tags.length;i++){
3615                                var _img = tab_tags[i].cloneNode(true);
3616                                if(tab_tags[i].src.toUpperCase().indexOf('INC/GET_ARCHIVE.PHP?MSGFOLDER=') > -1)
3617                                    _img.src = link + '/expressoMail1_2/'+tab_tags[i].src.substr(tab_tags[i].src.toUpperCase().indexOf('INC/GET_ARCHIVE.PHP?MSGFOLDER='));
3618
3619                                        tab_tags[i].parentNode.replaceChild(_img,tab_tags[i]);
3620                                }
3621                       
3622                        break;
3623                }
3624                catch(e){
3625                        //alert(e.message);
3626                }
3627        }
3628        window_print.document.close();
3629        window_print.print();
3630}
3631
3632function empty_trash_imap(shared, button){
3633        if(shared){
3634                var folder_part = $(button).parents("li:first").attr("id").split(cyrus_delimiter);
3635                var folder = folder_part[0]+cyrus_delimiter+folder_part[1];
3636        }
3637
3638        var handler_empty_trash = function(data){
3639                Element('chk_box_select_all_messages').checked = false;
3640                if(!verify_session(data))
3641                        return;
3642                //tree_folders.getNodeById(mount_url_folder(["INBOX",special_folders["Trash"]])).alter({caption: get_lang("Trash")});
3643                //tree_folders.getNodeById(mount_url_folder(["INBOX",special_folders["Trash"]]))._refresh();
3644                update_quota(get_current_folder());
3645                draw_new_tree_folder();
3646                draw_tree_labels();
3647                if (data){
3648                        if(typeof(data) == "object"){
3649                                if(data[1] == "Permission denied"){
3650                                        cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu);
3651                                        return write_msg(get_lang("Permission denied"));
3652                                }
3653                        }
3654                        write_msg(get_lang('Your Trash folder was empty.'));
3655                        if (get_current_folder() == mount_url_folder(["INBOX",special_folders["Trash"]])){
3656                                draw_paging(0);
3657                                remove_rows(document.getElementById("table_box"));                             
3658                                Element('tot_m').innerHTML = 0;
3659                                Element('new_m').innerHTML = 0;
3660                        }
3661                }
3662                else
3663                        write_msg(get_lang('ERROR emptying your Trash folder.'));
3664        }
3665       
3666        $.Zebra_Dialog(get_lang('Do you really want to empty your trash folder?'), {
3667                'type':     'question',
3668                'title':    get_lang('Empty Trash'),
3669                'buttons':  [get_lang("Yes"), get_lang("No")],
3670                'overlay_opacity' : 0.5,
3671                'onClose':  function(caption) {
3672                        if(caption == get_lang("Yes")){
3673                                cExecute ("$this.imap_functions.empty_folder&clean_folder="+"imapDefaultTrashFolder"+(shared ? "&shared="+folder : ""), handler_empty_trash);
3674                        }
3675                }
3676        });
3677}
3678
3679function empty_spam_imap(shared, button){
3680        if(shared){
3681                var folder_part = $(button).parents("li:first").attr("id").split(cyrus_delimiter);
3682                var folder = folder_part[0]+cyrus_delimiter+folder_part[1];
3683        }
3684        var handler_empty_spam = function(data){
3685                Element('chk_box_select_all_messages').checked = false;
3686                if(!verify_session(data))
3687                        return;
3688                if (get_current_folder() == mount_url_folder(["INBOX",special_folders["Spam"]])){
3689                        draw_paging(0);
3690                        remove_rows(document.getElementById("table_box"));
3691                }
3692                //tree_folders.getNodeById(mount_url_folder(["INBOX",special_folders["Spam"]])).alter({caption: get_lang("Spam")});
3693                //tree_folders.getNodeById(mount_url_folder(["INBOX",special_folders["Spam"]]))._refresh();
3694                draw_new_tree_folder();
3695                draw_tree_labels();
3696                update_quota(get_current_folder());
3697                if (data){
3698                        if(typeof(data) == "object"){
3699                                if(data[1] == "Permission denied"){
3700                                        cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu);
3701                                        return write_msg(get_lang("Permission denied"));
3702                                }else{
3703                                        write_msg(get_lang('Your Spam folder was empty.'));             
3704                                }
3705                        }else{
3706                                write_msg(get_lang('Your Spam folder was empty.'));     
3707                        }
3708                }
3709                else
3710                        write_msg(get_lang('ERROR emptying your Spam folder.'));
3711        }
3712       
3713        $.Zebra_Dialog(get_lang('Do you really want to empty your spam folder?'), {
3714                'type':     'question',
3715                'title':    get_lang('Empty Spam'),
3716                'buttons':  [get_lang("Yes"), get_lang("No")],
3717                'overlay_opacity' : 0.5,
3718                'onClose':  function(caption) {
3719                        if(caption == get_lang("Yes")){
3720                                cExecute ("$this.imap_functions.empty_folder&clean_folder="+"imapDefaultSpamFolder"+(shared ? "&shared="+folder : ""), handler_empty_spam);
3721                        }
3722                }
3723        });
3724}
3725
3726
3727function export_all_selected_msgs(){
3728        if (openTab.type[currentTab] > 1){         
3729                source_msg(currentTab,openTab.imapBox[currentTab]);
3730                return;
3731        }
3732        var search = false;             
3733
3734        if(currentTab != 0 && currentTab.indexOf("search_")  >= 0){
3735                var id_border = currentTab.replace(/[a-zA-Z_]+/, "");
3736                var msgs_to_export = this.get_selected_messages_search();
3737                if (!msgs_to_export){
3738                        write_msg(get_lang('No selected message.'));
3739                        return;
3740                }
3741                var selected_param = "";
3742                msgs_to_export = msgs_to_export.split(",");
3743                search = true;
3744                for (i = 0; i < msgs_to_export.length; i++){
3745                        var tr = Element(msgs_to_export[i]+'_s'+id_border);
3746                        msg_to_move = (tr.getAttribute('name') == null?get_current_folder():tr.getAttribute('name'));
3747                        selected_param += ','+msg_to_move+';'+tr.id.replace(/_[a-zA-Z0-9]+/,"");
3748                }
3749        }else{
3750                var msgs_to_export = this.get_selected_messages();
3751        }
3752        var handler_export_all_selected_msgs = function(data){
3753
3754                if(!data){
3755                        write_msg(get_lang('Error compressing messages (ZIP). Contact the administrator.'));
3756                }
3757                else{
3758                        var filename = 'mensagens.zip';
3759                        if (data[0].match(/\.eml$/gi)) {
3760                filename = data[1]+'.eml';
3761                        }
3762                        download_attachments(null, null, data[0], null,null,data[1]+'.eml');
3763                }
3764        }
3765
3766        if(search){
3767                cExecute ("$this.exporteml.makeAll", handler_export_all_selected_msgs, "folder=false&msgs_to_export="+selected_param);
3768        }else if (msgs_to_export) {
3769                cExecute ("$this.exporteml.makeAll", handler_export_all_selected_msgs, "folder="+get_current_folder()+"&msgs_to_export="+msgs_to_export);
3770                write_msg(get_lang('You must wait while the messages will be exported...'));
3771        }
3772        else
3773                write_msg(get_lang('No selected message.'));
3774}
3775
3776function select_all_search_messages(select, aba){
3777
3778        if(select){
3779                jQuery("#"+aba+" tr").each(function(i, o) {
3780               
3781                        o.firstChild.firstChild.checked = true;
3782                        add_className(o, 'selected_msg');
3783                });             
3784        }else{
3785                jQuery("#"+aba+" tr").each(function(i, o) {
3786               
3787                        o.firstChild.firstChild.checked = false;
3788                        remove_className(o, 'selected_msg');
3789                });
3790        }
3791}
3792
3793function verify_session(data){
3794
3795        if(data && data.imap_error) {
3796                if(data.imap_error == "nosession")
3797                        write_msg(get_lang("your session could not be verified."));
3798                else
3799                        write_msg(data.imap_error);
3800                // Hold sesion for edit message.
3801                //if(!hold_session)
3802                //      location.href="../login.php?cd=10&phpgw_forward=%2FexpressoMail1_2%2Findex.php";
3803                return false;
3804        }
3805        else
3806                return true;
3807}
3808
3809// Save image file.
3810function save_image(e,thumb,file_type){
3811        file_type = file_type.replace("/",".");
3812        thumb.oncontextmenu = function(e) {
3813                return false;
3814        }
3815        var _button = is_ie ? window.event.button : e.which;
3816        var     _target = is_ie ? event.srcElement : e.target;
3817
3818        if(_button == 2 || _button == 3) {
3819                var _params = _target.id.split(";;");
3820                download_attachments(_params[0],_params[1],_params[2],_params[3],_params[4],file_type);
3821        }
3822}
3823function save_image2(info){
3824        var obj = jQuery.parseJSON(unescape(info));
3825        download_attachments(obj.folder, obj.message, obj.thumbIndex, obj.pid, obj.encoding, obj.type.replace("/","."));
3826}
3827
3828function nospam(msgs_number, border_ID, folder){
3829        if (folder == 'null')
3830                folder = get_current_folder();
3831        var new_folder = '';
3832        if(folder.substr(0,4) == 'user'){
3833                arrayFolder = folder.split(cyrus_delimiter);
3834                new_folder = 'user'+cyrus_delimiter+arrayFolder[1];
3835        }
3836        else{
3837                new_folder = 'INBOX';
3838        }
3839        var new_folder_name = get_lang('INBOX');
3840        var handler_move_msgs = function(data){
3841                if (msgs_number == 'selected')
3842                        set_messages_flag("unseen", "get_selected_messages");
3843                else
3844                        proxy_mensagens.proxy_set_message_flag(msgs_number, "unseen");
3845                proxy_mensagens.proxy_move_messages(folder, msgs_number, border_ID, new_folder, new_folder_name);
3846
3847                if (openTab.type[currentTab] > 1)
3848                        delete_border(currentTab,'false');
3849        }
3850
3851        if(currentTab.toString().indexOf("_r") != -1)
3852                msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r"));
3853        else if(msgs_number == 'selected')
3854                msgs_number = get_selected_messages();
3855
3856        //TODO: REFATORAR O Cï¿œDIGO PARA EVITAR recodificaᅵᅵo
3857        if(currentTab == 0)
3858                msgs_number = get_selected_messages();
3859
3860        if (parseInt(msgs_number) > 0 || msgs_number.length > 0)
3861                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="+0+"&cyrus_delimiter="+cyrus_delimiter, handler_move_msgs);
3862        else
3863                write_msg(get_lang('No selected message.'));
3864}
3865
3866function spam(folder, msgs_number, border_ID){
3867        if (folder == 'null')
3868                folder = get_current_folder();
3869        var new_folder = '';
3870        if(folder.substr(0,4) == 'user')
3871        {       
3872                arrayFolder = folder.split(cyrus_delimiter);
3873                new_folder = 'user'+cyrus_delimiter+arrayFolder[1]+cyrus_delimiter+special_folders['Spam'];
3874        }
3875        else
3876        {
3877                new_folder = mount_url_folder(["INBOX",special_folders["Spam"]]);
3878        }
3879        var new_folder_name = 'Spam';
3880        var not_opem_previus = true;
3881        var handler_move_msgs = function(data){
3882                proxy_mensagens.proxy_move_messages(folder, msgs_number, border_ID, new_folder, new_folder_name, not_opem_previus);
3883                if (openTab.type[currentTab] > 1){
3884                        if(preferences.delete_and_show_previous_message == 1)
3885                        delete_border(currentTab,'false');
3886        }
3887        }
3888
3889        if(currentTab.toString().indexOf("_r") != -1)
3890                msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r"));
3891        else if(currentTab != 0 && currentTab.indexOf("search_")  >= 0){
3892                var content_search = document.getElementById('content_id_'+currentTab);mount_url_folder(["INBOX",special_folders['Trash']]), 'Trash',
3893                move_search_msgs('content_id_'+currentTab,  mount_url_folder(["INBOX",special_folders["Spam"]]), special_folders['Spam']);
3894                refresh();
3895                return;
3896        }else if(msgs_number == 'selected')
3897                msgs_number = get_selected_messages();
3898
3899        //TODO: REFATORAR O Cï¿œDIGO PARA EVITAR recodificaᅵᅵo
3900        if(currentTab == 0)
3901                msgs_number = get_selected_messages();
3902
3903        if(parseInt(msgs_number) > 0 || msgs_number.length > 0)
3904                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="+0+"&cyrus_delimiter="+cyrus_delimiter, handler_move_msgs);
3905        else
3906                write_msg(get_lang('No selected message.'));
3907}
3908
3909function import_window()
3910{
3911        var folder = {};
3912        var importEmails = $("#importEmails");
3913                importEmails.html( DataLayer.render( BASE_PATH + "modules/mail/templates/importEmails.ejs", {}));
3914                importEmails.dialog(
3915                {
3916                        height          : 280,
3917                        width           : 500,
3918                        resizable       : false,
3919                        title           : get_lang('zip mails to import'),
3920                        modal           : true,
3921                        buttons         : [
3922                                                         {
3923                                                                text    : get_lang("Close"),
3924                                                                click   : function()
3925                                                                {
3926                                                                        importEmails.dialog("close").dialog("destroy");
3927                                                                }
3928                                                         },
3929                                                         {
3930                                                                text    : get_lang("Import"),
3931                                                                click   : function()
3932                                                                {
3933                                                                        var input_file   = importEmails.find("input[type=file]");
3934                                                                        var input_hidden = importEmails.find("input[name=folder]");
3935                                                                       
3936                                                                        if( input_file.attr("value") == "" )
3937                                                                        {
3938                                                                                $.Zebra_Dialog(get_lang("You must choose a file") + " !",{
3939                                                                                        'type'                          : 'warning',
3940                                                                                        'overlay_opacity'       : '0.5',
3941                                                                                        'onClose'                       :  function(){
3942                                                                                                $("#importMessageAccordion").accordion('activate',0);   
3943                                                                                        }
3944                                                                                });
3945                                                                        }
3946                                                                        else
3947                                                                        {
3948                                                                                if( input_hidden.attr("value") == "" )
3949                                                                                        $.Zebra_Dialog( get_lang("You must choose a folder") + " !" , {
3950                                                                                                'type'                          : 'warning',
3951                                                                                                'overlay_opacity'       : '0.5',
3952                                                                                                'onClose'                       :  function(){
3953                                                                                                        $("#importMessageAccordion").accordion('activate',1);   
3954                                                                                                }
3955                                                                                        });
3956                                                                                else
3957                                                                                {
3958                                                                                        var handler_return = function(data)
3959                                                                                        {
3960                                                                                                write_msg(get_lang('The import was executed successfully.'));
3961                                                                                               
3962                                                                                                return_import_msgs( data, folder );
3963                                                                                        }
3964                                                                                       
3965                                                                                        var formSend =  document.getElementById("importFileMessages");
3966                                                                                       
3967                                                                                        importEmails.dialog("destroy");
3968                                                                                       
3969                                                                                        write_msg(get_lang('You must wait while the messages will be imported...'));
3970                                                                                       
3971                                                                                        cExecuteForm('$this.imap_functions.import_msgs', formSend , handler_return );
3972                                                                                }
3973                                                                        }
3974                                                                }
3975                                                         }
3976                                                ],
3977                open: function(event, ui)
3978                {
3979                    if(typeof(shortcut) != 'undefined') shortcut.disabled = true;
3980                },
3981                close: function(event, ui)
3982                {
3983                    if(typeof(shortcut) != 'undefined') shortcut.disabled = false;
3984                }
3985                });
3986
3987        importEmails.css("overflow","hidden");
3988               
3989        importEmails.find("input[type=file]").change(function()
3990        {
3991                var deniedExtension = true;
3992                var fileExtension       = ["eml","zip"];
3993                var fileName            = importEmails.find("input[type=file]").attr('value');
3994                        fileName                = fileName.split(".");
3995               
3996                if( fileName[1] )
3997                {
3998                        for( var i in fileExtension )
3999                        {
4000                                if( fileExtension[i].toUpperCase() === fileName[1].toUpperCase() )
4001                                {
4002                                        deniedExtension = false;
4003                                        break;
4004                                }
4005                        }
4006                }
4007
4008                if( deniedExtension )
4009                {
4010                        $.Zebra_Dialog( get_lang('File extension forbidden or invalid file') , {
4011                                'type'                          : 'warning',
4012                                'overlay_opacity'       : '0.5'
4013                        });
4014                }
4015
4016                $("#lblFileName").html( ( !deniedExtension ) ? importEmails.find("input[type=file]").attr('value') : "" );
4017               
4018        });     
4019               
4020        $("#importMessageAccordion").accordion();       
4021
4022        var foldersTree = jQuery("#foldertree-container-importMessage")
4023        .removeClass('empty-container')
4024        .html(DataLayer.render(BASE_PATH + 'api/templates/foldertree.ejs', {folders: [cp_tree1, cp_tree2, [] ]}))
4025        .find("#foldertree").treeview()
4026        .click(function(event)
4027        {
4028                //request new selected folder messages
4029                var target = $(event.target);
4030
4031                if( target.is('.collapsable-hitarea, .expandable-hitarea, .lastCollapsable, .lastExpandable, .treeview') )
4032                    return;
4033
4034                if( !target.attr('id') )
4035                    target = target.parent();
4036
4037        if (target.attr('id') == "foldertree") return;
4038               
4039                folder.id               = target.attr('id');
4040                folder.child    = target.find('.folder');
4041                folder.caption  = target.find('span').attr('title');                   
4042               
4043                $('.filetree span.folder.selected').removeClass('selected');
4044                if(!target.is('#foldertree > .expandable, #foldertree > .collapsable'))
4045                        $(target).children('.folder').addClass('selected');
4046               
4047                selectedFolder = {
4048                    id: folder.id,
4049                    name: folder.child.attr('title'),
4050                    'class': folder.child.attr('class')
4051                };
4052               
4053                importEmails.find("input[name=folder]").attr("value", folder.id);
4054        });
4055       
4056        $("#lblFileName").prev().css("margin-left", "10px");
4057        $("#lblFileName").prev().css("font-weight", "bold");
4058}
4059
4060function return_import_msgs(data, folder)
4061{
4062        if(data && data.error){
4063                write_msg(data.error);
4064        }
4065        else
4066        {
4067                if(data == 'Post-Content-Length')
4068                        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));
4069                else
4070                {       /*
4071                        * @author Rommel Cysne (rommel.cysne@serpro.gov.br)
4072                        * @date 2009/05/15
4073                        * Foi colocado um teste para verificar se a pasta selecionada, passada como parametro,
4074                        * eh uma pasta local (qualquer uma)
4075                        */
4076                        var er = /^local_/;
4077                        if ( er.test(folder.id) )
4078                        {
4079                                alert( "Mensagens nï¿œo podem ser importadas em pastas locais" );
4080                                //archive_msgs('INBOX/Lixeira/tmpMoveToLocal',wfolders_tree._selected.id,data);
4081                                //cExecute('$this.imap_functions.delete_mailbox',function(){},'del_past=INBOX/Lixeira/tmpMoveToLocal');
4082                        }
4083                        else
4084                        {
4085                                if( openTab.imapBox[0] == folder.id )
4086                                {
4087                                        openTab.imapBox[0] = '';
4088                                        change_folder(folder.id, folder.caption);
4089                                }
4090                               
4091                                refresh();
4092                        }
4093                }
4094        }
4095
4096}
4097
4098function import_implements_calendar(){
4099
4100        if(typeof(Encoder) == "undefined"){
4101                /*
4102                * Deve-se centralizar as informaᅵᅵes do usuï¿œrio logado afim de nï¿œo incluir
4103                * arquivos de modulos distintos para este fim.
4104                */
4105               
4106                //$.ajax({ url: "../expressoCalendar/index.php", async: false});
4107                //$.ajax({url: "../prototype/modules/calendar/js/calendar.date.js", async: false, beforeSend: function( xhr ) { xhr.overrideMimeType('text/javascript; charset=ISO-8859-1')}});
4108                $.ajax({url: "../prototype/modules/calendar/js/load.js", async: false, beforeSend: function( xhr ) {xhr.overrideMimeType('text/javascript; charset=ISO-8859-1')}});
4109                $.ajax({url: "../prototype/modules/calendar/js/map.disponibility.js", async: false, beforeSend: function( xhr ) {xhr.overrideMimeType('text/javascript; charset=ISO-8859-1')}});
4110                $.ajax({url: "../prototype/modules/calendar/js/helpers.js", async: false, beforeSend: function( xhr ) {xhr.overrideMimeType('text/javascript; charset=ISO-8859-1')}});
4111                //$.ajax({ url: "../prototype/modules/calendar/js/timezone.js", async: false});
4112                //$.ajax({ url: "../prototype/modules/calendar/js/calendar.codecs.js", async: false});
4113                $.ajax({url: "../prototype/plugins/encoder/encoder.js", async: false, beforeSend: function( xhr ) {xhr.overrideMimeType('text/javascript; charset=ISO-8859-1')}});
4114                //$.ajax({url: "../prototype/plugins/dateFormat/dateFormat.js", async: false, beforeSend: function( xhr ) { xhr.overrideMimeType('text/javascript; charset=ISO-8859-1')}});
4115
4116                $.ajax({url: "../prototype/plugins/fullcalendar/fullcalendar.js", async: false , beforeSend: function( xhr ) {xhr.overrideMimeType('text/javascript; charset=ISO-8859-1')}});
4117               
4118               
4119                DataLayer.dispatchPath = "../prototype/";       
4120        }
4121}
4122
4123
4124function select_import_folder(){
4125        //Begin: Verify if the file extension is allowed.
4126        var imgExtensions = new Array("eml","zip");
4127        var inputFile = document.form_import.file_1;
4128        if(!inputFile.value){
4129                alert(get_lang('File extension forbidden or invalid file') + '.');
4130                return false;
4131        }
4132        var fileExtension = inputFile.value.split(".");
4133        fileExtension = fileExtension[(fileExtension.length-1)];
4134        var deniedExtension = true;
4135        for(var i=0; i<imgExtensions.length; i++) {
4136                if(imgExtensions[i].toUpperCase() == fileExtension.toUpperCase()) {
4137                        deniedExtension = false;
4138                        break;
4139                }
4140        }
4141        if(deniedExtension) {
4142                alert(get_lang('File extension forbidden or invalid file') + '.');
4143                return false;
4144        }
4145        arrayJSWin['import_window'].close();
4146                connector.loadScript('wfolders');
4147
4148        if ( typeof(wfolders) == "undefined" )
4149                setTimeout( 'select_import_folder()', 500 );
4150        else
4151                wfolders.makeWindow('null','import');
4152}
4153
4154function decodeOwner(){
4155        owner = User.me.id;
4156        var imapBox = openTab.imapBox[currentTab].split(cyrus_delimiter);
4157        if(imapBox.length > 1){
4158            var user = DataLayer.get('user', {filter: ['=','uid',imapBox[1]]});             
4159            owner = $.isArray(user) ? user[0].id : user.id;
4160        }       
4161        return owner;
4162}
4163function import_calendar(data){
4164    var import_url = '$this.db_functions.import_vcard&msg_folder='+data;
4165    var logUser;
4166    var up;
4167    var owner;   
4168    function handler_import_calendar(data){
4169            if(data === true){
4170                    write_msg(get_lang("The event was imported successfully."));
4171            }
4172            else if( data['url'] )
4173            {
4174                var form = document.createElement( "form" );
4175
4176                form.setAttribute( "action", DEFAULT_URL + data['url'] + '&isPost=true' );
4177                form.setAttribute( "method", "POST" );
4178
4179                document.body.appendChild( form );
4180
4181                form.submit();
4182            }
4183            else
4184                write_msg(get_lang(data));
4185    }   
4186        if(defaultCalendar == "expressoCalendar" && $("#expressoCalendarid")[0]){
4187                import_implements_calendar();
4188                $( "#import-dialog" ).dialog({
4189                        autoOpen: false,
4190                        height: 220,
4191                        modal: true,
4192                        resizable : false,
4193            open: function(event, ui)
4194            {
4195                if(typeof(shortcut) != 'undefined') shortcut.disabled = true;
4196            },
4197            close: function(event, ui)
4198            {
4199                event.stopPropagation();
4200                if(typeof(shortcut) != 'undefined') shortcut.disabled = false;
4201            },
4202                        closeOnEscape: true
4203                });
4204               
4205                $.ajax({
4206                        url: "controller.php?action="+import_url+'&from_ajax=true&id_user='+User.me.id+'&readable=true&cirus_delimiter='+cyrus_delimiter+'&analize=true&uidAccount='+decodeOwner(),
4207                        async: false,
4208                        success: function(data){
4209                                        data = connector.unserialize(data);
4210
4211
4212                                        var createDialog = function(typeImport, propaget){
4213                                           
4214                                                if(typeof(typeImport) == "object"){
4215                                                    var calendarPermission = typeImport.calendar;
4216                                                    typeImport = typeImport.action;
4217                                                }
4218                                               
4219                                                switch(parseInt(typeImport)){
4220                                                case 1:
4221                                                case 7:
4222                                                case 10:
4223                                                    $("#select-agenda").html('');
4224
4225                                                    var options = '';
4226
4227                                                    if(typeImport == 10){
4228                                                        for(var i = 0; i < calendarPermission.length; i++)
4229                                                            options += '<option value="'+calendarPermission[i]+'">'+Calendar.signatureOf[calendarPermission[i]].calendar.name+'</option>'
4230                                                    }else{
4231                                                        for(var id in Calendar.signatures)
4232                                                           options += parseInt(Calendar.signatures[id].isOwner) ? '<option value="'+Calendar.signatures[id].calendar.id+'">'+Calendar.signatures[id].calendar.name+'</option>' : '';                                                   
4233                                                    }
4234                                                   
4235                                                    $("#select-agenda").append(options);
4236                                                    $("#select-agenda").css("display", "block");
4237                                                   
4238                                                    $("#import-dialog" ).dialog({
4239                                                        buttons: {
4240                                                            Cancel: function() {
4241                                                                $( this ).dialog( "close" );
4242                                                            },
4243                                                            "Importar" : function(){
4244                                                                    $.ajax({
4245                                                                        url: "controller.php?action="+import_url+'&from_ajax=true&selected='+$("#select-agenda option:selected").val()+'&status='+$("#select-status option:selected").val()+'&uidAccount='+decodeOwner(),
4246                                                                        success: function(msg){
4247                                                                            var alt = ( (msg = connector.unserialize(msg)) == "ok") ? "Importado com sucesso para " : "Ocorreu um erro ao importar o evento para a agenda ";
4248                                                                            alert( alt + $("#select-agenda option:selected").text() );
4249                                                                        }
4250                                                                    });
4251                                                                    $( this ).dialog( "close" );
4252                                                            }
4253                                                        }
4254                                                        });
4255
4256                                                        if(typeImport == 7){
4257                                                            $("#import-dialog").find('#select-status option[value=1]').attr('selected','selected').trigger('change');
4258                                                            $("#import-dialog").find('#select-status').attr('disabled','disabled');
4259                                                        }
4260                                                    break;
4261                                                case 3:
4262                                                        $.ajax({
4263                                                                url: "controller.php?action="+import_url+'&from_ajax=true&selected=true',
4264                                                                success: function(msg){
4265                                                                        alert( ( ( connector.unserialize(msg)) == "ok") ? "Seu evento foi removido " : "Ocorreu um erro ao remover o evento" );
4266                                                                }
4267                                                        });
4268                                                        return;
4269                                                        break; 
4270                                                case 5:
4271                                                        $.ajax({
4272                                                                url: "controller.php?action="+import_url+'&from_ajax=true&selected=true',
4273                                                                success: function(msg){
4274                                                                        alert( ( ( connector.unserialize(msg)) == "ok") ? "Seu evento foi Atualizado com sucesso" : "Ocorreu um erro ao atualizar evento" );
4275                                                                }
4276                                                        });
4277                                                        return;
4278                                                        break; 
4279                                                case 6:
4280                                                        var acceptedSuggestion = confirm("Deseja atualizar o evento de acordo com a sugestï¿œo ?");
4281                                                        $.ajax({
4282                                                                url: "controller.php?action="+import_url+'&from_ajax=true&id_user='+User.me.id+'&selected=true&cirus_delimiter='+cyrus_delimiter+'&acceptedSuggestion='+acceptedSuggestion+"&from="+document.getElementById('from_values_'+currentTab).value+'&uidAccount='+decodeOwner(),
4283                                                                success: function(msg){
4284                                                                        if(acceptedSuggestion)
4285                                                                                alert( ( ( connector.unserialize(msg)) == "ok") ? "Evento atualizado com sucesso " : "Ocorreu um erro ao atualizar o evento" );
4286                                                                }
4287                                                        });
4288                                                        return;
4289                                                        break;
4290                                                case 9:
4291                                                        alert('Seu evento nï¿œo possui alteraᅵᅵes!');
4292                                                        return;
4293                                                        break;
4294                                                case 11:
4295                                                        alert('Este evento jï¿œ fora importando por algum dos particpantes e jï¿œ se encontra disponï¿œvel em sua agenda compartilhada!');
4296                                                        return;
4297                                                        break;
4298                                                default:
4299                                                        up = true;
4300                                                        $("#select-agenda").css("display", "none");
4301                                                        $("#import-dialog" ).children("p:first-child").css("display", "none");
4302                                                        $("#import-dialog" ).dialog({
4303                                                                height: 160,
4304                                                                title: 'Atualizar Evento',
4305                                                                buttons: {
4306                                                                        Cancel: function() {
4307                                                                                $( this ).dialog( "close" );
4308                                                                        },
4309                                                                   "Atualizar": function() {
4310                                                                               
4311                                                                                $.ajax({
4312                                                                                         url: "controller.php?action="+import_url+'&from_ajax=true&cirus_delimiter='+cyrus_delimiter+'&selected='+ (parseInt(typeImport) == 2 || parseInt(typeImport) == 4 ? 'true' : $("#select-agenda option:selected").val()) +'&status='+$("#select-status option:selected").val()+'&uidAccount='+decodeOwner(),
4313                                                                                         success: function(msg){
4314                                                                                                        alert( ( (msg = connector.unserialize(msg)) == "ok") ? "Atualizado com sucesso" : "Ocorreu um erro ao atualizar o evento" );
4315                                                                                        }
4316                                                                                });
4317                                                                                $( this ).dialog( "close" );
4318                                                                        }
4319                                                                },
4320                                close:function(event, ui)
4321                                {
4322                                    if(typeof(shortcut) != 'undefined') shortcut.disabled = false;
4323                                },
4324                                open: function(event, ui)
4325                                {
4326                                    if(typeof(shortcut) != 'undefined') shortcut.disabled = true;
4327                                }
4328                                                        });
4329                                                        $(".ui-dialog-buttonpane").find(".ui-button:last").children().html("Atualizar");
4330                                                }
4331                                                $( "#import-dialog" ).dialog( "open" );
4332                                                                                                                               
4333                                        };
4334                                        createDialog(data, true);
4335                               
4336                },
4337                beforeSend: function( jqXHR, settings ){
4338                                        connector.showProgressBar();
4339                                },
4340                                complete: function( jqXHR, settings ){
4341                                        connector.hideProgressBar();
4342                                }
4343            });
4344                       
4345                }
4346                else
4347                {
4348                    if(confirm(get_lang("Do you confirm this import to your Calendar?"))){
4349                        cExecute( import_url + "&from_ajax=true", handler_import_calendar);
4350                    }
4351                }
4352}
4353function open_msg_part(data){
4354        var handler_open_msg_part = function (data)
4355        {
4356            if(data.append == 1)
4357            {
4358                proxy_mensagens.get_msg(data.msg_number,data.msg_folder,false,show_msg);
4359                partMsgs.push(data.msg_number);
4360        }
4361            else
4362               write_msg(data.append);
4363        }
4364        cExecute('$this.imap_functions.ope_msg_part&msg_folder='+data+'&save_folder=INBOX'+cyrus_delimiter+special_folders['Trash'] , handler_open_msg_part);   
4365}
4366function hack_sent_queue(data,rowid_message) {
4367
4368        if (data.success != true) {
4369                queue_send_errors = true;
4370                expresso_local_messages.set_problem_on_sent(rowid_message,data);
4371        }
4372        else {
4373                expresso_local_messages.set_as_sent(rowid_message);
4374                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.
4375                        el =document.getElementById('_action');
4376                        father = el.parentNode;
4377                        father.removeChild(el);
4378                }
4379                send_mail_from_queue(false);
4380        }
4381}
4382
4383function send_mail_from_queue(first_pass) {
4384        if(first_pass)
4385                modal('send_queue');
4386        var num_msgs = expresso_local_messages.get_num_msgs_to_send();
4387        if (num_msgs <= 0) {
4388                close_lightbox();
4389                return;
4390        }
4391        document.getElementById('text_send_queue').innerHTML = get_lang('Number of messages to send:')+' '+num_msgs;
4392        var handler_send_queue_message = function(data,rowid_message) {
4393                hack_sent_queue(data,this.ID_tmp);
4394        }
4395        var msg_to_send = expresso_local_messages.get_form_msg_to_send();
4396        if(!is_ie)
4397                ID_tmp = msg_to_send.rowid.value;
4398        else {//I.E kills me of shame...
4399                for (var i=0;i<msg_to_send.length;i++) {
4400                        if(msg_to_send.elements[i].name=='rowid') {
4401                                ID_tmp = msg_to_send.elements[i].value;
4402                                break;
4403                        }
4404                }
4405        }
4406        expresso_local_messages.set_as_sent(ID_tmp);
4407        cExecuteForm("$this.imap_functions.send_mail", msg_to_send, handler_send_queue_message,"queue_"+ID_tmp);
4408        send_mail_from_queue(false);
4409}
4410
4411function check_mail_in_queue() {
4412        var num_msgs = expresso_local_messages.get_num_msgs_to_send();
4413        if(num_msgs>0) {
4414                control = confirm(get_lang('You have messages to send. Want you to send them now?'));
4415                if(control) {
4416                        send_mail_from_queue(true);
4417                }
4418                return true;
4419        }
4420        else {
4421                return false;
4422        }
4423}
4424
4425function force_check_queue() {
4426        if(!check_mail_in_queue()) {
4427                write_msg(get_lang("No messages to send"));
4428        }
4429}
4430
4431function create_new_folder(name_folder, base_path){
4432        //Limit reached folders
4433        if(preferences.imap_max_folders){
4434                if(cp_tree1.length == parseInt(preferences.imap_max_folders)){
4435                        $(".folders-loading").removeClass("folders-loading");
4436                        cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu);
4437                        return write_msg(get_lang("Limit reached folders"));
4438                }
4439        }
4440       
4441        $.ajax({
4442                url : "controller.php?action=$this.imap_functions.create_mailbox",
4443                type : "POST",
4444                async : false,
4445                data : "newp="+name_folder+"&base_path="+base_path,
4446                success : function(data){
4447                        data = connector.unserialize(data);
4448                        if(data == "Mailbox already exists"){
4449                                write_msg(get_lang("Mailbox already exists"));
4450                        }else if(data.substring(data.indexOf("Permission"), data.length) == "Permission denied"){
4451                                $(".folders-loading").removeClass("folders-loading");
4452                                cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu);
4453                                return write_msg(get_lang("Permission denied"));
4454                        }
4455                        cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu);
4456                },
4457                beforeSend: function( jqXHR, settings ){
4458                        connector.showProgressBar();
4459                },
4460                  complete: function( jqXHR, settings ){
4461                        connector.hideProgressBar();
4462                }
4463        });
4464}
4465
4466function searchEmail(emailString){
4467                var arrayInvalidEmails = new  Array();
4468                arrayInvalidEmails[1] = '';
4469                var email;
4470                var arrayEmailsFull = new Array();
4471                arrayEmailsFull = emailString.split(',');
4472                var er_Email =  new RegExp("<(.*?)>");
4473                // TODO Use validateEmail of common functions !
4474                var er_ValidaEmail = new RegExp("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,3})$");
4475
4476                for (i=0; i < arrayEmailsFull.length; i++){
4477                        email = er_Email.exec(arrayEmailsFull[i]);
4478                        tempEmail = email == null  ? arrayEmailsFull[i]:email[1];
4479                        tempEmail = tempEmail.replace(/^\s+|\s+$/g,"");
4480                       
4481                        if (tempEmail != '') {
4482                                singleEmail = er_ValidaEmail.exec(tempEmail);
4483                                if (singleEmail == null) {
4484                                        arrayInvalidEmails[0] = true;
4485                                        arrayInvalidEmails[1] += (email == null ? arrayEmailsFull[i] : email[1]) + "";
4486                                }
4487                        }
4488                }
4489
4490                return arrayInvalidEmails;
4491}
4492
4493                /* Funᅵᅵo que chama a tela para o usuï¿œrio reportar um erro no email. */
4494                function reports_window(currentTab){
4495                        ID_msg = currentTab.substr(0,currentTab.indexOf("_"));
4496                        report_wind.make_report_window(ID_msg);
4497                }
4498
4499
4500DataLayer.codec( "message", "detail", {
4501 
4502        decoder:function( form ){
4503            var border_id = form.abaID; 
4504            //Defininindo pasta a ser salva mensagem
4505                        var user_selected = $('#content_id_'+border_id).find('.from-select option:selected').text();
4506                        var str_begin_name = user_selected.indexOf('<') + 1;
4507                        var str_end_name = user_selected.indexOf('@');
4508                        var user_selected_name = user_selected.substring(str_begin_name, str_end_name);
4509                       
4510                        if(user_selected.length > 0)
4511                                var user_selected_email = user_selected.match(/<([^<]*)>[\s]*$/)[1];   
4512                        else
4513                                var user_selected_email = User.me.mail;
4514                       
4515                        if(user_selected_email == User.me.mail){
4516                                var prefix = 'INBOX';
4517                        }else{
4518                                var prefix = 'user' + cyrus_delimiter+user_selected_name;
4519                               
4520                                /** TODO Mudar quando melhorias forem implementadas na API de atualizaᅵᅵo do cache */
4521                                DataLayer.remove('folder', false);
4522                                DataLayer.get('folder');
4523                               
4524                                var has_folder = DataLayer.get('folder', prefix + cyrus_delimiter + draftsfolder);
4525                                if(!has_folder){
4526                                        create_new_folder(draftsfolder, prefix);
4527                                }
4528                        }
4529                       
4530            var folder_id = (openTab.imapBox[border_id] && openTab.type[border_id] < 6) ? openTab.imapBox[border_id]: prefix + cyrus_delimiter + draftsfolder;
4531            form.folder = folder_id;
4532            form.body = RichTextEditor.getData("body_"+border_id);
4533                        form.type =  RichTextEditor.plain[border_id] ? 'plain' : 'html';           
4534            form.attachments = listAttachment(border_id);
4535            form.uidsSave = uidsSave[border_id].toString();
4536            return( form );
4537     
4538        },
4539
4540        encoder:function( pref ){
4541             
4542                return( pref );
4543        }
4544
4545});
4546
4547DataLayer.codec( "mailAttachment", "detail", {
4548 
4549        decoder: function(evtObj){
4550       
4551                if( notArray = $.type(evtObj) !== "array" )
4552                        evtObj = [ evtObj ];
4553
4554                var res = $.map(evtObj, function( form){
4555                        return [$.map(form.files , function( files){
4556                                        return {source: files , disposition : form['attDisposition'+form.abaID]};
4557                                })];
4558                });
4559        return notArray ? res[0] : res;
4560        },
4561     
4562        encoder: function(){}
4563
4564     
4565});
4566
4567function formatBytes(bytes) {
4568        if (bytes >= 1000000000) {
4569                return (bytes / 1000000000).toFixed(2) + ' GB';
4570        }
4571        if (bytes >= 1000000) {
4572                return (bytes / 1000000).toFixed(2) + ' MB';
4573        }
4574        if (bytes >= 1000) {
4575                return (bytes / 1000).toFixed(2) + ' KB';
4576        }
4577        return bytes + ' B';
4578};
4579
4580function truncate(text, size){
4581        var result = text;
4582        if(text.length > size){
4583                result = text.substring(0,size) + '...';
4584        }
4585        return result;
4586}
4587
4588/*
4589* @author Marcos Luiz Wilhelm (marcoswilhelm@gmail.com)
4590* @date 2012/07/17
4591* @brief Break out emails only with comma out of quote marks
4592*/
4593function break_comma (originalText){
4594        var quotesMarks = false;
4595        var completeString = "";
4596        var brokenEmails = new Array();
4597        originalText+=",";
4598        for(i=0; i<originalText.length; i++){
4599                var character = originalText.substr(i,1);
4600                if(character == "\""){
4601                        quotesMarks = !quotesMarks;
4602                }
4603                if(!quotesMarks){
4604                        if(character == ","){
4605                                brokenEmails.push(completeString);
4606                                completeString = "";
4607                        }
4608                        else
4609                                completeString+=character;     
4610                }
4611                else
4612                        completeString+=character;
4613        }
4614        return brokenEmails;
4615}
4616
4617DataLayer.links('message');
4618DataLayer.poll('message',30);
4619
4620
Note: See TracBrowser for help on using the repository browser.