source: sandbox/2.5.1-expresso1/expressoMail1_2/js/mail_archiver.js @ 7885

Revision 7885, 100.8 KB checked in by thiago, 11 years ago (diff)

Ticket #3331 - Quase tudo pronto, apenas alguns detalhes no arquivamento.

Line 
1<!--
2/*
3 * Mail Archive JS API
4 *
5 * This JavaScript file is the core to use MailArchiver embeded at Expresso suite.
6 * It contains all the resources used to handle local messages stored at the brand
7 * new solution Mail Archiver (a embeded application server running at client side).
8 *
9 * This feature is a replacement for Google Gears(obsolete by now), used by
10 * Expresso to store local messages at user workstation hard disk.
11 *
12 * @author Fernando Wendt [fernando-alberto.wendt@serpro.gov.br]
13 *
14 * @status under development
15 */
16
17//var sessid = 'sessionId';
18
19function zeroFill(d){
20    if(parseInt(d) < 10)
21        return('0' + d);
22    else
23        return(d);
24}
25
26//+ Jonas Raoni Soares Silva
27//@ http://jsfromhell.com/geral/utf-8 [v1.0]
28
29UTF8 = {
30        encode: function(s){
31                for(var c, i = -1, l = (s = s.split("")).length, o = String.fromCharCode; ++i < l;
32                        s[i] = (c = s[i].charCodeAt(0)) >= 127 ? o(0xc0 | (c >>> 6)) + o(0x80 | (c & 0x3f)) : s[i]
33                );
34                return s.join("");
35        },
36        decode: function(s){
37                for(var a, b, i = -1, l = (s = s.split("")).length, o = String.fromCharCode, c = "charCodeAt"; ++i < l;
38                        ((a = s[i][c](0)) & 0x80) &&
39                        (s[i] = (a & 0xfc) == 0xc0 && ((b = s[i + 1][c](0)) & 0xc0) == 0x80 ?
40                        o(((a & 0x03) << 6) + (b & 0x3f)) : o(128), s[++i] = "")
41                );
42                return s.join("");
43        }
44};
45
46
47/**
48 * Concatenates the values of a variable into an easily readable string
49 * by Matt Hackett [scriptnode.com]
50 * @param {Object} x The variable to debug
51 * @param {Number} max The maximum number of recursions allowed (keep low, around 5 for HTML elements to prevent errors) [default: 10]
52 * @param {String} sep The separator to use between [default: a single space ' ']
53 * @param {Number} l The current level deep (amount of recursion). Do not use this parameter: it's for the function's own use
54 */
55function print_r(x, max, sep, l) {
56
57        l = l || 0;
58        max = max || 100;
59        sep = sep || ' ';
60
61        if (l > max) {
62                return "[WARNING: Too much recursion]\n";
63        }
64
65        var
66                i,
67                r = '',
68                t = typeof x,
69                tab = '';
70
71        if (x === null) {
72                r += "(null)\n";
73        } else if (t == 'object') {
74
75                l++;
76
77                for (i = 0; i < l; i++) {
78                        tab += sep;
79                }
80
81                if (x && x.length) {
82                        t = 'array';
83                }
84
85                r += '(' + t + ") :\n";
86
87                for (i in x) {
88                        try {
89                                r += tab + '[' + i + '] : ' + print_r(x[i], max, sep, (l + 1));
90                        } catch(e) {
91                                return "[ERROR: " + e + "]\n";
92                        }
93                }
94
95        } else {
96
97                if (t == 'string') {
98                        if (x == '') {
99                                x = '(empty)';
100                        }
101                }
102
103                r += '(' + t + ') ' + x + "\n";
104
105        }
106
107        return r;
108
109};
110var_dump = print_r;
111
112
113
114//Main object structure: object property data definition
115function MailArchiver() {
116    this.enabled = null;
117    this.interval = 500;
118    this.timer = null;
119    this.counter = 0;
120    this.service_count = 0;
121    this.service_count_tryouts = 0;
122    this.message_list = new Array();
123    this.search_message_list = new Array();
124    this.messageslisted = new Array();
125    this.total_messages = 0;
126    this.messages_processed = 0;
127    this.messages_fail = 0;
128    this.folder_origin = null;
129    this.folder_destination = null;
130    this.folders = null;
131    this.currentfolder = 'local_root';
132    this.currentmessage = null;
133    this.currentheaders = null;
134    this.drawdata = null;
135    this.onprocess = false;
136    this.folder_data = false;
137    this.queryconfig = new MAQueryConfig();
138    this.search_queryconfig = new MAQueryConfig();
139    this.pattern = new MAPattern();
140    this.messagesourcehandler = null;
141    this.ServiceReturnObjectList = null;
142    this.ServiceReturnObjectSearch = null;
143   
144    this.specialfolders = {
145                            "inbox":"local_inbox",
146                            "sent":"local_sent",
147                            "drafts":"local_drafts",
148                            "outbox":"local_outbox",
149                            "trash":"local_trash"
150                          };                         
151    this.unarchivecounter = 0;
152    this.archivefolder = null;
153    this.unarchievefolder = null;
154    this.unarchievenewfolder = null;
155    this.taglist = "";   
156    this.currenttag = "";   
157    this.tagmsg = false;
158    this.progressbar = null;
159    this.tmp_att_datasource = null;
160    this.tmp_att_data = null;
161    this.isbusy = false;
162    this.update_counters = false;
163    this.exportformat = 'zip';
164    this.querydata = null;
165    this.queryresult = null;
166    this.search_queryresult = null;
167    this.balancerid = null;
168    this.sessionid = null;
169    this.logonid = null;
170    this.session = null;
171    this.selectedfolder = null;
172    this.allmessagesbyfolder = new Array();
173    this.allcompletemessagesbyfolder = new Array();
174    this.isArchiveOperation = false; //Se estiver em andamento uma operação de arquivamento/desarquivamento.
175    //Contadores da aba de listagem de mensagem
176    this.tot_msgs_tab = 0;
177    this.tot_unseen_msgs_tab = 0;
178}
179
180//Invoked at some possible MA crash issue
181MailArchiver.prototype.resetObject = function(){
182    expresso_mail_archive.message_list = new Array();
183    expresso_mail_archive.messagelisted = new Array();
184    expresso_mail_archive.total_messages = 0;
185    expresso_mail_archive.messages_processed = 0;
186    expresso_mail_archive.messages_fail = 0;
187    //expresso_mail_archive.folder_origin = null;
188    //expresso_mail_archive.folder_destination = null;
189    //expresso_mail_archive.folder = null;
190    expresso_mail_archive.isbusy = false;
191    //window.alert('ResetedObject, deixando current folder como "' + expresso_mail_archive.currentfolder + '"\nfolder destination "' + expresso_mail_archive.folder_destination+ '"');
192}
193
194/*SystemCheck method: test if MailArchive is installed and/or running at user workstation
195*Try to get a instance of ArchiveServices object - the handler of services provided by
196*the MailArchive services provider interface, from user workstation.
197*/
198MailArchiver.prototype.SystemCheck = function(){
199    expresso_mail_archive.enabled = ((ArchiveServices) ? true : false);   
200    if(expresso_mail_archive.enabled){
201        expresso_mail_archive.getAuthId();
202    }
203}
204
205//Check if preference is setted to use default local folders, try to create them
206MailArchiver.prototype.CreateDefaultStructrure = function(){
207    if(expresso_mail_archive.enabled){
208       //Base request object is a CXF Add-on CORS compatible component
209       var reqHandler = new cxf_cors_request_object();
210       reqHandler.init();
211       this.messagesourcehandler = reqHandler.handler; 
212       if(preferences.auto_create_local == 1){
213           expresso_mail_archive.createFolder("","Trash");
214           expresso_mail_archive.createFolder("","Drafts");
215           expresso_mail_archive.createFolder("","Sent");
216           expresso_mail_archive.createFolder("","Outbox");
217           expresso_mail_archive.createFolder("","Spam");
218       }
219       this.ActivateStatusListener(this);
220    }   
221}
222
223
224//Turns on the listener timer to check services availability
225MailArchiver.prototype.ActivateStatusListener = function(obj){
226    if (document.getElementById('mail_archiver_retry'))
227        tem_tag = true;
228    else
229        tem_tag = false;
230    try{
231        if (obj.enabled){
232            obj.interval = 500; //set default timer to 1ms (imediate lauching)
233            //draw_footer_box(get_current_folder());
234            obj.getServicesStatus(obj);
235        }
236        else{
237            throw "this is not enabled: " + obj;
238            window.alert('Nope: obj.enabled is not true...');
239        }
240    }
241    catch (e){
242        window.alert('ActivateStatusListener error: ' + e);
243    }
244}
245
246//Turns off the service status listener, at a crash issue
247MailArchiver.prototype.DeactivateStatusListener = function(obj){
248    window.clearInterval(obj.timer);
249    obj.enabled = null;
250    obj.timer=null;
251    obj.interval = 500;
252    ArchiveServices = null;
253    connector.purgeCache();
254    draw_footer_box(get_current_folder());
255    //auto_refresh();
256    if(document.getElementById('mail_archiver_retry')){
257        document.getElementById('mail_archiver_retry').parentNode.removeChild(document.getElementById('mail_archiver_retry'));
258    }
259    else{
260        //Redraw "Offline" linkage, intended to recoonect MailArchiver link   
261        connector.purgeCache();
262        draw_new_tree_folder();
263        change_folder('INBOX', 'INBOX');
264    }
265}
266
267//ServiceStatus callback OK
268MailArchiver.prototype.getServicesStatusOK = function(serviceData){
269    //window.alert('getServicesStatusOK com servicedata = ' + serviceData.getReturn());
270    expresso_mail_archive.service_count = expresso_mail_archive.counter;
271    if ((serviceData.getReturn().toUpperCase() == "STARTED") || (serviceData.getReturn().toUpperCase() == "RUNNING")){
272        //If there is no timer activated to services check interval, set it up.
273        if(expresso_mail_archive.enabled){
274           if(expresso_mail_archive.timer == null){
275                expresso_mail_archive.interval = 15000;
276                expresso_mail_archive.timer = window.setInterval(expresso_mail_archive.getServicesStatus, expresso_mail_archive.interval);
277                var drawinginfo = {treeObject: tree_folders, treeName: 'tree_folders', folderName: 'local_root'};
278                expresso_mail_archive.currentfolder = 'local_root';
279                expresso_mail_archive.drawdata = drawinginfo;
280                expresso_mail_archive.getFoldersList();
281           }
282        }
283        else{
284            window.clearInterval(expresso_mail_archive.timer);
285            write_msg(get_lang('MailArchiver does not seems to be running or installed at this workstation, local messages are disabled. Check it out!'),false);
286            expresso_mail_archive.enabled = false;
287            expresso_mail_archive.turnOffLocalTreeStructure();
288        }
289    }
290    else{
291        window.clearInterval(expresso_mail_archive.timer);
292        write_msg(get_lang('MailArchiver does not seems to be running or installed at this workstation, local messages are disabled. Check it out!'),false);
293        expresso_mail_archive.enabled = false;
294        expresso_mail_archive.turnOffLocalTreeStructure();
295    }
296    //window.alert('fooArc set to null');
297    fooArc = null;
298}
299
300//Dettach resources handler
301MailArchiver.prototype.DeactivateResources = function(obj){   
302    if(obj.timer)
303        window.clearInterval(obj.timer);
304    write_msg(get_lang('Mail Archiver is not responding. There is some communicating issue hang it up. Some services may not work properly. Check it out!'));
305    obj.DeactivateStatusListener(obj);
306    //draw_new_tree_folder();
307    return;
308}
309
310//Services Status Fail callback
311MailArchiver.prototype.getServicesStatusFailure = function(serviceData){
312    window.alert('getServicesStatusFailure incomming');
313    window.alert('getServicesStatusFailure feature: ' + serviceData);
314}
315
316//Service Status handler
317MailArchiver.prototype.getServicesStatus = function(obj){
318    //window.alert('em getServicesStatus obj.enabled = ' + obj.enabled + '\nArchiveServices.enabled = ' + ArchiveServices.enabled + '\nArchiveServices = ' + ArchiveServices);
319    try{
320        //window.alert('on try 01');
321        expresso_mail_archive.service_count_tryouts++;
322        //window.alert('service_count_tryouts = ' + expresso_mail_archive.service_count_tryouts + '\nservice_count = ' + expresso_mail_archive.service_count);
323       
324        if((expresso_mail_archive.service_count_tryouts - expresso_mail_archive.service_count) > 1){
325            //window.alert('problema -> deve desligar');
326            expresso_mail_archive.DeactivateResources(expresso_mail_archive);           
327        }
328        //else
329            //window.alert('ok');
330       
331        var fooArc = new web_service_mailarchiver_serpro__ArchiveServices();
332        fooArc.url = mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + "/arcserv/ArchiveServices";
333        //window.alert('typeof(fooArc) = ' + typeof(fooArc) + '\nfooArc = ' + fooArc);
334        if(fooArc){
335            try{
336                //window.alert('on try 02');
337                fooArc.getState(expresso_mail_archive.getServicesStatusOK, expresso_mail_archive.getServicesStatusFailure, "true");
338                fooArc = null;
339            }catch (e){
340                throw "Service failure status: getState";
341            }
342        }
343        else {
344            throw "No ArchiveServices object present. Sorry, but leaving now...";
345        }
346    }catch (e){
347        //window.alert('getServiceStatus exception:' + e);
348    }
349    expresso_mail_archive.counter = expresso_mail_archive.counter +1;
350}
351
352/*Restart method: re-initializes all the Mail Archive structure
353 **/
354MailArchiver.prototype.Restart = function(obj){
355    obj.SystemCheck();
356    obj.ActivateStatusListener(obj);
357    //connector.resetProgressBarText();
358    clean_msg();
359    auto_refresh();
360}
361
362/*Startup method: initializes all the Mail Archive structure to work so far as possible
363 *Looks like the old 'gears_init', from Gears
364 **/
365MailArchiver.prototype.Startup = function(){
366    this.SystemCheck(); 
367}
368
369MailArchiver.prototype.serializeToExpresso = function(data){
370    return(connector.serialize(data));
371}
372
373MailArchiver.prototype.unserializeFromExpresso = function(data){
374    return(connector.unserialize(data));
375}
376
377
378MailArchiver.prototype.CreateMessageList = function(msg_list){
379    //window.alert('criando messagelist de arquivamento.');
380   
381//    for(var j=0; j<expresso_mail_archive.messageslisted.length; j++){
382//        window.alert('\nAnswered = ' + expresso_mail_archive.messageslisted[j]["Answered"] + '\nFlagged = ' + expresso_mail_archive.messageslisted[j]["Flagged"] + '\nUnseen = ' + expresso_mail_archive.messageslisted[j]["Unseen"] + '\nDraft = ' + expresso_mail_archive.messageslisted[j]["Draft"]);
383//    }
384   
385    if((msg_list != null) && (msg_list != "") && (msg_list != " ")){
386        if (expresso_mail_archive.message_list.length == 0){
387            //Get all the messages ids by pass at msgs_id to "message_list" object array propertie - if more than one exists
388            if(msg_list.indexOf(',') != -1){
389                var tmp_list = msg_list.split(',');
390                for(var i=0; i < tmp_list.length; i++){
391                    expresso_mail_archive.message_list.push(tmp_list[i]);
392                }
393            }
394           
395            //Push message list to process the only one
396            else {
397                //window.alert('testando marcadores default...\n->Answered = ' +expresso_mail_archive.messageslisted[i]["Answered"] + '\n->Unseen = '+expresso_mail_archive.messageslisted[i]["Unseen"]);
398                expresso_mail_archive.message_list.push(msg_list);
399            }
400        }
401    }
402    //msg_list is corrupted. aborting population
403    else expresso_mail_archive.message_list = new Array();
404}
405
406
407//Archive Operation
408MailArchiver.prototype.Archive = function(source_folder,destination_folder,msgs_id){
409    //window.alert('tentando arquivar a mensagem [' + msgs_id + '], do folder ['+source_folder+'] para a pasta destino ['+destination_folder+']');
410    //modal('archive_queue');
411   
412    try{
413        //Sets the folders properties: destination and origin
414        expresso_mail_archive.folder_origin = source_folder;
415        expresso_mail_archive.CreateMessageList(msgs_id);
416        expresso_mail_archive.isArchiveOperation = true;
417        var tagsHandler = function(data){
418            if(data){
419                var datah = eval(data);
420                //window.alert('unseen = ' +datah["unseen"] + '\nrecent = ' + datah["recent"] + '\nflagged = ' + datah["flagged"] + '\ndraft = ' + datah["draft"] + '\nanswered = ' + datah["answered"] + '\ndeleted = ' + datah["deleted"] + '\nforwarded = ' + datah["forwarded"]);
421                expresso_mail_archive.taglist = datah;
422                //Sets the message counter and busy state
423                if(expresso_mail_archive.isbusy == false){
424                    expresso_mail_archive.total_messages = expresso_mail_archive.message_list.length;
425                    expresso_mail_archive.isbusy =  true;
426                }
427           
428                var fcaption = "";
429               
430                if(destination_folder.substr(0,5) == 'local'){
431                    expresso_mail_archive.folder_destination = destination_folder.replace("local_messages_","");
432                }
433                else{
434                    expresso_mail_archive.folder_destination = destination_folder;
435                }
436               
437                if(!expresso_mail_archive.archivefolder){
438                    expresso_mail_archive.getFolderInfo(expresso_mail_archive.folder_destination);
439                    if(typeof(expresso_mail_archive.folder) != "undefined"){
440                        //window.alert('folder.path -> ' + expresso_mail_archive.folder.path);
441                        expresso_mail_archive.archivefolder = expresso_mail_archive.folder.path;
442                        //window.alert('folder.path2 -> ' + expresso_mail_archive.folder.path);
443                    }
444                    else{
445                     //window.alert('ainda, sem folder.path');   
446                     //window.alert('testando folder.path agora ' + expresso_mail_archive.folder.path);
447                    }
448                }   
449
450                fcaption = expresso_mail_archive.archivefolder;
451                           
452                //Special folders translation
453                if (fcaption && ((fcaption.toLowerCase() == 'inbox') || (fcaption.toLowerCase() == 'outbox') || (fcaption.toLowerCase() == 'sent') || (fcaption.toLowerCase() == 'drafts') || (fcaption.toLowerCase() == 'trash')))
454                    fcaption = get_lang(fcaption);
455           
456           
457                var arch_handler = function(data){
458                    //Store the message source from Ajax request by now (string data)
459                    var js_var = new String(data);
460                    try{
461                        //Archive services needs session id, message source and destination folder
462                                                ArchiveServices.archive(expresso_mail_archive.getArchiveOperationOK, expresso_mail_archive.getArchiveOperationFailure, expresso_mail_archive.session.id, expresso_mail_archive.folder_destination, data);
463                    }
464                    catch(e){
465                        expresso_mail_archive.getFaultInfo();
466                    }
467                }
468               
469                //document.getElementById('main_title').innerHTML = get_lang('Archiving message %1 of %2 on folder %3', expresso_mail_archive.messages_processed, expresso_mail_archive.total_messages, fcaption);
470                //document.getElementById('text_archive_queue').innerHTML = get_lang('Archiving message %1 of %2 on folder %3', expresso_mail_archive.messages_processed+1, expresso_mail_archive.total_messages, fcaption);
471                cExecute("$this.exporteml.js_source_var",arch_handler,"folder="+url_decode(source_folder)+"&msgs_to_export="+expresso_mail_archive.message_list[0]);               
472            }
473            else{
474                //close_lightbox();
475                write_msg(get_lang('Archive operation error: getting online message flags fails. Achievement will not be done'),true);
476                expresso_mail_archive.archivefolder = null;
477            }
478        }
479
480       if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')){
481
482            //Get all tags from current archiving message
483           if(!expresso_mail_archive.folder_origin){
484                var aux1_folder = expresso_mail_archive.message_list[0].split(';')[0];
485                var aux1_msg_number = expresso_mail_archive.message_list[0].split(';')[1];
486            }
487            else{
488                var aux1_folder = expresso_mail_archive.folder_origin;
489                var aux1_msg_number = expresso_mail_archive.message_list[0];
490            }
491            //var pardata = "&folder=" + url_encode(expresso_mail_archive.folder_origin)+ "&msg_number="+ expresso_mail_archive.message_list[0];
492            var pardata = "&folder=" + url_encode(aux1_folder)+ "&msg_number="+ aux1_msg_number;
493            cExecute("$this.imap_functions.get_msg_flags", tagsHandler, pardata);
494        }
495        else throw('Archive operation error: message list stack is empty');
496    }
497    catch(e){
498        //window.alert(get_lang("Archive error: %1", (e.description)?e.description:e));
499                expresso_mail_archive.getFaultInfo();
500    }
501}
502
503//Archive callback OK
504MailArchiver.prototype.getArchiveOperationOK = function(status_message){
505    //message must be tagged
506    var arcid = status_message.getReturn().getId();
507    var tlist = expresso_mail_archive.pattern.tagConfig(expresso_mail_archive.taglist, arcid, 0);
508    if(tlist != null){
509        try{
510            expresso_mail_archive.drawdata = null //removes any draw parameter to archive msgs
511            ArchiveServices.tagMessages(expresso_mail_archive.tagMessagesOperationOK, expresso_mail_archive.tagMessagesOperationFailure, expresso_mail_archive.session.id, tlist);
512        }catch (e){
513            expresso_mail_archive.getFaultInfo();
514        }
515    }
516   
517    //if user preference is setted to move messages, here, whe will call a delete message at mailserver
518    if(preferences.keep_archived_messages == 0){
519        proxy_mensagens.delete_msgs(expresso_mail_archive.folder_origin,expresso_mail_archive.message_list[0],null,false,true);
520    }else{
521        if (Element("check_box_message_" + expresso_mail_archive.message_list[0])) {
522            Element("check_box_message_" + expresso_mail_archive.message_list[0]).checked = false;
523            remove_className(Element(expresso_mail_archive.message_list[0]), 'selected_msg');
524        }
525    }
526
527    //archivement allready done, update controll data and interface
528    expresso_mail_archive.messages_processed++;
529    if(expresso_mail_archive.message_list.length > 1){
530       write_msg(get_lang("Message %1 of %2 successfully archived", expresso_mail_archive.messages_processed, expresso_mail_archive.total_messages));
531       expresso_mail_archive.message_list.shift();
532       expresso_mail_archive.Archive(expresso_mail_archive.folder_origin, expresso_mail_archive.folder_destination, expresso_mail_archive.message_list);
533    }
534    else{
535        write_msg(get_lang("All done. End of archive messages operation"));
536        expresso_mail_archive.resetObject();
537        expresso_mail_archive.archivefolder = null;
538        window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000);       
539        connector.purgeCache();
540        //ttreeBox.name_folder = "local_" + expresso_mail_archive.currentfolder;
541        //ttreeBox.name_folder = "local_inbox";
542        draw_tree_local_folders();
543        //ttreeBox.update_folder(true);   
544        expresso_mail_archive.isArchiveOperation = false;
545    }
546    //close_lightbox();
547}
548//Archive callback Fail
549MailArchiver.prototype.getArchiveOperationFailure = function(error_message){
550    window.alert('Hi! getArchiveOperationFailure comes with ' + error_message.getReturn());
551    window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000);
552}
553
554/**
555 *move Folder
556 *
557 *@author Thiago Rossetto Afonso [thiago@prognus.com.br]
558 *
559 *@param folder_to_move Current folder that will be moved to another folder
560 *@param folder_to Folter that will receive the new folder
561 */
562MailArchiver.prototype.moveFolder = function(folder_to_move, folder_to){
563    try{
564        connector.showProgressBar();
565        ArchiveServices.moveFolder(expresso_mail_archive.moveFolderOK, expresso_mail_archive.moveFolderFailure, expresso_mail_archive.session.id, folder_to_move, folder_to);
566    }catch(e){
567        expresso_mail_archive.getFaultInfo();
568    }
569}
570MailArchiver.prototype.moveFolderOK = function(message){
571    write_msg(get_lang("Your folder was moved!"));
572}
573MailArchiver.prototype.moveFolderFailure = function(error_message){
574    alert("Error: " + error_message.getReturn());
575}
576
577
578
579
580
581
582
583
584
585
586
587
588MailArchiver.prototype.unarchieveToAttach = function (folder, new_folder, msgs_number){
589    try{
590        //write_msg(get_lang("Starting to unarchive messages"));
591        expresso_mail_archive.isArchiveOperation = true;
592        if(currentTab.toString().indexOf("_r") != -1){
593            msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r"));
594        }
595
596        if(!msgs_number)
597            msgs_number = get_selected_messages();       
598               
599        if (parseInt(msgs_number) > 0 || msgs_number.length > 0){       
600           
601            expresso_mail_archive.message_list = new Array();
602            expresso_mail_archive.message_list.push(msgs_number);
603            if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) {
604               
605                expresso_mail_archive.unarchieveToAttachHandler();
606
607                expresso_mail_archive.unarchivecounter = 0;
608                expresso_mail_archive.unarchive_error_counter=0;
609                expresso_mail_archive.getFolderInfo(folder.replace("local_messages_",""));
610                expresso_mail_archive.unarchievefolder = expresso_mail_archive.folder.name;
611                (new_folder != null)?expresso_mail_archive.unarchievenewfolder = new_folder:expresso_mail_archive.unarchievenewfolder='INBOX';
612               
613               
614               
615                if(currentTab.toString().indexOf("_r") != -1){
616                    delete_border(currentTab,'false'); 
617                }
618            }
619            else{
620                write_msg(get_lang('No selected message.'));
621            }
622        }                               
623        else
624            write_msg(get_lang('No selected message.'));
625       
626        clear_selected_messages();
627    }
628    catch (e){
629        write_msg(get_lang('Unarchive error: ' + e));
630    }
631}
632
633/**
634 *
635 *Unarchieve Message Handler
636 *
637 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
638 *
639 **/
640MailArchiver.prototype.unarchieveToAttachHandler = function(){
641
642    try{
643        var email = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/mail/' + expresso_mail_archive.session.id +'/'+ expresso_mail_archive.folder.path + '/'+ expresso_mail_archive.message_list[0] + '.eml';   
644   
645        //Creates a new object to unarchive messages. It's a CXF Add-on CORS component
646        var UnarchiveReqHandler = new cxf_cors_request_object();
647        UnarchiveReqHandler.init();
648
649        //Both XDomainRequest and XMLHttpRequest L2 supports onload event
650        UnarchiveReqHandler.handler.onload = function(){           
651            for (var w=0; w < expresso_mail_archive.allcompletemessagesbyfolder.length; w++){
652                               
653                if(expresso_mail_archive.allcompletemessagesbyfolder[w]["msg_number"] == expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter]){
654                    var timestamp = expresso_mail_archive.allcompletemessagesbyfolder[w]["timestamp"];
655                   
656                    //Get local tagged message data
657                    var flags = new String("");
658                   
659                    //Forwarded is special one: marks as "answered" and "draft"
660                    if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Forwarded"]){
661                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Forwarded"] == 'F')
662                            flags += 'A:X'+':';                                 
663                    }
664                    else{
665                        //Answered tag
666                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Answered"])
667                            if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Answered"] == 'A')
668                                flags += 'A'+':';
669                            else
670                                flags += ':';
671                        else
672                            flags += ':';                   
673
674                        //Draft tag
675                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Draft"])
676                            if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Draft"] == 'X')
677                                flags += 'D'+':';                   
678                            else
679                                flags += ':';
680                        else
681                            flags += ':';
682                    }
683                   
684                    //Flagged tag
685                    if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Flagged"])
686                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Flagged"] == 'F')
687                            flags += 'F'+':';                                       
688                        else
689                            flags += ':';
690                    else
691                        flags += ':';
692                   
693                    //Unseen tag
694                    if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Unseen"])
695                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Unseen"] == 'U')
696                            flags += 'U';     
697                        else
698                            flags += '';
699                    else
700                        flags += '';
701                   
702                    //Imap tag hash id
703                    flags += "#@#@#@";                   
704                   
705                    break;
706                }
707            }
708            var id = expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter];
709            var source =  encodeURIComponent(UnarchiveReqHandler.handler.responseText) + "#@#@#@";
710            var params =
711            "&folder="      + escape(expresso_mail_archive.unarchievenewfolder) +
712            "&source="      + source +
713            "&timestamp="   + timestamp +
714            "&madata=true"  +
715            "&flags="       + flags +
716            "&id="          + id;
717
718            var handler_unarchive = function(data){
719                expresso_mail_archive.unarchieveToAttachController(data);
720
721
722            }
723            write_msg(get_lang('Unarchiving message %1 of %2', (expresso_mail_archive.unarchivecounter + 1), expresso_mail_archive.message_list.length));
724           
725            //cExecute ("$this.imap_functions.unarchive_mail&", handler_unarchive, params);
726
727             $.ajax({
728                url: "controller.php?action=$this.imap_functions.unarchive_mail",
729                data:  params,
730                type: 'POST',
731                async: false,
732                success: function(data){
733                    handler_unarchive(connector.unserialize(data));
734                },
735            });
736
737        }
738       
739        UnarchiveReqHandler.handler.open("GET", email, true);
740        if(UnarchiveReqHandler.handler.overrideMimeType){
741            UnarchiveReqHandler.handler.overrideMimeType("message/rfc822; charset=windows-1252");
742        }
743        UnarchiveReqHandler.handler.send();
744    }
745    catch(e){
746        write_msg(get_lang('Unarchive error: ' + e));
747    }
748}
749
750/**
751 *
752 *Unarchieve Message Controller
753 *
754 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
755 *
756 **/
757MailArchiver.prototype.unarchieveToAttachController = function(data){
758    expresso_mail_archive.unarchivecounter++;
759   
760    if (data){
761        if (data.error != "") {
762            expresso_mail_archive.unarchive_error_counter++;
763        }
764       
765        if (data.archived && preferences.keep_archived_messages == "0") {
766            expresso_mail_archive.deleteMessages(data.archived[0]);
767        }
768       
769    }
770
771    if (expresso_mail_archive.unarchivecounter < expresso_mail_archive.message_list.length){
772        expresso_mail_archive.unarchieveHandler();
773    } else {
774        expresso_mail_archive.message_list = new Array();
775        expresso_mail_archive.isArchiveOperation = false;
776    }
777}
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805/**
806 *Unarchieve Message
807 *
808 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
809 *
810 *@param folder Original Folder of the message
811 *@param new_folder The new folder of the message
812 *@param msgs_number id of the messages
813 */
814MailArchiver.prototype.unarchieve = function (folder, new_folder, msgs_number){
815    try{
816        write_msg(get_lang("Starting to unarchive messages"));
817        expresso_mail_archive.isArchiveOperation = true;
818        if(currentTab.toString().indexOf("_r") != -1){
819            msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r"));
820        }
821
822        if(!msgs_number)
823            msgs_number = get_selected_messages();       
824               
825        if (parseInt(msgs_number) > 0 || msgs_number.length > 0){       
826            expresso_mail_archive.message_list = new Array();
827            expresso_mail_archive.CreateMessageList(msgs_number);
828            if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) {
829                expresso_mail_archive.unarchivecounter = 0;
830                expresso_mail_archive.unarchive_error_counter=0;
831                expresso_mail_archive.getFolderInfo(folder.replace("local_messages_",""));
832                expresso_mail_archive.unarchievefolder = expresso_mail_archive.folder.name;
833                (new_folder != null)?expresso_mail_archive.unarchievenewfolder = new_folder:expresso_mail_archive.unarchievenewfolder='INBOX';
834               
835                expresso_mail_archive.unarchieveHandler();
836               
837                if(currentTab.toString().indexOf("_r") != -1){
838                    delete_border(currentTab,'false'); 
839                }
840            }
841            else{
842                write_msg(get_lang('No selected message.'));
843            }
844        }                               
845        else
846            write_msg(get_lang('No selected message.'));
847       
848        clear_selected_messages();
849    }
850    catch (e){
851        write_msg(get_lang('Unarchive error: ' + e));
852    }
853}
854
855/**
856 *
857 *Unarchieve Message Handler
858 *
859 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
860 *
861 **/
862MailArchiver.prototype.unarchieveHandler = function(){
863    try{
864        var email = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/mail/' + expresso_mail_archive.session.id +'/'+ expresso_mail_archive.folder.path + '/'+ expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter] + '.eml';   
865   
866        //Creates a new object to unarchive messages. It's a CXF Add-on CORS component
867        var UnarchiveReqHandler = new cxf_cors_request_object();
868        UnarchiveReqHandler.init();
869
870        //Both XDomainRequest and XMLHttpRequest L2 supports onload event
871        UnarchiveReqHandler.handler.onload = function(){           
872            for (var w=0; w < expresso_mail_archive.allcompletemessagesbyfolder.length; w++){
873                               
874                if(expresso_mail_archive.allcompletemessagesbyfolder[w]["msg_number"] == expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter]){
875                    var timestamp = expresso_mail_archive.allcompletemessagesbyfolder[w]["timestamp"];
876                   
877                    //Get local tagged message data
878                    var flags = new String("");
879                   
880                    //Forwarded is special one: marks as "answered" and "draft"
881                    if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Forwarded"]){
882                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Forwarded"] == 'F')
883                            flags += 'A:X'+':';                                 
884                    }
885                    else{
886                        //Answered tag
887                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Answered"])
888                            if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Answered"] == 'A')
889                                flags += 'A'+':';
890                            else
891                                flags += ':';
892                        else
893                            flags += ':';                   
894
895                        //Draft tag
896                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Draft"])
897                            if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Draft"] == 'X')
898                                flags += 'D'+':';                   
899                            else
900                                flags += ':';
901                        else
902                            flags += ':';
903                    }
904                   
905                    //Flagged tag
906                    if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Flagged"])
907                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Flagged"] == 'F')
908                            flags += 'F'+':';                                       
909                        else
910                            flags += ':';
911                    else
912                        flags += ':';
913                   
914                    //Unseen tag
915                    if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Unseen"])
916                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Unseen"] == 'U')
917                            flags += 'U';     
918                        else
919                            flags += '';
920                    else
921                        flags += '';
922                   
923                    //Imap tag hash id
924                    flags += "#@#@#@";                   
925                   
926                    break;
927                }
928            }
929            var id = expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter];
930            var source =  encodeURIComponent(UnarchiveReqHandler.handler.responseText) + "#@#@#@";
931            var params =
932            "&folder="      + escape(expresso_mail_archive.unarchievenewfolder) +
933            "&source="      + source +
934            "&timestamp="   + timestamp +
935            "&madata=true"  +
936            "&flags="       + flags +
937            "&id="          + id;
938
939            var handler_unarchive = function(data){
940                expresso_mail_archive.unarchieveController(data);
941            }
942            write_msg(get_lang('Unarchiving message %1 of %2', (expresso_mail_archive.unarchivecounter + 1), expresso_mail_archive.message_list.length));
943           
944            //cExecute ("$this.imap_functions.unarchive_mail&", handler_unarchive, params);
945
946            $.ajax({
947                url: "controller.php?action=$this.imap_functions.unarchive_mail",
948                data:  params,
949                type: 'POST',
950                async: false,
951                success: function(data){
952                    handler_unarchive(connector.unserialize(data));
953                },
954            });
955
956
957
958        }
959       
960        UnarchiveReqHandler.handler.open("GET", email, true);
961        if(UnarchiveReqHandler.handler.overrideMimeType){
962            UnarchiveReqHandler.handler.overrideMimeType("message/rfc822; charset=windows-1252");
963        }
964   
965        UnarchiveReqHandler.handler.send();
966    }
967    catch(e){
968        write_msg(get_lang('Unarchive error: ' + e));
969    }
970}
971
972/**
973 *
974 *Unarchieve Message Controller
975 *
976 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
977 *
978 **/
979MailArchiver.prototype.unarchieveController = function(data){
980    expresso_mail_archive.unarchivecounter++;
981   
982    if (data)
983    {
984        if (data.error != "")
985        {
986            expresso_mail_archive.unarchive_error_counter++;
987        }
988       
989        if (data.archived && preferences.keep_archived_messages == "0")
990        {
991            // apaga
992            expresso_mail_archive.deleteMessages(data.archived[0]);
993        }
994       
995    }
996
997    if (expresso_mail_archive.unarchivecounter < expresso_mail_archive.message_list.length){
998        expresso_mail_archive.unarchieveHandler();
999    }
1000    else
1001    {
1002        if (expresso_mail_archive.unarchive_error_counter == 0)
1003        {   
1004            if (expresso_mail_archive.message_list.length==1){
1005                write_msg(get_lang('Message successfully unarchived'));
1006            }
1007            else{
1008                write_msg(get_lang('Messages successfully unarchived'));
1009            }
1010        }
1011        else
1012        {
1013            if (expresso_mail_archive.message_list.length==1){
1014                write_msg(get_lang("Coudn't unarchive message"));
1015            }
1016            else if (expresso_mail_archive.unarchive_error_counter == expresso_mail_archive.message_list.length)
1017            {
1018                write_msg(get_lang('No messages were unarchived'));
1019            }
1020            else{
1021                write_msg(get_lang("Some messages weren't successfully unarchived"));
1022            }
1023               
1024        }
1025        //clear message list
1026        expresso_mail_archive.message_list = new Array();
1027        expresso_mail_archive.isArchiveOperation = false;
1028    }
1029}
1030
1031/**
1032 *Archieve Delete Message
1033 *
1034 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
1035 *
1036 *@param msgs_number Unique identification of the message
1037 */
1038MailArchiver.prototype.deleteMessages = function(msgs_number){
1039    try{
1040        // This is necessary 'couse we can get a delete operation while an unarchive operation
1041        // is still executing
1042        expresso_mail_archive._temp_list = expresso_mail_archive.message_list;
1043        expresso_mail_archive.message_list = new Array();
1044       
1045        expresso_mail_archive.CreateMessageList(msgs_number);
1046        if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) {
1047            ArchiveServices.deleteMessages(expresso_mail_archive.deleteMessagesOperationOK,
1048                                           expresso_mail_archive.deleteMessagesOperationFailure,
1049                                           expresso_mail_archive.session.id,
1050                                           expresso_mail_archive.message_list);
1051        }
1052        else{
1053            write_msg(get_lang('No selected message.'));
1054        }
1055    }
1056    catch (e){
1057        window.alert('Delete error: ' + e);
1058    }
1059}
1060
1061/**
1062 *Archieve Delete Message Ok
1063 *
1064 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
1065 *
1066 */
1067MailArchiver.prototype.deleteMessagesOperationOK = function(){
1068/*    var drawinginfo = {treeObject: tree_folders, treeName: 'tree_folders'};
1069    expresso_mail_archive.drawdata = drawinginfo;
1070    expresso_mail_archive.drawFolderTree();
1071    expresso_mail_archive.listMessages();
1072    */
1073    connector.purgeCache();
1074    //ttreeBox.update_folder(true);
1075    if(!expresso_mail_archive.isArchiveOperation){
1076        if(expresso_mail_archive.message_list.length > 1){
1077            write_msg(get_lang("The messages were deleted."));
1078        }else{
1079            write_msg(get_lang("The message was deleted."));
1080        }
1081    }
1082    expresso_mail_archive.update_counters = true;
1083    expresso_mail_archive.messageslisted = new Array();
1084    expresso_mail_archive.message_list = new Array();
1085
1086    expresso_mail_archive.currentfolder = folder.replace("local_messages_","");
1087
1088    expresso_mail_archive.listMessages(expresso_mail_archive.currentfolder);
1089
1090    // This is necessary 'couse we can get a delete operation while an unarchive operation
1091    // is still executing
1092    expresso_mail_archive.message_list = expresso_mail_archive._temp_list;
1093    expresso_mail_archive._temp_list = null;
1094}
1095
1096/**
1097 *Archieve Delete Message Operation Failure
1098 *
1099 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
1100 *
1101 */
1102MailArchiver.prototype.deleteMessagesOperationFailure = function(error_message){
1103    if(expresso_mail_archive.message_list.length > 1){
1104        write_msg(get_lang("Error deleting messages.") + ' ' + error_message.getReturn());
1105    }else{
1106        write_msg(get_lang("Error deleting message.") + ' ' + error_message.getReturn());
1107    }
1108   
1109    // This is necessary 'couse we can get a delete operation while an unarchive operation
1110    // is still executing
1111    expresso_mail_archive.message_list = expresso_mail_archive._temp_list;
1112    expresso_mail_archive._temp_list = null;
1113}
1114
1115/**
1116 *Move message
1117 *
1118 *@param folder Folder where the message will be moved
1119 *@param msgs_number Unique Id of the message
1120 *
1121 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
1122 *
1123 */
1124MailArchiver.prototype.moveMessages = function(folder, msgs_number){   
1125    try{
1126        write_msg(get_lang("Starting to move messages"));
1127
1128        expresso_mail_archive.CreateMessageList(msgs_number);
1129        expresso_mail_archive.folder_destination = folder;
1130        //window.alert('invocando o moveMessages com lista = ' + expresso_mail_archive.message_list.length + ' e folder destino =' + folder + '.\nFolder corrente ï¿œ ' + expresso_mail_archive.currentfolder);
1131       
1132        if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) {
1133            expresso_mail_archive.total_messages = expresso_mail_archive.message_list.length;
1134            expresso_mail_archive.moveMessagesHandler();           
1135        }
1136        else{
1137            write_msg(get_lang('No selected message.'));
1138        }
1139    }
1140    catch (e){
1141        expresso_mail_archive.getFaultInfo();
1142    }
1143}
1144
1145MailArchiver.prototype.moveMessagesHandler = function(){
1146    expresso_mail_archive.currentfolder = folder.substr(6, folder.length);
1147
1148    if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) {
1149        write_msg(get_lang('Moving message %1 of %2', expresso_mail_archive.messages_processed, expresso_mail_archive.total_messages));
1150        ArchiveServices.moveMessages(expresso_mail_archive.moveMessagesOperationOK,
1151                                     expresso_mail_archive.moveMessagesOperationFailure,
1152                                     expresso_mail_archive.session.id,
1153                                     expresso_mail_archive.folder_destination,
1154                                     new Array(expresso_mail_archive.message_list[parseInt(expresso_mail_archive.messages_processed)])
1155                                     );
1156    }
1157    else{
1158        window.alert('Moving handler messagelist caught:\n ' + expresso_mail_archive.message_list.length);       
1159    }   
1160}
1161
1162/**
1163 *Move Message Ok
1164 *
1165 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
1166 *
1167 */
1168MailArchiver.prototype.moveMessagesOperationOK = function(){
1169    //archivement allready done, update controll data and interface
1170    expresso_mail_archive.messages_processed++;
1171   
1172    if(parseInt(expresso_mail_archive.messages_processed) < parseInt(expresso_mail_archive.total_messages)){
1173       window.setTimeout(expresso_mail_archive.moveMessagesHandler,1);       
1174    }
1175    else{
1176        write_msg(get_lang("All done. Message(s) moved successfully"));
1177       
1178        //Tag messages moved
1179        for(var i=0; i<expresso_mail_archive.message_list.length; i++){
1180            var tlist = expresso_mail_archive.pattern.tagConfig(expresso_mail_archive.taglist, expresso_mail_archive.message_list[i], 0);
1181            if(tlist != null){
1182                try{
1183                    expresso_mail_archive.drawdata = null;
1184                    ArchiveServices.tagMessages(expresso_mail_archive.tagMessagesOperationOK, expresso_mail_archive.tagMessagesOperationFailure, expresso_mail_archive.session.id, tlist);
1185                }
1186                catch(e){
1187                    expresso_mail_archive.getFaultInfo();
1188                }
1189            }           
1190        }         
1191       
1192        expresso_mail_archive.update_counters = true;
1193        expresso_mail_archive.messageslisted = new Array();
1194        expresso_mail_archive.message_list = new Array(); 
1195
1196        expresso_mail_archive.getFolderInfo(expresso_mail_archive.currentfolder);
1197        expresso_mail_archive.getFolderInfo(expresso_mail_archive.folder_destination);
1198        expresso_mail_archive.listMessages(expresso_mail_archive.currentfolder);
1199             
1200        expresso_mail_archive.resetObject();
1201    }
1202}
1203
1204/**
1205 *Move Message Failure
1206 *
1207 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
1208 *
1209 */
1210MailArchiver.prototype.moveMessagesOperationFailure = function(error_message){
1211    if(expresso_mail_archive.message_list.length > 1){
1212        write_msg(get_lang("Error moving messages.") + ' ' + error_message.getReturn());
1213    }else{
1214        write_msg(get_lang("Error moving message.") + ' ' + error_message.getReturn());
1215    }
1216}
1217
1218
1219//getFolderList Operation
1220MailArchiver.prototype.getFoldersList = function(basefolder){   
1221    try{
1222        connector.showProgressBar();
1223        //window.alert('no expresso_mail_archive.getFoldersList com basefolder = ' + basefolder);
1224        if(basefolder == 'local_root')
1225            basefolder = "";
1226        //window.alert('folderlist com basefolder = ' + basefolder);
1227        //ArchiveServices.listFolders(expresso_mail_archive.getFoldersListOperationOK, expresso_mail_archive.getFoldersListOperationFailure, sessid, basefolder);
1228        ArchiveServices.listFolders(expresso_mail_archive.getFoldersListOperationOK, expresso_mail_archive.getFoldersListOperationFailure, expresso_mail_archive.session.id, basefolder);
1229       
1230    }
1231    catch (e){
1232        expresso_mail_archive.getFaultInfo();
1233    }
1234}
1235
1236//getFolderList callback OK
1237MailArchiver.prototype.getFoldersListOperationOK = function(folderlist){
1238    //Internal variable used to map all XML data return from WS invokated
1239    var lfolders = new Array();
1240
1241   
1242    //Mapping XML data to a handler data structure
1243    if(folderlist.getReturn().length > 0){
1244        var lfolders = new Array();
1245        for(i=0; i<folderlist.getReturn().length; i++){
1246            (folderlist.getReturn()[i].getFolderCount() > 0 ) ? folderChild = 1 : folderChild = 0;
1247
1248            //Store folder data at this format: {folder name, number of messages contained, folder has child nodes, folder id, folder parent id, folder full path}
1249            //var folderData = new Array(folderlist.getReturn()[i].getName(), folderlist.getReturn()[i].getMessageCount(), folderChild, folderlist.getReturn()[i].getId(), folderlist.getReturn()[i].getParentId(), folderlist.getReturn()[i].getPath());
1250            var folderData = {name: folderlist.getReturn()[i].getName(), messages: folderlist.getReturn()[i].getMessageCount(), haschild: folderChild, id: folderlist.getReturn()[i].getId(), parentid: folderlist.getReturn()[i].getParentId(), path: folderlist.getReturn()[i].getPath(), unseen: folderlist.getReturn()[i].getUnseenCount()};
1251            //window.alert('folder ' + folderData.name + ' tem ' + folderData.messages + ' mensagens, sendo ' + folderData.unseen + ' nï¿œo lidas');
1252            lfolders.push(folderData);
1253        }
1254
1255        //Sets folders property at main object
1256        expresso_mail_archive.folders = lfolders;
1257       
1258        //Sets current folder, only if no one is setted
1259        //if(expresso_mail_archive.currentfolder == null){
1260            if(expresso_mail_archive.folders[0]["parentid"] == "home"){ // change from "" to "home"(12/12/2011)
1261                expresso_mail_archive.currentfolder = 'local_root';
1262            }
1263            else
1264                expresso_mail_archive.currentfolder = expresso_mail_archive.folders[0]["parentid"];
1265        //}
1266       
1267       
1268        //Folders dumping :)
1269        /*var strFolders = '---';
1270        for (var w=0; w < expresso_mail_archive.folders.length; w++){
1271            strFolders += '\nFolder ' + w + ' -->';
1272            for (x in expresso_mail_archive.folders[w]){
1273                strFolders += '\n----------' + x + ':= ' + expresso_mail_archive.folders[w][x];
1274            }
1275            strFolders += '\n<---';
1276        }
1277        strFolders += '\n---';
1278        alert(lfolders.length + ' folders mapeados, com default = ' + expresso_mail_archive.currentfolder + '\nfolders list:\n\n' + strFolders);
1279        */
1280        //window.alert('foldersListOperationOK com drawdata:\n' + expresso_mail_archive.drawdata);
1281        //If something UI related have been flagged, handle it
1282        if (expresso_mail_archive.drawdata){
1283            //window.alert('com drawdata e treeName = ' + expresso_mail_archive.drawdata.treeName);
1284            expresso_mail_archive.drawFolderTree();
1285        }
1286    } else {
1287        expresso_mail_archive.folders = 0;
1288    }
1289    connector.hideProgressBar();
1290}
1291
1292//getFolderList callback Fail
1293MailArchiver.prototype.getFoldersListOperationFailure = function(error, http_msg){
1294    window.alert('List folders mistake:' + error + '\nhttp_error = ' + http_msg);
1295    connector.hideProgressBar();
1296}
1297
1298//drawFolderTree operation, if requested to
1299MailArchiver.prototype.drawFolderTree = function(){ 
1300    var localBaseName  = 'local_';
1301    var objectTree = expresso_mail_archive.drawdata.treeObject;
1302    var evalobjectTree = (typeof(expresso_mail_archive.drawdata.treeObject) == 'object') ? expresso_mail_archive.drawdata.treeObject: eval( '(' + expresso_mail_archive.drawdata.treeName + ')');
1303       
1304    if((expresso_mail_archive.drawdata.treeName == 'search_folders') && (Element('dftree_search_folders')))
1305        evalobjectTree = folders_tree;
1306    else{
1307        if((expresso_mail_archive.drawdata.treeName == 'folders_tree') && (Element('dftree_folders_tree')))
1308            evalobjectTree = folders_tree;
1309    }
1310       
1311    //Add nodes to tree   
1312    if(typeof(evalobjectTree) == 'object'){
1313        //window.alert('caiu pra dentro, com ' + expresso_mail_archive.folders.length + ' folders.');
1314        evalobjectTree._drawn = true;
1315        if(expresso_mail_archive.folders.length > 0){
1316            for(i=0; i<expresso_mail_archive.folders.length; i++){
1317                var folder_caption;
1318                //window.alert('iterando nodo ' + expresso_mail_archive.folders[i]["name"]);
1319           
1320                //Special folders treatment: Inbox, Outbox, Drafts, Sent and Trash folders               
1321                if((expresso_mail_archive.folders[i]["name"] == 'Inbox') || (expresso_mail_archive.folders[i]["name"] == 'Outbox') || (expresso_mail_archive.folders[i]["name"] == 'Drafts') || (expresso_mail_archive.folders[i]["name"] == 'Sent') || (expresso_mail_archive.folders[i]["name"] == 'Trash')){
1322                    folder_caption = get_lang(expresso_mail_archive.folders[i]["name"]);
1323                }
1324                else{
1325                    folder_caption = expresso_mail_archive.folders[i]["name"];
1326                }
1327               
1328                var onClickVar = '';                               
1329                if((evalobjectTree.name != "folders_tree") && (evalobjectTree.name != "search_folders")){
1330                    onClickVar =  "change_folder('"+ localBaseName + expresso_mail_archive.folders[i]["id"] +"','"+ localBaseName + expresso_mail_archive.folders[i]["id"]+"', '" + expresso_mail_archive.drawdata.treeName + "')";
1331                    if(expresso_mail_archive.folders[i]["unseen"] != "0")
1332                        folder_caption = folder_caption + '<font style=color:red>&nbsp(</font><span id="dftree_local_'+expresso_mail_archive.folders[i]["id"]+'_unseen" style=color:red>'+expresso_mail_archive.folders[i]["unseen"]+'</span><font style=color:red>)</font>'
1333                }
1334     
1335                var n_demo = new dNode({id: localBaseName + expresso_mail_archive.folders[i]["id"], caption: folder_caption, onClick: onClickVar, plusSign:expresso_mail_archive.folders[i]["haschild"]});
1336                //var n_demo = new dNode({id: localBaseName + expresso_mail_archive.folders[i]["name"], caption: folder_caption, onClick: "change_folder('"+ localBaseName + expresso_mail_archive.folders[i]["name"] +"','"+ localBaseName + expresso_mail_archive.folders[i]["name"]+"', '" + expresso_mail_archive.drawdata.treeName + "')", plusSign:expresso_mail_archive.folders[i]["haschild"]});
1337           
1338                //Adjust the id node names
1339                if(expresso_mail_archive.currentfolder){
1340                    if(expresso_mail_archive.currentfolder.substr(0,5) != 'local'){
1341                        evalobjectTree.add(n_demo, localBaseName + expresso_mail_archive.currentfolder);
1342                    }
1343                    else{
1344                        evalobjectTree.add(n_demo,expresso_mail_archive.currentfolder);
1345                    }
1346                }
1347                else {
1348                    expresso_mail_archive.currentfolder = 'local_root';
1349                    evalobjectTree.add(n_demo,expresso_mail_archive.currentfolder);
1350                }           
1351            }
1352        }
1353        //Set special folders icons   
1354        if (document.getElementById('llocal_senttree_folders')){
1355            document.getElementById('llocal_senttree_folders').style.backgroundImage="url(../phpgwapi/templates/"+template+"/images/foldertree_sent.png)";
1356        }
1357        if (document.getElementById('llocal_trashtree_folders')){
1358            document.getElementById('llocal_trashtree_folders').style.backgroundImage="url(../phpgwapi/templates/"+template+"/images/foldertree_trash.png)";
1359        }
1360        if (document.getElementById('llocal_draftstree_folders')){
1361            document.getElementById('llocal_draftstree_folders').style.backgroundImage="url(../phpgwapi/templates/"+template+"/images/foldertree_draft.png)";
1362        }
1363        if (document.getElementById('llocal_outboxtree_folders')){
1364            document.getElementById('llocal_outboxtree_folders').style.backgroundImage="url(../phpgwapi/templates/"+template+"/images/foldertree_sent.png)";
1365        }         
1366    }
1367    else {
1368        //does nothing
1369    }
1370}
1371
1372//getFaultInfo operation
1373MailArchiver.prototype.getFaultInfo = function(){
1374    try{
1375        //ArchiveServices.getFaultInfo(expresso_mail_archive.getFaultInfoOperationOK, expresso_mail_archive.getFaultInfoOperationFailure, sessid);
1376         ArchiveServices.getFaultInfo(expresso_mail_archive.getFaultInfoOperationOK, expresso_mail_archive.getFaultInfoOperationFailure, expresso_mail_archive.session.id);
1377         connector.hideProgressBar();
1378    }   
1379    catch(e){
1380        if (!expresso_mail_archive.enabled)
1381            write_msg(get_lang('MailArchiver does not seems to be running or installed at this workstation, local messages are disabled. Check it out!'),false);
1382        else{
1383            window.clearInterval(expresso_mail_archive.timer);
1384            write_msg(get_lang('There is something wrong with MailArchiver environment. Contact you support'), false);
1385            expresso_mail_archive.enabled = false;
1386            expresso_mail_archive.turnOffLocalTreeStructure();
1387        }
1388        connector.hideProgressBar();
1389    }
1390}
1391
1392//getFaultInfo callback OK
1393MailArchiver.prototype.getFaultInfoOperationOK = function(faultinfo){
1394    try{
1395        write_msg(get_lang('MailArchiver remote service reports the following error:', false) + faultinfo.getReturn().getSoapFaultString());
1396    } catch(e){
1397        write_msg(get_lang('The archive service reports a unknown error. Try to refresh your browser screen', false));
1398    }
1399    expresso_mail_archive.resetObject();
1400    expresso_mail_archive.archivefolder = null;
1401    window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000);       
1402    connector.purgeCache();
1403    expresso_mail_archive.turnOffLocalTreeStructure();
1404}
1405
1406//getFaultInfo callback Fail
1407MailArchiver.prototype.getFaultInfoOperationFailure = function(errorCode, errorDesc){
1408    try{
1409        write_msg(get_lang('SoapFault capture fails at:' + errorCode + ' | ' + errorDesc, false));
1410    } catch(e){
1411        write_msg(get_lang('Service error mapping', false));
1412    }   
1413}
1414
1415//createFolder operation
1416MailArchiver.prototype.createFolder = function(parentFolder, folderName){
1417    if(typeof(folderName) == "undefined"){
1418        return false;
1419    }
1420   
1421    try{
1422        //ArchiveServices.createFolder(expresso_mail_archive.createFolderOperationOK, expresso_mail_archive.createFolderOperationFailure, sessid, parentFolder, folderName);
1423        ArchiveServices.createFolder(expresso_mail_archive.createFolderOperationOK, expresso_mail_archive.createFolderOperationFailure, expresso_mail_archive.session.id, parentFolder, folderName);
1424    }
1425    catch (e){
1426        expresso_mail_archive.getFaultInfo();
1427    }
1428   
1429}
1430
1431//createFolder callback OK
1432MailArchiver.prototype.createFolderOperationOK = function (folderObject){
1433    //window.alert('callback de createfolderoperationok');
1434    draw_tree_local_folders();
1435    //expresso_mail_archive.drawdata.treeObject._drawn = true;
1436    //ttreeBox.update_folder();   
1437}
1438
1439//createFolder callback Fail
1440MailArchiver.prototype.createFolderOperationFailure = function (message){
1441    window.alert('Folder creation fails...\n->' + message.getReturn());
1442}
1443
1444//deleteFolder operation
1445MailArchiver.prototype.deleteFolder = function(folderId, folderName){
1446    try{expresso_mail_archive.drawdata.folderName = folderName;
1447        ArchiveServices.deleteFolder(expresso_mail_archive.deleteFolderOperationOK, expresso_mail_archive.deleteFolderOperationFailure, expresso_mail_archive.session.id, folderId, true);
1448    }
1449    catch (e){
1450        expresso_mail_archive.getFaultInfo();
1451    }
1452   
1453}
1454
1455//deleteFolder callback OK
1456MailArchiver.prototype.deleteFolderOperationOK = function (folderObject){
1457    write_msg(get_lang("The local folder %1 was successfully removed", expresso_mail_archive.drawdata.folderName));
1458    connector.purgeCache();
1459    //ttreeBox.name_folder = "root";
1460    //ttreeBox.update_folder();
1461    draw_tree_local_folders();
1462    //ttreeBox.update_folder();
1463}
1464
1465//deleteFolder callback Fail
1466MailArchiver.prototype.deleteFolderOperationFailure = function (message){
1467    expresso_mail_archive.getFaultInfo();
1468}
1469
1470//renameFolder operation
1471MailArchiver.prototype.renameFolder = function(folderId, newFolderName){
1472    try{
1473        //ArchiveServices.renameFolder(expresso_mail_archive.renameFolderOperationOK, expresso_mail_archive.renameFolderOperationFailure, sessid, folderId, newFolderName);
1474        ArchiveServices.renameFolder(expresso_mail_archive.renameFolderOperationOK, expresso_mail_archive.renameFolderOperationFailure, expresso_mail_archive.session.id, folderId, newFolderName);
1475    }
1476    catch (e){
1477        expresso_mail_archive.getFaultInfo();
1478    }
1479   
1480}
1481
1482//renameFolder callback OK
1483MailArchiver.prototype.renameFolderOperationOK = function (returnService){
1484    var evalobjectTree = eval(expresso_mail_archive.drawdata.treeName);
1485    evalobjectTree.update_folder();
1486}
1487
1488//renameFolder callback Fail
1489MailArchiver.prototype.renameFolderOperationFailure = function (ServiceFault){
1490    expresso_mail_archive.getFaultInfo();
1491}
1492
1493//getFolderInfo operation
1494MailArchiver.prototype.getFolderInfo = function (folderId){
1495    try{
1496        if(folderId == 'local_root')
1497            folderId = "";
1498        ArchiveServices.getFolderInfo(expresso_mail_archive.getFolderInfoOperationOK, expresso_mail_archive.getFolderInfoOperationFailure, expresso_mail_archive.session.id, folderId);
1499    }
1500    catch (e){
1501        expresso_mail_archive.getFaultInfo();
1502    }     
1503}
1504
1505//getFolderInfo callback OK
1506MailArchiver.prototype.getFolderInfoOperationOK = function(returnService){
1507   var folder_info = {id : returnService.getReturn().getId(), name : returnService.getReturn().getName(), parent : returnService.getReturn().getParentId(), numfolders: returnService.getReturn().getFolderCount(), nummessages: returnService.getReturn().getMessageCount(), unseen: returnService.getReturn().getUnseenCount(), path: returnService.getReturn().getPath()};
1508   expresso_mail_archive.folder = folder_info;
1509   expresso_mail_archive.updateCounter();
1510}
1511
1512//getFolderInfo callback Fail
1513MailArchiver.prototype.getFolderInfoOperationFailure = function (ServiceFault){
1514    window.alert('getFolderInfo service fails...\n->' + ServiceFault.getReturn());
1515    expresso_mail_archive.folder_data = true;
1516}
1517
1518function foo(){
1519    var a = 0;
1520    a++;
1521}
1522
1523
1524/**
1525 *delete All Messages
1526 *
1527 *@author Thiago Rossetto Afonso [thiago@prognus.com.br]
1528 *
1529 *@param folderId - folder id to get all messages that it has
1530 */
1531
1532MailArchiver.prototype.deleteAllMessages = function(folderId){
1533    try{
1534        var objfolder = new Object();
1535        objfolder.folder = folderId;
1536
1537        var query_data = expresso_mail_archive.queryconfig.query(objfolder);
1538
1539        ArchiveServices.listMessages(expresso_mail_archive.deleteMsgsOperationOK, expresso_mail_archive.deleteMsgsOperationFailure, expresso_mail_archive.session.id, query_data);
1540    }catch(e){
1541        expresso_mail_archive.getFaultInfo();
1542    }
1543}
1544MailArchiver.prototype.deleteMsgsOperationOK = function(returnService){
1545    var msgsArray = new Array();
1546    var msgs = "";
1547    for(var i=0; i< returnService.getReturn().length; i++){
1548        msgsArray.push(returnService.getReturn()[i]._id);   
1549    } 
1550    msgs = msgsArray.join(",");
1551
1552    MailArchiver.prototype.deleteMessages(msgs);
1553}
1554MailArchiver.prototype.deleteMsgsOperationFailure = function(){
1555    alert("Your Messages weren't deleted.");
1556}
1557
1558//listMessages operation
1559//OLD local_messages.prototype.get_local_range_msgs = function(folder,msg_range_begin,emails_per_page,sort,sort_reverse,search,preview_msg_subject,preview_msg_tip) {
1560//ONLINE messages_proxy.prototype.messages_list = function(folder,msg_range_begin,emails_per_page,sort_box_type,search_box_type,sort_box_reverse,preview_msg_subject,preview_msg_tip,call_back,tree_name) {
1561//sys call = proxy_mensagens.messages_list(current_folder,1,preferences.max_email_per_page,sort,search,sort_box_reverse,preferences.preview_msg_subject,preferences.preview_msg_tip,handler_draw_box);
1562MailArchiver.prototype.listMessages = function(folderId){
1563    try{
1564        connector.showProgressBar();
1565        var getcurrent = get_current_folder();       
1566        //tree_folders.getNodeById(get_current_folder())._select();
1567        var folderid;
1568        if(typeof(folderId) != "undefined"){
1569            folderid = folderId;
1570        } else {
1571            folderid = this.currentfolder;   
1572        }
1573        var objfolder = new Object();
1574        objfolder.folder = folderid;
1575        //var testing_data_xml = '<?xml version="1.0" encoding="UTF-8"?><query lowerIndex="0" upperIndex="50"><folder id="'+folderid+'"/><order asc="date"/><order desc="subject"/></query>';
1576        //var testing_data_json_mapped = '{"query":{"@lowerIndex":"0", "@upperIndex":"50", "folder":[{"@id":"'+folderid+'"}], "order":[{"@asc":"date", "@desc":"subject"}]}}';
1577        var query_data = expresso_mail_archive.queryconfig.query(objfolder);
1578        expresso_mail_archive.getFolderInfo(folderid);
1579        expresso_mail_archive.currentfolder = folderid;
1580       
1581
1582        //ArchiveServices.listMessages(expresso_mail_archive.listMessagesOperationOK, expresso_mail_archive.listMessagesOperationFailure, sessid, query_data);
1583        ArchiveServices.listMessages(expresso_mail_archive.listMessagesOperationOK, expresso_mail_archive.listMessagesOperationFailure, expresso_mail_archive.session.id, query_data);
1584    }
1585    catch (e){
1586        expresso_mail_archive.getFaultInfo();
1587    }
1588}
1589
1590//listMessages callback OK
1591MailArchiver.prototype.listMessagesOperationOK = function(returnService){
1592    var msglist = new Array();
1593    expresso_mail_archive.ServiceReturnObjectList = new Array();
1594    //window.alert('messages data\n\n' + print_r(returnService.getReturn().length));
1595    /*window.alert('Dados da mensagem:\n->From ' + returnService.getReturn()[0].getFrom()
1596                                      +'\n->To ' + returnService.getReturn()[0].getTo()
1597                                      +'\n->Subject ' + returnService.getReturn()[0].getSubject()
1598                                      +'\n->Date ' + returnService.getReturn()[0].getDate()
1599                                      +'\n->Date ' + returnService.getReturn()[0].getSize()
1600                                      +'\n->ID ' + returnService.getReturn()[0].getId());
1601    */
1602    for(var i=0; i< returnService.getReturn().length; i++){
1603        var ExpSerialized = expresso_mail_archive.pattern.toExpressoHeader(returnService.getReturn()[i]);
1604        var msgitem = connector.unserialize(ExpSerialized);
1605       
1606        // correção para por no padrao certo, se nao fizer isso buga a listagem
1607        msgitem.msg_sample = { "body": msgitem.msg_sample };
1608
1609        msglist.push(msgitem);//usando connector.unserialize sobre o header mapeado no layout abaixo
1610        expresso_mail_archive.ServiceReturnObjectList.push(returnService.getReturn()[i]); //add each one service return data into this embeded object array
1611    }
1612    //msglist["num_msgs"] = returnService.getReturn().length;
1613    //window.alert('service return length = ' + returnService.getReturn().length + '\nfolder.nummessages = ' + expresso_mail_archive.folder.nummessages);
1614   
1615    //window.alert('folder counters:\n' + print_r(tab_counters));
1616
1617    //msglist["num_msgs"] = expresso_mail_archive.folder.nummessages;
1618    //window.alert('num msgs');
1619    //(expresso_mail_archive.folder.unseen) ? msglist["tot_unseen"] = expresso_mail_archive.folder.unseen : msglist["tot_unseen"] = 0;
1620//    window.alert('num unseen');
1621    //window.alert('print_r\n\n' + print_r(msglist));
1622   
1623    //expresso_mail_archive.updateCounter(returnService.getReturn().length, msg_unseen_count);   
1624    expresso_mail_archive.messageslisted = msglist;
1625    expresso_mail_archive.drawdata = {messagesList:msglist};
1626    expresso_mail_archive.drawMessagesList();
1627    //expresso_mail_archive.drawMessagesList(returnService.getReturn().length, msg_unseen_count);
1628    //expresso_mail_archive.drawMessagesList(msglist["num_msgs"], msg_unseen_count);
1629    //expresso_mail_archive.drawMessagesList(expresso_mail_archive.tot_msgs_tab, expresso_mail_archive.tot_unseen_msgs_tab);
1630    connector.hideProgressBar();
1631}
1632
1633//listMessages callback Fail
1634MailArchiver.prototype.listMessagesOperationFailure = function(ServiceFault){
1635    window.alert('listmessages FALHOU!\n' + ServiceFault.getReturn());
1636}
1637
1638
1639MailArchiver.prototype.getMessagesByFolder = function(folderid, searchType){
1640    try{
1641        if(searchType == "ALL")
1642            var query_messages = '{"query":{"folder":[{"@id":"'+folderid+'"}], "order":[{"@asc":"date"}]}}';
1643        else
1644            var query_messages = '{"query":{"folder":[{"@id":"'+folderid+'"}], "tags":[{"@contains":"'+searchType+'"}], "order":[{"@asc":"date"}]}}';
1645        ArchiveServices.listMessages(expresso_mail_archive.getMessagesByFolderOperationOK, expresso_mail_archive.getMessagesByFolderOperationFailure, expresso_mail_archive.session.id, query_messages);
1646    }
1647    catch (e){
1648        expresso_mail_archive.getFaultInfo();
1649    }
1650}
1651
1652MailArchiver.prototype.getMessagesByFolderOperationOK = function(returnService){
1653    var msglist = new Array();
1654    var msglistcomplete = new Array();
1655    var msgAll = new Array();
1656    for(var i=0; i< returnService.getReturn().length; i++){
1657        //Array montado apenas com ids para tratamento de seleção de mensagens independente de paginação
1658        msglist.push(returnService.getReturn()[i]._id);
1659
1660        msgAll.push(returnService.getReturn()[i]);
1661
1662        //Incremento de contadores para atualização da aba de listagem
1663        if(returnService.getReturn()[i]._tags.indexOf("unseen") != -1){
1664            expresso_mail_archive.tot_unseen_msgs_tab++;
1665        }
1666        expresso_mail_archive.tot_msgs_tab++;
1667        //Array montado para operação de desarquivamento
1668        var ExpSerialized = expresso_mail_archive.pattern.toExpressoHeader(returnService.getReturn()[i]);
1669        msglistcomplete.push(connector.unserialize(ExpSerialized));
1670    }
1671    expresso_mail_archive.allmessagesbyfolder = msglist;
1672    expresso_mail_archive.allcompletemessagesbyfolder = msglistcomplete;
1673    expresso_mail_archive.msgAll = msgAll;
1674}
1675
1676MailArchiver.prototype.getMessagesByFolderOperationFailure = function(ServiceFault){
1677    window.alert('listAllmessagesByFolder FALHOU!\n' + ServiceFault.getReturn());
1678}
1679
1680
1681//List all messages by folder given and set a array with all messages ids
1682MailArchiver.prototype.listAllMessagesByFolder = function(folderid, searchType){
1683    try{
1684        if(searchType == "ALL")
1685            var query_messages = '{"query":{"folder":[{"@id":"'+folderid+'"}], "order":[{"@asc":"date"}]}}';
1686        else
1687            var query_messages = '{"query":{"folder":[{"@id":"'+folderid+'"}], "tags":[{"@contains":"'+searchType+'"}], "order":[{"@asc":"date"}]}}';
1688        ArchiveServices.listMessages(expresso_mail_archive.listAllMessagesByFolderOperationOK, expresso_mail_archive.listAllMessagesByFolderOperationFailure, expresso_mail_archive.session.id, query_messages);
1689    }
1690    catch (e){
1691        expresso_mail_archive.getFaultInfo();
1692    }
1693}
1694
1695//listAllMessagesByFolder callback OK
1696MailArchiver.prototype.listAllMessagesByFolderOperationOK = function(returnService){
1697    var msglist = new Array();
1698    var msglistcomplete = new Array();
1699    for(var i=0; i< returnService.getReturn().length; i++){
1700        //Array montado apenas com ids para tratamento de seleção de mensagens independente de paginação
1701        msglist.push(returnService.getReturn()[i]._id);
1702        //Incremento de contadores para atualização da aba de listagem
1703        if(returnService.getReturn()[i]._tags.indexOf("unseen") != -1){
1704            expresso_mail_archive.tot_unseen_msgs_tab++;
1705        }
1706        expresso_mail_archive.tot_msgs_tab++;
1707        //Array montado para operação de desarquivamento
1708        var ExpSerialized = expresso_mail_archive.pattern.toExpressoHeader(returnService.getReturn()[i]);
1709        msglistcomplete.push(connector.unserialize(ExpSerialized));
1710    }
1711    expresso_mail_archive.allmessagesbyfolder = msglist;
1712    expresso_mail_archive.allcompletemessagesbyfolder = msglistcomplete;
1713}
1714
1715//listAllMessagesByFolder callback Fail
1716MailArchiver.prototype.listAllMessagesByFolderOperationFailure = function(ServiceFault){
1717    window.alert('listAllmessagesByFolder FALHOU!\n' + ServiceFault.getReturn());
1718}
1719
1720MailArchiver.prototype.getFolderMessagesNumber = function(){
1721    var n = 0;
1722    for(var i=0; i < expresso_mail_archive.folders.length; i++){
1723        if(expresso_mail_archive.folders[i]["id"] == expresso_mail_archive.currentfolder){
1724            n = expresso_mail_archive.folders[i]["messages"];
1725        }
1726    }
1727    return(n);
1728}
1729
1730MailArchiver.prototype.drawMessagesList = function(){
1731    //window.alert('no drawMessagesList com folder = ' + expresso_mail_archive.currentfolder  + '\nudatecounters = ' + expresso_mail_archive.udatecounters);
1732    var data_to_draw = expresso_mail_archive.drawdata.messagesList; 
1733    //window.alert('data to draw =  ' + data_to_draw.length + '\ndata_to_draw[0].from.full = ' + print_r(data_to_draw));
1734    //window.alert('Current folder = ' + expresso_mail_archive.currentfolder + ' com ' + expresso_mail_archive.folders.length + ' folders.');
1735    var fcaption = expresso_mail_archive.currentfolder;
1736   
1737    /*for (var w=0; w < expresso_mail_archive.folders.length; w++){
1738        //window.alert('comparando folder "' + expresso_mail_archive.folders[w]["id"] + '" com o corrente "' + expresso_mail_archive.currentfolder + '"\nEnquanto que o folder.name obtido do getfolderinfo é "' + expresso_mail_archive.folder.name + '"');
1739        if(expresso_mail_archive.folders[w]["id"] == expresso_mail_archive.currentfolder){
1740            fcaption = expresso_mail_archive.folders[w]["name"];
1741            window.alert('folder found!\n -> ' + fcaption);
1742            break;
1743        }
1744    }*/
1745   
1746    var fcaption = expresso_mail_archive.folder.name;
1747   
1748    /*window.alert('fcaption = ' + fcaption);
1749    var udate_tree_folder = expresso_mail_archive.drawdata.treefolder;
1750    window.alert('atualizar contador da ï¿œrvore : ' + udate_tree_folder);
1751    var udate_tab_folder = expresso_mail_archive.drawdata.tabfolder;
1752    window.alert('atualizar contador da tab : ' + udate_tab_folder);*/
1753    //var folder_num_msgs = expresso_mail_archive.getFolderMessagesNumber();
1754    var folder_num_msgs = expresso_mail_archive.folder.nummessages;
1755    //window.alert('num = ' + folder_num_msgs);
1756
1757    Element("border_id_0").innerHTML = "&nbsp;" + lang_folder(fcaption) + '&nbsp;<font face="Verdana" size="1" color="#505050">[<span id="new_m">&nbsp;</span> / <span id="tot_m"></span>]</font>';
1758    draw_box(data_to_draw, 'local_' + expresso_mail_archive.currentfolder, true);
1759    //draw_paging(expresso_mail_archive.drawdata.messagesList.length);
1760    //draw_paging(preferences.max_email_per_page);
1761    draw_paging(expresso_mail_archive.tot_msgs_tab);   
1762    Element("tot_m").innerHTML = expresso_mail_archive.tot_msgs_tab; //folder_num_msgs;
1763    Element('new_m').innerHTML = '<font color="RED">'+expresso_mail_archive.tot_unseen_msgs_tab+'</font>';
1764}
1765
1766MailArchiver.prototype.getMessageHeaders = function(msgId){
1767    var msgfound = false;
1768    var headerMsg;
1769       
1770    //Get message header info, from message list operation previously invoked
1771    for (var w=0; w < expresso_mail_archive.messageslisted.length; w++){
1772        if(expresso_mail_archive.messageslisted[w]["msg_number"] == msgId){
1773            headerMsg = expresso_mail_archive.messageslisted[w];
1774            msgfound = true;
1775            break;
1776        }
1777    }
1778   
1779    //Message does not exists at default message list previouslly invoked. Then, will be tryed to get it at possible search criteria existing tab.
1780    if(!msgfound){
1781        //Try to discover if desired message is at a search local data tab
1782        if(currentTab.toString().indexOf("search_local") != -1){
1783            var msgId2 = msgId.substr(0,msgId.indexOf("_s"));           
1784            for (var w=0; w < expresso_mail_archive.search_message_list.length; w++){
1785                if(expresso_mail_archive.search_message_list[w]["msg_number"] == msgId2){
1786                    headerMsg = expresso_mail_archive.search_message_list[w];
1787                    msgfound = true;
1788                    break;
1789                }
1790            }
1791       
1792        }
1793    }
1794   
1795    //The message was found, as well the her headers
1796    if(msgfound){
1797        expresso_mail_archive.currentheaders = headerMsg;
1798        expresso_mail_archive.subjectPreview = headerMsg.subject;
1799        return(headerMsg);
1800    }
1801    //The message was not found   
1802    else{
1803        headerMsg = null;
1804        expresso_mail_archive.currentheaders = headerMsg;       
1805        return;
1806    }
1807}
1808
1809MailArchiver.prototype.getMessageBodies = function(msgdata){
1810    try{
1811        var temp;
1812        var bodies = Array();
1813        var callback = function(data){
1814            temp = data;
1815        };
1816        for(var i=0; i<msgdata.length; i++){
1817            expresso_mail_archive.currentmessage = expresso_mail_archive.getMessageHeaders(msgdata[i])["msg_number"];
1818            ArchiveServices.getMessageBody(callback, expresso_mail_archive.getMessageOperationFailure,expresso_mail_archive.session.id, expresso_mail_archive.currentmessage);
1819            bodies.push(temp);
1820        }
1821        expresso_mail_archive.bodyPreview = temp.getReturn();
1822        return bodies;
1823    }
1824    catch(e){
1825        expresso_mail_archive.getFaultInfo();
1826    }
1827}
1828
1829MailArchiver.prototype.getSomeMsgs = function(msgIds){
1830    try{
1831       expresso_mail_archive.getSomeMsg = new Array();
1832       for(var i=0; i < msgIds.length; i++){
1833           expresso_mail_archive.getSomeMsg.push(expresso_mail_archive.getMessageHeaders(msgIds[i]));
1834       }
1835       
1836   }catch(e){
1837        alert("Erro ao obter mensagens");
1838   }
1839}
1840
1841
1842//** Esse metodo é responsavel da iteração com o ContextMenu pois o getMessageMenu está com um show_msg, wtf??? LOL!!!  *//
1843MailArchiver.prototype.getMessageMenu = function(msgdata){
1844    try{
1845        if((msgdata.length <= 0) || (msgdata == null)){
1846            return;
1847        }
1848        expresso_mail_archive.currentmessage = expresso_mail_archive.getMessageHeaders(msgdata)["msg_number"];
1849        ArchiveServices.getMessageBody(expresso_mail_archive.getMessageMenuOperationOK, expresso_mail_archive.getMessageMenuOperationFailure, expresso_mail_archive.session.id, expresso_mail_archive.currentmessage);
1850    }
1851    catch(e){
1852        expresso_mail_archive.getFaultInfo();
1853    }
1854}
1855
1856MailArchiver.prototype.getMessageMenuOperationOK = function(returnService){   
1857    if(returnService.getReturn().length <= 0){
1858        window.alert('Oh no: service return data is zero length...');
1859        return;
1860    }   
1861    var msgBody = returnService.getReturn();
1862    //var msgHeaders = expresso_mail_archive.getMessageHeaders(expresso_mail_archive.currentmessage);
1863    var msgHeaders = expresso_mail_archive.currentheaders;
1864    var expSerializedMessage = expresso_mail_archive.pattern.toExpressoMail(msgHeaders, msgBody);
1865   
1866    // Unset \\Unseen flag
1867    for (i=0; i < expresso_mail_archive.messageslisted.length; i++)
1868    {
1869        if (expresso_mail_archive.messageslisted[i].msg_number == expresso_mail_archive.currentmessage)
1870        {
1871            expresso_mail_archive.messageslisted[i]['Unseen'] = '';
1872        }
1873    }
1874   
1875    //window.alert('Serialized data\n\n' + print_r(expSerializedMessage));
1876    //expresso_mail_archive.showEmbededImage(msgBody);
1877   
1878    expresso_mail_archive.fromMenu = expSerializedMessage;
1879}
1880MailArchiver.prototype.getMessageMenuOperationFailure = function(ServiceFault){
1881    window.alert('Message fails do be loaded.');
1882}
1883
1884
1885MailArchiver.prototype.getMessage = function(msgdata){
1886    try{
1887        if((msgdata.length <= 0) || (msgdata == null)){
1888            return;
1889        }
1890        expresso_mail_archive.currentmessage = expresso_mail_archive.getMessageHeaders(msgdata)["msg_number"];
1891        ArchiveServices.getMessageBody(expresso_mail_archive.getMessageOperationOK, expresso_mail_archive.getMessageOperationFailure, expresso_mail_archive.session.id, expresso_mail_archive.currentmessage);
1892    }
1893    catch(e){
1894        expresso_mail_archive.getFaultInfo();
1895    }
1896}
1897
1898MailArchiver.prototype.getMessageOperationOK = function(returnService){   
1899    if(returnService.getReturn().length <= 0){
1900        window.alert('Oh no: service return data is zero length...');
1901        return;
1902    }   
1903    expresso_mail_archive.te = returnService.getReturn();
1904    var msgBody = returnService.getReturn();
1905    //var msgHeaders = expresso_mail_archive.getMessageHeaders(expresso_mail_archive.currentmessage);
1906    var msgHeaders = expresso_mail_archive.currentheaders;
1907    var expSerializedMessage = expresso_mail_archive.pattern.toExpressoMail(msgHeaders, msgBody);
1908   
1909    // Unset \\Unseen flag
1910    for (i=0; i < expresso_mail_archive.messageslisted.length; i++)
1911    {
1912        if (expresso_mail_archive.messageslisted[i].msg_number == expresso_mail_archive.currentmessage)
1913        {
1914            expresso_mail_archive.messageslisted[i]['Unseen'] = '';
1915        }
1916    }
1917   
1918    //window.alert('Serialized data\n\n' + print_r(expSerializedMessage));
1919    //expresso_mail_archive.showEmbededImage(msgBody);
1920
1921    //É necessário fazer o encode com Base64 no destinatário para ser possivel enviar e-mail
1922    if(expSerializedMessage.DispositionNotificationTo != null){
1923        expSerializedMessage.DispositionNotificationTo = Base64.encode(expSerializedMessage.DispositionNotificationTo);
1924    }
1925   
1926    show_msg(expSerializedMessage);   
1927    window.setTimeout("expresso_mail_archive.setEmbeddedLink()", 1);
1928}
1929MailArchiver.prototype.getMessageOperationFailure = function(ServiceFault){
1930    window.alert('Message fails do be loaded.');
1931}
1932
1933/*
1934 *getMessageServiceObjet: search for a remote webservice object in memory to use
1935 *draw interface. Look at messages list first, then, search list. Returns desired
1936 *object, or null (if not found)
1937 **/
1938MailArchiver.prototype.getMessageServiceObject = function(msgid){
1939    var flag_found = false;
1940    var rtn_obj = null;
1941   
1942    //Message list
1943    if(expresso_mail_archive.ServiceReturnObjectList != null){
1944        for(var i=0; i < expresso_mail_archive.ServiceReturnObjectList.length; i++){
1945            if (expresso_mail_archive.ServiceReturnObjectList[i].getId() == msgid){
1946                flag_found = true;
1947                rtn_obj = expresso_mail_archive.ServiceReturnObjectList[i];
1948            }
1949        }
1950    }
1951       
1952    //Search list
1953    if(!flag_found){
1954        if(expresso_mail_archive.ServiceReturnObjectSearch != null){
1955            for(var i=0; i < expresso_mail_archive.ServiceReturnObjectSearch.length; i++){
1956                if (expresso_mail_archive.ServiceReturnObjectSearch[i].getId() == msgid){
1957                    flag_found = true;
1958                    rtn_obj = expresso_mail_archive.ServiceReturnObjectSearch[i];
1959                }
1960            }
1961        }       
1962    }
1963    return(rtn_obj);
1964}
1965
1966
1967MailArchiver.prototype.tagMessage = function(taglist){
1968    try{
1969        if(!taglist)
1970            taglist = expresso_mail_archive.taglist;
1971        //ArchiveServices.tagMessages(expresso_mail_archive.tagMessagesOperationOK, expresso_mail_archive.tagMessagesOperationFailure, sessid, taglist);
1972        ArchiveServices.tagMessages(expresso_mail_archive.tagMessagesOperationOK, expresso_mail_archive.tagMessagesOperationFailure, expresso_mail_archive.session.id, taglist);
1973    } catch (e){
1974        //window.alert('TagMessage fails at: ' + (e.description)?e.description:e);
1975        expresso_mail_archive.getFaultInfo();
1976    }     
1977}
1978
1979MailArchiver.prototype.tagMessagesOperationOK = function(serviceData){
1980    //ajustar os contadores de lida/nao lida etc...
1981    if((expresso_mail_archive.currenttag != '') && (expresso_mail_archive.tagmsg == true)){
1982        write_msg(get_lang('Messages marked as "%1"', get_lang(expresso_mail_archive.currenttag)));
1983        expresso_mail_archive.tagmsg = false;
1984    }
1985   
1986    expresso_mail_archive.currenttag = "";
1987    expresso_mail_archive.taglist = "";
1988
1989    if((expresso_mail_archive.drawdata) && (get_current_folder() == expresso_mail_archive.folder_origin)){
1990        expresso_mail_archive.drawFolderTree();
1991        //expresso_mail_archive.drawdata = null;
1992        window.clearTimeout(expresso_mail_archive.progressbar);
1993    }
1994    if(!expresso_mail_archive.isArchiveOperation){
1995        expresso_mail_archive.listMessages();
1996    }
1997}
1998
1999MailArchiver.prototype.tagMessagesOperationFailure = function(serviceData){
2000    var str_tag_fail = serviceData.getReturn();
2001    expresso_mail_archive.getFaultInfo();
2002}
2003
2004MailArchiver.prototype.download_all_msg_attachments = function(msgid){
2005    var default_format = 'zip'; //tar, jar, gzip, bz2 supports too
2006    var url = expresso_mail_archive.pattern.download_compressed_attachments(msgid, default_format);
2007    //window.open(url,"mywindow","width=1,height=1,scrollbars=no");
2008    location.href = url;
2009}
2010
2011MailArchiver.prototype.download_msg_source = function (format){
2012    //Default export format is zip
2013    if(!format)
2014        format = 'zip';
2015   
2016    expresso_mail_archive.exportformat = format;
2017   
2018    if (openTab.type[currentTab] > 1){
2019        var msgs_id = currentTab.substring(0,currentTab.length-2,currentTab);
2020    }else{
2021        var msgs_id = get_selected_messages();
2022    }   
2023   
2024    var vetmsg = msgs_id.split(",");
2025    if(vetmsg.length > 0){
2026        var arr_msg = new Array();
2027        for(var k=0; k<vetmsg.length; k++){
2028            arr_msg.push(vetmsg[k]);
2029        }           
2030    }
2031    else var arr_msg = new Array(msgs_id);
2032   
2033    var messages_array = {"format": format, "type": 'messages', "messages": arr_msg};
2034    var texp = expresso_mail_archive.pattern.zipConfig(messages_array);
2035   
2036    if(texp != null){
2037        try{
2038            //ArchiveServices.zipMessages(expresso_mail_archive.download_mgs_sourceOperationOK, expresso_mail_archive.download_msg_sourceOperationFailure, sessid, texp);
2039            ArchiveServices.zipMessages(expresso_mail_archive.download_mgs_sourceOperationOK, expresso_mail_archive.download_msg_sourceOperationFailure, expresso_mail_archive.session.id, texp);
2040        }
2041        catch(e){
2042            //window.alert('Export local messages fails: ' + (e.description)?e.description:e);
2043            expresso_mail_archive.getFaultInfo();
2044        }
2045    }
2046}
2047
2048MailArchiver.prototype.download_mgs_sourceOperationOK = function(serviceData){
2049  if(serviceData.getReturn().length > 0){
2050      window.location.href = mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + "/temp/mails_" + serviceData.getReturn() + '.' + expresso_mail_archive.exportformat;
2051  }
2052  else{
2053     
2054  }
2055}
2056
2057MailArchiver.prototype.download_mgs_sourceOperationFailure = function(serviceFail){
2058  window.alert('ZipMessages FAIL:' + serviceFail.getReturn()); 
2059}
2060
2061MailArchiver.prototype.export_local_messages = function(folderid, recursive, format){
2062    //Default export format is zip
2063    if(!format)
2064        format = 'zip';
2065   
2066    expresso_mail_archive.exportformat = format;   
2067    if(folderid == 'root')//export root local folder
2068        var messages_array = {"format": format, "type": 'folder', "recursive" : true, "messages": ""};
2069    else//export local folder entry
2070        var messages_array = {"format": format, "type": 'folder', "recursive" : recursive, "messages": folderid};
2071    var texp = expresso_mail_archive.pattern.zipConfig(messages_array);
2072   
2073    if(texp != null){
2074        try{
2075            ArchiveServices.zipMessages(expresso_mail_archive.download_mgs_sourceOperationOK, expresso_mail_archive.download_msg_sourceOperationFailure, expresso_mail_archive.session.id, texp);
2076        }
2077        catch(e){
2078            //window.alert('Export local messages fails: ' + (e.description)?e.description:e);
2079            expresso_mail_archive.getFaultInfo();
2080        }
2081    }   
2082}
2083
2084MailArchiver.prototype.updateCounter = function(a,b){
2085    //window.alert('updateCounter reached');
2086
2087    if(((a) && (b)) || ((parseInt(a)==0)&&(parseInt(b)==0))){
2088        //Element("tot_m").innerHTML = a;
2089        Element('new_m').innerHTML = (b >= 0) ? '<font color="RED">'+b+'</font>' : 0;
2090        return;
2091    }
2092   
2093    if(expresso_mail_archive.update_counters == true){
2094        connector.purgeCache();
2095        var elm_tree = Element('llocal_'+expresso_mail_archive.folder.id+'tree_folders');
2096       
2097        if(elm_tree){
2098       
2099        //search appropriate "unseen" span to handle with
2100        for(var j=0; j<elm_tree.childNodes.length; j++){
2101            if (elm_tree.childNodes[j].nodeName.toLowerCase() == 'span'){
2102                var elm = elm_tree.childNodes[j];
2103                break;
2104            }       
2105        }
2106   
2107        if(expresso_mail_archive.folder.unseen > 0){
2108            if (elm){
2109                elm.innerHTML = expresso_mail_archive.folder.unseen;
2110            }               
2111            else{
2112                var htm_el = document.createElement('font');
2113                htm_el.style.color = 'red';
2114                document.getElementById('llocal_'+expresso_mail_archive.folder.id+'tree_folders').appendChild(htm_el);   
2115                htm_el.innerHTML = '&nbsp(';
2116               
2117                var spn_el = document.createElement('span');
2118                spn_el.id = 'dftree_'+expresso_mail_archive.folder.id+'_unseen';
2119                spn_el.style.color = 'red';
2120                document.getElementById('llocal_'+expresso_mail_archive.folder.id+'tree_folders').appendChild(spn_el);
2121                spn_el.innerHTML = expresso_mail_archive.folder.unseen;
2122               
2123                var htm2_el = document.createElement('font');
2124                htm2_el.style.color = 'red';
2125                document.getElementById('llocal_'+expresso_mail_archive.folder.id+'tree_folders').appendChild(htm2_el);   
2126                htm2_el.innerHTML = ')';
2127            }
2128        }
2129        else{
2130            if(elm){
2131                var spn = elm.parentNode.parentNode;
2132                elm.parentNode.removeChild(elm.previousSibling);
2133                elm.parentNode.removeChild(elm.nextSibling);
2134                elm.parentNode.removeChild(elm);
2135            }
2136        }
2137
2138        //reset pointer to re-do working to move messages (2 folders envolved)
2139        if (expresso_mail_archive.folder_destination != null){
2140            if(expresso_mail_archive.currentfolder == expresso_mail_archive.folder_destination){
2141                expresso_mail_archive.update_counters = false;
2142            }
2143            else{
2144                //window.alert('aqui, queima o folder_destination');
2145                //expresso_mail_archive.folder_destination = null;
2146            }           
2147        }
2148        else{
2149            expresso_mail_archive.update_counters = false;
2150        }
2151    }
2152    }
2153    //no counter needs
2154    else return;
2155}
2156
2157MailArchiver.prototype.getBase64PartData = function(partid, field){
2158    var spid = new String(partid);
2159    if(parseInt(spid.length) > 0){
2160        expresso_mail_archive.tmp_att_datasource = field;
2161        try{
2162            //ArchiveServices.getRawBinaryBody(expresso_mail_archive.getBase64PartDataOK, expresso_mail_archive.getBase64PartDataFailure, sessid, partid);
2163            ArchiveServices.getRawBinaryBody(expresso_mail_archive.getBase64PartDataOK, expresso_mail_archive.getBase64PartDataFailure, expresso_mail_archive.session.id, partid);
2164        }
2165        catch(e){
2166            //window.alert('Fail to getRawBinaryBody data from part id ' + partid + ':\n' + (e.description)?e.description:e);
2167            expresso_mail_archive.getFaultInfo();
2168        }
2169    }
2170    else {
2171        return(null);
2172    }
2173}
2174
2175MailArchiver.prototype.getBase64PartDataOK = function(serviceData){
2176    var encdata = serviceData.getReturn();
2177    if(encdata.length <= 0){
2178        window.alert('Oh no: service return data is zero length...');
2179        this.tmp_att_data = null;
2180    }   
2181    else{
2182        expresso_mail_archive.tmp_att_datasource.value = encdata;
2183    }
2184}
2185
2186MailArchiver.prototype.getBase64PartDataFailure = function(serviceReturn){
2187    window.alert('There are erros on getting binary data part:' + serviceReturn.getReturn());
2188}
2189
2190MailArchiver.prototype.search = function(folders,fields){
2191    try{
2192        connector.showProgressBar();
2193        if((folders) && (fields)){
2194            expresso_mail_archive.search_queryconfig.reset();
2195            var folderlist = expresso_mail_archive.search_queryconfig.pharseFolders(folders);
2196            var filters = eval('(' + expresso_mail_archive.queryconfig.pharseSearchFields(fields) + ')');
2197
2198            if(folderlist.indexOf("#") != -1)
2199                filters.folder = folderlist.substr(0, folderlist.indexOf("#"));
2200            else
2201                filters.folder = folderlist;
2202            if(folderlist.toLowerCase().indexOf("#recursive") != -1)
2203                expresso_mail_archive.search_queryconfig.folder_recursive = true;
2204            else
2205                expresso_mail_archive.search_queryconfig.folder_recursive = false;
2206
2207            expresso_mail_archive.querydata = expresso_mail_archive.search_queryconfig.query(filters);
2208           
2209            //var query_data = '<?xml version="1.0" encoding="UTF-8"?><query subject="teste"><folder id="inbox"/><order asc="date"/></query>';
2210            ArchiveServices.listMessages(expresso_mail_archive.searchOperationOK, expresso_mail_archive.searchOperationFailure, expresso_mail_archive.session.id, expresso_mail_archive.querydata);       
2211        }
2212        //changing order view criteria (sorting result)
2213        else{   
2214            ArchiveServices.listMessages(expresso_mail_archive.searchOperationOK, expresso_mail_archive.searchOperationFailure, expresso_mail_archive.session.id, expresso_mail_archive.querydata);       
2215        }
2216    }catch (e){
2217        expresso_mail_archive.getFaultInfo();
2218    }
2219}
2220
2221MailArchiver.prototype.searchOperationOK = function(returnService){
2222    if(returnService.getReturn().length > 0){
2223        var msglist = new Array();
2224        var msglist2 = new Array();
2225        expresso_mail_archive.ServiceReturnObjectSearch = new Array();
2226
2227        for(var i=0; i< returnService.getReturn().length; i++){
2228            var ExpSerialized = expresso_mail_archive.pattern.toExpressoSearchHeader(returnService.getReturn()[i]);
2229            var ExpSerialized2 = expresso_mail_archive.pattern.toExpressoHeader(returnService.getReturn()[i]);
2230            var msgitem = connector.unserialize(ExpSerialized);
2231            var msgitem2 = connector.unserialize(ExpSerialized2);
2232     
2233            msglist.push(msgitem);//usando connector.unserialize sobre o header mapeado no layout abaixo
2234            msglist2.push(msgitem2);
2235            expresso_mail_archive.ServiceReturnObjectSearch.push(returnService.getReturn()[i]); //add each one service return data into this embeded object array
2236           
2237        }
2238        msglist["num_msgs"] = returnService.getReturn().length;
2239        msglist2["num_msgs"] = returnService.getReturn().length;
2240           
2241        //expresso_mail_archive.queryresult = msglist;       
2242        expresso_mail_archive.search_queryresult = msglist;   
2243        //expresso_mail_archive.messageslisted = msglist2;
2244        expresso_mail_archive.search_message_list = msglist2;
2245        //window.alert('temos ' + expresso_mail_archive.search_message_list.length + ' mensagens de resultado da pesquisa mapeadas em memï¿œria');
2246    }
2247    else{
2248        expresso_mail_archive.ServiceReturnObjectSearch = null;
2249        expresso_mail_archive.search_queryresult        = null;
2250        expresso_mail_archive.search_message_list       = null;
2251        expresso_mail_archive.messageslisted            = null;
2252        expresso_mail_archive.queryresult               = null;
2253    }
2254    connector.hideProgressBar();
2255}
2256
2257MailArchiver.prototype.searchOperationFailure = function(){
2258    write_msg(get_lang('MailArchiver search operation fails', true));
2259    expresso_mail_archive.ServiceReturnObjectSearch = null;
2260    expresso_mail_archive.search_queryresult        = null;
2261    expresso_mail_archive.search_message_list       = null;
2262    expresso_mail_archive.messageslisted            = null;
2263    expresso_mail_archive.queryresult               = null;
2264    connector.hideProgressBar();
2265}
2266
2267MailArchiver.prototype.getAuthId = function(){
2268    var handler_get_logon = function(data){
2269        if(data){
2270            expresso_mail_archive.balancerid = data[0];
2271            expresso_mail_archive.sessionid = data[1];
2272            expresso_mail_archive.logonid = new Array(data[2],data[3]);
2273            expresso_mail_archive.login();
2274        }
2275        else{
2276            window.alert('Login credentials call failure');
2277            expresso_mail_archive.session = null;
2278        }
2279    }
2280    cExecute("$this.user.get_mailarchiver_authid",handler_get_logon);     
2281}
2282
2283MailArchiver.prototype.login = function(){
2284    try{
2285        ArchiveServices.login(expresso_mail_archive.loginOperationOK, expresso_mail_archive.loginOperationFailure, expresso_mail_archive.logonid[0], expresso_mail_archive.logonid[1], expresso_mail_archive.sessionid, expresso_mail_archive.balancerid);
2286    }
2287    catch(e){
2288        expresso_mail_archive.getFaultInfo();
2289    }
2290}
2291
2292MailArchiver.prototype.loginOperationOK = function(returnService){
2293    if((typeof(returnService.getReturn()) == 'object') && (returnService.getReturn() != null)){
2294        expresso_mail_archive.session = new Object();
2295        expresso_mail_archive.session.expiration = returnService.getReturn().getExpiration();
2296        expresso_mail_archive.session.id = returnService.getReturn().getId();
2297        expresso_mail_archive.session.permissions = returnService.getReturn().getPermissions();
2298        expresso_mail_archive.CreateDefaultStructrure();
2299    }
2300    else{
2301        //not logged in MailArchiver
2302        expresso_mail_archive.session = null;
2303        write_msg(get_lang('MailArchiver user login fail', true));
2304        expresso_mail_archive.enabled = false;
2305        expresso_mail_archive.timer=null;
2306        expresso_mail_archive.interval = 500;
2307        ArchiveServices = null;
2308        connector.purgeCache();       
2309        draw_tree_folders();
2310        //expresso_mail_archive.DeactivateStatusListener(expresso_mail_archive);
2311    }
2312}
2313
2314MailArchiver.prototype.getFolderCounters = function(){
2315    var vetreturn = new Array();
2316    /*for(var k=0; k<expresso_mail_archive.folders.length; k++){
2317        if(expresso_mail_archive.folders[k]["id"] == expresso_mail_archive.currentfolder){
2318            vetreturn.push(expresso_mail_archive.folders[k]["messages"], expresso_mail_archive.folders[k]["unseen"]);
2319            break;
2320        }
2321    }*/
2322    vetreturn.push(expresso_mail_archive.folder.nummessages, expresso_mail_archive.folder.unseen);
2323    return(vetreturn);
2324}
2325
2326MailArchiver.prototype.setEmbeddedLink = function(){
2327    var img_objects = document.getElementsByTagName('img');
2328    for(var k = 0; k < img_objects.length; k++){
2329        if(img_objects[k].name.indexOf('embedded_img_') != -1) {
2330            var obj_link = img_objects[k].name.split('embedded_img_');
2331            var txt_link = obj_link[1];
2332            var img_base_link = mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + "/temp/" + txt_link;
2333            img_objects[k].src = img_base_link;
2334        }
2335    }
2336}
2337/*
2338MailArchiver.prototype.getFolderPath = function(folder){
2339    try{
2340        ArchiveServices.getFolderInfo(expresso_mail_archive.getFolderPathOperationOK, expresso_mail_archive.getFolderPathOperationFailure, expresso_mail_archive.session.id, folder);
2341    }
2342    catch(e){
2343        window.alert('getFolderPath fails');
2344    }
2345}
2346
2347MailArchiver.prototype.getFolderPathOperationOK = function(serviceReturn){
2348    window.alert('service return from getFolderPathOperationOK = ' + serviceReturn().getFolderPath());
2349    if(serviceReturn().length>0){
2350        window.alert('ok');
2351    }
2352    else{
2353        window.alert('nope');
2354    }
2355}
2356
2357MailArchiver.prototype.getFolderPathOperationFailure = function(serviceFault){
2358    window.alert('fails at gettting folder path');
2359}
2360*/
2361
2362MailArchiver.prototype.getMessageInfo = function(msgId){
2363    try{
2364        ArchiveServices.getMessageInfo(expresso_mail_archive.getMessageInfoOperationOK, expresso_mail_archive.getMessageInfoOperationFailure, expresso_mail_archive.session.id, msgId);
2365    }
2366    catch(e){
2367        window.alert('getMessageInfo fails');
2368    }   
2369}
2370
2371MailArchiver.prototype.getMessageInfoOperationOK = function(serviceReturn){
2372    //window.alert('service return from getMessageInfoOperationOK = ' + serviceReturn.getReturn() + '\n' + typeof(serviceReturn.getReturn()) + '\n' + print_r(serviceReturn.getReturn()));
2373    if(typeof(serviceReturn.getReturn() == 'object')){
2374        var ExpSerialized2 = expresso_mail_archive.pattern.toExpressoHeader(serviceReturn.getReturn());
2375        var msgitem2 = connector.unserialize(ExpSerialized2);
2376        expresso_mail_archive.messageslisted.push(msgitem2);   
2377        expresso_mail_archive.getMessageHeaders(serviceReturn.getReturn().getId());
2378
2379    }
2380    else{
2381        window.alert('getMessageInfoOperationOK nope');
2382    }
2383}
2384
2385MailArchiver.prototype.turnOffLocalTreeStructure = function (){
2386     draw_new_tree_folder(); 
2387}
2388
2389MailArchiver.prototype.getMessageInfoOperationFailure = function(serviceFault){
2390    window.alert('fails at gettting message info');
2391}
2392
2393MailArchiver.prototype.loginOperationFailure = function(ServiceFaillure){
2394    write_msg(get_lang('MailArchiver login operation fail', true));
2395}
2396
2397MailArchiver.prototype.logout = function(){
2398    write_msg(get_lang('MailArchiver user logged out', true));
2399}
2400/*
2401 *The all pourpose JavaScript variable, used by all related functionalityes at
2402 *Expresso Mail to handle this object at user gui.
2403 */
2404
2405var expresso_mail_archive;
2406expresso_mail_archive = new MailArchiver();
2407-->
Note: See TracBrowser for help on using the repository browser.