source: sandbox/2.5.1-evolucao/expressoMail1_2/js/mail_archiver.js @ 8122

Revision 8122, 101.3 KB checked in by marcieli, 11 years ago (diff)

Ticket #3437 - Removido codigo de teste commitado desnecessariamente.

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               
438                if(!expresso_mail_archive.archivefolder){
439                    expresso_mail_archive.getFolderInfo(expresso_mail_archive.folder_destination);
440                    if(typeof(expresso_mail_archive.folder) != "undefined"){
441                        //window.alert('folder.path -> ' + expresso_mail_archive.folder.path);
442                        expresso_mail_archive.archivefolder = expresso_mail_archive.folder.path;
443                        //window.alert('folder.path2 -> ' + expresso_mail_archive.folder.path);
444                    }
445                    else{
446                     //window.alert('ainda, sem folder.path');   
447                     //window.alert('testando folder.path agora ' + expresso_mail_archive.folder.path);
448                    }
449                }   
450
451                fcaption = expresso_mail_archive.archivefolder;
452                           
453                //Special folders translation
454                if (fcaption && ((fcaption.toLowerCase() == 'inbox') || (fcaption.toLowerCase() == 'outbox') || (fcaption.toLowerCase() == 'sent') || (fcaption.toLowerCase() == 'drafts') || (fcaption.toLowerCase() == 'trash')))
455                    fcaption = get_lang(fcaption);
456           
457           
458                var arch_handler = function(data){
459                    //Store the message source from Ajax request by now (string data)
460                    var js_var = new String(data);
461                    try{
462                        //Archive services needs session id, message source and destination folder
463                                                ArchiveServices.archive(expresso_mail_archive.getArchiveOperationOK, expresso_mail_archive.getArchiveOperationFailure, expresso_mail_archive.session.id, expresso_mail_archive.folder_destination, data);
464                    }
465                    catch(e){
466                        expresso_mail_archive.getFaultInfo();
467                    }
468                }
469               
470                //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);
471                //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);
472                cExecute("$this.exporteml.js_source_var",arch_handler,"folder="+url_decode(source_folder)+"&msgs_to_export="+expresso_mail_archive.message_list[0]);               
473            }
474            else{
475                //close_lightbox();
476                write_msg(get_lang('Archive operation error: getting online message flags fails. Achievement will not be done'),true);
477                expresso_mail_archive.archivefolder = null;
478            }
479        }
480
481       if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')){
482
483            //Get all tags from current archiving message
484           if(!expresso_mail_archive.folder_origin){
485                var aux1_folder = expresso_mail_archive.message_list[0].split(';')[0];
486                var aux1_msg_number = expresso_mail_archive.message_list[0].split(';')[1];
487            }
488            else{
489                var aux1_folder = expresso_mail_archive.folder_origin;
490                var aux1_msg_number = expresso_mail_archive.message_list[0];
491            }
492            //var pardata = "&folder=" + url_encode(expresso_mail_archive.folder_origin)+ "&msg_number="+ expresso_mail_archive.message_list[0];
493            var pardata = "&folder=" + url_encode(aux1_folder)+ "&msg_number="+ aux1_msg_number;
494            cExecute("$this.imap_functions.get_msg_flags", tagsHandler, pardata);
495        }
496        else throw('Archive operation error: message list stack is empty');
497    }
498    catch(e){
499        //window.alert(get_lang("Archive error: %1", (e.description)?e.description:e));
500                expresso_mail_archive.getFaultInfo();
501    }
502}
503
504//Archive callback OK
505MailArchiver.prototype.getArchiveOperationOK = function(status_message){
506    //message must be tagged
507    var arcid = status_message.getReturn().getId();
508    var tlist = expresso_mail_archive.pattern.tagConfig(expresso_mail_archive.taglist, arcid, 0);
509    if(tlist != null){
510        try{
511            expresso_mail_archive.drawdata = null //removes any draw parameter to archive msgs
512            ArchiveServices.tagMessages(expresso_mail_archive.tagMessagesOperationOK, expresso_mail_archive.tagMessagesOperationFailure, expresso_mail_archive.session.id, tlist);
513        }catch (e){
514            expresso_mail_archive.getFaultInfo();
515        }
516    }
517   
518    //if user preference is setted to move messages, here, whe will call a delete message at mailserver
519    if(preferences.keep_archived_messages == 0){
520        proxy_mensagens.delete_msgs(expresso_mail_archive.folder_origin,expresso_mail_archive.message_list[0],null,false,true);
521    }else{
522        if (Element("check_box_message_" + expresso_mail_archive.message_list[0])) {
523            Element("check_box_message_" + expresso_mail_archive.message_list[0]).checked = false;
524            remove_className(Element(expresso_mail_archive.message_list[0]), 'selected_msg');
525        }
526    }
527
528    //archivement allready done, update controll data and interface
529    expresso_mail_archive.messages_processed++;
530    if(expresso_mail_archive.message_list.length > 1){
531       write_msg(get_lang("Message %1 of %2 successfully archived", expresso_mail_archive.messages_processed, expresso_mail_archive.total_messages));
532       expresso_mail_archive.message_list.shift();
533       expresso_mail_archive.Archive(expresso_mail_archive.folder_origin, expresso_mail_archive.folder_destination, expresso_mail_archive.message_list);
534    }
535    else{
536        write_msg(get_lang("All done. End of archive messages operation"));
537        expresso_mail_archive.resetObject();
538        expresso_mail_archive.archivefolder = null;
539        window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000);       
540        connector.purgeCache();
541        //ttreeBox.name_folder = "local_" + expresso_mail_archive.currentfolder;
542        //ttreeBox.name_folder = "local_inbox";
543        draw_tree_local_folders();
544        //ttreeBox.update_folder(true);   
545        expresso_mail_archive.isArchiveOperation = false;
546    }
547    //close_lightbox();
548}
549//Archive callback Fail
550MailArchiver.prototype.getArchiveOperationFailure = function(error_message){
551    window.alert('Hi! getArchiveOperationFailure comes with ' + error_message.getReturn());
552    window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000);
553}
554
555/**
556 *move Folder
557 *
558 *@author Thiago Rossetto Afonso [thiago@prognus.com.br]
559 *
560 *@param folder_to_move Current folder that will be moved to another folder
561 *@param folder_to Folter that will receive the new folder
562 */
563MailArchiver.prototype.moveFolder = function(folder_to_move, folder_to){
564    try{
565        connector.showProgressBar();
566        ArchiveServices.moveFolder(expresso_mail_archive.moveFolderOK, expresso_mail_archive.moveFolderFailure, expresso_mail_archive.session.id, folder_to_move, folder_to);
567    }catch(e){
568        expresso_mail_archive.getFaultInfo();
569    }
570}
571MailArchiver.prototype.moveFolderOK = function(message){
572    write_msg(get_lang("Your folder was moved!"));
573}
574MailArchiver.prototype.moveFolderFailure = function(error_message){
575    alert("Error: " + error_message.getReturn());
576}
577
578MailArchiver.prototype.unarchieveToAttach = function (folder, new_folder, msgs_number, callback){
579    try{
580
581        if(typeof callback !== 'function') callback = function(){};
582
583        if(typeof(expresso_mail_archive.idMsgsToAttach) == "undefined"){
584            expresso_mail_archive.idMsgsToAttach = new Array();
585        }
586        //write_msg(get_lang("Starting to unarchive messages"));
587        expresso_mail_archive.isArchiveOperation = true;
588        if(currentTab.toString().indexOf("_r") != -1){
589            msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r"));
590        }
591
592        if(!msgs_number)
593            msgs_number = get_selected_messages();       
594               
595        if (parseInt(msgs_number) > 0 || msgs_number.length > 0){       
596           
597            expresso_mail_archive.messageToAttach = msgs_number;
598            if(expresso_mail_archive.messageToAttach) {
599               
600                expresso_mail_archive.unarchivecounter = 0;
601                expresso_mail_archive.unarchive_error_counter=0;
602                expresso_mail_archive.getFolderInfo(folder.replace("local_messages_",""));
603                expresso_mail_archive.unarchievefolder = expresso_mail_archive.folder.name;
604                (new_folder != null)?expresso_mail_archive.unarchievenewfolder = new_folder:expresso_mail_archive.unarchievenewfolder='INBOX';
605               
606                expresso_mail_archive.unarchieveToAttachHandler(callback);
607               
608                if(currentTab.toString().indexOf("_r") != -1){
609                    delete_border(currentTab,'false'); 
610                }
611            }
612            else{
613                write_msg(get_lang('No selected message.'));
614            }
615        }                               
616        else
617            write_msg(get_lang('No selected message.'));
618       
619        clear_selected_messages();
620    }
621    catch (e){
622        write_msg(get_lang('Unarchive error: ' + e));
623    }
624}
625
626MailArchiver.prototype.unarchieveToAttachHandler = function(uCallback){
627    try{
628         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.messageToAttach + '.eml';   
629   
630        //Creates a new object to unarchive messages. It's a CXF Add-on CORS component
631        var UnarchiveReqHandler = new cxf_cors_request_object();
632        UnarchiveReqHandler.init();
633
634        //Both XDomainRequest and XMLHttpRequest L2 supports onload event
635        UnarchiveReqHandler.handler.onload = function(){           
636            for (var w=0; w < expresso_mail_archive.allcompletemessagesbyfolder.length; w++){
637                               
638                if(expresso_mail_archive.allcompletemessagesbyfolder[w]["msg_number"] == expresso_mail_archive.messageToAttach){
639                    var timestamp = expresso_mail_archive.allcompletemessagesbyfolder[w]["timestamp"];
640                   
641                    //Get local tagged message data
642                    var flags = new String("");
643                   
644                    //Forwarded is special one: marks as "answered" and "draft"
645                    if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Forwarded"]){
646                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Forwarded"] == 'F')
647                            flags += 'A:X'+':';                                 
648                    }
649                    else{
650                        //Answered tag
651                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Answered"])
652                            if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Answered"] == 'A')
653                                flags += 'A'+':';
654                            else
655                                flags += ':';
656                        else
657                            flags += ':';                   
658
659                        //Draft tag
660                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Draft"])
661                            if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Draft"] == 'X')
662                                flags += 'D'+':';                   
663                            else
664                                flags += ':';
665                        else
666                            flags += ':';
667                    }
668                   
669                    //Flagged tag
670                    if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Flagged"])
671                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Flagged"] == 'F')
672                            flags += 'F'+':';                                       
673                        else
674                            flags += ':';
675                    else
676                        flags += ':';
677                   
678                    //Unseen tag
679                    if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Unseen"])
680                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Unseen"] == 'U')
681                            flags += 'U';     
682                        else
683                            flags += '';
684                    else
685                        flags += '';
686                   
687                    //Imap tag hash id
688                    flags += "#@#@#@";                   
689                   
690                    break;
691                }
692            }
693            var id = expresso_mail_archive.messageToAttach;
694            var source =  encodeURIComponent(UnarchiveReqHandler.handler.responseText) + "#@#@#@";
695            var params =
696            "&folder="      + escape(expresso_mail_archive.unarchievenewfolder) +
697            "&source="      + source +
698            "&timestamp="   + timestamp +
699            "&madata=true"  +
700            "&flags="       + flags +
701            "&id="          + id;
702
703
704            var handler_unarchive = function(data){
705                expresso_mail_archive.unarchieveToAttachController(data);
706            }
707            write_msg(get_lang("Please, Wait the messages from archieve be ready."));
708           
709             $.ajax({
710                url: "controller.php?action=$this.imap_functions.unarchive_mail",
711                success: function(data){
712                    data = connector.unserialize(data);
713                    expresso_mail_archive.idMsgsToAttach.push(data.idsMsg);
714                    handler_unarchive(data);
715                    uCallback(data);
716                },
717                async: false,
718                data:  params,
719                type: 'POST',
720               
721            });
722
723        }
724
725       
726        UnarchiveReqHandler.handler.open("GET", email, true);
727        if(UnarchiveReqHandler.handler.overrideMimeType){
728            UnarchiveReqHandler.handler.overrideMimeType("message/rfc822; charset=windows-1252");
729        }
730        UnarchiveReqHandler.handler.send();
731    }
732    catch(e){
733        write_msg(get_lang('Unarchive error: ' + e));
734    }
735}
736
737MailArchiver.prototype.unarchieveToAttachController = function(data){
738   
739    if (data){
740        if (data.error != "") {
741            expresso_mail_archive.unarchive_error_counter++;
742        }
743       
744    }
745}
746
747
748/**
749 *Unarchieve Message
750 *
751 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
752 *
753 *@param folder Original Folder of the message
754 *@param new_folder The new folder of the message
755 *@param msgs_number id of the messages
756 */
757MailArchiver.prototype.unarchieve = function (folder, new_folder, msgs_number){
758    try{
759
760        var aclShare = false;
761        $.ajax({
762              url: 'controller.php?' + $.param( { action: '$this.imap_functions.verifyShareFolder', folder: new_folder } ),
763              success: function( data ){
764                 data = connector.unserialize( data );
765                 if(data != null){
766                     if(!data.status){
767                        aclShare = true;
768                     }
769                 }
770
771              },
772              async: false
773        });
774
775        if(aclShare){
776            write_msg(get_lang("You don't have permission for this operation in this shared folder!"));
777            return false;
778        }
779
780        write_msg(get_lang("Starting to unarchive messages"));
781        expresso_mail_archive.isArchiveOperation = true;
782        if(currentTab.toString().indexOf("_r") != -1){
783            msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r"));
784        }
785
786        if(!msgs_number)
787            msgs_number = get_selected_messages();       
788               
789        if (parseInt(msgs_number) > 0 || msgs_number.length > 0){       
790            expresso_mail_archive.message_list = new Array();
791            expresso_mail_archive.CreateMessageList(msgs_number);
792            if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) {
793                expresso_mail_archive.unarchivecounter = 0;
794                expresso_mail_archive.unarchive_error_counter=0;
795                expresso_mail_archive.getFolderInfo(folder.replace("local_messages_",""));
796                expresso_mail_archive.unarchievefolder = expresso_mail_archive.folder.name;
797                (new_folder != null)?expresso_mail_archive.unarchievenewfolder = new_folder:expresso_mail_archive.unarchievenewfolder='INBOX';
798               
799                expresso_mail_archive.unarchieveHandler();
800               
801                if(currentTab.toString().indexOf("_r") != -1){
802                    delete_border(currentTab,'false'); 
803                }
804            }
805            else{
806                write_msg(get_lang('No selected message.'));
807            }
808        }                               
809        else
810            write_msg(get_lang('No selected message.'));
811       
812        clear_selected_messages();
813    }
814    catch (e){
815        write_msg(get_lang('Unarchive error: ' + e));
816    }
817}
818
819/**
820 *
821 *Unarchieve Message Handler
822 *
823 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
824 *
825 **/
826MailArchiver.prototype.unarchieveHandler = function(){
827    try{
828        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';   
829   
830        //Creates a new object to unarchive messages. It's a CXF Add-on CORS component
831        var UnarchiveReqHandler = new cxf_cors_request_object();
832        UnarchiveReqHandler.init();
833
834        //Both XDomainRequest and XMLHttpRequest L2 supports onload event
835        UnarchiveReqHandler.handler.onload = function(){           
836            for (var w=0; w < expresso_mail_archive.allcompletemessagesbyfolder.length; w++){
837                               
838                if(expresso_mail_archive.allcompletemessagesbyfolder[w]["msg_number"] == expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter]){
839                    var timestamp = expresso_mail_archive.allcompletemessagesbyfolder[w]["timestamp"];
840                   
841                    //Get local tagged message data
842                    var flags = new String("");
843                   
844                    //Forwarded is special one: marks as "answered" and "draft"
845                    if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Forwarded"]){
846                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Forwarded"] == 'F')
847                            flags += 'A:X'+':';                                 
848                    }
849                    else{
850                        //Answered tag
851                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Answered"])
852                            if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Answered"] == 'A')
853                                flags += 'A'+':';
854                            else
855                                flags += ':';
856                        else
857                            flags += ':';                   
858
859                        //Draft tag
860                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Draft"])
861                            if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Draft"] == 'X')
862                                flags += 'D'+':';                   
863                            else
864                                flags += ':';
865                        else
866                            flags += ':';
867                    }
868                   
869                    //Flagged tag
870                    if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Flagged"])
871                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Flagged"] == 'F')
872                            flags += 'F'+':';                                       
873                        else
874                            flags += ':';
875                    else
876                        flags += ':';
877                   
878                    //Unseen tag
879                    if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Unseen"])
880                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Unseen"] == 'U')
881                            flags += 'U';     
882                        else
883                            flags += '';
884                    else
885                        flags += '';
886                   
887                    //Imap tag hash id
888                    flags += "#@#@#@";                   
889                   
890                    break;
891                }
892            }
893            var id = expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter];
894            var source =  encodeURIComponent(UnarchiveReqHandler.handler.responseText) + "#@#@#@";
895            var params =
896            "&folder="      + escape(expresso_mail_archive.unarchievenewfolder) +
897            "&source="      + source +
898            "&timestamp="   + timestamp +
899            "&madata=true"  +
900            "&flags="       + flags +
901            "&id="          + id;
902
903            var handler_unarchive = function(data){
904                expresso_mail_archive.unarchieveController(data);
905            }
906            write_msg(get_lang('Unarchiving message %1 of %2', (expresso_mail_archive.unarchivecounter + 1), expresso_mail_archive.message_list.length));
907           
908            //cExecute ("$this.imap_functions.unarchive_mail&", handler_unarchive, params);
909
910            $.ajax({
911                url: "controller.php?action=$this.imap_functions.unarchive_mail",
912                data:  params,
913                type: 'POST',
914                async: false,
915                success: function(data){
916                    handler_unarchive(connector.unserialize(data));
917                },
918            });
919
920
921
922        }
923       
924        UnarchiveReqHandler.handler.open("GET", email, true);
925        if(UnarchiveReqHandler.handler.overrideMimeType){
926            UnarchiveReqHandler.handler.overrideMimeType("message/rfc822; charset=windows-1252");
927        }
928   
929        UnarchiveReqHandler.handler.send();
930    }
931    catch(e){
932        write_msg(get_lang('Unarchive error: ' + e));
933    }
934}
935
936/**
937 *
938 *Unarchieve Message Controller
939 *
940 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
941 *
942 **/
943MailArchiver.prototype.unarchieveController = function(data){
944    expresso_mail_archive.unarchivecounter++;
945   
946    if (data)
947    {
948        if (data.error != "")
949        {
950            expresso_mail_archive.unarchive_error_counter++;
951        }
952       
953        if (data.archived && preferences.keep_archived_messages == "0")
954        {
955            // apaga
956            expresso_mail_archive.deleteMessages(data.archived[0]);
957        }
958       
959    }
960
961    if (expresso_mail_archive.unarchivecounter < expresso_mail_archive.message_list.length){
962        expresso_mail_archive.unarchieveHandler();
963    }
964    else
965    {
966        if (expresso_mail_archive.unarchive_error_counter == 0)
967        {   
968            if (expresso_mail_archive.message_list.length==1){
969                write_msg(get_lang('Message successfully unarchived'));
970            }
971            else{
972                write_msg(get_lang('Messages successfully unarchived'));
973            }
974        }
975        else
976        {
977            if (expresso_mail_archive.message_list.length==1){
978                write_msg(get_lang("Coudn't unarchive message"));
979            }
980            else if (expresso_mail_archive.unarchive_error_counter == expresso_mail_archive.message_list.length)
981            {
982                write_msg(get_lang('No messages were unarchived'));
983            }
984            else{
985                write_msg(get_lang("Some messages weren't successfully unarchived"));
986            }
987               
988        }
989        //clear message list
990        expresso_mail_archive.message_list = new Array();
991        expresso_mail_archive.isArchiveOperation = false;
992    }
993}
994
995/**
996 *Archieve Delete Message
997 *
998 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
999 *
1000 *@param msgs_number Unique identification of the message
1001 */
1002MailArchiver.prototype.deleteMessages = function(msgs_number){
1003    try{
1004        // This is necessary 'couse we can get a delete operation while an unarchive operation
1005        // is still executing
1006        expresso_mail_archive._temp_list = expresso_mail_archive.message_list;
1007        expresso_mail_archive.message_list = new Array();
1008       
1009        expresso_mail_archive.CreateMessageList(msgs_number);
1010        if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) {
1011            ArchiveServices.deleteMessages(expresso_mail_archive.deleteMessagesOperationOK,
1012                                           expresso_mail_archive.deleteMessagesOperationFailure,
1013                                           expresso_mail_archive.session.id,
1014                                           expresso_mail_archive.message_list);
1015        }
1016        else{
1017            write_msg(get_lang('No selected message.'));
1018        }
1019    }
1020    catch (e){
1021        window.alert('Delete error: ' + e);
1022    }
1023}
1024
1025/**
1026 *Archieve Delete Message Ok
1027 *
1028 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
1029 *
1030 */
1031MailArchiver.prototype.deleteMessagesOperationOK = function(){
1032/*    var drawinginfo = {treeObject: tree_folders, treeName: 'tree_folders'};
1033    expresso_mail_archive.drawdata = drawinginfo;
1034    expresso_mail_archive.drawFolderTree();
1035    expresso_mail_archive.listMessages();
1036    */
1037    connector.purgeCache();
1038    //ttreeBox.update_folder(true);
1039    if(!expresso_mail_archive.isArchiveOperation){
1040        if(expresso_mail_archive.message_list.length > 1){
1041            write_msg(get_lang("The messages were deleted."));
1042        }else{
1043            write_msg(get_lang("The message was deleted."));
1044        }
1045    }
1046    expresso_mail_archive.update_counters = true;
1047    expresso_mail_archive.messageslisted = new Array();
1048    expresso_mail_archive.message_list = new Array();
1049
1050    expresso_mail_archive.currentfolder = folder.replace("local_messages_","");
1051
1052    expresso_mail_archive.listMessages(expresso_mail_archive.currentfolder);
1053
1054    // This is necessary 'couse we can get a delete operation while an unarchive operation
1055    // is still executing
1056    expresso_mail_archive.message_list = expresso_mail_archive._temp_list;
1057    expresso_mail_archive._temp_list = null;
1058}
1059
1060/**
1061 *Archieve Delete Message Operation Failure
1062 *
1063 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
1064 *
1065 */
1066MailArchiver.prototype.deleteMessagesOperationFailure = function(error_message){
1067    if(expresso_mail_archive.message_list.length > 1){
1068        write_msg(get_lang("Error deleting messages.") + ' ' + error_message.getReturn());
1069    }else{
1070        write_msg(get_lang("Error deleting message.") + ' ' + error_message.getReturn());
1071    }
1072   
1073    // This is necessary 'couse we can get a delete operation while an unarchive operation
1074    // is still executing
1075    expresso_mail_archive.message_list = expresso_mail_archive._temp_list;
1076    expresso_mail_archive._temp_list = null;
1077}
1078
1079/**
1080 *Move message
1081 *
1082 *@param folder Folder where the message will be moved
1083 *@param msgs_number Unique Id of the message
1084 *
1085 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
1086 *
1087 */
1088MailArchiver.prototype.moveMessages = function(folder, msgs_number){   
1089    try{
1090        write_msg(get_lang("Starting to move messages"));
1091
1092        expresso_mail_archive.CreateMessageList(msgs_number);
1093        expresso_mail_archive.folder_destination = folder;
1094        //window.alert('invocando o moveMessages com lista = ' + expresso_mail_archive.message_list.length + ' e folder destino =' + folder + '.\nFolder corrente ï¿œ ' + expresso_mail_archive.currentfolder);
1095       
1096        if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) {
1097            expresso_mail_archive.total_messages = expresso_mail_archive.message_list.length;
1098            expresso_mail_archive.moveMessagesHandler();           
1099        }
1100        else{
1101            write_msg(get_lang('No selected message.'));
1102        }
1103    }
1104    catch (e){
1105        expresso_mail_archive.getFaultInfo();
1106    }
1107}
1108
1109MailArchiver.prototype.moveMessagesHandler = function(){
1110    expresso_mail_archive.currentfolder = folder.substr(6, folder.length);
1111
1112    if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) {
1113        write_msg(get_lang('Moving message %1 of %2', expresso_mail_archive.messages_processed, expresso_mail_archive.total_messages));
1114        ArchiveServices.moveMessages(expresso_mail_archive.moveMessagesOperationOK,
1115                                     expresso_mail_archive.moveMessagesOperationFailure,
1116                                     expresso_mail_archive.session.id,
1117                                     expresso_mail_archive.folder_destination,
1118                                     new Array(expresso_mail_archive.message_list[parseInt(expresso_mail_archive.messages_processed)])
1119                                     );
1120    }
1121    else{
1122        window.alert('Moving handler messagelist caught:\n ' + expresso_mail_archive.message_list.length);       
1123    }   
1124}
1125
1126/**
1127 *Move Message Ok
1128 *
1129 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
1130 *
1131 */
1132MailArchiver.prototype.moveMessagesOperationOK = function(){
1133    //archivement allready done, update controll data and interface
1134    expresso_mail_archive.messages_processed++;
1135   
1136    if(parseInt(expresso_mail_archive.messages_processed) < parseInt(expresso_mail_archive.total_messages)){
1137       window.setTimeout(expresso_mail_archive.moveMessagesHandler,1);       
1138    }
1139    else{
1140        write_msg(get_lang("All done. Message(s) moved successfully"));
1141       
1142        //Tag messages moved
1143        for(var i=0; i<expresso_mail_archive.message_list.length; i++){
1144            var tlist = expresso_mail_archive.pattern.tagConfig(expresso_mail_archive.taglist, expresso_mail_archive.message_list[i], 0);
1145            if(tlist != null){
1146                try{
1147                    expresso_mail_archive.drawdata = null;
1148                    ArchiveServices.tagMessages(expresso_mail_archive.tagMessagesOperationOK, expresso_mail_archive.tagMessagesOperationFailure, expresso_mail_archive.session.id, tlist);
1149                }
1150                catch(e){
1151                    expresso_mail_archive.getFaultInfo();
1152                }
1153            }           
1154        }         
1155       
1156        expresso_mail_archive.update_counters = true;
1157        expresso_mail_archive.messageslisted = new Array();
1158        expresso_mail_archive.message_list = new Array(); 
1159
1160        expresso_mail_archive.getFolderInfo(expresso_mail_archive.currentfolder);
1161        expresso_mail_archive.getFolderInfo(expresso_mail_archive.folder_destination);
1162        expresso_mail_archive.listMessages(expresso_mail_archive.currentfolder); 
1163             
1164        expresso_mail_archive.resetObject();
1165    }
1166}
1167
1168/**
1169 *Move Message Failure
1170 *
1171 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
1172 *
1173 */
1174MailArchiver.prototype.moveMessagesOperationFailure = function(error_message){
1175    if(expresso_mail_archive.message_list.length > 1){
1176        write_msg(get_lang("Error moving messages.") + ' ' + error_message.getReturn());
1177    }else{
1178        write_msg(get_lang("Error moving message.") + ' ' + error_message.getReturn());
1179    }
1180}
1181
1182
1183//getFolderList Operation
1184MailArchiver.prototype.getFoldersList = function(basefolder){   
1185    try{
1186        connector.showProgressBar();
1187        //window.alert('no expresso_mail_archive.getFoldersList com basefolder = ' + basefolder);
1188        if(basefolder == 'local_root')
1189            basefolder = "";
1190        //window.alert('folderlist com basefolder = ' + basefolder);
1191        //ArchiveServices.listFolders(expresso_mail_archive.getFoldersListOperationOK, expresso_mail_archive.getFoldersListOperationFailure, sessid, basefolder);
1192        ArchiveServices.listFolders(expresso_mail_archive.getFoldersListOperationOK, expresso_mail_archive.getFoldersListOperationFailure, expresso_mail_archive.session.id, basefolder);
1193       
1194    }
1195    catch (e){
1196        expresso_mail_archive.getFaultInfo();
1197    }
1198}
1199
1200//getFolderList callback OK
1201MailArchiver.prototype.getFoldersListOperationOK = function(folderlist){
1202    //Internal variable used to map all XML data return from WS invokated
1203    var lfolders = new Array();
1204
1205   
1206    //Mapping XML data to a handler data structure
1207    if(folderlist.getReturn().length > 0){
1208        var lfolders = new Array();
1209        for(i=0; i<folderlist.getReturn().length; i++){
1210            (folderlist.getReturn()[i].getFolderCount() > 0 ) ? folderChild = 1 : folderChild = 0;
1211
1212            //Store folder data at this format: {folder name, number of messages contained, folder has child nodes, folder id, folder parent id, folder full path}
1213            //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());
1214            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()};
1215            //window.alert('folder ' + folderData.name + ' tem ' + folderData.messages + ' mensagens, sendo ' + folderData.unseen + ' nï¿œo lidas');
1216            lfolders.push(folderData);
1217        }
1218
1219        //Sets folders property at main object
1220        expresso_mail_archive.folders = lfolders;
1221       
1222        //Sets current folder, only if no one is setted
1223        //if(expresso_mail_archive.currentfolder == null){
1224            if(expresso_mail_archive.folders[0]["parentid"] == "home"){ // change from "" to "home"(12/12/2011)
1225                expresso_mail_archive.currentfolder = 'local_root';
1226            }
1227            else
1228                expresso_mail_archive.currentfolder = expresso_mail_archive.folders[0]["parentid"];
1229        //}
1230       
1231       
1232        //Folders dumping :)
1233        /*var strFolders = '---';
1234        for (var w=0; w < expresso_mail_archive.folders.length; w++){
1235            strFolders += '\nFolder ' + w + ' -->';
1236            for (x in expresso_mail_archive.folders[w]){
1237                strFolders += '\n----------' + x + ':= ' + expresso_mail_archive.folders[w][x];
1238            }
1239            strFolders += '\n<---';
1240        }
1241        strFolders += '\n---';
1242        alert(lfolders.length + ' folders mapeados, com default = ' + expresso_mail_archive.currentfolder + '\nfolders list:\n\n' + strFolders);
1243        */
1244        //window.alert('foldersListOperationOK com drawdata:\n' + expresso_mail_archive.drawdata);
1245        //If something UI related have been flagged, handle it
1246        if (expresso_mail_archive.drawdata){
1247            //window.alert('com drawdata e treeName = ' + expresso_mail_archive.drawdata.treeName);
1248            expresso_mail_archive.drawFolderTree();
1249        }
1250    } else {
1251        expresso_mail_archive.folders = 0;
1252    }
1253    connector.hideProgressBar();
1254}
1255
1256//getFolderList callback Fail
1257MailArchiver.prototype.getFoldersListOperationFailure = function(error, http_msg){
1258    window.alert('List folders mistake:' + error + '\nhttp_error = ' + http_msg);
1259    connector.hideProgressBar();
1260}
1261
1262//drawFolderTree operation, if requested to
1263MailArchiver.prototype.drawFolderTree = function(){ 
1264    var localBaseName  = 'local_';
1265    var objectTree = expresso_mail_archive.drawdata.treeObject;
1266    var evalobjectTree = (typeof(expresso_mail_archive.drawdata.treeObject) == 'object') ? expresso_mail_archive.drawdata.treeObject: eval( '(' + expresso_mail_archive.drawdata.treeName + ')');
1267       
1268    if((expresso_mail_archive.drawdata.treeName == 'search_folders') && (Element('dftree_search_folders')))
1269        evalobjectTree = folders_tree;
1270    else{
1271        if((expresso_mail_archive.drawdata.treeName == 'folders_tree') && (Element('dftree_folders_tree')))
1272            evalobjectTree = folders_tree;
1273    }
1274       
1275    //Add nodes to tree   
1276    if(typeof(evalobjectTree) == 'object'){
1277        //window.alert('caiu pra dentro, com ' + expresso_mail_archive.folders.length + ' folders.');
1278        evalobjectTree._drawn = true;
1279        if(expresso_mail_archive.folders.length > 0){
1280            for(i=0; i<expresso_mail_archive.folders.length; i++){
1281                var folder_caption;
1282                //window.alert('iterando nodo ' + expresso_mail_archive.folders[i]["name"]);
1283           
1284                //Special folders treatment: Inbox, Outbox, Drafts, Sent and Trash folders               
1285                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')){
1286                    folder_caption = get_lang(expresso_mail_archive.folders[i]["name"]);
1287                }
1288                else{
1289                    folder_caption = expresso_mail_archive.folders[i]["name"];
1290                }
1291               
1292                var onClickVar = '';                               
1293                if((evalobjectTree.name != "folders_tree") && (evalobjectTree.name != "search_folders")){
1294                    onClickVar =  "change_folder('"+ localBaseName + expresso_mail_archive.folders[i]["id"] +"','"+ localBaseName + expresso_mail_archive.folders[i]["id"]+"', '" + expresso_mail_archive.drawdata.treeName + "')";
1295                    if(expresso_mail_archive.folders[i]["unseen"] != "0")
1296                        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>'
1297                }
1298     
1299                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"]});
1300                //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"]});
1301           
1302                //Adjust the id node names
1303                if(expresso_mail_archive.currentfolder){
1304                    if(expresso_mail_archive.currentfolder.substr(0,5) != 'local'){
1305                        evalobjectTree.add(n_demo, localBaseName + expresso_mail_archive.currentfolder);
1306                    }
1307                    else{
1308                        evalobjectTree.add(n_demo,expresso_mail_archive.currentfolder);
1309                    }
1310                }
1311                else {
1312                    expresso_mail_archive.currentfolder = 'local_root';
1313                    evalobjectTree.add(n_demo,expresso_mail_archive.currentfolder);
1314                }           
1315            }
1316        }
1317        //Set special folders icons   
1318        if (document.getElementById('llocal_senttree_folders')){
1319            document.getElementById('llocal_senttree_folders').style.backgroundImage="url(../phpgwapi/templates/"+template+"/images/foldertree_sent.png)";
1320        }
1321        if (document.getElementById('llocal_trashtree_folders')){
1322            document.getElementById('llocal_trashtree_folders').style.backgroundImage="url(../phpgwapi/templates/"+template+"/images/foldertree_trash.png)";
1323        }
1324        if (document.getElementById('llocal_draftstree_folders')){
1325            document.getElementById('llocal_draftstree_folders').style.backgroundImage="url(../phpgwapi/templates/"+template+"/images/foldertree_draft.png)";
1326        }
1327        if (document.getElementById('llocal_outboxtree_folders')){
1328            document.getElementById('llocal_outboxtree_folders').style.backgroundImage="url(../phpgwapi/templates/"+template+"/images/foldertree_sent.png)";
1329        }         
1330    }
1331    else {
1332        //does nothing
1333    }
1334}
1335
1336//getFaultInfo operation
1337MailArchiver.prototype.getFaultInfo = function(){
1338    try{
1339        //ArchiveServices.getFaultInfo(expresso_mail_archive.getFaultInfoOperationOK, expresso_mail_archive.getFaultInfoOperationFailure, sessid);
1340         ArchiveServices.getFaultInfo(expresso_mail_archive.getFaultInfoOperationOK, expresso_mail_archive.getFaultInfoOperationFailure, expresso_mail_archive.session.id);
1341         connector.hideProgressBar();
1342    }   
1343    catch(e){
1344        if (!expresso_mail_archive.enabled)
1345            write_msg(get_lang('MailArchiver does not seems to be running or installed at this workstation, local messages are disabled. Check it out!'),false);
1346        else{
1347            window.clearInterval(expresso_mail_archive.timer);
1348            write_msg(get_lang('There is something wrong with MailArchiver environment. Contact you support'), false);
1349            expresso_mail_archive.enabled = false;
1350            expresso_mail_archive.turnOffLocalTreeStructure();
1351        }
1352        connector.hideProgressBar();
1353    }
1354}
1355
1356//getFaultInfo callback OK
1357MailArchiver.prototype.getFaultInfoOperationOK = function(faultinfo){
1358    try{
1359        write_msg(get_lang('MailArchiver remote service reports the following error:', false) + faultinfo.getReturn().getSoapFaultString());
1360    } catch(e){
1361        write_msg(get_lang('The archive service reports a unknown error. Try to refresh your browser screen', false));
1362    }
1363    expresso_mail_archive.resetObject();
1364    expresso_mail_archive.archivefolder = null;
1365    window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000);       
1366    connector.purgeCache();
1367    expresso_mail_archive.turnOffLocalTreeStructure();
1368}
1369
1370//getFaultInfo callback Fail
1371MailArchiver.prototype.getFaultInfoOperationFailure = function(errorCode, errorDesc){
1372    try{
1373        write_msg(get_lang('SoapFault capture fails at:' + errorCode + ' | ' + errorDesc, false));
1374    } catch(e){
1375        write_msg(get_lang('Service error mapping', false));
1376    }   
1377}
1378
1379//createFolder operation
1380MailArchiver.prototype.createFolder = function(parentFolder, folderName){
1381    if(typeof(folderName) == "undefined"){
1382        return false;
1383    }
1384   
1385    try{
1386        //ArchiveServices.createFolder(expresso_mail_archive.createFolderOperationOK, expresso_mail_archive.createFolderOperationFailure, sessid, parentFolder, folderName);
1387        ArchiveServices.createFolder(expresso_mail_archive.createFolderOperationOK, expresso_mail_archive.createFolderOperationFailure, expresso_mail_archive.session.id, parentFolder, folderName);
1388    }
1389    catch (e){
1390        expresso_mail_archive.getFaultInfo();
1391    }
1392   
1393}
1394
1395//createFolder callback OK
1396MailArchiver.prototype.createFolderOperationOK = function (folderObject){
1397    //window.alert('callback de createfolderoperationok');
1398    draw_tree_local_folders();
1399    //expresso_mail_archive.drawdata.treeObject._drawn = true;
1400    //ttreeBox.update_folder();   
1401}
1402
1403//createFolder callback Fail
1404MailArchiver.prototype.createFolderOperationFailure = function (message){
1405    window.alert('Folder creation fails...\n->' + message.getReturn());
1406}
1407
1408//deleteFolder operation
1409MailArchiver.prototype.deleteFolder = function(folderId, folderName){
1410    try{expresso_mail_archive.drawdata.folderName = folderName;
1411        ArchiveServices.deleteFolder(expresso_mail_archive.deleteFolderOperationOK, expresso_mail_archive.deleteFolderOperationFailure, expresso_mail_archive.session.id, folderId, true);
1412    }
1413    catch (e){
1414        expresso_mail_archive.getFaultInfo();
1415    }
1416   
1417}
1418
1419//deleteFolder callback OK
1420MailArchiver.prototype.deleteFolderOperationOK = function (folderObject){
1421    write_msg(get_lang("The local folder %1 was successfully removed", expresso_mail_archive.drawdata.folderName));
1422    connector.purgeCache();
1423    //ttreeBox.name_folder = "root";
1424    //ttreeBox.update_folder();
1425    draw_tree_local_folders();
1426    //ttreeBox.update_folder();
1427}
1428
1429//deleteFolder callback Fail
1430MailArchiver.prototype.deleteFolderOperationFailure = function (message){
1431    expresso_mail_archive.getFaultInfo();
1432}
1433
1434//renameFolder operation
1435MailArchiver.prototype.renameFolder = function(folderId, newFolderName){
1436    try{
1437        //ArchiveServices.renameFolder(expresso_mail_archive.renameFolderOperationOK, expresso_mail_archive.renameFolderOperationFailure, sessid, folderId, newFolderName);
1438        ArchiveServices.renameFolder(expresso_mail_archive.renameFolderOperationOK, expresso_mail_archive.renameFolderOperationFailure, expresso_mail_archive.session.id, folderId, newFolderName);
1439    }
1440    catch (e){
1441        expresso_mail_archive.getFaultInfo();
1442    }
1443   
1444}
1445
1446//renameFolder callback OK
1447MailArchiver.prototype.renameFolderOperationOK = function (returnService){
1448    var evalobjectTree = eval(expresso_mail_archive.drawdata.treeName);
1449    evalobjectTree.update_folder();
1450}
1451
1452//renameFolder callback Fail
1453MailArchiver.prototype.renameFolderOperationFailure = function (ServiceFault){
1454    expresso_mail_archive.getFaultInfo();
1455}
1456
1457//getFolderInfo operation
1458MailArchiver.prototype.getFolderInfo = function (folderId){
1459    try{
1460        if(folderId == 'local_root')
1461            folderId = "";
1462        var exp_verifyId = RegExp("^messages\_[0-9|a-z]+\-[0-9|a-z|\-]+$");
1463        if(exp_verifyId.test(folderId))
1464            folderId = folderId.replace("messages_", "");
1465        ArchiveServices.getFolderInfo(expresso_mail_archive.getFolderInfoOperationOK, expresso_mail_archive.getFolderInfoOperationFailure, expresso_mail_archive.session.id, folderId);
1466    }
1467    catch (e){
1468        expresso_mail_archive.getFaultInfo();
1469    }     
1470}
1471
1472//getFolderInfo callback OK
1473MailArchiver.prototype.getFolderInfoOperationOK = function(returnService){
1474   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()};
1475   expresso_mail_archive.folder = folder_info;
1476   expresso_mail_archive.updateCounter();
1477}
1478
1479//getFolderInfo callback Fail
1480MailArchiver.prototype.getFolderInfoOperationFailure = function (ServiceFault){
1481    window.alert('getFolderInfo service fails...\n->' + ServiceFault.getReturn());
1482    expresso_mail_archive.folder_data = true;
1483}
1484
1485function foo(){
1486    var a = 0;
1487    a++;
1488}
1489
1490
1491/**
1492 *delete All Messages
1493 *
1494 *@author Thiago Rossetto Afonso [thiago@prognus.com.br]
1495 *
1496 *@param folderId - folder id to get all messages that it has
1497 */
1498
1499MailArchiver.prototype.deleteAllMessages = function(folderId){
1500    try{   
1501        var objfolder = new Object();
1502        objfolder.folder = folderId;
1503
1504        var query_data = expresso_mail_archive.queryconfig.query(objfolder);
1505
1506        ArchiveServices.listMessages(expresso_mail_archive.deleteMsgsOperationOK, expresso_mail_archive.deleteMsgsOperationFailure, expresso_mail_archive.session.id, query_data);
1507    }catch(e){
1508        expresso_mail_archive.getFaultInfo();
1509    }
1510}
1511MailArchiver.prototype.deleteMsgsOperationOK = function(returnService){
1512    var msgsArray = new Array();
1513    var msgs = "";
1514    for(var i=0; i< returnService.getReturn().length; i++){
1515        msgsArray.push(returnService.getReturn()[i]._id);   
1516    } 
1517    msgs = msgsArray.join(",");
1518
1519    MailArchiver.prototype.deleteMessages(msgs);
1520}
1521MailArchiver.prototype.deleteMsgsOperationFailure = function(){
1522    alert("Your Messages weren't deleted.");
1523}
1524
1525//listMessages operation
1526//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) {
1527//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) {
1528//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);
1529MailArchiver.prototype.listMessages = function(folderId){
1530    try{
1531        connector.showProgressBar();
1532        var getcurrent = get_current_folder();       
1533        //tree_folders.getNodeById(get_current_folder())._select();
1534        var folderid;
1535        if(typeof(folderId) != "undefined"){
1536            folderid = folderId;
1537        } else {
1538            folderid = this.currentfolder;   
1539        }
1540        var objfolder = new Object();
1541        var exp_verifyId = RegExp("^messages\_[0-9|a-z]+\-[0-9|a-z|\-]+$");
1542        if(exp_verifyId.test(folderid))
1543            folderid = folderid.replace("messages_", "");
1544        objfolder.folder = folderid;
1545        //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>';
1546        //var testing_data_json_mapped = '{"query":{"@lowerIndex":"0", "@upperIndex":"50", "folder":[{"@id":"'+folderid+'"}], "order":[{"@asc":"date", "@desc":"subject"}]}}';
1547        var query_data = expresso_mail_archive.queryconfig.query(objfolder);
1548
1549        expresso_mail_archive.getFolderInfo(folderid);
1550        expresso_mail_archive.currentfolder = folderid;
1551       
1552
1553        //ArchiveServices.listMessages(expresso_mail_archive.listMessagesOperationOK, expresso_mail_archive.listMessagesOperationFailure, sessid, query_data);
1554        ArchiveServices.listMessages(expresso_mail_archive.listMessagesOperationOK, expresso_mail_archive.listMessagesOperationFailure, expresso_mail_archive.session.id, query_data);
1555    }
1556    catch (e){
1557        expresso_mail_archive.getFaultInfo();
1558    }
1559}
1560
1561//listMessages callback OK
1562MailArchiver.prototype.listMessagesOperationOK = function(returnService){
1563    var msglist = new Array();
1564    expresso_mail_archive.ServiceReturnObjectList = new Array();
1565    //window.alert('messages data\n\n' + print_r(returnService.getReturn().length));
1566    /*window.alert('Dados da mensagem:\n->From ' + returnService.getReturn()[0].getFrom()
1567                                      +'\n->To ' + returnService.getReturn()[0].getTo()
1568                                      +'\n->Subject ' + returnService.getReturn()[0].getSubject()
1569                                      +'\n->Date ' + returnService.getReturn()[0].getDate()
1570                                      +'\n->Date ' + returnService.getReturn()[0].getSize()
1571                                      +'\n->ID ' + returnService.getReturn()[0].getId());
1572    */
1573    for(var i=0; i< returnService.getReturn().length; i++){
1574        var ExpSerialized = expresso_mail_archive.pattern.toExpressoHeader(returnService.getReturn()[i]);
1575        var msgitem = connector.unserialize(ExpSerialized);
1576       
1577        // correção para por no padrao certo, se nao fizer isso buga a listagem
1578        msgitem.msg_sample = { "body": msgitem.msg_sample };
1579
1580        msglist.push(msgitem);//usando connector.unserialize sobre o header mapeado no layout abaixo
1581        expresso_mail_archive.ServiceReturnObjectList.push(returnService.getReturn()[i]); //add each one service return data into this embeded object array
1582    }
1583    //msglist["num_msgs"] = returnService.getReturn().length;
1584    //window.alert('service return length = ' + returnService.getReturn().length + '\nfolder.nummessages = ' + expresso_mail_archive.folder.nummessages);
1585   
1586    //window.alert('folder counters:\n' + print_r(tab_counters));
1587
1588    //msglist["num_msgs"] = expresso_mail_archive.folder.nummessages;
1589    //window.alert('num msgs');
1590    //(expresso_mail_archive.folder.unseen) ? msglist["tot_unseen"] = expresso_mail_archive.folder.unseen : msglist["tot_unseen"] = 0;
1591//    window.alert('num unseen');
1592    //window.alert('print_r\n\n' + print_r(msglist));
1593   
1594    //expresso_mail_archive.updateCounter(returnService.getReturn().length, msg_unseen_count);   
1595    expresso_mail_archive.messageslisted = msglist;
1596    expresso_mail_archive.drawdata = {messagesList:msglist};
1597    expresso_mail_archive.drawMessagesList();
1598    //expresso_mail_archive.drawMessagesList(returnService.getReturn().length, msg_unseen_count);
1599    //expresso_mail_archive.drawMessagesList(msglist["num_msgs"], msg_unseen_count);
1600    //expresso_mail_archive.drawMessagesList(expresso_mail_archive.tot_msgs_tab, expresso_mail_archive.tot_unseen_msgs_tab);
1601    connector.hideProgressBar();
1602}
1603
1604//listMessages callback Fail
1605MailArchiver.prototype.listMessagesOperationFailure = function(ServiceFault){
1606    window.alert('listmessages FALHOU!\n' + ServiceFault.getReturn());
1607}
1608
1609
1610MailArchiver.prototype.getMessagesByFolder = function(folderid, searchType){
1611    try{
1612        if(searchType == "ALL")
1613            var query_messages = '{"query":{"folder":[{"@id":"'+folderid+'"}], "order":[{"@asc":"date"}]}}';
1614        else
1615            var query_messages = '{"query":{"folder":[{"@id":"'+folderid+'"}], "tags":[{"@contains":"'+searchType+'"}], "order":[{"@asc":"date"}]}}';
1616        ArchiveServices.listMessages(expresso_mail_archive.getMessagesByFolderOperationOK, expresso_mail_archive.getMessagesByFolderOperationFailure, expresso_mail_archive.session.id, query_messages);
1617    }
1618    catch (e){
1619        expresso_mail_archive.getFaultInfo();
1620    }
1621}
1622
1623MailArchiver.prototype.getMessagesByFolderOperationOK = function(returnService){
1624    var msglist = new Array();
1625    var msglistcomplete = new Array();
1626    var msgAll = new Array();
1627    for(var i=0; i< returnService.getReturn().length; i++){
1628        //Array montado apenas com ids para tratamento de seleção de mensagens independente de paginação
1629        msglist.push(returnService.getReturn()[i]._id);
1630
1631        msgAll.push(returnService.getReturn()[i]);
1632
1633        //Incremento de contadores para atualização da aba de listagem
1634        if(returnService.getReturn()[i]._tags.indexOf("unseen") != -1){
1635            expresso_mail_archive.tot_unseen_msgs_tab++;
1636        }
1637        expresso_mail_archive.tot_msgs_tab++;
1638        //Array montado para operação de desarquivamento
1639        var ExpSerialized = expresso_mail_archive.pattern.toExpressoHeader(returnService.getReturn()[i]);
1640        msglistcomplete.push(connector.unserialize(ExpSerialized));
1641    }
1642    expresso_mail_archive.allmessagesbyfolder = msglist;
1643    expresso_mail_archive.allcompletemessagesbyfolder = msglistcomplete;
1644    expresso_mail_archive.msgAll = msgAll;
1645}
1646
1647MailArchiver.prototype.getMessagesByFolderOperationFailure = function(ServiceFault){
1648    window.alert('listAllmessagesByFolder FALHOU!\n' + ServiceFault.getReturn());
1649}
1650
1651
1652//List all messages by folder given and set a array with all messages ids
1653MailArchiver.prototype.listAllMessagesByFolder = function(folderid, searchType){
1654    try{
1655        if(searchType == "ALL")
1656            var query_messages = '{"query":{"folder":[{"@id":"'+folderid+'"}], "order":[{"@asc":"date"}]}}';
1657        else
1658            var query_messages = '{"query":{"folder":[{"@id":"'+folderid+'"}], "tags":[{"@contains":"'+searchType+'"}], "order":[{"@asc":"date"}]}}';
1659        ArchiveServices.listMessages(expresso_mail_archive.listAllMessagesByFolderOperationOK, expresso_mail_archive.listAllMessagesByFolderOperationFailure, expresso_mail_archive.session.id, query_messages);
1660    }
1661    catch (e){
1662        expresso_mail_archive.getFaultInfo();
1663    }
1664}
1665
1666//listAllMessagesByFolder callback OK
1667MailArchiver.prototype.listAllMessagesByFolderOperationOK = function(returnService){
1668    var msglist = new Array();
1669    var msglistcomplete = new Array();
1670    for(var i=0; i< returnService.getReturn().length; i++){
1671        //Array montado apenas com ids para tratamento de seleção de mensagens independente de paginação
1672        msglist.push(returnService.getReturn()[i]._id);
1673        //Incremento de contadores para atualização da aba de listagem
1674        if(returnService.getReturn()[i]._tags.indexOf("unseen") != -1){
1675            expresso_mail_archive.tot_unseen_msgs_tab++;
1676        }
1677        expresso_mail_archive.tot_msgs_tab++;
1678        //Array montado para operação de desarquivamento
1679        var ExpSerialized = expresso_mail_archive.pattern.toExpressoHeader(returnService.getReturn()[i]);
1680        msglistcomplete.push(connector.unserialize(ExpSerialized));
1681    }
1682    expresso_mail_archive.allmessagesbyfolder = msglist;
1683    expresso_mail_archive.allcompletemessagesbyfolder = msglistcomplete;
1684}
1685
1686//listAllMessagesByFolder callback Fail
1687MailArchiver.prototype.listAllMessagesByFolderOperationFailure = function(ServiceFault){
1688    window.alert('listAllmessagesByFolder FALHOU!\n' + ServiceFault.getReturn());
1689}
1690
1691MailArchiver.prototype.getFolderMessagesNumber = function(){
1692    var n = 0;
1693    for(var i=0; i < expresso_mail_archive.folders.length; i++){
1694        if(expresso_mail_archive.folders[i]["id"] == expresso_mail_archive.currentfolder){
1695            n = expresso_mail_archive.folders[i]["messages"];
1696        }
1697    }
1698    return(n);
1699}
1700
1701MailArchiver.prototype.drawMessagesList = function(){
1702    //window.alert('no drawMessagesList com folder = ' + expresso_mail_archive.currentfolder  + '\nudatecounters = ' + expresso_mail_archive.udatecounters);
1703    var data_to_draw = expresso_mail_archive.drawdata.messagesList; 
1704    //window.alert('data to draw =  ' + data_to_draw.length + '\ndata_to_draw[0].from.full = ' + print_r(data_to_draw));
1705    //window.alert('Current folder = ' + expresso_mail_archive.currentfolder + ' com ' + expresso_mail_archive.folders.length + ' folders.');
1706    var fcaption = expresso_mail_archive.currentfolder;
1707   
1708    /*for (var w=0; w < expresso_mail_archive.folders.length; w++){
1709        //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 + '"');
1710        if(expresso_mail_archive.folders[w]["id"] == expresso_mail_archive.currentfolder){
1711            fcaption = expresso_mail_archive.folders[w]["name"];
1712            window.alert('folder found!\n -> ' + fcaption);
1713            break;
1714        }
1715    }*/
1716   
1717    var fcaption = expresso_mail_archive.folder.name;
1718   
1719    /*window.alert('fcaption = ' + fcaption);
1720    var udate_tree_folder = expresso_mail_archive.drawdata.treefolder;
1721    window.alert('atualizar contador da ï¿œrvore : ' + udate_tree_folder);
1722    var udate_tab_folder = expresso_mail_archive.drawdata.tabfolder;
1723    window.alert('atualizar contador da tab : ' + udate_tab_folder);*/
1724    //var folder_num_msgs = expresso_mail_archive.getFolderMessagesNumber();
1725    var folder_num_msgs = expresso_mail_archive.folder.nummessages;
1726    //window.alert('num = ' + folder_num_msgs);
1727
1728    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>';
1729    draw_box(data_to_draw, 'local_' + expresso_mail_archive.currentfolder, true);
1730    //draw_paging(expresso_mail_archive.drawdata.messagesList.length);
1731    //draw_paging(preferences.max_email_per_page);
1732    draw_paging(expresso_mail_archive.tot_msgs_tab);   
1733    Element("tot_m").innerHTML = expresso_mail_archive.tot_msgs_tab; //folder_num_msgs;
1734    Element('new_m').innerHTML = '<font color="RED">'+expresso_mail_archive.tot_unseen_msgs_tab+'</font>';
1735}
1736
1737MailArchiver.prototype.getMessageHeaders = function(msgId){
1738    var msgfound = false;
1739    var headerMsg;
1740       
1741    //Get message header info, from message list operation previously invoked
1742    for (var w=0; w < expresso_mail_archive.messageslisted.length; w++){
1743        if(expresso_mail_archive.messageslisted[w]["msg_number"] == msgId){
1744            headerMsg = expresso_mail_archive.messageslisted[w];
1745            msgfound = true;
1746            break;
1747        }
1748    }
1749   
1750    //Message does not exists at default message list previouslly invoked. Then, will be tryed to get it at possible search criteria existing tab.
1751    if(!msgfound){
1752        //Try to discover if desired message is at a search local data tab
1753        if(currentTab.toString().indexOf("search_local") != -1){
1754            var msgId2 = msgId.substr(0,msgId.indexOf("_s"));           
1755            for (var w=0; w < expresso_mail_archive.search_message_list.length; w++){
1756                if(expresso_mail_archive.search_message_list[w]["msg_number"] == msgId2){
1757                    headerMsg = expresso_mail_archive.search_message_list[w];
1758                    msgfound = true;
1759                    break;
1760                }
1761            }
1762       
1763        }
1764    }
1765   
1766    //The message was found, as well the her headers
1767    if(msgfound){
1768        expresso_mail_archive.currentheaders = headerMsg;
1769        expresso_mail_archive.subjectPreview = headerMsg.subject;
1770        return(headerMsg);
1771    }
1772    //The message was not found   
1773    else{
1774        headerMsg = null;
1775        expresso_mail_archive.currentheaders = headerMsg;       
1776        return;
1777    }
1778}
1779
1780MailArchiver.prototype.getMessageBodies = function(msgdata){
1781    try{
1782        var temp;
1783        var bodies = Array();
1784        var callback = function(data){
1785            temp = data;
1786        };
1787        for(var i=0; i<msgdata.length; i++){
1788            expresso_mail_archive.currentmessage = expresso_mail_archive.getMessageHeaders(msgdata[i])["msg_number"];
1789            ArchiveServices.getMessageBody(callback, expresso_mail_archive.getMessageOperationFailure,expresso_mail_archive.session.id, expresso_mail_archive.currentmessage);
1790            bodies.push(temp);
1791        }
1792        expresso_mail_archive.bodyPreview = temp.getReturn();
1793        return bodies;
1794    }
1795    catch(e){
1796        expresso_mail_archive.getFaultInfo();
1797    }
1798}
1799
1800
1801MailArchiver.prototype.getPreviewToAttach = function(id){
1802    expresso_mail_archive.getMessageInfo(id);
1803    expresso_mail_archive.getMessageBodies([id]);
1804}
1805
1806MailArchiver.prototype.getSomeMsgs = function(msgIds){
1807    try{
1808       expresso_mail_archive.getSomeMsg = new Array();
1809       for(var i=0; i < msgIds.length; i++){
1810           expresso_mail_archive.getSomeMsg.push(expresso_mail_archive.getMessageHeaders(msgIds[i]));
1811       }
1812       
1813   }catch(e){
1814        alert("Erro ao obter mensagens");
1815   }
1816}
1817
1818
1819//** Esse metodo é responsavel da iteração com o ContextMenu pois o getMessageMenu está com um show_msg, wtf??? LOL!!!  *//
1820MailArchiver.prototype.getMessageMenu = function(msgdata){
1821    try{
1822        if((msgdata.length <= 0) || (msgdata == null)){
1823            return;
1824        }
1825        expresso_mail_archive.currentmessage = expresso_mail_archive.getMessageHeaders(msgdata)["msg_number"];
1826        ArchiveServices.getMessageBody(expresso_mail_archive.getMessageMenuOperationOK, expresso_mail_archive.getMessageMenuOperationFailure, expresso_mail_archive.session.id, expresso_mail_archive.currentmessage);
1827    }
1828    catch(e){
1829        expresso_mail_archive.getFaultInfo();
1830    }
1831}
1832
1833MailArchiver.prototype.getMessageMenuOperationOK = function(returnService){   
1834    if(returnService.getReturn().length <= 0){
1835        window.alert('Oh no: service return data is zero length...');
1836        return;
1837    }   
1838    var msgBody = returnService.getReturn();
1839    //var msgHeaders = expresso_mail_archive.getMessageHeaders(expresso_mail_archive.currentmessage);
1840    var msgHeaders = expresso_mail_archive.currentheaders;
1841    var expSerializedMessage = expresso_mail_archive.pattern.toExpressoMail(msgHeaders, msgBody);
1842   
1843    // Unset \\Unseen flag
1844    for (i=0; i < expresso_mail_archive.messageslisted.length; i++)
1845    {
1846        if (expresso_mail_archive.messageslisted[i].msg_number == expresso_mail_archive.currentmessage)
1847        {
1848            expresso_mail_archive.messageslisted[i]['Unseen'] = '';
1849        }
1850    }
1851   
1852    //window.alert('Serialized data\n\n' + print_r(expSerializedMessage));
1853    //expresso_mail_archive.showEmbededImage(msgBody);
1854   
1855    expresso_mail_archive.fromMenu = expSerializedMessage;
1856}
1857MailArchiver.prototype.getMessageMenuOperationFailure = function(ServiceFault){
1858    window.alert('Message fails do be loaded.');
1859}
1860
1861
1862MailArchiver.prototype.getMessage = function(msgdata){
1863    try{
1864        if((msgdata.length <= 0) || (msgdata == null)){
1865            return;
1866        }
1867        expresso_mail_archive.currentmessage = expresso_mail_archive.getMessageHeaders(msgdata)["msg_number"];
1868        ArchiveServices.getMessageBody(expresso_mail_archive.getMessageOperationOK, expresso_mail_archive.getMessageOperationFailure, expresso_mail_archive.session.id, expresso_mail_archive.currentmessage);
1869    }
1870    catch(e){
1871        expresso_mail_archive.getFaultInfo();
1872    }
1873}
1874
1875MailArchiver.prototype.getMessageOperationOK = function(returnService){   
1876    if(returnService.getReturn().length <= 0){
1877        window.alert('Oh no: service return data is zero length...');
1878        return;
1879    }   
1880    expresso_mail_archive.te = returnService.getReturn();
1881    var msgBody = returnService.getReturn();
1882    //var msgHeaders = expresso_mail_archive.getMessageHeaders(expresso_mail_archive.currentmessage);
1883    var msgHeaders = expresso_mail_archive.currentheaders;
1884    var expSerializedMessage = expresso_mail_archive.pattern.toExpressoMail(msgHeaders, msgBody);
1885   
1886    // Unset \\Unseen flag
1887    for (i=0; i < expresso_mail_archive.messageslisted.length; i++)
1888    {
1889        if (expresso_mail_archive.messageslisted[i].msg_number == expresso_mail_archive.currentmessage)
1890        {
1891            expresso_mail_archive.messageslisted[i]['Unseen'] = '';
1892        }
1893    }
1894   
1895    //window.alert('Serialized data\n\n' + print_r(expSerializedMessage));
1896    //expresso_mail_archive.showEmbededImage(msgBody);
1897
1898    //É necessário fazer o encode com Base64 no destinatário para ser possivel enviar e-mail
1899    if(expSerializedMessage.DispositionNotificationTo != null){
1900        expSerializedMessage.DispositionNotificationTo = Base64.encode(expSerializedMessage.DispositionNotificationTo);
1901    }
1902   
1903    show_msg(expSerializedMessage);   
1904    window.setTimeout("expresso_mail_archive.setEmbeddedLink()", 1);
1905}
1906MailArchiver.prototype.getMessageOperationFailure = function(ServiceFault){
1907    window.alert('Message fails do be loaded.');
1908}
1909
1910/*
1911 *getMessageServiceObjet: search for a remote webservice object in memory to use
1912 *draw interface. Look at messages list first, then, search list. Returns desired
1913 *object, or null (if not found)
1914 **/
1915MailArchiver.prototype.getMessageServiceObject = function(msgid){
1916    var flag_found = false;
1917    var rtn_obj = null;
1918   
1919    //Message list
1920    if(expresso_mail_archive.ServiceReturnObjectList != null){
1921        for(var i=0; i < expresso_mail_archive.ServiceReturnObjectList.length; i++){
1922            if (expresso_mail_archive.ServiceReturnObjectList[i].getId() == msgid){
1923                flag_found = true;
1924                rtn_obj = expresso_mail_archive.ServiceReturnObjectList[i];
1925            }
1926        }
1927    }
1928       
1929    //Search list
1930    if(!flag_found){
1931        if(expresso_mail_archive.ServiceReturnObjectSearch != null){
1932            for(var i=0; i < expresso_mail_archive.ServiceReturnObjectSearch.length; i++){
1933                if (expresso_mail_archive.ServiceReturnObjectSearch[i].getId() == msgid){
1934                    flag_found = true;
1935                    rtn_obj = expresso_mail_archive.ServiceReturnObjectSearch[i];
1936                }
1937            }
1938        }       
1939    }
1940    return(rtn_obj);
1941}
1942
1943
1944MailArchiver.prototype.tagMessage = function(taglist){
1945    try{
1946        if(!taglist)
1947            taglist = expresso_mail_archive.taglist;
1948        //ArchiveServices.tagMessages(expresso_mail_archive.tagMessagesOperationOK, expresso_mail_archive.tagMessagesOperationFailure, sessid, taglist);
1949        ArchiveServices.tagMessages(expresso_mail_archive.tagMessagesOperationOK, expresso_mail_archive.tagMessagesOperationFailure, expresso_mail_archive.session.id, taglist);
1950    } catch (e){
1951        //window.alert('TagMessage fails at: ' + (e.description)?e.description:e);
1952        expresso_mail_archive.getFaultInfo();
1953    }     
1954}
1955
1956MailArchiver.prototype.tagMessagesOperationOK = function(serviceData){
1957    //ajustar os contadores de lida/nao lida etc...
1958    if((expresso_mail_archive.currenttag != '') && (expresso_mail_archive.tagmsg == true)){
1959        write_msg(get_lang('Messages marked as "%1"', get_lang(expresso_mail_archive.currenttag)));
1960        expresso_mail_archive.tagmsg = false;
1961    }
1962   
1963    expresso_mail_archive.currenttag = "";
1964    expresso_mail_archive.taglist = "";
1965
1966    if((expresso_mail_archive.drawdata) && (get_current_folder() == expresso_mail_archive.folder_origin)){
1967        expresso_mail_archive.drawFolderTree();
1968        //expresso_mail_archive.drawdata = null;
1969        window.clearTimeout(expresso_mail_archive.progressbar);
1970    }
1971    if(!expresso_mail_archive.isArchiveOperation){
1972        expresso_mail_archive.listMessages();
1973    }
1974}
1975
1976MailArchiver.prototype.tagMessagesOperationFailure = function(serviceData){
1977    var str_tag_fail = serviceData.getReturn();
1978    expresso_mail_archive.getFaultInfo();
1979}
1980
1981MailArchiver.prototype.download_all_msg_attachments = function(msgid){
1982    var default_format = 'zip'; //tar, jar, gzip, bz2 supports too
1983    var url = expresso_mail_archive.pattern.download_compressed_attachments(msgid, default_format);
1984    //window.open(url,"mywindow","width=1,height=1,scrollbars=no");
1985    location.href = url;
1986}
1987
1988MailArchiver.prototype.download_msg_source = function (format){
1989    //Default export format is zip
1990    if(!format)
1991        format = 'zip';
1992   
1993    expresso_mail_archive.exportformat = format;
1994   
1995    if (openTab.type[currentTab] > 1){
1996        var msgs_id = currentTab.substring(0,currentTab.length-2,currentTab);
1997    }else{
1998        var msgs_id = get_selected_messages();
1999    }   
2000   
2001    var vetmsg = msgs_id.split(",");
2002    if(vetmsg.length > 0){
2003        var arr_msg = new Array();
2004        for(var k=0; k<vetmsg.length; k++){
2005            arr_msg.push(vetmsg[k]);
2006        }           
2007    }
2008    else var arr_msg = new Array(msgs_id);
2009   
2010    var messages_array = {"format": format, "type": 'messages', "messages": arr_msg};
2011    var texp = expresso_mail_archive.pattern.zipConfig(messages_array);
2012   
2013    if(texp != null){
2014        try{
2015            //ArchiveServices.zipMessages(expresso_mail_archive.download_mgs_sourceOperationOK, expresso_mail_archive.download_msg_sourceOperationFailure, sessid, texp);
2016            ArchiveServices.zipMessages(expresso_mail_archive.download_mgs_sourceOperationOK, expresso_mail_archive.download_msg_sourceOperationFailure, expresso_mail_archive.session.id, texp);
2017        }
2018        catch(e){
2019            //window.alert('Export local messages fails: ' + (e.description)?e.description:e);
2020            expresso_mail_archive.getFaultInfo();
2021        }
2022    }
2023}
2024
2025MailArchiver.prototype.download_mgs_sourceOperationOK = function(serviceData){
2026  if(serviceData.getReturn().length > 0){
2027      window.location.href = mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + "/temp/mails_" + serviceData.getReturn() + '.' + expresso_mail_archive.exportformat;
2028  }
2029  else{
2030     
2031  }
2032}
2033
2034MailArchiver.prototype.download_mgs_sourceOperationFailure = function(serviceFail){
2035  window.alert('ZipMessages FAIL:' + serviceFail.getReturn()); 
2036}
2037
2038MailArchiver.prototype.export_local_messages = function(folderid, recursive, format){
2039    //Default export format is zip
2040    if(!format)
2041        format = 'zip';
2042   
2043    expresso_mail_archive.exportformat = format;   
2044    if(folderid == 'root')//export root local folder
2045        var messages_array = {"format": format, "type": 'folder', "recursive" : true, "messages": ""};
2046    else//export local folder entry
2047        var messages_array = {"format": format, "type": 'folder', "recursive" : recursive, "messages": folderid};
2048    var texp = expresso_mail_archive.pattern.zipConfig(messages_array);
2049   
2050    if(texp != null){
2051        try{
2052            ArchiveServices.zipMessages(expresso_mail_archive.download_mgs_sourceOperationOK, expresso_mail_archive.download_msg_sourceOperationFailure, expresso_mail_archive.session.id, texp);
2053        }
2054        catch(e){
2055            //window.alert('Export local messages fails: ' + (e.description)?e.description:e);
2056            expresso_mail_archive.getFaultInfo();
2057        }
2058    }   
2059}
2060
2061MailArchiver.prototype.updateCounter = function(a,b){
2062    //window.alert('updateCounter reached');
2063
2064    if(((a) && (b)) || ((parseInt(a)==0)&&(parseInt(b)==0))){
2065        //Element("tot_m").innerHTML = a;
2066        Element('new_m').innerHTML = (b >= 0) ? '<font color="RED">'+b+'</font>' : 0;
2067        return;
2068    }
2069   
2070    if(expresso_mail_archive.update_counters == true){
2071        connector.purgeCache();
2072        var elm_tree = Element('llocal_'+expresso_mail_archive.folder.id+'tree_folders');
2073       
2074        if(elm_tree){
2075       
2076        //search appropriate "unseen" span to handle with
2077        for(var j=0; j<elm_tree.childNodes.length; j++){
2078            if (elm_tree.childNodes[j].nodeName.toLowerCase() == 'span'){
2079                var elm = elm_tree.childNodes[j];
2080                break;
2081            }       
2082        }
2083   
2084        if(expresso_mail_archive.folder.unseen > 0){
2085            if (elm){
2086                elm.innerHTML = expresso_mail_archive.folder.unseen;
2087            }               
2088            else{
2089                var htm_el = document.createElement('font');
2090                htm_el.style.color = 'red';
2091                document.getElementById('llocal_'+expresso_mail_archive.folder.id+'tree_folders').appendChild(htm_el);   
2092                htm_el.innerHTML = '&nbsp(';
2093               
2094                var spn_el = document.createElement('span');
2095                spn_el.id = 'dftree_'+expresso_mail_archive.folder.id+'_unseen';
2096                spn_el.style.color = 'red';
2097                document.getElementById('llocal_'+expresso_mail_archive.folder.id+'tree_folders').appendChild(spn_el);
2098                spn_el.innerHTML = expresso_mail_archive.folder.unseen;
2099               
2100                var htm2_el = document.createElement('font');
2101                htm2_el.style.color = 'red';
2102                document.getElementById('llocal_'+expresso_mail_archive.folder.id+'tree_folders').appendChild(htm2_el);   
2103                htm2_el.innerHTML = ')';
2104            }
2105        }
2106        else{
2107            if(elm){
2108                var spn = elm.parentNode.parentNode;
2109                elm.parentNode.removeChild(elm.previousSibling);
2110                elm.parentNode.removeChild(elm.nextSibling);
2111                elm.parentNode.removeChild(elm);
2112            }
2113        }
2114
2115        //reset pointer to re-do working to move messages (2 folders envolved)
2116        if (expresso_mail_archive.folder_destination != null){
2117            if(expresso_mail_archive.currentfolder == expresso_mail_archive.folder_destination){
2118                expresso_mail_archive.update_counters = false;
2119            }
2120            else{
2121                //window.alert('aqui, queima o folder_destination');
2122                //expresso_mail_archive.folder_destination = null;
2123            }           
2124        }
2125        else{
2126            expresso_mail_archive.update_counters = false;
2127        }
2128    }
2129    }
2130    //no counter needs
2131    else return;
2132}
2133
2134MailArchiver.prototype.getBase64PartData = function(partid, field){
2135    var spid = new String(partid);
2136    if(parseInt(spid.length) > 0){
2137        expresso_mail_archive.tmp_att_datasource = field;
2138        try{
2139            //ArchiveServices.getRawBinaryBody(expresso_mail_archive.getBase64PartDataOK, expresso_mail_archive.getBase64PartDataFailure, sessid, partid);
2140            ArchiveServices.getRawBinaryBody(expresso_mail_archive.getBase64PartDataOK, expresso_mail_archive.getBase64PartDataFailure, expresso_mail_archive.session.id, partid);
2141        }
2142        catch(e){
2143            //window.alert('Fail to getRawBinaryBody data from part id ' + partid + ':\n' + (e.description)?e.description:e);
2144            expresso_mail_archive.getFaultInfo();
2145        }
2146    }
2147    else {
2148        return(null);
2149    }
2150}
2151
2152MailArchiver.prototype.getBase64PartDataOK = function(serviceData){
2153    var encdata = serviceData.getReturn();
2154    if(encdata.length <= 0){
2155        window.alert('Oh no: service return data is zero length...');
2156        this.tmp_att_data = null;
2157    }   
2158    else{
2159        expresso_mail_archive.tmp_att_datasource.value = encdata;
2160    }
2161}
2162
2163MailArchiver.prototype.getBase64PartDataFailure = function(serviceReturn){
2164    window.alert('There are erros on getting binary data part:' + serviceReturn.getReturn());
2165}
2166
2167MailArchiver.prototype.search = function(folders,fields){
2168    try{
2169        connector.showProgressBar();
2170        if((folders) && (fields)){
2171            expresso_mail_archive.search_queryconfig.reset();
2172            var folderlist = expresso_mail_archive.search_queryconfig.pharseFolders(folders);
2173            var filters = eval('(' + expresso_mail_archive.queryconfig.pharseSearchFields(fields) + ')');
2174
2175
2176
2177            if(folderlist.indexOf("#") != -1)
2178                filters.folder = folderlist.substr(0, folderlist.indexOf("#"));
2179            else
2180                filters.folder = folderlist;
2181            if(folderlist.toLowerCase().indexOf("#recursive") != -1)
2182                expresso_mail_archive.search_queryconfig.folder_recursive = true;
2183            else
2184                expresso_mail_archive.search_queryconfig.folder_recursive = false;
2185
2186            expresso_mail_archive.querydata = expresso_mail_archive.search_queryconfig.query(filters);
2187
2188
2189
2190            //var query_data = '<?xml version="1.0" encoding="UTF-8"?><query subject="teste"><folder id="inbox"/><order asc="date"/></query>';
2191            ArchiveServices.listMessages(expresso_mail_archive.searchOperationOK, expresso_mail_archive.searchOperationFailure, expresso_mail_archive.session.id, expresso_mail_archive.querydata);       
2192        }
2193        //changing order view criteria (sorting result)
2194        else{   
2195            ArchiveServices.listMessages(expresso_mail_archive.searchOperationOK, expresso_mail_archive.searchOperationFailure, expresso_mail_archive.session.id, expresso_mail_archive.querydata);       
2196        }
2197    }catch (e){
2198        expresso_mail_archive.getFaultInfo();
2199    }
2200}
2201
2202MailArchiver.prototype.searchOperationOK = function(returnService){
2203    if(returnService.getReturn().length > 0){
2204        var msglist = new Array();
2205        var msglist2 = new Array();
2206        expresso_mail_archive.ServiceReturnObjectSearch = new Array();
2207
2208        for(var i=0; i< returnService.getReturn().length; i++){
2209            var ExpSerialized = expresso_mail_archive.pattern.toExpressoSearchHeader(returnService.getReturn()[i]);
2210            var ExpSerialized2 = expresso_mail_archive.pattern.toExpressoHeader(returnService.getReturn()[i]);
2211            var msgitem = connector.unserialize(ExpSerialized);
2212            var msgitem2 = connector.unserialize(ExpSerialized2);
2213     
2214            msglist.push(msgitem);//usando connector.unserialize sobre o header mapeado no layout abaixo
2215            msglist2.push(msgitem2);
2216            expresso_mail_archive.ServiceReturnObjectSearch.push(returnService.getReturn()[i]); //add each one service return data into this embeded object array
2217           
2218        }
2219        msglist["num_msgs"] = returnService.getReturn().length;
2220        msglist2["num_msgs"] = returnService.getReturn().length;
2221           
2222        //expresso_mail_archive.queryresult = msglist;       
2223        expresso_mail_archive.search_queryresult = msglist;
2224        //expresso_mail_archive.messageslisted = msglist2;
2225        expresso_mail_archive.search_message_list = msglist2;
2226        //window.alert('temos ' + expresso_mail_archive.search_message_list.length + ' mensagens de resultado da pesquisa mapeadas em memï¿œria');
2227    }
2228    else{
2229        expresso_mail_archive.ServiceReturnObjectSearch = null;
2230        expresso_mail_archive.search_queryresult        = null;
2231        expresso_mail_archive.search_message_list       = null;
2232        expresso_mail_archive.messageslisted            = null;
2233        expresso_mail_archive.queryresult               = null;
2234    }
2235    connector.hideProgressBar();
2236}
2237
2238MailArchiver.prototype.searchOperationFailure = function(){
2239    write_msg(get_lang('MailArchiver search operation fails', true));
2240    expresso_mail_archive.ServiceReturnObjectSearch = null;
2241    expresso_mail_archive.search_queryresult        = null;
2242    expresso_mail_archive.search_message_list       = null;
2243    expresso_mail_archive.messageslisted            = null;
2244    expresso_mail_archive.queryresult               = null;
2245    connector.hideProgressBar();
2246}
2247
2248MailArchiver.prototype.getAuthId = function(){
2249    var handler_get_logon = function(data){
2250        if(data){
2251            expresso_mail_archive.balancerid = data[0];
2252            expresso_mail_archive.sessionid = data[1];
2253            expresso_mail_archive.logonid = new Array(data[2],data[3]);
2254            expresso_mail_archive.login();
2255        }
2256        else{
2257            window.alert('Login credentials call failure');
2258            expresso_mail_archive.session = null;
2259        }
2260    }
2261    cExecute("$this.user.get_mailarchiver_authid",handler_get_logon);     
2262}
2263
2264MailArchiver.prototype.login = function(){
2265    try{
2266        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);
2267    }
2268    catch(e){
2269        expresso_mail_archive.getFaultInfo();
2270    }
2271}
2272
2273MailArchiver.prototype.loginOperationOK = function(returnService){
2274    if((typeof(returnService.getReturn()) == 'object') && (returnService.getReturn() != null)){
2275        expresso_mail_archive.session = new Object();
2276        expresso_mail_archive.session.expiration = returnService.getReturn().getExpiration();
2277        expresso_mail_archive.session.id = returnService.getReturn().getId();
2278        expresso_mail_archive.session.permissions = returnService.getReturn().getPermissions();
2279        expresso_mail_archive.CreateDefaultStructrure();
2280    }
2281    else{
2282        //not logged in MailArchiver
2283        expresso_mail_archive.session = null;
2284        write_msg(get_lang('MailArchiver user login fail', true));
2285        expresso_mail_archive.enabled = false;
2286        expresso_mail_archive.timer=null;
2287        expresso_mail_archive.interval = 500;
2288        ArchiveServices = null;
2289        connector.purgeCache();       
2290        draw_tree_folders();
2291        //expresso_mail_archive.DeactivateStatusListener(expresso_mail_archive);
2292    }
2293}
2294
2295MailArchiver.prototype.getFolderCounters = function(){
2296    var vetreturn = new Array();
2297    /*for(var k=0; k<expresso_mail_archive.folders.length; k++){
2298        if(expresso_mail_archive.folders[k]["id"] == expresso_mail_archive.currentfolder){
2299            vetreturn.push(expresso_mail_archive.folders[k]["messages"], expresso_mail_archive.folders[k]["unseen"]);
2300            break;
2301        }
2302    }*/
2303    vetreturn.push(expresso_mail_archive.folder.nummessages, expresso_mail_archive.folder.unseen);
2304    return(vetreturn);
2305}
2306
2307MailArchiver.prototype.setEmbeddedLink = function(){
2308    var img_objects = document.getElementsByTagName('img');
2309    for(var k = 0; k < img_objects.length; k++){
2310        if(img_objects[k].name.indexOf('embedded_img_') != -1) {
2311            var obj_link = img_objects[k].name.split('embedded_img_');
2312            var txt_link = obj_link[1];
2313            var img_base_link = mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + "/temp/" + txt_link;
2314            img_objects[k].src = img_base_link;
2315        }
2316    }
2317}
2318/*
2319MailArchiver.prototype.getFolderPath = function(folder){
2320    try{
2321        ArchiveServices.getFolderInfo(expresso_mail_archive.getFolderPathOperationOK, expresso_mail_archive.getFolderPathOperationFailure, expresso_mail_archive.session.id, folder);
2322    }
2323    catch(e){
2324        window.alert('getFolderPath fails');
2325    }
2326}
2327
2328MailArchiver.prototype.getFolderPathOperationOK = function(serviceReturn){
2329    window.alert('service return from getFolderPathOperationOK = ' + serviceReturn().getFolderPath());
2330    if(serviceReturn().length>0){
2331        window.alert('ok');
2332    }
2333    else{
2334        window.alert('nope');
2335    }
2336}
2337
2338MailArchiver.prototype.getFolderPathOperationFailure = function(serviceFault){
2339    window.alert('fails at gettting folder path');
2340}
2341*/
2342
2343MailArchiver.prototype.getMessageInfo = function(msgId){
2344    try{
2345        ArchiveServices.getMessageInfo(expresso_mail_archive.getMessageInfoOperationOK, expresso_mail_archive.getMessageInfoOperationFailure, expresso_mail_archive.session.id, msgId);
2346    }
2347    catch(e){
2348        window.alert('getMessageInfo fails');
2349    }   
2350}
2351
2352MailArchiver.prototype.getMessageInfoOperationOK = function(serviceReturn){
2353    //window.alert('service return from getMessageInfoOperationOK = ' + serviceReturn.getReturn() + '\n' + typeof(serviceReturn.getReturn()) + '\n' + print_r(serviceReturn.getReturn()));
2354    if(typeof(serviceReturn.getReturn() == 'object')){
2355        var ExpSerialized2 = expresso_mail_archive.pattern.toExpressoHeader(serviceReturn.getReturn());
2356        var msgitem2 = connector.unserialize(ExpSerialized2);
2357        if(!expresso_mail_archive.messageslisted){
2358            expresso_mail_archive.messageslisted = [];
2359        }
2360        expresso_mail_archive.messageslisted.push(msgitem2);   
2361        expresso_mail_archive.getMessageHeaders(serviceReturn.getReturn().getId());
2362
2363    }
2364    else{
2365        window.alert('getMessageInfoOperationOK nope');
2366    }
2367}
2368
2369MailArchiver.prototype.turnOffLocalTreeStructure = function (){
2370     draw_new_tree_folder(); 
2371}
2372
2373MailArchiver.prototype.getMessageInfoOperationFailure = function(serviceFault){
2374    window.alert('fails at gettting message info');
2375}
2376
2377MailArchiver.prototype.loginOperationFailure = function(ServiceFaillure){
2378    write_msg(get_lang('MailArchiver login operation fail', true));
2379}
2380
2381MailArchiver.prototype.logout = function(){
2382    write_msg(get_lang('MailArchiver user logged out', true));
2383}
2384/*
2385 *The all pourpose JavaScript variable, used by all related functionalityes at
2386 *Expresso Mail to handle this object at user gui.
2387 */
2388
2389var expresso_mail_archive;
2390expresso_mail_archive = new MailArchiver();
2391-->
Note: See TracBrowser for help on using the repository browser.